MVCモデルについて


新入社員にMVCモデルについて説明する際、以下のような説明をしている。分かりやすいかどうかは分からないが、概ね理解してくれているのではないかと勝手に思っている。
MVCとは、システムのモデル化に際して

  • M:モデル
  • V:ビュー
  • C:コントローラー

の3つからなる構造でモデル化を行おうとするものだ。
そしてモデル、ビュー、コントローラーのそれぞれが何でどういう機能を持つか、ということは色々なサイトで解説されているが、そもそもシステムのモデル化や、なぜそれにMVCが使われているのか、というところを最初に説明してあげると、MVCモデルを学ぶ意義が理解できて、学習意欲が増すのではないかと思う。

システムのモデル化とは

モデル化とは、現実にあるものを別の姿で表現することだと思ってもらえればよい。身近なものではプラモデルである。プラモデルは現実にある自動車や飛行機などを1/8とか1/20とかのサイズで、プラスチックを使って再現する。現実にあるものをそのまま再現するとサイズや素材に無理があるので、モデル化をする。
システムのモデル化も同じだ。
プラモデルと異なるのは、プラモデルはモデル化する元の飛行機などが目に見える形で存在しているが、システムは目に見えない。しかし目に見えないものを分かりやすい形で表現するためにモデル化をする。
そのままの形で表せないものを分かりやすい形で表現するという意味では同じことである。
つまり、MVCによるシステムのモデル化とは、「システムはそのままでは目に見えなくてよく分からないから、MVCっていうモデル化の方式で表現して分かりやすくする」ということである。

なぜMVCなのか

MVCというのはモデルの1つの手段に過ぎない。MVC以外にもシステムをモデル化する手法はいくつもある。プラモデルで言えば、プラスチックでモデル化するか、金属でモデル化するかということと同じである。
ではなぜMVCという構造でモデル化するのか。それは、偉大なる(?)先人が「MVCっていう構造でシステムをあらわしてみたら良い感じだったよ!君らもマネしてみて!」と広めたからである。その結果、色々なフレームワーク等でMVCモデルが採用され、そのフレームワークを利用する開発者もMVCモデルについて理解する必要があるのだ。
もちろん、システムによってはMVCモデルが適合しないシステムもあるし、現在MVCが使われているシステムでも、実際にはもっと良いモデル化の方法もあるのかもしれない。しかし現在MVCモデルは一般的に知られたモデル化手法になっており、これを使っておけば、一般的なシステムではそれなりのものができる、というのも事実である。まずはMVCを理解しておくことは決して無駄にはならないはずである。


Programming Blog