MVCフレームワークの基本このパートではMVCフレームワークの基本知識を学んでいきます。Laravelを扱う上で必須のMVCを学ぶ事で、3章以降の開発をスムーズに進められます。本パートの目標ユーザーからのアクセスをルーティング〜ユーザーへのレスポンスとして返すのかを理解できるようになることが目標になります。目標物を作成するまでの流れルーティングを理解するMVCを理解するLaravelはphpのWebフレームワークです。Webフレームワークは、Webアプリを開発するために必要な骨組み(ディレクトリ構造や、ファイルのテンプレートなど)を提供してくれる便利な道具です。MVCは以下のような流れでユーザーのアクセスから、ユーザーへのレスポンスに向かってデータが流れていきます。この全体像を頭に入れて詳しい説明を読んでください。ルーティングMVCの前に、まずはルーティングを解説します。ルーティングとは、ブラウザから送られてきたURLを判別してMVCに繋げる仕組みです。ブラウザに入力します。ルーティングを設定しておくことでコンピューターが指示を理解できるようになります。https://www.techpit.jp/のURLが送られてきたからTechpitのトップページをブラウザに表示させるという処理を行えばいいといった内容ですね。https://www.techpit.jp/coursesです。先ほどとは違い、ドメインの後ろにcoursesが付きましたね。ルーティングはこのcoursesを認識し、教材一覧のページをアクセスしたユーザーに返すコントローラーのメソッド(コントローラーに複数定義されている動き)を呼び出します。このようにルーティングはURLとアプリケーションの動作を紐付ける仕組みです。データの処理を行う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の全体を見ながら流れを確認していきましょう。ユーザーがWebサイトにアクセスルーティングがURLを判断適切なコントローラーメソッドを呼び出すコントローラーメソッドに従い必要なデータを取ってくるようにモデルに指示を出すモデルはデータベースから指示されたデータを取得モデルは取得したデータをコントローラーに返すコントローラーはモデルからもらったデータを適切なViewに渡す適切なデータを表示したViewがユーザーから見える状態になる(ブラウザ上でレンダリングされる)最後にMVCの考え方はLaravel以外にも使える考え方です。Webエンジニアとしてキャリアを積む中でLaravle以外のフレームワークを使う際にも流用できる考え方です。そのため、次章以降の実装で手を動かしながら理解してください。