お久しぶりです。 ちょっとブログの更新頻度が落ちてしまってたので、申しわけありません。 また、更新頻度を上げれる様に努力したいと思います。
さて、近況ですが、最近Laravelの勉強を始めました。 これがなかなか難しく、あまり理解が進んでいないのですが、自身への理解を深めるため、ブログにアウトプットしていきたいと思います。
というわけで、Laravelアウトプットの第1回目です。
Laravelとは?
PHP業界で最近流行りのフレームワーク。
学習コストが低く、PHPのコードを綺麗に書くことでき、加えて豊富なライブラリ揃っているのが流行りの理由。また、早くからVue.jsに対応しているのも特徴の1つです。
まぁ、私自身Laravelを学び始めたばかりなので、これらの特徴にあまり体感できていないのですが……(- o - ;;)
1つ言える事は、RubyのRailsフレームワークに非常に近いと感じました。学習コストが低いという点では、Rails触ったことがある人ならとっつき易いのかなぁと思います。(ただ、そもそも言語が違うのでRubyとPHP両方を知っている人なら...という事になりますね)
MVCモデルとADRモデル
Railsフレームワーク同様、LaravelもMVCモデルを採用しています。
加えて、LaravelはMVCモデルから派生したADRモデルも採用しています。
2つのモデルに対応できるフレームワークになっているんですね。
ここのところ、よく理解できなかったので少し掘り下げたいと思います。
MVCモデルとは?
MVCモデルは、Model View Controllerの略で、HTTPリクエストの受信から何かしらレスポンスを返すまでのデータの流れをModel、View、Controllerの3つの役割に分けて管理していこうという開発モデルになります。
各々の役割としては以下の通り。
図で表すと以下のようなイメージ。
ADRモデル
ADRモデルは、MVCモデルから派生したモデルです。
Action Domain Responderの略で、HTTPリクエストの受信から何かしらレスポンスを返すまでのデータの流れをAction、Domain、Responderの3つの役割に分けて管理していこうという開発モデルになります。
これら3つの役割は、実はMVCモデルと変わりありません。
- Action(≒Controller) ・・・ リクエストに応じて処理を振り分ける役割
- Domain(≒Model) ・・・ ビジネスロジックを処理する役割
- Responder(≒View) ・・・ リクエストの処理結果を返す役割
しかし、MVCモデルの派生モデルだけあって、考え方が違います。
MVCモデルは画面設計ベース(画面に対して、どのようなレスポンスを返そう?)になっていますが、ADRモデルはURI設計ベース(このURIに対して、どのようなレスポンスを返そう?)になっています。
最近のバックエンド開発では、画面に対してのレスポンスだけではなく、RESTfullなAPIレスポンスも増えてきました。APIは、URIに応じて受け渡すデータを変える必要があるため、ADRという考え方ができたのだと(私が勝手に)推測しています。
図で表すと以下のようなイメージ。MVCと変わりありませんよね(= =;;)
感想
私は過去にRailsチュートリアルを途中までやっていました。転職先が決まった後から、ずっと放置してますが・・・(転職先ではRubyはやらないので(TT))
その時に、MVCモデルについては知っていましたが、ADRモデルについては今回のLaravelで初めて知りました。
その興味に惹かれて、ADRモデルからLaravelの勉強を始めましたが、なかなか理解が追いつかず・・・もう少し理解することができたら深掘りして、またブログにアウトプットしていきたいと思います。