効率的なWebアプリケーションの作り方 ~PHPによるモダン開発入門
- 小川雄大 著
- 定価
- 3,058円(本体2,780円+税10%)
- 発売日
- 2012.5.26[在庫なし]
- 判型
- B5変形
- 頁数
- 352ページ
- ISBN
- 978-4-7741-5082-6
概要
本書はプログラミング経験者向けに、より良いプログラムを書くためのノウハウを解説した書籍です。実際にアプリケーションを開発するときはフレームワークでカバーできない問題も多々あります。本書ではプログラミング言語PHPを使って、実際にアプリケーションを作成しながら、問題解決のためのテクニックや、実際の現場で効率的に開発を進めていくための開発スタイルを、考え方や背景も踏まえながら説明しています。
こんな方にオススメ
- MVC開発の流れを学びたい人
- 開発現場で活かせる知識を学びたい人
目次
Part1 MVC開発の基礎知識
1章 MVC開発の概要
- 1-1 MVCアーキテクチャ
 1-1-1 なぜMVCアーキテクチャなのか
 1-1-2 モデルからプレゼンテーションを分離する
- 1-2 MVCフレームワーク
 1-2-1 MVCフレームワークの活用
 1-2-2 フレームワークの選択
2章 オブジェクト指向
- 2-1 オブジェクト指向の基礎
 2-1-1 なぜオブジェクト指向で作るのか
 2-1-2 オブジェクト指向とクラス
 2-1-3 ポリモーフィズム
 2-1-4 実装と抽象
 2-1-5 抽象とインターフェイス
- 2-2 カプセル化
 2-2-1 オブジェクトと振る舞い
 2-2-2 ショッピングカートでの例
 2-2-3 カプセル化のメリット
 2-2-4 オブジェクト脳
- 2-3 継承と委譲
 2-3-1 継承
 2-3-2 継承の制約
 2-3-3 誤った継承
 2-3-4 共通化目的の誤った継承
 2-3-5 委譲
 2-3-6 依存性の注入(Dependency Injection)
- 2-4 オブジェクト指向設計原則
 2-4-1 オープン・クローズドの原則
 2-4-2 依存関係逆転の原則
 
- 2-5 その他の原則
 2-5-1 DRY原則
 2-5-2 YAGNI原則
 
Part2 フレームワークを利用する利点
3章 レガシーコードの欠点
- 3-1 レガシーなPHP
 3-1-1 よりよいアプリケーションを作るためのテクニック
 3-1-2 レガシーなPHPとは
 3-1-3 役割の分離とテストの自動化
 3-1-4 ロジックとビューの分離
 3-1-5 ファイルの分割
 3-1-6 読みやすいプログラム
 3-1-7 プログラムをシンプルに保つ
- 3-2 リファクタリング
 3-2-1 リファクタリングの必要性
 3-2-2 リファクタリングと自動テスト
 
- 3-3 オブジェクト指向の導入
 3-3-1 オブジェクト指向に置き換える
4章 リファクタリング・デザインパターン実践
- 4-1 パターンを学ぶ
 4-1-1 問題とパターンを合わせて覚える
- 4-2 リファクタリング実践
 4-2-1 プログラムの読みやすさ
 4-2-2 メソッドを分割する
 4-2-3 クラスを分割する
 4-2-4 その他のリファクタリング
- 4-3 デザインパターン
 4-3-1 Strategyパターン
 4-3-2 Template Methodパターン
 4-3-3 Compositeパターン
5章 フレームワークを活用する
- 5-1 MVCフレームワークの基本構造
 5-1-1 MVCフレームワーク
 5-1-2 MVCフレームワークの処理フロー
 5-1-3 PHPとオープンソースフレームワーク
 5-1-4 MVCのM(モデル)が何を指すか
 5-1-5 アプリケーションのドメイン(問題領域)
- 5-2 ドメインモデル
 5-2-1 ドメインモデルで知識を共有する
 5-2-2 ドメインモデルとER図
 5-2-3 ドメインモデルを中心とした開発
- 5-3 Symfonyのバンドルシステム
 5-3-1 Symfonyコンポーネント
- 5-4 DIコンテナ
 5-4-1 DependencyInjectionコンポーネント
 5-4-2 DIコンテナとテスト
- 5-5 ORM
 5-5-1 Doctrine ORM
 5-5-2 ActiveRecordとDataMapper
 5-5-3 Doctrine Query Language
