Try T.M Engineer Blog

多摩市で生息するエンジニアが「アウトプットする事は大事だ」と思って始めたブログ

(Laravel第1回目)Laravel勉強はじめるぞっ

お久しぶりです。 ちょっとブログの更新頻度が落ちてしまってたので、申しわけありません。 また、更新頻度を上げれる様に努力したいと思います。

さて、近況ですが、最近Laravelの勉強を始めました。 これがなかなか難しく、あまり理解が進んでいないのですが、自身への理解を深めるため、ブログにアウトプットしていきたいと思います。

というわけで、Laravelアウトプットの第1回目です。

Laravelとは?

PHP業界で最近流行りのフレームワーク
学習コストが低く、PHPのコードを綺麗に書くことでき、加えて豊富なライブラリ揃っているのが流行りの理由。また、早くからVue.jsに対応しているのも特徴の1つです。

まぁ、私自身Laravelを学び始めたばかりなので、これらの特徴にあまり体感できていないのですが……(- o - ;;)
1つ言える事は、RubyRailsフレームワークに非常に近いと感じました。学習コストが低いという点では、Rails触ったことがある人ならとっつき易いのかなぁと思います。(ただ、そもそも言語が違うのでRubyPHP両方を知っている人なら...という事になりますね)

MVCモデルとADRモデル

Railsフレームワーク同様、LaravelもMVCモデルを採用しています。
加えて、LaravelはMVCモデルから派生したADRモデルも採用しています。
2つのモデルに対応できるフレームワークになっているんですね。

ここのところ、よく理解できなかったので少し掘り下げたいと思います。

MVCモデルとは?

MVCモデルは、Model View Controllerの略で、HTTPリクエストの受信から何かしらレスポンスを返すまでのデータの流れをModel、View、Controllerの3つの役割に分けて管理していこうという開発モデルになります。

各々の役割としては以下の通り。

  • Controller ・・・ リクエストに応じて処理を振り分ける役割
  • Model ・・・ ビジネスロジックを処理する役割
  • View ・・・ リクエストの処理結果を返す役割

図で表すと以下のようなイメージ。

f:id:special-moucom:20190701233432p:plain

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と変わりありませんよね(= =;;)

f:id:special-moucom:20190701233442p:plain

感想

私は過去にRailsチュートリアルを途中までやっていました。転職先が決まった後から、ずっと放置してますが・・・(転職先ではRubyはやらないので(TT))
その時に、MVCモデルについては知っていましたが、ADRモデルについては今回のLaravelで初めて知りました。
その興味に惹かれて、ADRモデルからLaravelの勉強を始めましたが、なかなか理解が追いつかず・・・もう少し理解することができたら深掘りして、またブログにアウトプットしていきたいと思います。