Affamative Way

前向きにグダグダいいながらコード書く

第2回設計勉強会に参加してきました

第2回設計勉強会 - events.php.gr.jp

先週に引き続き会場が自社だったのでひっそりと後ろから参加させてもらいました

主催のid:shimoookaさん、手際のいい幹事をなさってくれたid:lindさんありがとうございましたー。


詳細はshimookaさんの日記に詳しく書かれています。のでざっくり感想をー

「クイズ研」開発上の設計判断とその結果

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. リクエスト受付
    2. リクエスト解析
    3. ページコントローラー決定
    4. 事前処理
      • 認証とか認可、バリデーションとか
      • 上の為のフィルター
    5. 実処理
    6. 事後処理
    7. レスポンス組み立て
    8. レスポンス出力

このためにフレームワークがある

二つを混ぜると危険

レイヤー採用からレイヤーを諦めててく過程を割と近くで*1ちらほら聞きいていたので、発表聞いて全部がつながってすごくすっきりしました。

フレームワークの思想と別の考えを持ち込むからには、その分メンバーへの学習コストと保守性が落ちてしまうのはフレームワークの利点を削っているんだなと。

弊社サービスの場合の設計


既存サイトのリプレイスなのでSQLレベル互換性を維持するということでPropelの依存性をなくして完全にモデルレイヤーを自作したという実例を紹介していただけました。

symfonyにモデルレイヤーを採用するとこうなる!というコードを交えた説明でとても解りやすかったです。
フロントがFlashということで、意図あってのレイヤーの採用だったので、思想ありきではないというのが新鮮でした。

  • Flashのテストってどうしたらいいんだろー

というのはいいこと聞きました。


「テストはやって良さが解る」ということを良く聞くんですが、まともにPHPUnit使ったこともなかったり。。。触ろう触ろうと思ってるだけで全然触れていないので、いー加減ちゃんと書きたいと思います。


懇親会

対して思想もこだわりないので、皆様の熱い考えをじっくり聞いておりました。

そこで気になった言葉

  • レイヤーで分けるとモジュール単位の分業ではなく、下層と上層で分業ができるので統一したコード*2が書ける
    • 要件分析の手法にも繋がる部分もある
  • やがてWebはModelと呼ばれる日が来るんじゃない?すでにJSとFlash側でMVCが存在するしね
  • PHPのコミュニティこそデザイナーのコミュニティにもっと近づくべき
  • Smartyは(ry
  • TorqueってJavaでも廃れてないか・・Propel・・
  • XREA.COM も注目
  • PHP懇親会 絶賛募集中!
  • PHP関西 勉強会も絶賛募集中!

全体的な感想

第1回は結構メタな内容だったので、今回はアーキテクトな内容で面白かったです。
twkさんがフレームワークを使った作り方で、ハタさんを発表をkunitさんが読んでいて、更にshimookaさんが読んでいたという。とても参加してる人がついて行きやすい構成でした。

みんな悩んで行き着く先は似てくるんだな、ということで、このイベントの最終回は皆が議論して妥協点を内包したフレームワークができてるんじゃないかと思ってます。

*1:座席的な意味で

*2:命名規約とか関数の作りとか