設計勉強会に参加してきました
楽天で開催された「設計勉強会」に参加してきました。
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さん、…(名前忘れちゃいましたスイマセン)、おいら。
会社の打ち上げでは飲まないけど、楽しいお勉強をしたあとのご褒美ということでビールをガンガン飲む!
近所に住むsotarokとともに終電で帰宅〜。

[PHP][勉強会]第1回PHPerのための設計勉強会やりました
via. events.php.gr.jp – Event 26日に品川シーサイド近辺で無事開催しました。参加して頂いた方、ありがとうございました&お疲れ様でした。個人的には、想定通り、質疑応答/議論が活発だっ…