Do You PHP はてブロ

Do You PHPはてなからはてブロに移動しました

「設計」勉強会やりたい

symfony前提としてますが、多分どのフレームワークでも同じかなぁ、と。フレームワーク使った開発って今では一般的になっていて、たとえばsymfonyを使う場合、

  • Propelでモデルクラス作成
  • Actionにロジックを記述
  • Viewは素のPHP

という、ある意味「symfony的なモノリシック」な3層構成でもWebアプリはできちゃうわけです。
でも、サービス層(ロジック層)とかを噛ましてフレームワーク依存をなくしたクラスを作ってActionはそれを利用するだけとか、ユースケースから導き出されたクラスを使うとか、テスト的な観点からこうした方が良いとか、いろいろあるわけです。
こういった情報って「symfonyはこう使う」みたいなtipsではなく、本当の意味での「スキル」だと思ってるんですが、今自分がやってることが本当に良いのかどうか、あるいは、もっと良い考え方があるんじゃないかと思っています。

で、symfonyを使った実際のプロジェクトでどういう風に設計し、その結果、どこが良かったか/いまいちだったかを皆で持ち寄って議論できないかなぁ、と思うんですが、のってくれる方いらっしゃいますかね?


ざっと次のような項目について、実際にどのようにやったかを話す感じです。

  • どんなWebアプリケーションか
    • ECサイトとか、コミュニティー向け○○○サービスとか
    • 当然、NDAに引っかかる部分は出さなくてOK
  • レイヤ構成(View-Controller-Logic-DAO-DBとか)
  • ActionクラスからDBまでのクラス構成の概要
    • その際、中心となったポリシーとか
      • テストを意識して○○○をしたとか
  • Validator周り
    • できる限りValidatorでチェックし、Actionに渡った時にはすべてチェックが済んでいる状態にしたとか
    • どこまでValidatorでチェックし、どこからActionでチェックしてsfView::ERROR返すようにしたとか
  • DB周り
    • Propel/Creoleそのままとか、Doctrine使ったとか、漢は黙ってPDOとか
    • テーブル設計時にORMを意識したとか、その辺は手書きSQLで吸収とか
  • ユニットテスト
    • PHPUnitとか、limeとか、simpletestとか
    • モック使ったとか
    • 自動生成したクラスはテストしてないとか
  • DBを含むテスト
    • テストデータは毎回セットアップするようにしたとか
      • 大量のテストデータがあるのでCSVで用意して流し込むようにしたとか
    • SQLの実行結果のチェックとか
  • Webを含むテスト
  • それぞれの作業量に対する工夫
    • 作業は人海戦術したとか、何らかのツール(IDEを含む)を使って楽したとか
    • プラグイン作って楽したとか
    • 自動テスト環境を用意したとか
  • その結果、どうだったか
    • 開発とテストは大変だったけど、運用入ったら楽だったとか
    • 開発腹区だったけど、テストと運用大変とか

この項目を見ると「テスト」に偏ってますwが、「テストを見越した設計の仕方」がいまいちしっくり来なくて、こういうのになれてる方はどんな感じでやってるのか聞いてみたいなぁ、というのが本音です。

あ。「この設計はダメだ」とか言う会ではありません。「こうやったら開発時は良かったけど、運用に入ってダメだった」とか「このツール使うでしょJK」という情報を公開してもらう場と考えています。「実はsymfony的モノリシック最強!」という結論があるかも知れませんし。どちらかというと、「ここはこういう考えで○○○した」という「考え方(ポリシー)」がいろいろ聞ければいいなぁ、と思っています。


どんなもんでしょうかね?ある程度「発表したい人」が集まるようなら、どこか会場を借りて早めにやりたいです。うちの会社でも良いですけど、Max10人ぐらいしか。。。:-(

また、「こういう方が良いんじゃない?」というのがあれば、教えてください。

某din○な方とか、某ア○アルな方とか、某id:yandodさんとか、某akkyさんとか、某symfony使ってる方とか、いろいろ面白いネタもってそうなんだけどなーw