効率的なWebアプリケーションの作り方
~PHPによるモダン開発入門
~
2012年5月26日紙版発売
小川雄大 著
B5変形判/352ページ
定価3,058円(本体2,780円+税10%)
ISBN 978-4-7741-5082-6
ただいま弊社在庫はございません。
書籍の概要
この本の概要
本書はプログラミング経験者向けに,より良いプログラムを書くためのノウハウを解説した書籍です。実際にアプリケーションを開発するときはフレームワークでカバーできない問題も多々あります。本書ではプログラミング言語PHPを使って,実際にアプリケーションを作成しながら,問題解決のためのテクニックや,実際の現場で効率的に開発を進めていくための開発スタイルを,考え方や背景も踏まえながら説明しています。
こんな方におすすめ
- MVC開発の流れを学びたい人
- 開発現場で活かせる知識を学びたい人
この書籍に関連する記事があります!
- 開発スタイル最新情報
- 昨今のWebアプリケーション開発の特徴を一言で言えば,『フレームワーク』を活用した開発スタイルとなるでしょう。
目次
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 Language5-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のテスト
まとめ
終わりに
この本に関連する書籍
-
基本からしっかり学ぶ Symfony2入門
PHPフレームワークSymfonyによるWebサービス開発を解説した書籍です。最初にSymfonyのしくみを理解していき,あるオーケストラのWebサイトの作成を例に,手を動かしなが...