第2回設計勉強会に参加してきました
先週に引き続き会場が自社だったのでひっそりと後ろから参加させてもらいました
主催のid:shimoookaさん、手際のいい幹事をなさってくれたid:lindさんありがとうございましたー。
詳細はshimookaさんの日記に詳しく書かれています。のでざっくり感想をー
「クイズ研」開発上の設計判断とその結果
- 発表した人:twkさん(岩崎さん)
- クイズ研 - クイズ問題10万問以上!作って遊べるクイズサイト!
- 発表資料が公開されていました
ZendFrameworkはライブラリ的にしか使ったことがないので、ちゃんとフレームワークとして使ってみると面白いのかなと興味が沸いてきました。
エラー時にエラーコードを書いてメッセージをView側で切り替えるというところに興味津々でした。
確かにレイヤーで分けるなら、メッセージはView側で指定されるべきかなーと納得
レイヤー切り分けてる?
- 発表した人:ハタさん
- 発表資料が公開されていました
レイヤーアーキテクチャーとはなんぞやというのがよくわかりました
Webフレームワーク(プレゼンテーションレイヤ)
↓ DXO
サービス(サービスレイヤ)
↓ DXO
DAO(ドメインレイヤ)
重要な用語の意味も解ったので、個人的には大満足
DTOはレイヤーを超えるために値を詰めるための容器です
DTOを最終的に使うときにはドメインロジックで使うオブジェクト(Entity)に詰め替えるのがDxoです
その昔に、Struts+Torque構成で同じことをやってた意図がこういう思想だったのねと解りました。。
経験として振り返るとレイヤーで分けると、どこに何書くかに迷いが少ないから書きやすいんですよね。
依存性も少ないし、テストもやりやすいというメリットもすごーく解るんですが、PHPにしては冗長過ぎる気もしなくもないんですよね。。
HermitというLiteなS2dao.PHP5を作成中ということなので今後に期待!
TeedaとかGoyaとか、Seasar関連の思想はやっぱり面白いので、いっぺんちゃんと体験しときたい。
そういえば懇親会で聞き忘れましたが、symfony1.1ということでsfFormはどうやって利用してるんでしょう。あれもレイヤーパターンだと収まり切らないような。。
結局Webのアーキテクチャーって?
発表した人:id:kunitさん
すごく解りやすい話で、是非是非、資料 or 動画が公開されたら見て欲しい、いや見とけ!
個人的にポイントはここだったのかな思ってる部分
- フロントコントローラ
- リクエスト受付
- リクエスト解析
- ページコントローラー決定
- 事前処理
- 認証とか認可、バリデーションとか
- 上の為のフィルター
- 実処理
- 事後処理
- レスポンス組み立て
- レスポンス出力
このためにフレームワークがある
二つを混ぜると危険
レイヤー採用からレイヤーを諦めててく過程を割と近くで*1ちらほら聞きいていたので、発表聞いて全部がつながってすごくすっきりしました。
フレームワークの思想と別の考えを持ち込むからには、その分メンバーへの学習コストと保守性が落ちてしまうのはフレームワークの利点を削っているんだなと。
弊社サービスの場合の設計
- 発表した人:id:shimooka
- 発表資料が公開されてました
既存サイトのリプレイスなのでSQLレベル互換性を維持するということでPropelの依存性をなくして完全にモデルレイヤーを自作したという実例を紹介していただけました。
symfonyにモデルレイヤーを採用するとこうなる!というコードを交えた説明でとても解りやすかったです。
フロントがFlashということで、意図あってのレイヤーの採用だったので、思想ありきではないというのが新鮮でした。
- Flashのテストってどうしたらいいんだろー
- それflash-seleniumで(ただし、trunkをco重要)
というのはいいこと聞きました。
「テストはやって良さが解る」ということを良く聞くんですが、まともにPHPUnit使ったこともなかったり。。。触ろう触ろうと思ってるだけで全然触れていないので、いー加減ちゃんと書きたいと思います。
懇親会
対して思想もこだわりないので、皆様の熱い考えをじっくり聞いておりました。
そこで気になった言葉