- 2010年9月3日 2:00 PM
- CakePHP

CakePHPプラグインのまとめも大詰めです。
今回は”Optimization“と”Debugging“を訳します。
最適化
- Frank de Graaf’s Lazy Model: これは君のモデルのチェインローディングを最適化し、君の作った巨大なアプリをスピードアップさせてくれるよ。君がCakePHP1.2または1.3を使っているのなら確実に見ておくべきものだ。CakePHP 2.0ではこれはコアに組み込まれる予定だけど、まだ入っちゃいない。Lazy Modelは次のお楽しみだね。
- Rafael Bandeiras’ Linkable: 思うに、こいつはContainableBehaviorの良い相棒だ。そうだ、いつかこの世界の1つのルールになるだろうね。けど彼はベースとなるSQLを書くのでもうしばらく忙しいみたいだ。Terrがそのアップデートされたバージョンを持っているようなんで、これはそこへのリンクだ。要チェックだね。
- Mark Story’s Asset Compress: 君のCSSとJSを圧縮してくれるプラグインだ。このプラグインの使い方とCakePHPで最も大切でこれ以上ないリードデベロッパーが誰だか、彼のgithubのプロフィールを見ればわかるはずだ!
- Matt Curry’s HTML Cache: 君のページをHTMLでキャッシュする。ものすごくスピードアップするよ。静的なページには最高だ。君がもしCroogo CMSを使うんならこいつはCroogoのフックも持ってるよ。
- Matt Curry’s URL Cache: この不機嫌な野郎はgithubのプロフィール中に良いもんを持っているようだね。君が使ってるどんなキャッシュシステムに対してもURLの生成過程をキャッシュしてくれる。ページリクエストに対して発生する重たいURLの生成処理をとてもスピードアップしてくれるよ。
- Matt Curry’s Custom Find Types: 君のアプリケーションに対してfindのカスタムタイプを作り出すのに確実で簡単な方法だな。キャッシュやフィルタリングのカスタマイズも簡単だ。
このプラグインをディレクトリに配置し、通常、AppModelを継承するところをLazyModelを継承することで動作速度の改善を図れるようです。
ただ、その分だけメモリを食うとも書いてあるので、そこは注意ですね。CakePHPはただでさえ、大食いですからね…。
hasManyやhasAndBelongsToManyのアソシエーションの場合に効果を発揮するプラグインですね。
これを使用すると、hasManyやHABTMのテーブルに対して条件を指定し、それに関連のあるレコードを取得出来るようです。
READMEにある例ではTagを条件に指定して、関連あるEntryを取得しています。
コメントの通りCSSとJSを自動で圧縮してくれるプラグインですね。
プラグインをインストールし、Routesを設定すると、そのURLで圧縮したJSやCSSを取得出来るようです。シェルで圧縮したJS/CSSを吐き出したり、それを削除することも可能だそうです。便利ですね!
ヘルパーを読み込むだけでHTMLキャッシュをwebroot以下に生成してくれるようです。
こうすると、.htaccessの書き換えが必要ですが、それも載っています。cronでのキャッシュ削除方法も載せてあるのが良いですね。
AppHelperの継承元を変えるだけで、Routesの処理をキャッシュしてくれるようです。これもすごく簡単ですね。
これもすごく便利なプラグインです。
プラグインをインストールして、モデルの継承元を変えてやるだけで使えます。
あとは”__findHogeHoge”というメソッドを定義するとtypeに”hoge_hoge”が使えるようになり、そのメソッドでfindの処理がされるようになります。すごいよ、Curryさん。
デバッグ
- Mark Story’s DebugKit: いや、マジでこの男はモンスターだ。彼はJS忍者でさらにCakePHPのバッシュ魔人であるだけじゃなく、君のCakePHPのアプリケーションのためにデバッグのための素晴らしいツールを書き続けている。これは今すぐインストールすべきだね。使い始めたら虜になること間違いなし。
- Joe Beeson’s Referee: “エラーと例外をキャッチし、それをロギング出来るCakePHP 1.3+ のプラグイン” 思うにこいつはすこいイカしてる。君もそう思うだろうね。
- Matt Curry’s Interactive: DebugKitをページ更新なしにインタラクティブに表示してくれるパネルだ。特定のクエリがどんな風に動いているか見るのに良いね。
言わずとしれたDebugKitですね。これは皆さん知っていると思うので省略。
詳しく知りたい方はcakephperさんが書かれた以下のページを参照してください。
コンポーネントで設定出来るので、コントローラ毎にエラーをロギング出来そうです。
CakePHP 1.3からはログエンジンを変えることが出来るようになったので、ほとんど不要かもしれませんが、きめ細かなロギングの設定をしたいときに。
これもすごく便利ですね。
DebugKitのコントロールパネルからクエリを発行したり、PHPのコードをインタラクティブに実行出来るようになるみたいです。
ここまで来るとDebugKitがちょっとしたIDEみたいですね。
最適化のプラグインは気になるのがたくさんありますね。
モデル周りの最適化を図ってくれる”Lazy Model”やCSSとJSを圧縮してくれる”Aseset Compress”、そしてHTMLキャッシュを作ってくれる”HTML Cache”…。
CSSとJSの圧縮がタスクにあがっているので、今度は”Asset Compress“の使い方をまとめましょうか。
次回が最後です。”Useful Helpers“と”Random Awesome-sauce“を訳しますね。
[連載記事一覧]
- 認証編
- AuthComponentの代替えになるプラグインやfacebookと連携するプラグインが紹介されています。それに加え、使いにくいACLを使いやすくするツールも。個人的には一番、興味のある記事でした。
- 検索とページネーション/ファイルアップロード編
- CakePHPの使いにくいページネーションを使いやすくするプラグイン、Yahoo! BOSSのプラグインが紹介されています。ファイルアップロードはTransloaditというサービスに対応させるプラグインから、メジャーなメディアプラグインまで。
- ヘルパー編
- ブログを作るなら使いたいGravatarやGoogle APIをCakePHPのために取りまとめたプラグインが紹介されています。Google APIにCakePHPを対応させるプラグインは必見です。使った人がいたら、ぜひコメントください。
こちらもあわせてどうぞ
ちょっと一言
今、テストで忙しいんですよ。
お知らせメールは土曜日にちょっと機能追加があります。
9月半ばには色々な機能が入ると思いますよ!
- 新しい: CakePHPプラグインのまとめ – ヘルパー編
- 古い: あなたの気づきを記録するヨムメモ
-
http://tyudon.com/blog/?p=18607 CakePHPプラグインのまとめ – 最適化/デバッグ編 | とっても! ちゅどん(雑記帳)

