PHP第一回設計勉強会@楽天へ行ってきた
運良くキャンセル席が取れたので行ってきました。
動画・音声配信は無いようなので、残念ながら行けなかった方のために、懇親会も敢えて行かずに、自分が理解でき、覚えており、印象に残っていることを、独断と偏見で自分の意見・感想を添えながらつらつらと書いておきます。聞き取り違いがあったら指摘プリーズ。
ちなみに懇親会に行かなかった本当の理由は、金欠気味なのと、来月14日発売と噂の新macbookに備えているだけです。
会場
まず会場が楽天:

すげー。内部やべぇ。オサレすぎ。やっぱ儲けている会社は違うなぁ。普通の会社は内装にあんな金掛けれませんわ〜。プログラマの開発環境は一体、どうなってるんだ!?おそらく、マイノリティリポートに出てくるような巨大タッチパネルインターフェースがあるに違いない。こんなの:

少しの間だけ開発現場に潜り込んでみたい。ミッション・インポッシブル!!
自己紹介
まずは一人一人自己紹介。緊張した。最近、喋ってないので声がでねぇ。スーツ一人だった。現在、常駐している会社の関係上、スーツです。スーツもいいっすよ。何着て行こうかとか迷わないし。・・・どうでもいいですね。
当初、symfony関連の勉強会を想定していたようで、結構、symfonyユーザがいました。ちなみに楽天さんもsymfonyを使ってたり、独自のsymfonyプラグインを開発していたり、ラジバンダリ(加筆)、だそうです。
WEBアプリケーションにおける設計とは?(id:yandodさん)
発表資料が公開されています。
盛り上がったのは「Smaryはさよならしたほうが良い」との主張関連。現在もSmartyをメインで使っている人が3、4割いたのは驚き。
「Smartyさよなら論」に賛成です。symfonyやCakePHPなどの最近のフレームワークを使っていれば、ビューの部分はテンプレートエンジンを使わなくてもシンプルにHTML&PHPで書けます。
また、いきなりフレームワークから触り始めて、Smartyを知らない次世代の人にとっては、ビューだけのためにわざわざ独自の言語仕様を学習するにはコストが掛ります。しかも、Smartyを学習してもビューの記述効率が上がるわけでも、技術が向上するわけでもないので、そのコストは回収できないわけです。テンプレートにSmarty使いたい人の大半は自分が昔から使い慣れているからだけではないかと思います。冷静に考えればいらなくないですか?
ちなみに、Pythonなどの他の言語のWebフレームワークを触ってみて嫌だなぁ、と思うのはテンプレートエンジンの言語仕様が、そのフレームワークの言語と異なる点だったりします。その点、PHPはHTMLと親和性が高いので、テンプレートエンジンを導入して、そのメリットをわざわざ潰す必要は無いかと思います。
また、「APC」というPHPの中間コードのキャッシュを行うモジュールがあるそうで、これに関しては来週の月曜の勉強会で説明するよ、とのことでした。速度が約2倍になるそうです。
その他、参加者さんからの情報として、Smartyと互換性があって、Smartyより早い「dwoo」というテンプレートエンジンがあるよ、っていうのと、「Smarty3」がリポジトリにインポートされているよ、とのこと。テンプレートエンジン派な方はどうぞ。
Ethna的なActionとViewな何か(sotarokさん)
Ethnaでの各レイヤーの切り分け方。ノウハウ等。
日本発のフレームワーク「Ethna」。自分は世界中のすげー人たちとも繋がっている感が欲しいので、ちょっと・・・です。
話が反れますが、個人的にはイベント詳細ページの「MVCなんて言葉にとらわれないんですよ。あなたとは違うんです。 」にハマりましたw 早速、参考にしてはてなダイアリーを作成させていただきました。
そんなことより重要なのは最後の宣伝:「Open PEAR Server」なるものがsotarokさん周辺で開発中されているとのこと。気軽にライブラリとかを登録・公開できるようになるそうです。確か、先日のPHPカンファレンスでも問題提起されていましたよね。PHPにはPerlのCPANのような、気軽にライブラリ、モジュールを登録できるスペースがない、みたいな。どう発展していくのか楽しみにしています。頑張って下さい!
MVCとは何か。おまえらMVCわからずにフレームワーク使うな(haltさん)
MVCをちゃんと理解してコーディングしましょう!
同意!!コントローラにビジネスロジック書いたり、HTMLのタグを埋め込んだりしちゃいかんぜよ!!!
その他、参加者さんから「なんでCakePHPのモデルはデータをオブジェクトではなく配列で返すのか」といった疑問も出ました。自分もCakePHPを触ったときに(お触り程度)、その点が気に入りませんでした。
例えば、userテーブルにfirst_name(名)とlast_name(姓)カラムがあり、テンプレートで氏名として両方を出力したい場合、symfonyの場合、2つを結合した結果を返すようなgetName()メソッドをUserクラス内に作ってテンプレートで呼び出せばいいのですが、CakePHPだと、その結合をどこでやるの?みたいな疑問を感じた記憶があります。ちゃんと調べれば、普通に定義して再利用出来そうですけど。
ちなみに、MVCの悪例として挙げられていた、Mojaviのサンプルコード提供の会社でPHP研修を受けたのがWeb系プログラマ人生の始まりなのは、ここだけの秘密です。研修だけで、その社内で開発したことはないんですけどね。いい思い出です。
その他、所感など
MVCに関連した情報として、symfonyの公式ブログではリファクタリングのストーリーが全5回に渡って公開されています。そこでは「The principle is quite simple, you want thin controllers and fat models.」という文章が出てきます。MVCよう分からんという人は一読の価値有りです。個人的にはPart2に出てくる「sfTestBrowser」を使っての「functional test」が印象的でした。
なお、より良い設計のために本勉強会幹事の下岡さんの著書「PHPによるデザインパターン入門」でデザインパターンを身につけるのもいいかと思います ![]()
自分も買って写経しました。
さくっと書くつもりがダラダラと・・・。日付変わっとるやないか〜い。
皆さん、お疲れ様でした&ありがとうございました。第2回、楽しみにしています。
[PHP][勉強会]第1回PHPerのための設計勉強会やりました
via. events.php.gr.jp - Event 26日に品川シーサイド近辺で無事開催しました。参加して頂いた方、ありがとうございました&お疲れ様でした。個人的には、想定通り、質疑応答/議論が活発だっ…