プログラミング
Web
プログラミング作法
アーキテクチャパターン

MVCモデルに関するまとめ

はじめに

自分の知識を記事にしてまとめたことがなかったので簡単に文字に起こしてみました。
間違いがありましたらご指摘お願いいたします。

この記事の目的

1.MVCモデルとは何かを理解する
2.MVCモデルの利点がわかるようになる

そもそもMVCモデルって何?

プログラミング手法のアプローチの一つ。
MVCとはModel・View・Controllerの略で、処理を3つの役割に分割して実装する手法です。
各処理の説明を以下に記載します。

Controller

Controllerは、ModelとViewの仲介役を担っています。Viewから受け取ったデータをModelに渡して、Modelによって処理されたデータをViewに渡す役割をしています。つまり、処理を制御しているのが、このControllerの役割になります。
Controllerのクラス構造はURLに直結するものです。
Controllerクラスとそのメソッドの組み合わせでURLが形成されると考えてください。
そしてリクエスト情報を直接処理するのがコントローラーです。

Model

Modelは、システムの中でビジネスロジック、データアクセスを担当しています。つまりシステムの本体部分にあたります。
具体的な機能としては、アプリケーションデータや関数、データベースへのアクセス、データ管理などの機能を担当します。

View

Viewは、レイアウトの部分です。UIを表示するためのコンポーネントであり、データ入力フォームやグラフといったデザインやレイアウトに関わる部分を担当しています。
つまりは、HTMLの生成を担っています。

ModelやControllerによって作り出されたデータをもとにHTML生成を行います。
したがって、Viewにはビジネスロジックを記載しませんし、逆に、Model,ControllerにもHTML生成ロジックを記載しません。

MVCモデルの利点って何?

大きく分けて2つあります。

1.
 Model(ビジネスロジック部分)、View(レイアウト&デザイン部分)、Controller(入力に対する制御部分)と役割分担することで、アプリケーション開発も効率的に分業することが出来る。
2.
 Model、View、Controller の役割分担によりプログラムの独立性が高くなり、仕様変更に対して影響を受けにくく、柔軟な対処が可能となる。

1.に関しては、自分の得意分野に対してアプローチが可能であるということを指していて、簡単な例を挙げるとデザイナーがViewを担当している間に、プログラマーがModelを担当するといった分業ができるようになるというメリットがあります。

2.は一つ一つの機能が独立性を保つことで、Viewを大きく変更した場合にも、Modelではビジネスロジックのみを実装しているため影響を受けませんし、またその逆も言えます。
さらに、他の場所やアプリケーションで機能の再利用が可能であるし、エラーが発生した場合にはどこでエラーが発生したのかを容易に発見できるので保守性が高まるというメリットがあります。

MVCモデルの基本的な処理フロー

上述した通り、MVCモデルでは機能をModel,View,Controllerに3分割していて、ユーザーの入力をControllerが受け取り、入力に沿ってModelに処理をさせ、処理されたデータをViewが表示するという流れになります。

それを図解すると以下のようになると思います。
Screen Shot 2018-05-05 at 3.23.58.png

図 MVCモデルでのユーザーからの入力に対する処理のフロー

示した通り、
Modelがデータの処理をおこない、Viewがユーザーに表示、ControllerがViewとModelの制御を行います。

さいごに

この記事は以上になります。
記事を書くにあたり、MVCモデルについてもう一度調べたことで、自分の中にあったふわっとした理解をすこしは固めることができたかなと思います。
間違っている点や理解が不十分な点等,ご指摘いただければ幸いです.