今日は本当はFuelPHPでアプリケーション作成していこー!という記事を書く予定だったけど、
作ってる途中でFuelPHPのViewModelを調べてたら記事を書きたくなったので、今日はViewModelについて書こうと思う。

ViewModelを使った場合のモデリング


最初にViewModelって名前を見た時にはMVVMをサポートしているのかと思った。ViewModel使ってResponse返すとKnockout.jsのバインドでもしてくれるのかと。
でも実態は思ってた使い方と違ったのでちょっとまとめておこうと思う。


とりあえず図にしてみた。 スクリーンショット 2014 05 14 0 56 03

要はView作る為の処理はViewModelに任せてしまってControllerからModelを呼び出すのは永続化とかのViewに関わらない処理のみにしてしまおうという事。
こうしておけばModelの責務が軽くなるのでModelの肥大化を避けられるという訳だ。
オブジェクト指向の原則である、Command-Query分離の原則をより分かり易い形で実装出来る事にもなるのでいい感じだ。
確かにWebシステムにおいて、取得したデータってViewでしか使わないし、登録・更新の為に一時的にSelectする場合なんかだとModelの中で完結させるべきだから、こっちの方がしっくりくる。
でもこのモデリング、何て名前にすべきなんだろ…MVVMC?
MVVMとは全然別物だし、MVMCとか?
ViewModelとViewを合わせてViewって扱いで普通にMVCでいいのだろうか…


ちなみに超個人的見解なので、それは違うよ!とか、コイツ分かってねーな。とかツッコミどころが有ったら遠慮なくコメント下さい。
ViewModelの仕様を見て、こういう使い方…なんだよね…?と考えただけなので正しい使い方なのかどうかはあんまり自信が無い…