概要
MVCモデルとは、プログラムの処理を以下の3つの役割に分類して開発するモデル。
- Model
- View
- Controller
それぞれの頭文字を取ってMVCモデルと呼ばれる。
router は 、MVCモデルではControllerの一部として考える事もできる。
MVC + router の役割
以下、それぞれの役割をまとめる。
Model
ビジネスロジック(=様々な処理を実際に実行するロジック)を担当。DBを操作する役割を担っている。
具体的には、
- データをDBへ保存
- DBからデータを取得
- DBのデータの更新や削除
などの役割がある。基本的にDBを直接触るのはModelだけ。
データ処理(DBから取得したデータの変換など)を含む場合もあるが、DBを操作するイメージが強いため、Logicというディレクトリを作成してデータ処理のプログラムを切り離すこともある。
上司(Controller)からの司令を受けて走り回るパシリ的な役回り。
View
ユーザーが実際に見る出面を担当。動的なサイト(ex. Twitter, ブログサイト, etc…)の出面を表すことが多い。表示や入出力を担っている。
- Controllerから受け取ったデータ(レスポンス)を画面に表示
- ユーザーからのリクエストをControllerへ送信
などを行ってる。ユーザーが触れられるのはViewだけ。
ユーザーの言うことを聞いたり上司(Controller)の指示に従ったりする受付の人。
Controller
ModelとViewを制御する司令塔を担当。ユーザーの入力に基づいてModelとViewに指示を出す。
- Viewからリクエストを受け取ってModelに指示出し
- Modelの処理を受け取ってViewへレスポンス
などを行う。
部下(ViewやModel)に指示を出すだけで自分は動かない上司。
ルーター(router)
処理の振り分けを担当。httpアクセスが来たときにどのように処理するかを決めて適切なControllerにアクセスを流している。MVCモデルではControllerが受け取りもやるのでControllerに内包されているとも言える。
もしControllerとrouterを切り分けるとすれば
- Viewからのリクエストを受け取って、適切なControllerに受け渡し
が主な役割になる。
Controllerを補佐する秘書のようなもの。