- 5-6 テンプレートエンジン
 5-6-1 Twig
 5-6-2 テンプレートの継承
- 5-7 セキュリティ
 5-7-1 クロスサイトスクリプティング対策
 5-7-2 CSRF対策
 5-7-3 SQLインジェクション対策
 5-7-4 セッション固定攻撃対策
 5-7-5 セキュリティとフレームワーク
Part3 モダンPHP Webアプリケーション開発
6章 アプリケーション開発を始めるための準備
- 6-1 レンタカー予約アプリケーション
 6-1-1 レンタカー予約アプリケーションの概要
 6-1-2 開発環境
 6-1-3 Symfonyのディレクトリ構成
 6-1-4 事前設定
- 6-2 バンドルの作成
 6-2-1 対話式ジェネレータ
- 6-3 サーバの設定
 
- 6-4 Gitのインストール
 6-4-1 バージョン管理ツールとは
 6-4-2 Gitとは
 6-4-3 git-flow
 6-4-4 Gitの初期化
 6-4-5 最初のコミット
 まとめ
7章 データベースとエンティティ
- 7-1 データベース定義
 7-1-1 データベースの作成
 7-1-2 テーブル定義
 7-1-3 テーブルの作成
- 7-2 エンティティ
 7-2-1 エンティティの作成
 7-2-2 エンティティとアノテーション
 7-2-3 作成日/更新日の自動更新
 7-2-4 データフィクスチャの作成
 7-2-5 エンティティを活用する
 まとめ
8章 コントローラとビュー
- 8-1 予約機能の作成
 8-1-1 予約フロー
- 8-2 コントローラの作成
 8-2-1 共通のコントローラ
 8-2-2 ReservationController
 8-2-3 ホームページのルーティングの登録
 8-2-4 パーミッションの設定
- 8-3 ビューの作成と画面遷移
 8-3-1 feature/reservationブランチの作成
 8-3-2 共通テンプレートの作成
 8-3-3 出着情報入力ビューの作成
 8-3-4 車種選択ビューの作成
 8-3-5 予約/オブション選択ビューの作成
 8-3-6 予約内容確認ビューの作成
 8-3-7 ホームページビューの作成
 まとめ
9章 フォームとデータベース
- 9-1 フォームの作成
 9-1-1 Formコンポーネント
 9-1-2 出着情報入力フォームの作成
 9-1-3 フォームの初期値を設定
 9-1-4 エンティティに__toString()メソッドを実装
 9-1-5 言語の初期設定
- 9-2 フォームのレンダリング
 9-2-1 FormView
 9-2-2 ビューのレンダリング
 9-2-3 フォームのCSRF対策
- 9-3 バリデーション
 9-3-1 制約の設定
 9-3-2 フォームタイプにバリデーショングループを設定
 9-3-3 入力データのバインド
 9-3-4 エラーメッセージのテンプレートの変更
- 9-4 車種選択画面の作成
 9-4-1 フォームタイプの作成
 9-4-2 制約の設定
 9-4-3 carActionの実装
 9-4-4 ビューファイルの作成
- 9-5 予約/オプション選択画面の作成
 9-5-1 フォームタイプの作成
 9-5-2 optionActionの作成
 9-5-3 ビューファイルの作成
- 9-6 予約確認画面の作成
 9-6-1 金額の計算を行う
 9-6-2 confirmActionの作成
 9-6-3 ビューファイルの作成
- 9-7 データの保存とメール送信 190
 9-7-1 エンティティとデータベースアクセス
 9-7-2 サービス
 9-7-3 エンティティの保存
 9-7-4 メール送信
 9-7-5 サービスの設定
 9-7-6 confirmActionで予約確定処理を行う
 9-7-7 finishActionのビューを作成
 まとめ
Part4 機能の作成と実装のパターン化
10章 ユーザ登録
- 10-1 ユーザ登録機能の作成
 10-1-1 ユーザ登録機能の作成手順
 10-1-2 feature/user-registrationブランチの作成
 10-1-3 UserControllerの作成
- 10-2 ユーザ登録画面の作成
 10-2-1 ユーザ登録フォームの定義
 10-2-2 プロパティパス
 10-2-3 パスワードの扱い
 10-2-4 ユーザ情報のバリデーション
 10-2-5 registerActionの実装
 10-2-6 registerActionのビューを作成
 10-2-7 送信された値を元に仮登録を行う
 10-2-8 registerActionとconfirmActionの完成
