はじめに
Webアプリケーションフレームワークでよく用いられるMVCモデル。
当たり前のように使ってきたモデルだが、改めてどんなメリットがあり、どんな特徴があるのか
頭の中を整理したくてこの記事を作成した。
この記事の対象者
- これからMVCモデルを使う人
- ざっくりMVCモデルを知りたい人
MVCモデルって何?
MVC は、Webフレームワークで一般的に取り入れられているアプリケーション設定を整理するための概念の一つです。
モデル(Model)頭文字「M」、ビュー(View)頭文字「V」、コントローラー(Controller)頭文字「C」で「MVC」と言います。
参考:https://www.geekly.co.jp/column/cat-technology/1911_040/#MVC-2
Model、View、Controllerという役割ごとにディレクトリが分かれている。
モデル(Model)って何?
データの管理とビジネスロジックを担当している。
データの管理とはDBとのやり取り、ビュー/コントローラーが欲しい形に整形することを指す。
O/Rマッピングという手法を使えば、モデルの記載をもとに、SQLを書かずにデータベースのテーブルを作成したり
CRUD処理を行うことが可能。
ビュー(View)って何?
UIの表示を担当している。モデル→コントローラーとわたってきたデータを画面に表示させる。
画面表示用に、for文、if文のような簡単なロジックを書くことも可能。
コントローラー(Controller)って何?
ユーザーの入力を受け付けて、モデルとビューの仲立ちをする。
メリット
複数人に分かれて実装する際に、役割分担がしやすい
画面実装が得意なAさんはView、ロジック書くのが得意なBさんはModel、といった分担が可能。
(私はMVCモデルを現場で使ったことがない、珍しいよわよわエンジニアなので、本当にこんな分担がされているかは不明。)
保守性が高くなる
例えばだが、テストで画面上の表示にエラーがわかったとする。
MVCモデルに則って実装していれば、「まずはViewを確認しよう」となり、
予測を立ててバグ潰しができる。
使っているフレームワークが多いので、一度覚えると潰しがきく
MVCを使うメリットというより、覚えておくとメリットがあるという話。
MVCモデルを使用している代表的なフレームワークは以下の通り。
他にもまだまだあるので、構造を覚えておくと潰しがきいてよい。
- Spring Boot(Java)
- Spring MVC(Java)
- ASP.NET Core(C#)
- Rails(Ruby)
- Laravel(PHP)
- CakePHP(PHP)
- etc...
理解している人が多いので、現場で使いやすい
これは、現場で使用するフレームワークを検討している人向け。
MVCモデルのフレームワークを選ぶとこんなメリットがあるよという話。
まとめ
- モデルはデータの管理担当
- ビューは画面担当
- コントローラーはリクエストを受け付けて、モデルとビューの仲介担当
参考文献