【Laravel】MVCモデルとは?メリットや仕組み、構造を理解しよう!

この記事からわかること
- Laravelが準ずるMVCモデルとは?
- Model/View/Controlの違い
- MVCモデル(アーキテクチャ)のメリット
- Laravelの仕組みと構造
index
[open]
\ アプリをリリースしました /
Laravelのことを深く理解する上で重要になってくるのが「MVCモデル(アーキテクチャ)」です。では実際に「MVCモデル(アーキテクチャ)」とはどのような考え方でどのようなメリットがあるのか、自分なりに調べて理解できた部分をまとめていきたいと思います。
MVCモデル(アーキテクチャ)とは?
MVCモデル(アーキテクチャ)とはアプリケーションのプログラムを3つの要素で構成させる考え方のことを指します。単にMVCやMVCモデル、MVCアーキテクチャ(構造)と呼ばれています。
MVCを司る3つの要素
- Model(モデル):データそのもの
- View(ビュー):表示される画面
- Controller(コントローラ):MとVを操作する
Model(モデル)
Model(モデル) とはデータ部分を司っている要素です。Webサイトでいうところのデータベースに格納されている情報などがまさしくモデルで扱う部分であり、データベースの情報を操作するCRUD(クラッド:Create, Read, Update, Delete)などの処理も実装します。
例えば取得したデータを表示するために整形するのもこの要素の努めになります。日付のフォーマットや数字の表し方など、他の部分にはデータに関するロジックは含ませないようにしてモデルで扱う中でデータに関するロジックを終了させます。モデルから受け取ることができる状態のデータがそのまま使われるようにすることを意識して作成するのが大事になるのだと思います。
データベースにある情報を取得、整形するロジックをここに含めますがその実行命令を下すのはコントローラです。Modelでは命令があったタイミングで実際に処理を行えるようにメソッドを作っておく目的になります。
Laravelでいうところの?
- Models
- Eloquent
View(ビュー)
Viewはページを表示させる部分を司っている要素です。View自体にデータは保持しておらず、Modelのデータを参照することでページを構築していき、Modelのデータが変更になれば都度表示も切り替えることで動的に変化するページが作成されます。記事が更新されれば新しい更新内容を、記事が投稿されれば新しい記事を追加で表示するなどブログも動的なサイトの1つと言えるのかもしれません。
Viewはユーザーの目に実際に触れる部分であり、またユーザーと直接やり取りする部分でもあります。input要素などから値が入力されればそれを受け取り、コントローラ側へと情報を渡したり、ボタンやリスト表示、デザイン部分などもこの部分に含まれるのかと思います。
Laravelでいうところの?
- 「.bladeテンプレート」
おすすめ記事:bladeテンプレートの使い方
Controller(コントローラ)
Controller(コントローラ) はModelとViewを制御する部分を司っている要素です。アクセスされた場合に表示させるViewを決定したり、必要となるデータを取得できるように整形させる命令をModelに渡したりと2つをまさしくコントロールする役目を持っています。
「ルーティング」機能も仕事の1つでユーザーからリクエストされたURLに対してコントローラ側で、Modelにデータベースから情報を取得、整形させる処理の実行命令、Viewには取得、整形されているはずのデータを参照しに行って実際にページに反映させる命令を送ります。
Laravelでいうところの?
- ルーティング処理(web.phpなど)
- Controller
MVCを用いることで得られるメリット
- 拡張性の高さ
- 保守性の高さ
- 作業性の高さ
- 再利用のしやすさ
MVCを用いることで「作業を分割して開発に臨める」ようになります。それぞれ3つの要素が自分の役割をこなすだけで良いので他の作業に依存せず、独立したプログラムが作成できるようになります。
ModelであればデータベースへのCRUD処理とデータの整形処理にのみ注意し、データを渡せるようにしておけば良いだけです。その後のデータの表示場所やタイミングは他の要素の役割なのでソースコードもその要素に特化した分かりやすいものにすることができます。
LaravelとMVC
MVCモデルを用いることでそれぞれの要素ごとにプログラムを分割でき、スッキリとして分かりやすい構造のアプリケーションを作ることが可能になります。
LaravelではまさしくこのMVCモデルに準じながら「データ操作」、「表示部分」、「制御部分」を別々に管理できるようになっています。
MVCモデルを読み解くキーポイント
- アプリケーションのプログラムを3つの要素で構成
- Model/View/Controller
- 分割できることで作業性、開発性が向上
まだまだ勉強中ですので間違っている点や至らぬ点も多いかもしれません。その際は教えていただける私の間違った認識を正すことができますのでぜひ協力いただけると助かります。
ご覧いただきありがとうございました。