技術

MVCついて軽く触れる

森 真樹史

森 真樹史

2019/09/27

「MVC」の画像検索結果

こんにちは!新卒エンジニアの森です!
最近様々な構造や運用設計の勉強をしているため、 今回は私が一番最初に実装したアーキテクチャである、MVCのお話をしようと思います。

1.MVCとは

MVCとは、Model、View、Controllerの訳語で、 SmalltalkのGUIライブラリのモデル として登場したアーキテクチャパターンです。
GUIアプリケーションを作成する際、適切なモデル化を進めるのに良いとされた考え方です。

Model、View、Controller のそれぞれがどのように依存するべきか、どこにコードを書くべきかということを端的に以下に表しています。

  • Model: システム内のビジネスロジックを担当する
  • View: 表示、入出力の処理をする
  • Controller: ModelとViewを制御する

安定依存の原則というものがあります。
これは要件が安定しているモジュールに依存し、要件が変動しやすいモジュールは依存しないようにするという原則ですが、MVCアーキテクチャは Model > View > Controller の順でとらえています。

2.どこで使われているの?

有名なのは、Ruby on Rails、Laravel、CakePHPなどがあげられます。
Hello Worldをしようとして開発環境を立ち上げたら、即座にMVCアーキテクチャの環境が立ち上がるフレームワークのことです。

ちなみに、w2でもC#のASP.NET MVCを採用している箇所があります。
MVCS + DDD(ドメイン駆動設計)になっていますが、、、

3.MVC実装での注意点

MVCを初めて実装する際、 主な注意点は 「Fat Controller」です。
これは、Modelに業務ロジックを記述すべきなのに、ルーティングや制御係のControllerに業務ロジックを記載し、Controllerを太らせてしまうことを言います。

特にプログラミングを始めて日が浅い方などは起こりうるため、まずはここだけ注意してコードを記述すべきだと思います。

私も最初は “No, Fat Controller, Yes, Fat Model.” と頭で唱えながらコードを書いていました。

4.MVC実装するとどんな感じ?

上記「3.MVCでの注意点」の通り、 “No, Fat Controller, Yes, Fat Model.” と唱えながら比較的大きいプロジェクトを実装していると、MVCの問題点に遭遇することになります。

それは、「ドメインモデルの貧血」などの問題です。
この問題に対して、MVCより後に、MVCS(SMVC)や、MMVC、DCIなど様々なアーキテクチャが出るのですが、一番最初に実装してみるアーキテクチャとしてMVCはわかりやすく、色々なアーキテクチャを勉強する上で、MVCを知っておくとその他適当に対応できる傾向にあるため、おすすめします。

5.まとめ

一般的に、実装するアーキテクチャの「仕組み」、「使われている経緯」、「意図」を実装する前にある程度知っておくだけで、使い方や把握できる速度が上がるといえます。

MVCを勉強することで、他のアーキテクチャを触る際も「Model的な部分はどこだろう、どのように異なるのだろう」というように、類似点や相違点を考え着手できるため、最初に触るアーキテクチャとして、とても良いと思います!