肉とビールとパンケーキ by @sotarok

少し大人になった「肉とご飯と甘いもの」

設計勉強会で発表してきました+メモ+資料


恐れ多くも、発表してきましたので資料公開します。

記事中でも触れますが、私が発表したのは事故です。(ぉ




発表資料には書いてなくて口で説明してた部分とか、多少補足してあります。

haltさんの発表

ViewClassは本当に必要なのか?という話。
ViewClassを解さなくても、Controllerがモデルでデータとってきて、テンプレートに投げる、それがMVCの本質なんじゃないか、という話でした。

MVCを更に細かく分割したようなEthnaとは逆で、そのあたりの複雑なロジックを一つのコントローラー中のアクションとしてまとめてしまうというのは、それはそれでシンプルで、たしかに理にかなった話だなぁ、という感想。

Smarty は使わないほうが良い、は本当か?

えーっと、これも話すとそれなりに言いたいことはあるんだけど。

たしかに、一時期に比べればテンプレートエンジンとしてSmartyを使う場面はかなり少なくなってきていると思う。
でもそれって、Smartyが重いからダメだとか、Smartyタグを覚えるのはダルいとか、そういうことじゃないと思うんですよね。

そもそもPHPフレームワークのメインストリームが、PHPテンプレートを使うCakePHPsymfonyにおきかわってきて、それと相性が合わない、というだけの話な気がする。

別に私はSmartyをゴリ押ししているわけではなくて、CakePHPではもちろんSmartyは使わないし、symfonyでも使わないかもしれないけど(今日来てた中では、「symfonyでもSmarty使う」って人もそれなりにいました)、でもそれってSmartyが優れてないからとか、PHPテンプレートが優れてるからとか、そういうことではなくて、適材適所、そのフレームワークや状況にあった使い方をしてますよ、ということなだけなんですよね。

たとえば、デザイナーでも扱えるようにテンプレートを用意したりとか、デザインにあわせて柔軟にビューが作れるようにヘルパーをごりごり改造したりとかって話を聞くと、「なんだそれってこれまでSmartyでやってきたこととたいして変わりないじゃん」と思えるのです。
結局工数はあまり変わらないんだと思います。
それって、「PHPはつかえないよねーRubyだよねー」と同じレベルの話なんじゃないかな?と。

発表後、懇親会に向かう途中で haltさんと話してたこととか

EthnaMVCモデルかというと、ちょっと違うんじゃないかな、と思うのはやっぱり同じようです。

MVCモデルのベースというのは、データはモデルにひもづいていて、モデルを介してデータの更新・取得を行うものなんだと思います。で、CakePHPとかはたしかにそうで、バリデーションなんかも全部モデルでする。これは、データはモデルで扱うものである、という基本的な概念がそうさせていて、フォームから入ってきた値がどうのこうのじゃなくて、最終的にDBに入るもの、それがモデル。

Ethnaの場合はそうじゃなくて、データは「フォーム」(Ethnaではアクションフォーム(ActionForm)と言う)にひもづいている、という設計思想のもとフレームワークの処理が流れていくよね、という話。
要するにデータはDBやモデルによって成っているのではなくて、それはあくまでデータを入れるための箱であって、データはユーザが、あるいはプログラムが、外から持ってくるもの、というのが基本概念なんじゃないの?という感じ。
だからアクションもビューもフォームと深くひもづいていて、フォーム値をうにゃうにゃすることを中心に処理が回る、という形が出来上がっているのだと思います。

会話の中で、フォームドリブン、という言葉が生まれました。

今後これは使っていきたいですね。w

空気を

読んでなくてすみません。id:yandod さんも haltさんも、こういう詳細な話じゃなくて、もうちょい上の話してたw
そのうえ結構長くなっちゃったから本日メインのはずだった「議論」の部分にあまり時間をとれなくなってしまったみたいで・・・orz

すみません。。うへえ。

おまけ

id:MugeSo さんが言っていた、「Smartyに替わる新しいテンプレートエンジン!!?」

これはアツいことになるかもしれません・・・!?w