効率的なWebアプリケーションの作り方
PHPによるモダン開発入門

[表紙]効率的なWebアプリケーションの作り方 ~PHPによるモダン開発入門

紙版発売

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 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のテスト
    まとめ
  • 終わりに