CakePHPとは
CakePHPはオープンソースで開発されたPHP用のフレームワークです。Ruby on Railsの影響を強く受けており、Webアプリケーションを高速に開発するための仕掛けが随所に盛り込まれています。
PHP開発者の方で、Railsで開発してみたいけどRubyの経験がないのでなかなか行動に移せない方などはとくにCakePHPを試してみてほしいと思います。Railsの考え方を肌で理解しつつ、PHPでWebアプリケーションを高速開発するための選択肢を手に入れることになるでしょう。
CakePHPを使いたくなる5つの特徴
まずは皆さんにCakePHPに興味を持っていただくため、フレームワークでの開発経験がある方にもない方にも「そういうことなら使ってみたい!」と思うような特徴を紹介いたします。
習得までの時間が短い
フレームワークの習得にはどうしても時間がかかりますが、CakePHPは筆者が経験してきたフレームワークの中では最短級の時間で習得することができました。習得が短く済んだ理由を考えてみたところ、いくつか思い当たるふしがありました。
まず1つ目に日本語に翻訳された優れたチュートリアルがあることです。筆者はCakePHPを始めるにあたって、「CakePHP プログラマーズ リファレンスガイド」の「付録 A. Cake ブログチュートリアル」をこなしました。CakePHPの入手からDBの設定、モデル、ビュー、コントローラの作成、バリデーションの追加といったWebアプリケーション開発で必要な作業を一通り体験することができます。
2つ目は標準のエラーメッセージがやけに親切なことです。解凍したパッケージをWebサーバーにそのままアップロードして動作させると、DBの接続情報が間違っているというメッセージが出ます。ここまでは普通ですが、モデル、ビュー、コントローラが足りないときはひな形となるPHPコードとファイルの設置場所のパスを示した画面が表示されるという親切ぶりです。これのおかげで行き詰まることなく習得初期の開発を進めることができました。
他にも細かいことですが、「日本語のCakePHPフォーラム」のトピックにノイズが少なく、書き込みに貼り付けられたPHPコードが綺麗に色付けされていたりとモチベーションを維持できる環境が整っていたことが挙げられます。
設置が簡単かつ外部ライブラリに依存しない
CakePHPはパッケージをFTPでアップロードするだけで動作します。PHPが動作する標準的なレンタルサーバーであればたいてい動作するでしょう。また、PEARなどの外部ライブラリを一切必要としません。もちろん今までどおりPEARなどを利用することもできますので、使い慣れたライブラリを手放す必要はありません。
PHP4と5の両方で動作する
多くのフレームワークはPHP4と5のどちらか専用だったり、バージョンによって動作対象が変わりますが、CakePHPはそのままでPHP4でも 5でも動作します。また、PHP6でも動作する予定となっています。ちなみにコアライブラリの中にmodel_php4.phpと model_php5.phpというファイルがあり、PHPのバージョンによってコードを分けている部分があることがわかります。
病みつきになるActiveRecordパターンのO/Rマッパー
CakePHPのO/Rマッパー(オブジェクト志向における、オブジェクトとリレーショナルデータベースを関連付けするための仕掛け)はActiveRecordパターンを採用しており、SQL文を書くことなく非常に短い記述でレコードの抽出や書き換えが行えます。
さらにアソシエーション(関連付け)を記述することで、関連したテーブルの情報を自動的に取得できます。
たとえばブログシステムでエントリのIdをもとにエントリ内容と投稿者の情報とコメントとトラックバックを取得したいとき、アソシエーションを適切に設定しておけば「$this->Entry ->findById($id)」と書くだけで、すべての情報が連想配列となって返ってきます。筆者はこの便利さに病みつきになり、Railsの考え方の素晴らしさを実感しました。
ビュー部分がピュアPHPである
CakePHPのMVCでいうビュー部分において、コントローラからセットされた値を表示するときは <?php echo h($title) ?>(hはhtmlspecialcharsの代替関数。CakePHPで予め定義されている)といったように、生のPHPコードを埋め込みます。
第二の言語といえるテンプレートエンジンの習得が不要なため、最小限の知識でビューを記述することができます。
また、正式にサポートされているわけではありませんがSmartyを利用することも可能なようです。
このようにテンプレートエンジンを柔軟に変更できる点も、CakePHPの特徴といえます。
まとめ
まずはフレームワーク開発の前に敬遠されがちな点を払拭するために、今回は少々抽象的な特徴の紹介になりました。次回はCakePHPのフレームワークとしての機能に絞った紹介をしたいと思います。