reloopリループ

2021-10-02
LaravelにおけるMVCとは?図解してみた

WebアプリケーションフレームワークでMVCという設計パターンがあります。Laravelもこの設計に則って開発できます。

MVCとはモデル、ビュー、コントローラと呼ばれるもので構成されていて、それぞれにきちんと役割があります。

モデルはアプリケーションデータやロジックに関する役割があり

ビューは見た目の役割、

コントローラはユーザからの入力に対してビューを返したり、モデルを呼び出したりします。

  • モデル:データやロジック
  • ビュー:見た目(画面)
  • コントローラ:ビューとモデルの仲介役

最初はなかなかイメージが沸かないと思うので、一つずつ見ていくことにします。

モデル

アプリケーションデータやロジックに関する役割がモデルにはあるといいましたが、具体的には何があるでしょう?

Twitterを例にしてみます。

ユーザはツイートすることができますし、いいねすることができます。ツイートは何回でもできますが、いいねは1つのツイートに対して1回だけしかできません。

いいねしたツイートに対していいねをもう一回押せばいいねが消えます。
ツイートやいいねなどのデータを作る役割がモデルにはあったり、
いいねが1回しかできない、2回いいね押すと消えるなどのロジックがモデルにはあります。

モデルはデータを作ったり、どういう条件で〇〇するなどのロジックを書く場所だと思って問題ありません。

ビュー

これはユーザが目にする部分です。

デザインであったりフォームであったり、Twitterのプロフィールやツイートの一覧などビューとなります。
ビューは一つページ思えば良いでしょう。ま、画面のことですね。

これがTwitterのプロフィールのビューとなります。

コントローラ

最後はコントローラです。これはビューとモデルとの仲介役です。

例えばツイッターのプロフィールのビューは、

  1. ユーザはコントローラに対してプロフィールの情報がほしいとリクエストをします
  2. コントローラはそのリクエスト通り、プロフィールに関するデータやロジックなどを持っているモデルに対して、〇〇アカウントのプロフィールをよこせといいます
  3. モデルはコントローラに命令されたとおり該当するプロフィールをコントローラに渡します
  4. その後コントローラはプロフィールのビューに取得したデータを渡します

コントローラをビューとモデルの間に挟むことによって、柔軟にいろいろなリクエストに答えていくことができます。上の例ではプロフィールだけでしたが、ツイート情報やいいね情報もほしい場合にコントローラはツイート関連のモデルやいいね関連のモデルを呼び出すことで、色々なビューの要望に答えることができます。

これでMVCの概要は把握できたと思うので、次回よりコントローラやビュー、モデルを使って理解を深めて行きましょう。
まずはコントローラだけを使ってルーティングという処理を行っていきます。