行き帰りの電車の時間がわりと長いためよくGunosyで配信された記事を色々とみてるのですが
ちょっと前にPHP開発者のいうMVCについて物申す的な記事があり興味深く読んでました。
私もPHPでの開発はそこそこやってきていて、自分なりの考え方みたいなものもいっちょまえにもってたりするので
そんなものを今回は書いてみようかと思います。
まず自分は普段の開発スタイルですが
- あんまり既存のフレームワークをそのまま使わない
- Zend 1.x 系をライブラリとして使ったおれおれフレームワークを使用(Zend 2.x なら素直に使った方がいいけど)
という感じです。
フレームワークといってもそこまでおおげさなものでは無いのですが、
再利用や疎結合を意識して実装するための構造にしているってくらいのものです。
基本はフロントコントローラがあってディスパッチャでアクションコントローラ選んでってくらいで
デザインパターンもそんなに無理には使わず、せいぜいTemplate Method くらいな簡単でシンプルなもの。
MVCといえば、まぁそんな感じですかね。
で、今回拝読したブログで書かれてた事の趣旨としては「ファットコントローラはいかん」というもの。
これは自分も同意。そこは意識して普段も書いてるつもり。
ですが気になったのは「そもそもMVCってのはGUIアプリケーション向けの概念で」って話。
これまでのwebアプリに限って言えば、何か一つのアクション(GET/POST)によって画面はリフレッシュされ
ユーザ側の操作による「そのときの状態」みたいなことをそこまで気にする必要は無かった
でも今求められるサービスはGUIアプリケーションにより近づいてきている。
ブラウザゲームとかがまさにそう。
Node.js + Socket.IO とか使ってViewはMVVMなJavaScriptのフレームワークで、って感じで。
これも今や特別な実装でもないですよね。
で、何が言いたいかというとですね
PHPなりサーバサイドだけで完結するwebアプリケーションが今後さらに減っていくと
よりMVVMな方向に考えていくべきなんじゃないかなと思うわけです。
つまりMVCってそもそもオワコンじゃね?って話なわけです。
GithubがMVCを捨ててMVVMに移行した、なんて記事もありましたし。
これからPHP周辺でこのあたりにもっと特化したフレームワークのデファクトが生まれるかどうか。
すぐには実案件への投入というのも難しいかもしれませんが、
色々と大きな変化がまた出てきそうな気がします。