かとのぼのマイコード・マイライフ

ウェブサービス開発とプログラミングと雑記ブログ

MVCモデルとは?【入門者向けのMVCモデル基礎知識】

今回はMVCモデルの説明と、MVCフレームワークの紹介をします。

MVCモデルとは?

MVCは「Model–view–controller」を頭文字をとった言葉で、アプリケーションの開発設計のパターンの一つです。要するに、ウェブサイトやアプリを作るときに、あらかじめある程度決まった設計ルール(MVCモデル)を使っているということです。

なぜMVCモデルを使うのか?

MVCモデルは、ユーザーが入力する部分と内部のデータのロジックを分離するために用いられます。方法は、アプリケーションを「Model(モデル)」「View(ビュー)」「Controller(コントローラー)」の三つの構成に分割し、相互に接続することで実現します。

では、わざわざアプリケーションの設計にMVCモデルを採用して、三つに構成を分けるメリットはなんなのでしょうか?

それは、ユーザーが操作する部分と内部のデータの扱いや管理を分けて設計をクリアにするためです。

MVCが生まれた経緯の説明によると、アプリケーションも元々はMVCの全ての要素はひとまとめに作っていたそうですが、その開発方法だとデザイン部分の開発と、サーバーやデータの管理部分がごちゃ混ぜになってデザイナーとプログラマーの仕事が複雑になってしまい大変だったそうです。そのため、デザイナーはデザイン部分に、プログラマーはロジックの部分に集中できるよう、仕事を分けやすくするために生まれたということです。

ただ、そもそも、普通のウェブアプリは、1.ユーザーが何かを入力して2.そのデータを裏側で処理し3.画面に反映させるという仕組みの繰り返しです。

この一連の役割をそれぞれ分けた構成にした方が開発もしやすいのは感覚的にもしっくりきますね。そのため、デザインやロジックも一人で開発するような開発でもこのMVCモデルを多く採用しています。

f:id:katonobo:20190326084911j:plain

MVCの構成

「モデル」「ビュー」「コントローラー」のそれぞれの役割をウィキペディアの引用し、簡潔に説明します。

モデル

そのアプリケーションが扱う領域のデータと手続き(ビジネスロジック - ショッピングの合計額や送料を計算するなど)を表現する要素である。また、データの変更をビューに通知するのもモデルの責任である(モデルの変更を通知するのにObserver パターンが用いられることもある)。

 簡単にいうと、データーベースのやり取りやデータの計算などを担当します。

ビュー

モデルのデータを取り出してユーザが見るのに適した形で表示する要素である。すなわち、UIへの出力を担当する。例えば、ウェブアプリケーションではHTML文書を生成して動的にデータを表示するためのコードなどにあたる。GUIにおいては通常、階層構造を成す。

簡単にいうと、ユーザーに見える画面の部分を担当します。 

コントローラー

ユーザからの入力(通常イベントとして通知される)をモデルへのメッセージへと変換してモデルに伝える要素である。すなわち、UIからの入力を担当する。モデルに変更を引き起こす場合もあるが、直接に描画を行ったり、モデルの内部データを直接操作したりはしない。

簡単にいうと、ユーザーから受けた情報をコントローラーに渡したり、コントローラーから受けた指示をビューに伝えたりします。

MVCフレームワーク

MVCモデルを使ったフレームワークを「MVCフレームワーク」と呼んだりします。

有名なものでは

  • PHP言語では、「CakePHP」
  • Ruby言語では「Ruby on Rails」
  • JavaScript言語では「Angular.js」

などが有名です。このように聞くと、かなり私たちの身近なフレームワークに採用されていることがわかっていただけると思います。

まとめ

 特にRuby on Railsでフレームワークを学習する初心者の方は多いと思います。Ruby on Railsを学習する中でMVCモデルの話は出てくると思いますが、Ruby on Railsのおかげで、アプリケーションの開発の構成が、機能ごとにうまく分けて設計されているということを知っておいてください。