MVCモデルとは?
MVCモデルとは、プログラムの処理を役割毎に分けて開発を行う考え方で、Webシステムの開発に頻繁に用いられます。
例えば、とあるWebシステムでユーザーの新規登録ができる機能をイメージして下さい。
画面には、入力フォームが用意されており、ユーザーは項目を入力した後、登録ボタンを押下します。
すると、プログラムは入力された値を受け取り、問題なければDBへデータを登録し、「登録完了」の画面をユーザーへ返します。
この一連の流れに必要な画面や処理は、ざっくり考えて以下になります。
1.入力フォームの画面
2.入力された値の受け取り、確認
3.DBへ登録
4.登録完了画面
これらの機能や画面を1ファイルに書くことは可能ですが、非常に分かりにくいコードになります。
そこで、MVCモデルの様な考え方を用いて、処理を役割毎に別の場所に書くことで、誰でも読みやすいコードになります。
MVCモデル
MVCモデルのMVCは、それぞれ「Model(モデル)」「View(ビュー)」「Controller(コントローラー)」の頭文字から来ています。
Model,View,Controller毎に役割が決まっており、該当する処理を各所に書きます。
Model
Modelとは、ビジネスロジックを書く部分です。簡単に言えば、データを処理したり、データをDBへ保存したりする部分になります。また、DBからデータを取得して、Controllerへ送る部分でもあります。
Modelは、DBを操作するイメージが強く、データを処理する部分は、Logicという別の場所を用意して、そこに書くこともあります。Logicを使うか使わないかは、プロジェクトによって様々です。
※ModelとDBは別物だと言うことに注意して下さい。
View
Viewとは、ユーザーが実際に見る画面を示しています。主にHTMLで書かれていますが、if文の様なプログラムのコードも頻繁に書かれます。
これは、Controllerから受け取ったデータ(レスポンス)を画面に表示したり、画面で処理を書いた方が都合が良い時があるからです。
また、ユーザーからのリクエストをControllerへ送る役割も果たしています。新規登録画面でユーザーが入力した値をControllerへ送って、その後の処理を行うイメージです。
Controller
Controllerとは、ViewとModelを操作する部分です。
具体的には、Viewからリクエストを受け取り、Modelへ処理の命令を出します。また、Modelから処理の結果を受け取り、レスポンスとしてViewへ返したりします。
VIewとModelの仲介だと思ってくれるとイメージしやすいと思います。
まとめ
MVCモデルは様々なフレームワークに導入されています。(PHPのLaravelやJavaのSpringBoot等)
フレームワークを使う前に、MVCモデルのことを理解しておくと、フレームワークの便利さがより分かると思います。
独自でMVCモデルを使ってみるのも面白いかもしれません。