[読書] 「CakePHPによる実践Webアプリケーション開発」

CakePHPによる実践Webアプリケーション開発 CakePHPによる実践Webアプリケーション開発
安藤 祐介 岸田 健一郎 新原 雅司

毎日コミュニケーションズ 2009-04-08
売り上げランキング : 73418

Amazonで詳しく見る by G-Tools

CakePHP開発者が知るべき10のこと」という記事で、以下のように紹介されていたので図書館で借りて読んでみました。

CakePHPを利用したウェブサイト開発を一通り学習したいのであれば、この本がお勧めです。

CakePHP v1.2を対象に書かれているため、少し情報が古い可能性があります。
しかし、その点を除いても、大変参考になります。
業務アプリケーションを対象とした開発手順は、とても実践的です。

内容と感想を簡単に書いてみようと思います。

目次

  • Chapter 1 Webアプリケーションフレームワーク CakePHP
  • Chapter 2 アプリケーションを作りこんでいく
  • Chapter 3 テストコードを記述する
  • Chapter 4 機能を拡張する

内容・感想

全体的に

本書は、シンプルなグループウェアを実際に開発しながら、CakePHPでWebアプリケーションを開発するために必要なノウハウを身につけるための本です。マニュアルや他の入門書籍を読み終えて、CakePHPの基本的な動作原理は理解できた人が、一度はぶつかりそうな以下のような疑問に対する答えが書かれています。

  • 「この処理はコントローラとモデルのどっちに書けばいいんだろう?」
  • 「多対多関連ってどう表現すればいいの?」
  • 「ACLって複雑すぎてよくわからないんだけど・・・」
  • 「コントローラのテストコードってどう書けばいいのかな?」

ちなみに、扱っているCakePHPのバージョンは1.2です(最新安定版は1.3)。僕は主にバージョン1.3を使って開発をしていますが、読んでいて特に違和感を感じなかったので、1.3でもある程度は通用する情報が書かれているように思います。

良かった点

ページ数の半分以上を占める「Chapter 2 アプリケーションを作りこんでいく」では、グループウェアに少しずつ機能を追加していく形で、記述したソースコードとそれに対する解説が交互に掲載されています。読み進めることで、ビジネスロジックや共通部分をモデルやコンポーネントに記述することでコントローラをできるだけ短くする設計方法や、AuthコンポーネントやACLの具体的な使用例、「hasAndBelongsToMany」の具体的な使用例などを学ぶことができるはずです。

個人的な一番の収穫は、コントローラをできるだけ短くする設計方法について詳しく知ることができたことです。なんでも、

CakePHPのよい使い方(Good cake)はモデルに処理があること

とのこと。ついついコントローラに処理をたくさん書きがちだったのですが、コントローラはテストしづらいのでロジックはあまり含めるべきではないみたい。これからは、Good cakeなWebアプリケーションを心がけたいです。

また「Chapter 3 テストコードを記述する」では、モデル、コントローラ、コンポーネント、ヘルパーといったテスト対象ごとにテストコードの例が掲載されています。テスト対象によってはテストコードの書き方に癖があるみたいなので、ちょうど「テストコードを書かきゃなぁ」と考えていた僕にとってはとてもありがたい情報でした。

悪かった点

「Chapter 2 アプリケーションを作りこんでいく」が、機能を少しずつ追加していく過程を書いた「作業ログ」のような体裁になっているのですが、これがとても読みにくいです。学習内容・機能ごとに章・節が区切られておらず、読み手が文章から何を学ぶべきかひとつひとつ汲み取っていく必要があります。後からリファレンスのような使い方をしたいと考えたときに、機能ごとに内容が整理されていないのは使い勝手としてどうかなぁと思いました。

ソースコードとそれに対する解説文の対応関係がつかみにくいのも難点。

まとめ

読みづらさはありますが、僕みたいなCakePHP駆け出し開発者にとっては内容はとても有用でした。本書で扱われているサンプルコードはすべてダウンロードできるので、こちらをリファレンスとして今後使っていくのがいいのかも?

なお本書では、基本的に、scaffoldに対して機能拡張を行ったり、モデルやコントローラのメソッドをオーバーライドすることで挙動を修正する方針で開発が進められていきます。個人的にはscaffoldを使ったことが無かったので、「こういう開発スタイルもあるのか」ととても参考になりました。どういう時にどういうスタイルで開発するのが定石なのか、そういう知識も欲しいな、と思ったり。何かいい本をご存知であれば是非教えてください。

それでは!