概要
MVCについて改めて概念を理解しようと思い、さくっと読めるように短くまとめてみました。
MVCとは?
MVCはそれぞれ以下の言葉の頭文字をとったものです。
- Model(モデル)
- View(ビュー)
- Controller(コントローラー)
それぞれについて見ていきましょう。
Model(モデル)
モデルはアプリケーションの中でビジネスロジックを担当する部分です。以下の処理を担当します。
- データの検索
- データの変換
- データの検証
- データの関連
コントローラーから受け取った処理に基づいて、必要なデータをDBで参照します。
DBから取得したデータを一時的に預かりコントローラーへ渡しますが、DBそのものではありません。
View(ビュー)
ビューはコントローラーから渡された(モデリングされた)データをHTMLなどで整形した状態を表現します。
またユーザーの入力を取得する部分でもあります。
ユーザーが実際に目にする部分だと思えば理解しやすいと思います。以下の流れです。
- リクエスト(ユーザーの入力)を取得する
- リクエストをコントローラーへ渡す
- コントローラーから受け取ったデータをHTMLなどで出力する
Controller(コントローラー)
コントローラーは、ビューからのリクエスト(ユーザーの入力)を受け取り、モデルへのメッセージに変換します。
レスポンスとして処理後の画面をビューに返します。
またユーザーの処理に基づいてモデルをコントロールする部分でもあります。以下のような流れです。
- ビューからリクエストを受け取る
- 受け取ったリクエストに基づいて該当するアクションを実行しモデルに伝える
- モデリングされたデータをモデルから受け取り、レスポンスとしてビューへ返す
どうしてMVC?
MVCを考慮する理由は、 開発の管理のしやすさ にあるのだと思います。
MVCを考慮して開発する場合、各要素が比較的はっきりと分かれるので、プログラムが見やすい状態になります。
また作業分担もわかりやすくなり 開発効率の向上を見込める というのがメリットです。
- 開発管理がしやすい
- 開発効率の向上を見込める
あとがき
さくっとMVCについてまとめてみましたが、開発手法にはいろいろあってそれぞれが独自の良さを持っているものだと思います。
案件の数だけ開発手法があり、流行り廃りがつきものであることもまた事実です。
社内でMVC開発を行う際は、こういったイメージをもって取り組みたいと思います。
参考にさせて頂きました
https://www.slideshare.net/MugeSo/mvc-14469802
http://at-grandpa.hatenablog.jp/entry/2013/11/01/072636
https://book.cakephp.org/2.0/ja/cakephp-overview/understanding-model-view-controller.html