Webアプリケーションを作成する上で重要になってくるのがMVCと呼ばれるソフトウェア設計モデルです。
MVCとは
- ソフトウェアを「Model」・「View」・「Controller」という3要素の組み合わせでシステムを実装する方式です。
MVCモデルのイメージ
-
Model
- Modelは、システムの中で処理の中核を担うビジネスロジック(アプリケーションが扱う領域のデータと手続き)を担当するシステムの本体部分に当たります。
- データベースなどに格納された生のデータを隠蔽し、抽象化された形のAPIを通じて他のモジュールからのアクセスをコントロールするモジュールです。
- Modelは入出力や表示といった処理は行わず、業務モデルの実装といった部分を担当します。
- アプリケーション特有のルールやロジック(ビジネスロジック)を持ち、データの整合性に絶対の責任を持ちます。
- データの変更をViewに通知するのもModelの責任となります。(Modelの変更を通知するのにObserverパターンが用いられることもあります)。
- 多くのアプリケーションではデータの格納に永続的な記憶の仕組み(データベースなど)が使われています。
- MVCの概念では、データの(UI以外の)入出力は取り扱わないので、データアクセスも本来MVCの概念の範疇を超えるものではありますが、敢えて言えばModelの中に隠蔽されると考えられます。
- J2EEでは JavaBeans、EJBがモデルを担当します。
- サーバサイドでいうserviceに関する処理を行なっています。
- View
- Viewは、表示、入出力といった部分を担当します。
- Modelのデータを取り出してユーザが見るのに適した形で表示する要素です。
- UIへの出力を担当します。
- Modelが提供する抽象化されたデータを、どのような形式で人へ見せるのかを記述したモジュールです。
- GUIアプリケーションの場合、使用するGUI部品や画面上のレイアウトを指定します。
- 必要な情報をModelから取り出して画面へ表示させる為の処理を行います。
- J2EEではServletやJSPで実装します。
- 一般的な HTML表示に関してはJSP、そのほかの特殊なデータ(バイナリデータ)を出力する場合は Servletを用いるのが標準的な使用方法となります。
- Controller
- コントローラは、ViewとModelを制御します。
- 自分自身では表示を行ったりロジックの実行は行わず、Viewからの入力に応じて、必要なロジックの実行をModelに依頼し、その結果表示をViewに依頼します。
- ユーザの入力(通常イベントとして通知されます)に対して応答し、それを処理する要素です。
- UIからの入力を担当します。
- ViewとModelの間に位置して、ユーザーにどんな順序でデータを見せて行くとか、Viewを通したユーザーからの入力をModelへのAPIコールへとマッピングするのがこのモジュールの役割となります。
- ModelとViewに変更を引き起こす場合もありますが、直接描画を行ったり、Modelの内部データを直接操作したりはしません。
- J2EEではServletでControllerを実装します。
- イベントはコントローラで受け取り、画面上構成するボタン(イベント)の数だけ処理があります。
MVCモデルのメリット
- 並行開発
機能毎の分離が明確になることにより独立性が確保出来る。
・開発の分業が可能になる
・専門家を配置しクオリティーを上げる事が可能になる - 再利用性
コンポーネント間の依存性が最小限に抑えられる為、他の部分の影響を受けにくい。
・コンポーネントの再利用がしやすくなる
・他のコンポーネントの変更が原因で、複数の担当者が同一のソースに対してメンテナンスを行う、というような事態を避けることもでき、保守性も確保される