page_adsence

2011年12月16日金曜日

MVACモデルに関して

MVACモデルって考え方を今更知りました・・・。
デブサミ2009で発表されてたのに・・・。

比較的長い間MCVモデルの考え方を元に作られているMojaviとかSymfonyとかを使ってきたけど、
MVACモデルって考え方はいいかも。

まずMVCって何なのって話。
MVCとは、「ソフトウェアの設計モデルの一つで、
処理の中核を担うModel、
表示・出力を司るView、
入力を受け取ってその内容に応じてViewとModelを制御するController
の3要素の組み合わせでシステムを実装する方式」のことです。
その考えを元に作られたフレームワークで、よく使われているがMojaviとSymfonyです。

もうちょっとそれぞれの役割を詳しく説明すると、以下のようになります。
Model
データのやり取りやロジック部分を担当する。オブジェクト層やサービス層に分類することも出来る。
View
Controllerから受け取ったデータから、実際の表示の生成を行う。
Controller
ユーザからのリクエストを受け取り、リクエストをハンドリングしたり、Modelをいくつか利用して処理を行う。またその時作成したデータをViewに受け渡す。

しかし、MVCモデルではControllerの役割の中に、リクエストを元にハンドリングするという役割と、Modelをいくつか利用して処理を行うという2つの異なる役割を持っていることがネックでした。
そのせいでソースが煩雑になってしまい勝ちだったのです。

そこで出てきたのがMVACモデルの考え方です。

Model
データのやり取りやロジック部分を担当する。オブジェクト層やサービス層に分類することも出来る。
View
Controllerから受け取ったデータから、実際の表示の生成を行う。
Application
Controllerから受け取ったデータから、複数のModelを利用し、実際の処理を行う。
Controller
ユーザからのリクエストを受け取り、リクエストをハンドリングして、Applicationにデータを渡す。

参考文献:http://d.hatena.ne.jp/shiba_yu36/20110303/1299123350


多分ターゲットのシステムがどういったものかでマッチする場合とマッチしない場合もありそうですが、今後もこういった考え方に関しては常にいい方法がないか考えていきたいと思います。