第3回CakePHP勉強会に行ってきました。最近あまりレポート書いてないけど真面目に書きます。
haltさんがすごく的確な意見を書いているので、これ以上言うことはないんじゃないかとか思ってしまうけど、ちょっと違う視点で書くと、フレームワーク的に無茶をしてる人が少ない気がした。
これがRails界隈だと多分変態的なプラグインを作ったので公開したみたいな発表とか、内部実装について調べるような発表が多くなる(偏見多め)んだろうけど、Cakeはそんなことはなくて、多分CakePHP勉強会でそれをやってもあまり興味のある人はいなくて、むしろ実用的な使い方のほうが面白いというか、そんな難しいことを考えなくても使えるっていう感じがした。
勉強会自体で少し気になったのが、アンケート書く時間ないよ!いつ書けばいいんだよ!みたいな。ちょっと詰め込みすぎた感。
懇親会はずっとrhaco=変態って言ってた気がする。
以下落書き(発表内容丸写しではないので注意)
フェイス女学園
- スパイスボックス
- 最初デザイン地味→派手→女性向け雑誌に載った
- →王様のブランチ(300万PV)
- CakePHP
- システム
- LAMP
- 顔判定はOpenCV
- 敢えて「診断中」というメッセージを出している
- モバイル
- /etc/aliasesからcakeconsoleを叩いている
- テンプレートだけキャリア別に分割
- CakePHPでよかった点
- モデル操作が楽(FindAll、FindBy)
- レイアウトテンプレート便利
- PHPなので修正が楽
- 反省点
- 他の人がわからない
- Dreamweaverでのctpの設定が面倒
- メール詰まり
- Modelを有効利用できなかった
- デバッグモードの切り替えがしにくい
- (テスト環境の問題じゃね?)
- その他
- OpenCVはコンソールを直接叩いてる(?)
CakePHPの失敗談
- AppController#beforeFilterにログインチェックを書く
- ログイン不要ページを別に除外する必要ある
- 派生クラスでbeforFilter()を実装する場合にparent::beforeFilter()を呼ぶ必要がある
- Authコンポーネントで解決
- 関連するモデルにアソシエーションを動的設定する
- 多すぎるアソシエーションは重い?
- bindModel()を実行してもアソシエーションが変更されない不具合
- hasManyしてる場合 ×$this->Review->bindModel() ○$this->User->Review->bindModel()
- 関連するモデルの取得順を動的に設定する
- データの表示で取得順とかを変更したい
- bindModel()でアソシエーションを上書きできる(一度find系を呼ぶと戻る)
- 自作ビヘイビアの設定値をインスタンスへ保存する
- ビヘイビアのインスタンスはアプリケーションで1つのみ
- $this->__settings[$model->alias][〜]で解決
- コンポーネントのメンバ変数をstartup()で初期化する
- startup()で初期化したら未定義値になってしまった
- クローンが実行するために消えてしまう
- コンポーネント側にメンバ変数を持たない
- 契約プログラミングを導入
- assertだらけになってしまった
- テストを使おう
- Setクラスを使おう(配列操作)
- 車輪の再発明
ホッテントリメーカー
- まわりがCakePHP使っていた
- CakePHP勉強会に出てみた→わからん
- チュートリアルやってみたらできた
- ホッテントリメーカーを作ってみた
- 実際にタイトルに悩んだ経験から
- 30万PV
- 実際に書かれたエントリはトラックバック
- はてなしりとり2
- はてなダイアリーキーワードでふりがなを取得
- 3万PV
- よかったこと→楽
- 参考にしたもの
- あきやんさんの連載
- IDEA*IDEAの連載
- 「どうにかなるBLOG」のfindAllの記事
- 英語資料はあまり見てない
CakePHPゆとり開発環境
CakeでTest
- 1.1は書き方がわからない
- 1.2でcake本体のテスト同梱
- SimpleTest
- 1.2でfixture実装
- テストしやすいところ
- modelのvalidation
- オーバーライドの挙動
- ビジネスロジック
- 出力タグ
- テストしにくいところ
- controller
- actionにはロジックは書かない
- controllerへの依存関係は極力書かない
- MockObject
- 失敗するテストを添付してticketを投げる