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

この記事からわかること

  • Laravelが準ずるMVCモデルとは?
  • Model/View/Control違い
  • MVCモデル(アーキテクチャ)のメリット
  • Laravelの仕組み構造

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

Laravelのことを深く理解する上で重要になってくるのが「MVCモデル(アーキテクチャ)」です。では実際に「MVCモデル(アーキテクチャ)」とはどのような考え方でどのようなメリットがあるのか、自分なりに調べて理解できた部分をまとめていきたいと思います。

MVCモデル(アーキテクチャ)とは?

MVCモデル(アーキテクチャ)とはアプリケーションのプログラムを3つの要素で構成させる考え方のことを指します。単にMVCやMVCモデル、MVCアーキテクチャ(構造)と呼ばれています。

MVCを司る3つの要素

Model(モデル)

Model(モデル) とはデータ部分を司っている要素です。Webサイトでいうところのデータベースに格納されている情報などがまさしくモデルで扱う部分であり、データベースの情報を操作するCRUD(クラッド:Create, Read, Update, Delete)などの処理も実装します。

例えば取得したデータを表示するために整形するのもこの要素の努めになります。日付のフォーマットや数字の表し方など、他の部分にはデータに関するロジックは含ませないようにしてモデルで扱う中でデータに関するロジックを終了させます。モデルから受け取ることができる状態のデータがそのまま使われるようにすることを意識して作成するのが大事になるのだと思います。

データベースにある情報を取得、整形するロジックをここに含めますがその実行命令を下すのはコントローラです。Modelでは命令があったタイミングで実際に処理を行えるようにメソッドを作っておく目的になります。

Laravelでいうところの?

View(ビュー)

Viewはページを表示させる部分を司っている要素です。View自体にデータは保持しておらず、Modelのデータを参照することでページを構築していき、Modelのデータが変更になれば都度表示も切り替えることで動的に変化するページが作成されます。記事が更新されれば新しい更新内容を、記事が投稿されれば新しい記事を追加で表示するなどブログも動的なサイトの1つと言えるのかもしれません。

Viewはユーザーの目に実際に触れる部分であり、またユーザーと直接やり取りする部分でもあります。input要素などから値が入力されればそれを受け取り、コントローラ側へと情報を渡したり、ボタンやリスト表示、デザイン部分などもこの部分に含まれるのかと思います。

Laravelでいうところの?

Controller(コントローラ)

Controller(コントローラ) はModelとViewを制御する部分を司っている要素です。アクセスされた場合に表示させるViewを決定したり、必要となるデータを取得できるように整形させる命令をModelに渡したりと2つをまさしくコントロールする役目を持っています。

「ルーティング」機能も仕事の1つでユーザーからリクエストされたURLに対してコントローラ側で、Modelにデータベースから情報を取得、整形させる処理の実行命令、Viewには取得、整形されているはずのデータを参照しに行って実際にページに反映させる命令を送ります。

Laravelでいうところの?

MVCを用いることで得られるメリット

MVCを用いることで「作業を分割して開発に臨める」ようになります。それぞれ3つの要素が自分の役割をこなすだけで良いので他の作業に依存せず、独立したプログラムが作成できるようになります。

ModelであればデータベースへのCRUD処理とデータの整形処理にのみ注意し、データを渡せるようにしておけば良いだけです。その後のデータの表示場所やタイミングは他の要素の役割なのでソースコードもその要素に特化した分かりやすいものにすることができます。

LaravelとMVC

MVCモデルを用いることでそれぞれの要素ごとにプログラムを分割でき、スッキリとして分かりやすい構造のアプリケーションを作ることが可能になります。

LaravelではまさしくこのMVCモデルに準じながら「データ操作」、「表示部分」、「制御部分」を別々に管理できるようになっています。

MVCモデルを読み解くキーポイント

まだまだ勉強中ですので間違っている点や至らぬ点も多いかもしれません。その際は教えていただける私の間違った認識を正すことができますのでぜひ協力いただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index