ありがとう。また会おう。

ゆるいかんじで。かたのちからぬいて。やってます。

ZendFramework 勉強会 #2に行ってきた

渋谷にて開催されたZend Framework勉強会に参加してきました。

http://events.php.gr.jp/events/show/91


なんかPHPフレームワーク界隈では、cakePHPsymfonyの方が元気で、Zend Frameworkはあまり聞かない気がするなぁ・・・と思ってたんですが、これだけ勉強会に集まるってことは、結構Zendも使われてるんですね。

フレームワークに負けずにもっといろいろ情報でてくるといいなぁ、と思った次第*1


以下、各発表のメモをば。

mixiアプリ(bayside)

Zend Frameworkをサーバサイドに使ってmixiアプリを提供してますよ、という話。

個人的にはZFの話より、mixiアプリの話の方が興味深かった(笑)

高負荷対策はまあやはりユーザ数の母数が母数だけに、苦労するんだなぁと改めて思った。

そういえば、今日mixiみたら、一番負荷的にやばいと言っていた「新着アプリ」のコーナーが無くなってたけど、それはそれでサービスとしてありなのか?検索機能もないのに・・・

初めて実案件で使ってみて (heavenshell)

単語でてきただけだけど、zfdebugdoctrineが気になった。

今一番そこが自分的にストライクゾーンなので後で調べてみよう。

CRUDを簡単にできるメソッド」・・・自分もそんな構想練ってた・・・がまだ頭の中にしかない、つか手動かせ、俺!

PHPUnit・・Stagehand_Testrunnerというのがすごく便利らしい。

ZendApplicationは実は結構重いらしい。

その昔は、ZFは、cake/symfonyよりも速いのが売りじゃなかっただろうか・・・

つかあれか、Zend Applicationになっていろいろごてごて入ってきたからか。

まあでもそれはそれでいろいろフレームワーク内でやってくれてるから、トレードオフなんだろうけど。

実案件での Zend_Db_Table (waraiotoko)

やっぱ、ZendのORマッパはいろいろ面倒だなぁ・・・と思った次第。

自分は最初からZend_Db捨ててDoctrineに浮気したので(笑)

外部キー辿って、親モデル・子モデルのデータ取得するメソッドとか、Doctrineは設定書けば*2、使えちゃうからなぁ。

話の主題と違うけど、Zend_Db_Tableは、カラム定義やらリレーションやらを自前で作る必要があるので、自分はすでにそこから嫌だったんだよね^^;;;

DBにテーブル作って、ガッとコマンド叩いたら、スキーマ定義やらモデルクラスやらガッと吐いてくれるほうがいいじゃん、と。

それがしたかったんで、自分はDoctrineを使ってたりします。

初めてのTwig+Zend Framework (Nully)

Twigというのは初見でした。

Smartyのようなテンプレートエンジン。

テンプレートの見た目がSmartyよりもわかりやすいってのは自分も同意。

デザイナーさんが扱いやすいってのは、実案件では重要。

テンプレート継承機能とかも興味深い。

実案件に適用するとなると、弊害があるとすれば、「デザイナーさんがSmartyに慣れすぎてて、Smarty以外を嫌がる」ことだろうか。これ、冗談抜きで結構大きい・・・


質疑応答のなかで「Zend_Layout使ってる?」みたいな話があったが、自分は使ってる。

使ってるテンプレートエンジンがSmartyだからかもしれないが、HTMLのヘッダ部とフッタ部を別ファイルにしてincludeするやり方好きくないので。

あくまで、HTMLファイルとしてちゃんと完結してたほうが美しい・・・と個人的に思ってるので。

Zend_Aclの探究 (noopable)

この方のブログは自分もとても参考にさせていただいております。

Zend_Aclは自分も今一番取り扱ってるところで、すごく興味深い発表だった・・・んですが、ちと難しかった&時間がなかった・・・

あとで発表資料を見てもう一度じっくり理解したいと思う。


Zend_Acl、Zend_Authについては、Zend公式のチュートリアルをまずやってみろと。

疑似ロール(CURRENT_USER)とか、サービスレイヤー、リファレンスモニターの話など、すごくためになった。

(まだ消化仕切れてない部分もあるが)

サービスレイヤーについては、発表内容とは全然違うけど、今設計的に悩んでる部分があって、サービスレイヤーって実は2種類あるのかなぁと。

コントローラーよりのサービスと、モデルよりのサービス。

コントローラーよりのサービスは、複数コントローラーに共通する機能を提供するもの。今回のAuth、ACLもそうだし、他の人の発表でもあったけど、CSRF対策コードの埋め込みなんかもそうかと。

モデルよりのサービスは、複数モデルにまたがる1トランザクションを扱うもの。

PofEAAにある、購買トランザクションの例なんかまさにそれかと。

これらをいっしょくたに「サービス」として扱うのはまずい・・・というかわかりにくい、美しくないかなぁと思ったりしている。

・・・発表とは全然関係ない、自分の設計に対する思惑ですが^^;;;


リファレンスモニター・・・話聞いてて、デザインパターンとか結構忘れてる自分にちょっと凹んだ^^;;;

メディエーターとかビジターとか。折を見てちゃんと復習しておく。

まとめ

他の方がZend Frameworkをどう使っているかがよく見えたので、とても有意義でした。

というか、これだけ仲間がいるというのは心強い。

Doctrineの連携話がなかったのがちょっと残念。

Doctrineは、モデルの自動生成やリスナー、ビヘイビア、継承モデルなどZend_Db_Tableで(たぶん)できない機能がいろいろあるので、Zend_Db自体を使わずにこっち使ってます、って人がいれば話聞きたかった。

Doctrine、結構いいと思うけどなぁ。地味に気に入らないところはいくつかあるけど、それを補ってあまりある機能あるし。
自前でコード書かなくて良い部分はどんどん、フレームワークなりライブラリにまかせて言った方が良いし。
つか、Doctrine勉強会とか欲しい(笑)
これならsymfonyの人も巻き込めるし。

・・・つか、おまえがネタ用意しろって話もありますが・・・

そのうち時間取れたら、まずはこのブログにでもぼちぼち上げていこうかな・・・

*1:もちろん、自分もゆくゆくはネタだしていきたい

*2:というか、規約通りのテーブル名・カラム名ならそれすらもいらないけど