PHPのフルスタックフレームワークであるsymfonyについて共著した書籍が発売されました。私はテスト駆動開発(TDD)とsymfonyによる自動テストについて執筆しました。
具体的にはLimeを利用したユニットテストをはじめ、sfBrowserを利用して、ブラウザアクセスをエミュレーションした自動テストを書くことによって、実際に人間がブラウザを通してアクセスしている内容まで自動テストにします。これを、テストファーストのアプローチで開発する内容になっています。
TDDや自動テストを書くというのは、プログラマーとして、プロとしてのスキルです。これを機会に、ばっちりテストコード書けるぜ!という人が増えることを願っております。
本書は
* symfonyプロジェクトに存在するドキュメントやリファレンスを読む前に必要な前提知識
* 詳しいインストール方法
* 少しハードルの低いチュートリアルといった入門者向け
といった入門者向けの内容と
* 公式ドキュメントに目を通した人が次のレベルにステップアップする為の知識
* 実開発、実運用で役立つTips
といった上級者向けの内容が盛り込まれています。
ソースコードもダウンロードできるので、実際に手を動かしながらsymfonyを体感してください。
###目次
Chapter 1 symfony 1.4の特徴と基礎知識 1-1 symfony 1.4の特徴 ■1-1-2 symfonyのバージョン ■1-1-3 Webアプリケーション開発のベストプラクティスを実践するためのフレームワーク ■1-1-4 symfonyのコミュニティとOSS 1-2 symfonyの基礎知識 ■1-2-1 symfonyを使ったプロジェクトのディレクトリとファイル ■1-2-2 プロジェクト、アプリケーション、モジュール、アクション ■1-2-3 タスクとsymfonyコマンド ■1-2-4 設定ファイルとYAML ■1-2-5 ORM(DoctrineとPropel) ■1-2-6 ルーティング ■1-2-7 フォームフレームワーク ■1-2-8 CRUD、スキャフォールディング、Adminジェネレータ ■1-2-9 プラグイン ■1-2-10 国際化(I18N) ■1-2-11 limeテストフレームワーク 1-3 コーディング規約 ■1-3-1 symfonyのコーディング規約について ■1-3-2 本書のコーディング規約 ■1-3-3 本書の文体 Chapter 2 symfony 1.4のインストール 2-1 symfonyを使ったアプリケーションの開発に必要な環境 ■2-1-1 サーバーソフトウェア ■2-1-2 PHP 2-2 symfonyのインストール方法4種類 ■2-2-1 4種類のインストール方法の概要 ■2-2-2 サンドボックスパッケージを使ったインストール ■2-2-3 リリースパッケージを使ったインストール ■2-2-4 バージョン管理システム(Subversion)を使ったインストール ■2-2-5 PEARを使ったインストール 2-3 Linux環境でのインストール ■2-3-1 サーバーソフトウェアの準備 ■2-3-2 動作環境の確認 ■2-3-3 インストール位置の決定 ■2-3-4 サンドボックスパッケージからのインストール ■2-3-5 リリースパッケージからのインストール ■2-3-6 Subversionリポジトリからのインストール ■2-3-7 symfonyコマンドでバージョンを確認 ■2-3-8 .htaccessの編集 ■2-3-9 sfディレクトリのコピー ■2-3-10 Webブラウザから確認 2-4 Windows環境でのインストール ■2-4-1 サーバーソフトウェアの準備 ■2-4-2 動作環境の確認 ■2-4-3 インストール位置の決定 ■2-4-4 サンドボックスパッケージからのインストール ■2-4-5 リリースパッケージからのインストール ■2-4-6 Subversionリポジトリからのインストール ■2-4-7 symfonyコマンドでバージョンを確認 ■2-4-8 .htaccessの編集 ■2-4-9 sfディレクトリのコピー ■2-4-10 Webブラウザから確認 2-5 Mac環境でのインストール ■2-5-1 サーバーソフトウェアの準備 ■2-5-2 動作環境の確認 ■2-5-3 インストール位置の決定 ■2-5-4 サンドボックスパッケージからのインストール ■2-5-5 リリースパッケージからのインストール ■2-5-6 Subversionリポジトリからのインストール ■2-5-7 symfonyコマンドでバージョンを確認 ■2-5-8 .htaccessの編集 ■2-5-9 sfディレクトリのコピー ■2-5-10 Webブラウザから確認 2-6 インストールした後は? ■2-6-1 Gitを使ったsymfonyのインストール ■2-6-2 NetBeans IDEでsymfonyアプリケーションを開発する Chapter 3 symfonyアプリケーションの設置 3-1 symfonyのディレクトリ群を解剖する ■3-1-1 プロジェクトの基本構成 ■3-1-2 ディレクトリ構成の変更 3-2 公開サーバーへの設置 ■3-2-1 Webサーバーのドキュメントルートを割り当てる ■3-2-2 webディレクトリのみを分離して公開ディレクトリに配置する ■3-2-3 サブディレクトリでsymfonyを使う ■3-2-4 公開ディレクトリ以下にしか配置できないサーバーの場合 3-3 本番環境でのチェックポイント ■3-3-1 開発用のフロントコントローラを削除する ■3-3-2 エラーページを変更する ■3-3-3 セッション名を変更する ■3-3-4 不要なリクエストをなくす Chapter 4 サンプルサイトで学ぶsymfony開発の基礎 4-1 開発の準備 ■4-1-1 サンプルサイト「symfony楽団ホームページ」 ■4-1-2 symfonyのインストール ■4-1-3 Helloモジュールの生成 ■4-1-4 Hello, World!の表示 4-2 サンプルサイトの概要とデータベースの準備 ■4-2-1 サンプルサイトの設計 ■4-2-2 データベースのスキーマ ■4-2-3 モデルクラス群とテーブルの生成 ■4-2-4 フィクスチャーの準備 4-3 モジュールとアクションの生成 ■4-3-1 モジュールの設計と作成 ■4-3-2 Pageモジュールのアクションの実装 4-4 ルーティングの設定 ■4-4-1 routing.ymlの基礎 ■4-4-2 ルーティングを使ってページ表示機能を実装する ■4-4-3 残りのルートを設定する 4-5 テンプレート ■4-5-1 デザインデータの準備 ■4-5-2 CSSの適用とビューの設定 ■4-5-3 テンプレートの部品化 4-6 お問い合わせフォームの作成とメールの送信 ■4-6-1 sfFormフォームフレームワークの概要 ■4-6-2 InquiryFormクラスの実装(基本) ■4-6-3 InquiryFormクラスの実装(完成) ■4-6-4 メール送信機能の実装 4-7 管理機能の実装 ■4-7-1 backendアプリケーションの準備 ■4-7-2 Pageモデル向け管理画面の生成(Adminジェネレータ) ■4-7-3 管理画面へのアクセス制限 4-8 リファクタリングと機能拡張 ■4-8-1 モデル関連のコードはモデルクラスへ ■4-8-2 一覧を取得する処理はページャーを経由させる ■4-8-3 拡張のヒント Chapter 5 公式サイトのドキュメントナビゲーション 5-1 公式サイトのドキュメントの種類 ■5-1-1 symfony 1.4に対応した公式ドキュメント ■5-1-2 小規模なドキュメント ■5-1-3 過去の公式ドキュメント 5-2 ドキュメントナビゲーション ■5-2-1 Doctrine関連 ■5-2-2 Propel関連 ■5-2-3 フォーム関連 ■5-2-4 キャッシュ関連 ■5-2-5 ビュー関連 ■5-2-6 タスク関連 ■5-2-7 Adminジェネレータ関連 ■5-2-8 ルーティング関連 ■5-2-9 テスト関連 ■5-2-10 メール関連 Chapter 6 Doctrine 6-1 モデルの基本 ■6-1-1 モデルクラスの定義 6-2 CRUD処理の基本 ■6-2-1 データの作成 ■6-2-2 データの更新 ■6-2-3 データの削除 ■6-2-4 データの読み取り(ファインダメソッド) ■6-2-5 Doctrine_Queryを使ったデータの読み取り ■6-2-6 カスタムファインダメソッド ■6-2-7 複数データの更新 ■6-2-8 複数データの削除 ■6-2-9 ハイドレーション ■6-2-10 Doctrine_Connectionからの操作 6-3 ビヘイビアの利用 6-4 フックの利用 ■6-4-1 レコードフック ■6-4-2 DQLフック 6-5 リレーション ■6-5-1 一対一のリレーション ■6-5-2 一対多のリレーション ■6-5-3 多対多のリレーション 6-6 キャッシュの利用 ■6-6-1 2種類のキャッシュ ■6-6-2 キャッシュドライバ ■6-6-3 結果キャッシュを使う Chapter 7 symfonyを使いこなす 7-1 フォームフォーマッタ 7-2 sfFormのウィジェットの基礎 ■7-2-1 ウィジェットクラスについて ■7-2-2 ウィジェットのオプション(option)と属性(attribute) ■7-2-3 フィールドの要素をテンプレートで個別に表示する ■7-2-4 フォームクラスのメソッド 7-3 特定のフォームでだけチェックボックスのタグをカスタマイズする 7-4 出力するタグをカスタマイズしたウィジェットクラスを作る 7-5 バリデータの基礎 ■7-5-1 バリデータクラスについて 7-6 より厳密なメールアドレスのチェック ■7-6-1 sfValidatorEmailのオプションで指定 ■7-6-2 カスタムバリデータクラスを作成 ■7-6-3 携帯キャリアのメールアドレスかどうかチェックする ■7-6-4 全角文字のチェックと半角への自動変換 7-7 複数フィールドのバリデーション ■7-7-1 POSTバリデータで複数の入力値を検証する ■7-7-2 sfValidatorCallbackでさらに複雑なバリデーション 7-8 オブジェクトルート ■7-8-1 オブジェクトルートの使い方 7-9 タスクの基礎 ■7-9-1 タスクの雛形を生成する 7-10 RSSフィードを取得して処理する 7-11 イベントの基礎 ■7-11-1 イベントの使い方 ■7-11-2 symfonyの組み込みイベント 7-12 キャッシュクリアコマンドを拡張する ■7-12-1 独自のキャッシュをキャッシュクリアコマンドで削除する Chapter 8 プラグインの利用と開発 8-1 プラグインとは 8-2 プラグインを利用する ■8-2-1 sfDoctrineGuardPlugin ■8-2-2 sfFormExtraPlugin ■8-2-3 sfFeed2Plugin ■8-2-4 sfJqueryReloadedPlugin ■8-2-5 sfImageTransformPlugin ■8-2-6 sfSmartyPlugin ■8-2-7 sfTaskExtraPlugin ■8-2-8 sfDoctrineMasterSlavePlugin ■8-2-9 sfWebBrowserPlugin ■8-2-10 sfThumbnailPlugin ■8-2-11 jpSimpleMailPlugin 8-3 プラグインのディレクトリとファイルの構成 ■8-3-1 プラグインの各ディレクトリの概要 Chapter 9 symfonyのユーティリティクラス 9-1 オートロード ■9-1-1 オートロードとは? ■9-1-2 symfonyのオートロードの設定 9-2 sfYaml ■9-2-1 YAMLライブラリ ■9-2-2 YAMLファイルを読み込む ■9-2-3 YAML形式で書き出す 9-3 sfConfig ■9-3-1 sfConfigクラスの使い方 ■9-3-2 sfConfigで取得できる設定値 9-4 sfFinder ■9-4-1 sfFinderを使ったファイル処理 9-5 sfToolkit ■9-5-1 sfToolkitクラスのメソッド ■9-5-2 sfToolkit::arrayDeepMerge() ■9-5-3 sfToolkit::clearDirectory() ■9-5-4 sfToolkit::clearGlob() ■9-5-5 sfToolkit::isArrayValuesEmpty() ■9-5-6 sfToolkit::isPathAbsolute() ■9-5-7 sfToolkit::replaceConstants() 9-6 sfContext ■9-6-1 sfContextクラスのメソッド 9-7 sfPager、sfDoctrinePager ■9-7-1 ページャークラスの基本 9-8 sfProjectConfiguration、sfApplicationConfiguration ■9-8-1 sfProjectConfiguration ■9-8-2 sfApplicationConfiguration 9-9 sfUser、sfBasicSecurityUser ■9-9-1 sfUserクラスを使ったセッション情報の操作 ■9-9-2 sfBasicSecurityUserクラスを使った認証 ■9-9-3 セッションストレージの変更 9-10 sfLogger、その他のロガーと設定 ■9-10-1 アプリケーションからのログの記録 ■9-10-2 ロギング用の設定 9-11 sfInflector ■9-11-1 sfInflectorクラスのメソッド 9-12 ヘルパー関数 ■9-12-1 AssetHelper ■9-12-2 CacheHelper ■9-12-3 DateHelper ■9-12-4 DebugHelper ■9-12-5 EscapingHelper ■9-12-6 HelperHelper ■9-12-7 I18NHelper ■9-12-8 JavascriptBaseHelper ■9-12-9 NumberHelper ■9-12-10 PartialHelper ■9-12-11 TagHelper ■9-12-12 TextHelper ■9-12-13 UrlHelper Chapter 10 マスタースレーブ構成のデータベース 10-1 レプリケーション環境のデータベースの準備 ■10-1-1 データベースにレプリケーション用のユーザーを作成 ■10-1-2 マスターデータベースの情報を準備 ■10-1-3 ベースバックアップの取得 ■10-1-4 スレーブデータベースの設定 10-2 sfDoctrineMasterSlavePluginのインストール方法 ■10-2-1 テスト用のプロジェクトの作成 ■10-2-2 sfDoctrineMasterSlavePluginのインストール ■10-2-3 databases.ymlにマスタースレーブの設定を追加 10-3 動作の確認 ■10-3-1 テスト用のデータベースの準備 ■10-3-2 テスト用のページの作成 ■10-3-3 sfDoctrineMasterSlavePluginの動作の確認 Chapter 11 ソースコード管理、テスト駆動開発、デプロイ 11-1 ソースコードのバージョン管理 ■11-1-1 Subversionを使ったバージョン管理 ■11-1-2 Gitを使ったバージョン管理 11-2 テスト駆動開発(TDD)とsymfonyのテスト機能 ■11-2-1 テスト駆動開発の基礎知識 ■11-2-2 TDDのアプローチで機能を実装する ■11-2-3 ファンクショナルテスト ■11-2-4 まとめ 11-3 開発したアプリケーションのデプロイ ■11-3-1 デプロイ方法概要 ■11-3-2 symfonyコマンドによるデプロイ ■11-3-3 バージョン管理システムを使ったデプロイ ■11-3-4 その他のデプロイツール Chapter 12 大規模なソフトウェアへの応用 12-1 OpenPNE3について ■12-1-1 OpenPNE3の準備 12-2 プラグインによる拡張 ■12-2-1 通常のsymfonyプラグインとOpenPNEプラグインとの差異 ■12-2-2 イベント ■12-2-3 OpenPNE3独自の設定 12-3 タスク 12-4 Doctrineの利用、拡張 ■12-4-1 Doctrineのイベントをsymfonyのイベントとして通知する ■12-4-2 Zend_Aclとの連携 ■12-4-3 パフォーマンスチューニング 12-5 メール投稿 12-6 その他のノウハウ ■12-6-1 他アプリケーションへのリンク ■12-6-2 フィルタの使用 ■12-6-3 アクションの共通化 ■12-6-4 リクエスト中のヌル文字の除去 ■12-6-5 動的な画像生成 ■1-1-1 symfonyの歴史
### お買い求めはこちら
* [オンライン書店ビーケーワン](http://www.bk1.jp/product/03392317)
* [e-hon](http://www.e-hon.ne.jp/bec/SA/Detail?refShinCode=0100000000000032564150&Action_id=121&Sza_id=GG)
* [セブン&アイのセブンネットショッピング - 書籍 -](http://www.7netshopping.jp/books/detail/-/accd/1106019683)
* [amazon.co.jp](http://www.amazon.co.jp/exec/obidos/ASIN/4798029343?ie=UTF8&tag=shuwa01-22&linkCode=as2)
※3/23日現在amazonでの取り扱いがありません。
### サポートサイト
正誤表などサポートサイトはこちらになります。
[http://books.symfony.gr.jp/14book/](http://books.symfony.gr.jp/14book/)