はじめに
今回「MVCモデル」を取り上げたのは、Vue+Laravelに関わり勉強することとなったためです。まず初学者ののためMVCについて問われましたが、全く理解わかりませんでした。調べたことをまとめたいと思います。なお、ソースコードを追いながら学習したため、この記事にはソースコードはありません。
MVCモデルとは
プログラムを役割ごとにModel(モデル)・View(ビュー)・Controller(コントローラー)の3つの機能に分けて管理するソフトウェア設計モデルのこと。MVCは、アプリケーションフレームワークでよく使われているアーキテクチャです。
MVCは、ユーザーインタフェースをもつアプリケーションソフトウェアを実装するためのデザインパターンである。 アプリケーションソフトウェアの内部データを、ユーザーが直接参照・編集する情報から分離する。そのためにアプリケーションソフトウェアを以下の3つの部分に分割する。Model、View、Controller。
(Wikipedia)
Model
データ処理全般を担当します。
- データベースとデータのやりとりを行う
- データを格納したり、取り出したりする
- データの取得、更新、削除、新規作成といったデータベースとのデータのやり取り
- 日付のフォーマットの指定などといった、アプリケーションが扱うデータの操作
モデルはデータベースとデータのやり取りを行う機能を実装したり、データベースから取得したデータをプログラムで扱いやすい形式でデータを変換するというような役割を担っています。
データベースとやり取りを行う場合は、データベース内のデータを取得したり、「更新」「削除」「新規作成」といった機能を実装します。
View
- Webブラウザに表示するHTMLを動的に生成する
- ビューの役割は名前のとおり、Webページを画面に表示させるためのもの
Controler
- ユーザーの入力に基づきモデルとビューを制御する
- データをModelに渡したり、データをViewに渡したりする処理関数を作る
Webページを表示させるためにはデータベースから必要な情報を取得し、その情報をもとに画面を生成しなければいけない。
その橋渡しとなるのがコントローラーの役割で、ユーザーの入力に基づきモデル・ビューが何の処理をすべきかコントロールする。
ファイルの場所
ルーティング
まずはルーティングから実装する。
ルーティングとはで受け取ったリクエストに対してどのような処理を行うかを定義する部分のこと。
◯◯◯にアクセスした時に、×××という処理を呼び出す、という関連付け、管理するの機能が「ルーティング」
Laravelでは/rotes/web.php
というファイルにWebページとしてアクセスするためのルーティングを定義する。
Route::get('アドレス', 'コントローラ名@アクション')
のように設定する。
コントローラ作成
コントローラは処理全体の制御を担当するものであり、プログラム本体部分といってもよい。
Webアプリケーションにアクセスをすると、コントローラが処理を行う。必要に応じてビューやモデルを利用し、画面表示やデータベースのデータなどを受け取る。
app/Http/Contorollers/
配下に作成。
### ビュー作成
Lalabelには「Blade」という独自のtんプレートエンジンが用意されている。
resources/views
配下に設置していく。
Bladeでは「◯◯.blade.php」という名前でファイルを作成する。
Bladeでは{{$変数}}
というようにして変数をテンプレート内に埋め込むことができる。
コントローラのアクションメソッドに変数を定義し、コントローラから値を受け取り、表示する。
おわりに
まだまだ、途中ではありますがまずはフロントエンド側からある機能を持ったソースコードを追ってどのようにMVCがぞれぞれ機能しているのかを理解できるところまではできたのでここまでとします。
参考文献: PHPフレームワーク Laravel入門 第2版 掌田 津耶乃