- 10-3 アクティベーション機能の作成
 10-3-1 アクティベーション機能の実装
 10-3-2 activateActionの実装
 
- 10-4 ユーザ認証とログイン
 10-4-1 CrocosSecurityBundle
 10-4-2 CrocosSecurityBundleのインストール
 10-4-3 SecurityContextクラス
- 10-5 ログイン機能の実装
 10-5-1 SecurityControllerの作成
 10-5-2 AppControllerにSecureConfigアノテーションを設定
 10-5-3 ログインフォームの定義
 10-5-4 loginActionの実装
 10-5-5 loginActionのビューの作成
 10-5-6 送信された値を元にログインを行う
 10-5-7 logoutActionの実装
 10-5-8 ナビゲーションの拡張
- 10-6 予約フローでのログイン状態の制御
 10-6-1 ReservationControllerにログイン状態の制御を追加
 10-6-2 ログイン画面の修正
 まとめ
11章 イテレーション
- 11-1 実装時における思考のパターン化
 11-1-1 フレームワークごとの実装パターン
- 11-2 タスクの把握
 11-2-1 車種一覧の作成
 11-2-2 予約履歴の実装
 まとめ
12章 管理画面
- 12-1 管理画面とアクセス制御
 12-1-1 管理者の認証方法
- 12-2 管理画面のコントローラと名前空間
 12-2-1 Controllerと名前空間
 12-2-2 feature/adminブランチの作成
 12-2-3 AdminAppController
 12-2-4 共通のビューファイルの作成
- 12-3 管理画面のホームページの作成
 12-3-1 HomeControllerの作成
 12-3-2 ホームページのビューの作成
- 12-4 ユーザ一覧の作成
 12-4-1 KnpPaginatorBundle
 12-4-2 indexActionの実装
 12-4-3 indexActionのビューの作成
 12-4-4 showActionの実装
 12-4-5 showActionのビューの作成
- 12-5 予約一覧の作成
 12-5-1 ReservationController
 12-5-2 indexActionのビューの作成
 12-5-3 showActionのビューの作成
 まとめ
13章 コマンドラインスクリプト
- 13-1 コマンドラインスクリプトの概要
 13-1-1 SymfonyのConsoleコンポーネント
- 13-2 本日の予約一覧をメールで送信する
 13-2-1 コマンドの作成
 13-2-2 本日の予約一覧を取得する
 13-2-3 メール送信処理の実装
 13-2-4 コマンドでメール送信処理を実装する
 まとめ
14章 ユニットテスト
- 14-1 ユニットテスト概要
 14-1-1 PHPUnit
 14-1-2 テストケースの作成手順
 14-1-3 不要なバンドルの削除
 14-1-4 Stagehand_TestRunnerのインストール
- 14-2 Userエンティティのテスト
 14-2-1 isValidPassword()メソッドのテスト
 14-2-2 正しくないパスワードが渡されたときのテスト
 14-2-3 isEnabled()メソッドのテスト
 14-2-4 仮登録状態のテスト
 14-2-5 テストのリファクタリング
- 14-3 Reservationエンティティのテスト
 14-3-1 パターンの洗い出し
 14-3-2 dataProviderアノテーション
 14-3-3 事前処理の作成
 14-3-4 calculateAmount()メソッドのテスト
 14-3-5 テストを用意するタイミング
 14-3-6 テストとリファクタリング
15章 機能テスト
- 15-1 機能テスト概要
 15-1-1 機能テストのためのSymfonyコンポーネント
 15-1-2 機能テストの作成方法
- 15-2 ReservationControllerクラスのテスト
 15-2-1 indexActionのテスト
 15-2-2 データベースアクセスの伴う機能テスト
 15-2-3 データフィクスチャの作成
 15-2-4 newActionのテスト
 15-2-5 carActionのテスト
 15-2-6 ログインのテスト
 15-2-7 optionActionのテスト
 15-2-8 confirmActionのテスト
 15-2-9 finishActionのテスト
 15-2-10 historyActionのテスト
- 15-3 SecurityControllerのテスト
 15-3-1 loginActionのテスト
 15-3-2 ログインにおけるエラーのテスト
 15-3-3 logoutActionのテスト
- 15-4 UserControllerのテスト
 15-4-1 registerActionのテスト
 15-4-2 本登録処理のテスト
- 15-5 CarClassControllerのテスト
 15-5-1 indexActionのテスト
 まとめ
- 終わりに
