設計勉強会で発表してきました+メモ+資料
恐れ多くも、発表してきましたので資料公開します。
記事中でも触れますが、私が発表したのは事故です。(ぉ
発表資料には書いてなくて口で説明してた部分とか、多少補足してあります。
haltさんの発表
ViewClassは本当に必要なのか?という話。
ViewClassを解さなくても、Controllerがモデルでデータとってきて、テンプレートに投げる、それがMVCの本質なんじゃないか、という話でした。
MVCを更に細かく分割したようなEthnaとは逆で、そのあたりの複雑なロジックを一つのコントローラー中のアクションとしてまとめてしまうというのは、それはそれでシンプルで、たしかに理にかなった話だなぁ、という感想。
Smarty は使わないほうが良い、は本当か?
えーっと、これも話すとそれなりに言いたいことはあるんだけど。
たしかに、一時期に比べればテンプレートエンジンとしてSmartyを使う場面はかなり少なくなってきていると思う。
でもそれって、Smartyが重いからダメだとか、Smartyタグを覚えるのはダルいとか、そういうことじゃないと思うんですよね。
そもそもPHPフレームワークのメインストリームが、PHPテンプレートを使うCakePHPやsymfonyにおきかわってきて、それと相性が合わない、というだけの話な気がする。
別に私はSmartyをゴリ押ししているわけではなくて、CakePHPではもちろんSmartyは使わないし、symfonyでも使わないかもしれないけど(今日来てた中では、「symfonyでもSmarty使う」って人もそれなりにいました)、でもそれってSmartyが優れてないからとか、PHPテンプレートが優れてるからとか、そういうことではなくて、適材適所、そのフレームワークや状況にあった使い方をしてますよ、ということなだけなんですよね。
たとえば、デザイナーでも扱えるようにテンプレートを用意したりとか、デザインにあわせて柔軟にビューが作れるようにヘルパーをごりごり改造したりとかって話を聞くと、「なんだそれってこれまでSmartyでやってきたこととたいして変わりないじゃん」と思えるのです。
結局工数はあまり変わらないんだと思います。
それって、「PHPはつかえないよねーRubyだよねー」と同じレベルの話なんじゃないかな?と。
発表後、懇親会に向かう途中で haltさんと話してたこととか
EthnaがMVCモデルかというと、ちょっと違うんじゃないかな、と思うのはやっぱり同じようです。
MVCモデルのベースというのは、データはモデルにひもづいていて、モデルを介してデータの更新・取得を行うものなんだと思います。で、CakePHPとかはたしかにそうで、バリデーションなんかも全部モデルでする。これは、データはモデルで扱うものである、という基本的な概念がそうさせていて、フォームから入ってきた値がどうのこうのじゃなくて、最終的にDBに入るもの、それがモデル。
Ethnaの場合はそうじゃなくて、データは「フォーム」(Ethnaではアクションフォーム(ActionForm)と言う)にひもづいている、という設計思想のもとフレームワークの処理が流れていくよね、という話。
要するにデータはDBやモデルによって成っているのではなくて、それはあくまでデータを入れるための箱であって、データはユーザが、あるいはプログラムが、外から持ってくるもの、というのが基本概念なんじゃないの?という感じ。
だからアクションもビューもフォームと深くひもづいていて、フォーム値をうにゃうにゃすることを中心に処理が回る、という形が出来上がっているのだと思います。
会話の中で、フォームドリブン、という言葉が生まれました。
今後これは使っていきたいですね。w
空気を
読んでなくてすみません。id:yandod さんも haltさんも、こういう詳細な話じゃなくて、もうちょい上の話してたw
そのうえ結構長くなっちゃったから本日メインのはずだった「議論」の部分にあまり時間をとれなくなってしまったみたいで・・・orz
すみません。。うへえ。