山下寛人オフィシャルブログ

オイシックス株式会社 執行役員 システム本部長 山下寛人の公式ブログです。

MVC

MVCについて改めて調べてみましたが

驚くほど混乱しています。

こういうものはすでに常識になっているかと

思っていたのですが全然そういうことでは

ないようです。


もともとのGUIアプリケーションのMVCについては

わかりませんが、Webアプリケーションでの

MVCフレームワークや人によって定義がさまざま

です。

もともとJavaではJSP Model2として発表されたのが

はじまりのようです。

MVCパターンの適用限界を考える(3)

原典の文中にMVCパターンと書いてあるのでMVC Model2

と呼ばれるようになったのでしょう。

ここではModelは画面の構成要素をあらわす

オブジェクトになっています。

よく見るとControllerにビジネスロジック

結構入っていますね。


Strutsが出てくるとControllerがフレームワーク

なってしまって見えなくなるせいかActionを

ControllerとしてとらえるかModelとしてとらえるか

がばらついてくるように思えます。


RailsPHP系のフレームワークが出てくると

今度はActiveRecordがModelだという見方が

出てきます。

それまでデータアクセスレイヤの概念はMVC

中になかったのですがここで混ざってより

混乱します。

Java系の人がえせMVCだなどと言うようになります。


ということで、もはやMVCという言葉は

使わないほうがいいという意見まで見ましたが

それだと新しく作り方を覚える人がどういう

考え方でどこに何を書くかわからなくなります。

仕方がないのでそれぞれの現場で決めるしか

ないようです。


オイシックスでは以下のように考えます。

Struts2前提です。

Actionは画面をモデル化したもの。

Actionのインスタンス変数はその画面の中に

あるオブジェクト。

Actionのメソッドはボタンをクリックしたとき

などの動作。

画面の中にあるオブジェクトはDBに永続化

しているものはORマッピングのクラスを

できるだけそのまま使う。

DBに永続化しているものばかりとは限らない。

Actionには画面固有のロジックを書く。

ドメインロジックはドメインモデルに。

たいがいの場合ORマッピングのクラスを

そのままドメインモデルとして扱います。