Affamative Way

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

PHP設計勉強会に参加してきました

主催のid:shimookaさん ありがとうございました。
設計勉強会

はてなダイアリー[1]にも書きましたが、PHPフレームワークを使った実際のプロジェクトでどういう風に設計し、その結果、どこが良かったか/いまいちだったかを皆で持ち寄って議論できればと思います。

対象はsymfonyに限らず、フレームワークより外側をどうつくるか?
に焦点を置いたものであれば構いません。

現在想定している内容については、[2]を参照してください。

[1]http://d.hatena.ne.jp/shimooka/20080901/1220245667
[2]http://d.hatena.ne.jp/shimooka/20080829/1220019598

Symfony要素高めかと思ったら、意外とそんなこともなく
cakePHP,Ethna,symfonyの各部分でのコード設計をあれこれと議論といった雰囲気でした。

リスクを避けるWEBアプリケーション設計

PHPerの言う設計は主に詳細設計中心だろうということで、その辺りを中心の発表でした。

  • 設計で避けるべきリスク
    • 仕様理解のズレの補正
    • 想定される処理量、処理方式の確認
    • コーディング後に修正が難しい問題の対処
      • 命名規約・グルーピング(symfonyでいうとmoduleの分割)
  • 未来の為に
    • リスクを避ける事に固執しすぎると降着状態へ
    • 時にはコストを払って新しい技術を導入すべき
      • Unitテスト,ORマッパ,APC,Smartyを避けるとか....etc

議論ではSmartyを避けるという辺りで議論になっていました。

  • デザイナーとの分業という点
    • (過去の経験から)分業がうまくいった。はやはり解りづらいという印象
    • htmlをエンジニアが組み込むのでSmartyである必要はとくに感じない
  • 技術面から見た点
    • 導入しただけで単純に重くなる
    • E_STRICTエラー出まくり
      • これはPHP5 のSmartyライブラリでdwooというのがあるらしいのでこれで対処できるんじゃ?
    • 結局のところは、素のPHPをテンプレートとして扱うフレームワーク(cakeとかsymfonyとか)が普及してきたということもあるんじゃない?
      • Smarty使うとhelper使えない。helperだとvalidation時の処理とか便利
      • helperはcssレイアウトになってくると非常に有益
    • 素のPHPもendifとかendforeachで書けばそんなに可読性は落ちないんじゃね
<?php if( $foo): ?>
  <div>$fooがある場合に表示</div>
<?php endif; ?>

<ul>
<?php foreach( $list as $value): ?>
  <li><?php echo $value ?></li>
<?php endforeach; ?>
</ul>

APCの凄さは月曜日のPHP勉強会で発表されるそうです。
また、CakePHPConが開催されるそうなのでBakerな人は要チェックかと。

Ethna的な設計思想

  • ライトウェイトなMVC フレームワーク
  • 構造
    • Action
      • AppManager
    • View
    • Controller
  • 処理の順番
    • Action
      • authecicate -> prepare -> perform
    • View
      • preforward -> forward -> template
  • 決まり事
    • prepare
      • 値のバリデーション/フォームの準備(含む参照系DBアクセス)
    • perform
      • DBの更新処理(を呼ぶもの)
    • preforward
      • 表示にかかわることを記述(含む参照系DBアクセス)

view側で表示処理を行うのでバリデーションで、引っかかった場合の入力再現処理の記述が要らないのでcakeやsymfonyに比べると条件分岐が減るというメリットになるほどなーと、会場は反応してました。

Open PEAR Server というCPANのような登録すればライブラリを公開できるPEARライブラリを作っているそうなので、期待してます。

MVCとは何か?

  • 発表した人:halt さん

mojavi3,Ethna,cakePHPと比較してそもそもviewクラスっていらなくね?という話でした。

自分も気持ち悪い部分だったので、激しく同意!
EthnaでViewを使うメリットもあるけど気持ち悪いなぁと思いながら使ってて「あーこれが気持ち悪かったんだ」というのがよくわかりました。

感想やら

フレームワークとの上手い付き合い方を計っていく機会としてすごく有意義な時間でした。
ただ、もう少し上流と絡んだ設計の辺りも聞きたかったなーと。
実際どんな成果物だったり、設計資料を作ってるのか聞きたかった。*1

うーむ、今回聞けなかった。テスト周りの話が聞きたいなぁと思うので、oscでDocTestの話を予習してから聞きに行こうかなぁ。。

9/28 追記

Ethnaで参照周りをViewを書くってというのでエラー起きた時、そのままだと気持ち悪いんだよなーと思いつつ、めっきりEthnaを使っていないのでどうしたかをすっかり忘れていたが、過去のブログに書いてあった。

ViewからViewへのフォワードって結構便利だったのでお披露目しておきます。

*1:単純にオフレコなんだろうけども