楽天で開催された「設計勉強会」に参加してきました。
symfonyネタが多いかと思いきや、Ethna, CakePHPなどの例が出てきて、フレームワーク毎の違いがあって面白かった。懇親会では初めて会った人とも絡めて良かったです。
以下、レポート。
19:13 shimookaさん自己紹介
19:24 yandodさん発表
リスクを避けるWebアプリケーション設計 10/25(土)CakePHPカンファレンスやるから来てね! PHPerの言う設計って? 一言に設計といってもいろいろある。PHPであればウェブがメインであろう。 ほとんどLAMP
- 基本設計
- 外部設計
- 内部設計
- 詳細設計
設計書ってまともに書いたことがないし、あまりしっかりしたものを読んだことがないのでイマイチぴんとこない。
詳細設計について 詳細設計フェイズをコーディング前に取る。 何故か?気にするポイント
- 仕様理解のズレの補正
- 処理の単位の確認
- 処理量、処理方式の確認
- コーディング後に修正が難しい問題の対処
- SSL有無
- 複雑な処理をシンプルに分割する
- 表示に特化した処理はVIEWへ
- 再利用できそうな処理はライブラリ化(pluginとか)
symfonyにおけるモジュールなどの変更はそんなに難しくないと思うが、URLルーティングが絡むとかなりやっかいだし、後から手戻りが発生するのは極力避けたいので激しく同意。
処理量は意識したことがなかったので目からうろこ。
あんまり古いことに固執するのはよくない。 よくない理由。
- ユニットテストやったほうがいい
- ORMは使ったほうが良い
- Smartyは使わないほうが良い
- APC使ったほうが良い
- バージョン管理したほうがいい
- 本番環境でソース編集が必要なのはおかしい
Smarty不要説で激論!
参加者の半数ほどがSmartyを利用していた。個人的には不要と思っているので意外デシタ。これについては後述。
19:35 安藤さん終わり
19:38 FAQ
Smarty要らない理由は? →遅いから VIEW部分はデザインがあってから埋める?それとも先にてきとうなHTML作る? →ケースバイケース Smarty vs PHPView →すでに習得しているチームがあれば使ってもSmartyでいいかも →今から覚えるならどっちでも変わらない(デザイナはSmarty覚えられるくらいなら、PHPの構文だって覚えられる) 新しいテンプレートエンジンある? →DWOOってのがある。(http://dwoo.org/)
Smarty使ったら誰が楽を出来るのか?という点では、個人的には運用フェイズに入った後にエンジニアが楽できると思う。ただ、結局presentation logicはエンジニアが書かないといけないので、HTMLデザイナ/コーダに丸投げするというスタイルは作れないと思われる。
20:09 休憩終わり? 20:10 sotarok発表
sotarokさん, haltさんの発表はあまりメモってなかった。ごめん^^;
Ethna的ActionとViewな何か 特徴 - action prepare->performという流れ - view preforward->forward->templateという流れ - モデルが貧弱 ポリシその1 - サニタイズはprepareで行う ポリシその2 - DB更新はperformで行う ポリシその3 - 表示内容はpreforwardで行う
Ethnaには明確なViewClassが存在するのですが、この存在意義がsymfony/CakePHPを主に使うエンジニアには理解出来なかったらしい。実際に使うとわりと便利なのだけど、コードがprepare, perform, preforwardに分散することもあり、なれないとコードが煩雑になってしまう。
20:32 sotarok発表おわり
20:32 FAQ
何故prepare()とpreforward()の両方でデータベース参照するの? →EthnaはActionFormに定義がないと、フレームワークから値が呼べないので
当日パッと思いつかなかったのでここに書きますが、必ずしもprepare内でデータベースを呼び出す必要はない。
sotarokが発表していた内容は、データベースの定義に応じてフォームinputタグが増減する、typeが変わるといった処理を行う場合に必要です(参考)。
20:39 haltさん発表
MVCとはなにか。〜おまえらMVCわからずにフレームワーク使うな〜 View要らなくね?
Viewクラスの要不要で激論。
先にも書いた通り、symfony/CakePHPには明確なViewClassというのが存在しない。コントローラ内、いわゆるアクションでViewの前処理を行うが、条件によって出力画面が切り替わる場合、他のアクションへforwardする必要がある。EthnaはViewClassが分離しているので条件によって表示画面を変更する処理は得意。
Ethna, symfonyと使ってみた感想では、ViewClassがあったら便利だけど、無くてもそんなに困らない(アクション内でデカイ分岐とかは必要になるけど)。
勉強会ではみんな似たようなことを思ってる、やってるんだけど、それを共有する機会って無いよね、という趣旨をきちんと達成出来たと感じた。
「自分がしていることって間違ってるんじゃないか」、「他にもっと良い方法があるんじゃないか」という点をいくらかクリアして、目指すべき方向がちょっとだけ見えたのが収穫です。
勉強会後は懇親会ということで青物横丁の焼き肉屋さんへ。席にはyudofuさん、sotarok, maru_ccさん、…(名前忘れちゃいましたスイマセン)、おいら。
会社の打ち上げでは飲まないけど、楽しいお勉強をしたあとのご褒美ということでビールをガンガン飲む!
[flickr]photo:2889175599[/flickr]
近所に住むsotarokとともに終電で帰宅〜。
[ad#text_wide]