ITのコーチをしています。
初学者のかたのMVCって結局どういうものなの?なんで必要なの? という疑問にお答えするときの内容メモを記録します。もろもろかみ砕いて説明しています。
MVCって結局どういうものなの?
MVCとは、Model, View, Controller の3つ役割にプログラムを分ける考え方です。
この文章の中で大事な部分は「考え方」という部分です。ここ。MVCモデルは「考え方」の話です。何の考え方かというと、役割分担の考え方です。
プログラムの役割分担ってどういうこと?なんのためにするの?と思われるかたもいらっしゃるかもしれません。
プログラムの役割分担は何のためにおこなわれるのか
まず、なんのために?というところで考えてみると、いろいろありますが突き詰めていくとより大規模なアプリケーションを効率よく開発するために、というところに尽きます。
これは現実世界でもよくある話だと思います。役割分担をなぜするのかというと、より大規模なものを効率的にやっていくため、ですよね。
ビジネスの例で考えてみましょう。
2人とか3人とか小さな規模でビジネスをやっているときは、ある1人のひとが営業も開発も会計処理も何でもやっている!というような状況でも、まぁまぁうまくまわしていけると思います。
しかし、それが20人30人と社員の規模が増えていくとどうでしょうか。
誰が何をやっているのか整理できていないと、かえって面倒なことがたくさん起こります。
そこで、営業の業務は営業担当の人、開発の業務は開発担当の人、会計の業務は会計担当の人、というふうに分担をすることによって、あ、会計の処理が必要だ!っていうふうになったらそれじゃあ会計担当さんお願いします~というふうに専門の人に処理を頼むことができます。そのほうが管理しやすく、効率的に全体の業務を遂行することができます。
プログラムも一緒です。
役割を分担して、どの機能はどのプログラムに書きますというふうに整理することによって、大規模な開発を効率的におこなうことができますという話です。
中でもMVCと呼ばれる考え方は、その役割を、ModelとViewとControllerの3つの役割にわけて考えるということです。
それでは、それぞれどのような役割をもっているのか、あくまで一般的にはこうというものをご紹介します。
MVCの役割
①Model(モデル)
データ処理を行う部分です。
DBとデータをやり取りして、必要なデータを処理する役割があります。
②View(ビュー)
ユーザが目にする画面の処理を行う部分です。フロント側とも言われます。
HTMLやJavaScriptなどでの画面のレイアウトや機能の処理を行います。
③Controller(コントローラー)
上記の2つ、ModelとViewの橋渡しの役割を行う部分です。
データを画面に表示するために、Modelで扱ったデータをViewへ受け渡します。
MVCについてさまざまな考え方がありますが、ModelはDBとのやりとり、Viewは表示、ControllerはModelとViewの受け渡し役、というふうに思っておけば概ね外れません。