前のパートに戻る 完了して次のパートへ  

  2-1 MVCフレームワークの基本

このパートではMVCフレームワークの基本知識を学んでいきます。

Laravelを扱う上で必須のMVCを学ぶ事で、3章以降の開発をスムーズに進められます。

本パートの目標


ユーザーからのアクセスをルーティング〜ユーザーへのレスポンスとして返すのかを理解できるようになることが目標になります。

目標物を作成するまでの流れ


  1. ルーティングを理解する
  2. MVCを理解する

LaravelはphpのWebフレームワークです。

Webフレームワークは、Webアプリを開発するために必要な骨組み

(ディレクトリ構造や、ファイルのテンプレートなど)

を提供してくれる便利な道具です。

MVCは以下のような流れでユーザーのアクセスから、ユーザーへのレスポンスに向かってデータが流れていきます。

まずはこの全体像を頭に入れて詳しい説明を読んでください。

1. ルーティング


MVCの前に、まずはルーティングを解説します。

ルーティングとは、ブラウザから送られてきたURLを判別してMVCに繋げる仕組みです。

例として、TechpitのトップページのURL https://www.techpit.jp/ をブラウザに入力します。

ルーティングを設定しておくことでコンピューターが指示を理解できるようになります。

https://www.techpit.jp/のURLが送られてきたからTechpitのトップページをブラウザに表示させるという処理を行えばいいといった内容ですね。

では続いて教材一覧のURLは https://www.techpit.jp/coursesです。

先ほどとは違い、ドメインの後ろにcoursesが付きましたね。ルーティングはこのcoursesを認識し、教材一覧のページをアクセスしたユーザーに返すコントローラーのメソッド(コントローラーに複数定義されている動き)を呼び出します。

このようにルーティングはURLとアプリケーションの動作を紐付ける仕組みです。

2. MVCの基本


MVCとはModel(M)View(V)Controller(C) のことです。

主にデータの処理を行うModel、ユーザーが入出力を行うView、ViewとModelを制御するController。

このようにそれぞれ役割をもたせた3つのプログラムに分けて設計していく方式を、MVCモデルと呼びます。

MVCモデルを採用したフレームワークが、MVCフレームワークということですね。

MVCのメリット

次にMVCを採用するメリットを見てみましょう。

分業しやすい

機能ごとの独立性が高いため分業しやすいということが挙げられます。

例えばViewは見た目を作る部分なので、Viewの制作はデザイナーさんに任せてしまおう、ということが可能です。

変化に強い

MVCでは表示部分とデータ部分が分かれています。

そのため、例えば見た目のデザインをまったく別のものにしようということになっても、ModelやControllerは仕様が変わらない限りそのまま使えます。

Viewの部分だけ修正すればデザインの変更は完了です。

MVCにはこのようなメリットがあります。それでは次は、MVCモデルの各機能を詳細に見ていきましょう。

Model(モデル)

Modelはデータの処理や操作を担当します。

多くのアプリでデータベースを使用しますが、具体的にはデータベースへのアクセスや、データベースを検索して目的のデータを取得するためにSQLという言語を扱ったりします。

他にも、データベースに目的のデータが存在するか調べる、検証(バリデーション)と言う作業や関連付け(アソシエーション)などの細かい処理もModelの役割です。

このように、ビジネスロジックと呼ばれるデータにまつわる箇所を担当する役割がモデルには与えられています。

モデルはシステムの本体にあたるとても重要な部分です。

View(ビュー)

次にViewの役割です。

Viewは最終的な出力の画面を担当するパートです。もっと簡単に言うと、皆さんが今見ているWebページの部分です。

ブラウザに読み込まれるファイルのことを指し、多くの場合はHTMLもしくはjavascriptファイルです。

最終的にブラウザにレンダリングしたものをユーザーに表示します。

Controller(コントローラー)

最後にControllerです。

コントローラーの役割はモデルとビューを統括する管理者です。

Modelに指示を出し特定のデータを取得した上で、Viewに渡すところまでがControllerの役目となります。

あくまで管理者なので、実務的なビジネスロジックはコントローラーには書きません。

コントローラーはあくまで指示を行うだけです。そうすることで、処理の流れがわかりやすくなるため、役割を分割しています。

コントローラーに色々な処理をさせて大きくなってしまったコントローラーの事をファットコントローラーと言い、非推奨なのでご注意ください。

まとめ


それでは改めてMVCの全体を見ながら流れを確認していきましょう。

  1. ユーザーがWebサイトにアクセス
  2. ルーティングがURLを判断適切なコントローラーメソッドを呼び出す
  3. コントローラーメソッドに従い必要なデータを取ってくるようにモデルに指示を出す
  4. モデルはデータベースから指示されたデータを取得
  5. モデルは取得したデータをコントローラーに返す
  6. コントローラーはモデルからもらったデータを適切なViewに渡す
  7. 適切なデータを表示したViewがユーザーから見える状態になる(ブラウザ上でレンダリングされる)

最後に

MVCの考え方はLaravel以外にも使える考え方です。

Webエンジニアとしてキャリアを積む中でLaravle以外のフレームワークを使う際にも流用できる考え方です。

そのため、次章以降の実装で手を動かしながら理解してください。

以上になります。お疲れ様でした。

議論

0 質問

このコースの評価は?