TECH PLAY

PHPフレームワーク Laravel Webアプリケーション開発 バージョン8.x対応

4,180円 (税込)

楽天

PHPフレームワーク Laravel Webアプリケーション開発 バージョン8.x対応

書籍情報

発売日:

著者/編集:竹澤 有貴/栗生 和明/新原 雅司/大村 創太郎

出版社:ソシム

発行形態:単行本

書籍説明

内容紹介

大規模化・複雑化するWebアプリ開発のための“設計技法”と“技術”をPHP&Laravelのエキスパート達がくわしく解説!MVC&ADR、テスト駆動開発、データベースとの連携、ユーザー認証、運用、etc.

目次

第一部 Laravelの基礎 Chapter 1 Laravelの概要 1-1 Laravelとは 1-1-1 Laravelの特徴 1-1-2 開発情報 1-2 環境構築 1-2-1 Laravel Sailを利用した環境構築 1-2-2 Homesteadを利用した環境構築 1-3 最初のアプリケーション 1-3-1 Laravelのディレクトリ構成 1-3-2 Welcomeページの処理 1-3-3 はじめてのページ 1-3-4 はじめてのテストコード 1-3-5 ユーザー登録の実装 1-3-6 ユーザー認証 1-3-7 イベント Chapter 2 Laravelのアーキテクチャ 2-1 ライフサイクル 2-1-1 Laravelアプリケーション実行の流れ 2-1-2 エントリポイント 2-1-3 HTTPカーネル 2-1-4 ルータ 2-1-5 ミドルウェア 2-1-6 コントローラ 2-2 サービスコンテナ 2-2-1 サービスコンテナとは 2-2-2 バインドと解決 2-2-3 バインド 2-2-4 解決 2-2-5 DIとサービスコンテナ 2-2-6 ファサード 2-3 サービスプロバイダ 2-3-1 サービスプロバイダの基本的な動作 2-3-2 DeferrableProviderインターフェースの遅延実行 2-4 コントラクト 2-4-1 コントラクトの基本 2-4-2 コントラクトを利用した機能の差し替え Chapter 3 アプリケーションアーキテクチャ 3-1 MVCとADR 3-1-1 MVC(Model View Controller) 3-1-2 ADR(Action Domain Responder) 3-2 アーキテクチャへの入口 3-2-1 フレームワークとアーキテクチャ設計 3-2-2 アーキテクチャ設計のポイント 3-2-3 レイヤードアーキテクチャ 3-2-4 レイヤードアーキテクチャの一歩先の世界 第二部 実践パターン Chapter 4 HTTPリクエストとレスポンス 4-1 リクエストハンドリング 4-1-1 リクエストの取得 4-1-2 Requestファサード 4-1-3 Requestオブジェクト 4-1-4 フォームリクエスト 4-2 バリデーション 4-2-1 バリデーションルールの指定方法 4-2-2 バリデーションルール 4-2-3 バリデーションの利用 4-2-4 バリデーション失敗時の処理 4-2-5 ルールのカスタマイズ 4-3 レスポンス 4-3-1 さまざまなレスポンス 4-3-2 リソースクラスを組み合わせたREST APIレスポンスパターン 4-4 ミドルウェア 4-4-1 ミドルウェアの基本 4-4-2 デフォルトで用意されているミドルウェア 4-4-3 独自ミドルウェアの実装 Chapter 5 データベース 5-1 マイグレーション 5-1-1 マイグレーション処理の流れ 5-1-2 マイグレーションファイルの作成 5-1-3 定義の記述 5-1-4 マイグレーションの実行とロールバック 5-2 シーダー 5-2-1 シーダーの作成 5-2-2 シーダークラスを利用するための設定 5-2-3 シーディングの実行 5-2-4 Fakerの利用 5-2-5 Factoryを利用する例 5-3 Eloquent 5-3-1 クラスの作成 5-3-2 規約とプロパティ 5-3-3 データ検索・データ更新の基本 5-3-4 データ操作の応用 5-3-5 関連性を持つテーブル群の値をまとめて操作する(リレーション) 5-3-6 実行されるSQLの確認 5-4 クエリビルダ 5-4-1 クエリビルダの書式 5-4-2 クエリビルダの取得 5-4-3 処理対象や内容の特定 5-4-4 クエリの実行 5-4-5 トランザクションとテーブルロック 5-4-6 ベーシックなデータ操作 5-5 リポジトリパターン 5-5-1 リポジトリパターンの概要 5-5-2 リポジトリパターンの実装 5-5-3 リファクタリング Chapter 6 認証と認可 6-1 セッションを利用した認証 6-1-1 認証を支えるクラスとその機能 6-1-2 認証処理を理解する 6-1-3 データベース・セッションによる認証処理 6-1-4 フォーム認証への適用 6-1-5 認証処理のカスタマイズ 6-1-6 パスワードリセット 6-2 トークン認証 6-2-1 api_tokenを保持するテーブルの作成 6-2-2 シーダーを用いたレコードの作成 6-2-3 独自認証プロバイダの作成 6-2-4 トークン認証の利用方法 6-3 JWT認証 6-3-1 tymon/jwt-authのインストール 6-3-2 tymon/jwt-authの利用準備 6-3-3 tymon/jwt-authの利用方法 6-3-4 トークンの発行 6-4 OAuthクライアントによる認証・認可 6-4-1 Socialite 6-4-2 GitHub OAuth認証 6-4-3 動作拡張 6-4-4 OAuthドライバの追加 6-5 認可処理 6-5-1 認可処理を理解する 6-5-2 認可処理 6-5-3 Bladeテンプレートによる認可処理 Chapter 7 イベントとキューによる処理の分離 7-1 イベント 7-1-1 イベントの基本 7-1-2 イベントの作成 7-1-3 イベントを利用した堅実なオブザーバーパターン 7-1-4 イベントのキャンセル 7-1-5 非同期イベントを利用する分離パターン 7-2 キュー 7-2-1 キューの基本 7-2-2 非同期実行ドライバの準備(Queueドライバ) 7-2-3 キューの仕様 7-2-4 キューによるPDFファイル出力パターン 7-2-5 Supervisorによる常駐プログラムパターン 7-2-6 手軽な分散処理パターン 7-3 イベントとキューによるCQRS 7-3-1 CQRS(コマンドクエリ責務分離) 7-3-2 アプリケーション仕様 7-3-3 アプリケーション実装の準備 7-3-4 口コミ登録機能の実装 7-3-5 口コミ投稿コントローラ実装 7-3-6 リスナークラスによるElasticsearch操作 7-3-7 Commandの実行・Queryの実装 Chapter 8 コンソールアプリケーション 8-1 Commandの基礎 8-1-1 クロージャによるCommandの作成 8-1-2 クラスによるCommandの作成 8-1-3 Commandへの入力 8-1-4 Commandからの出力 8-1-5 Commandの実行 8-2 Commandの実装 8-2-1 サンプル実装の仕様 8-2-2 Commandの生成 8-2-3 ユースケースクラスとサービスクラスの分離 8-2-4 ユースケースクラスの雛形作成 8-2-5 サービスクラスの実装 8-2-6 ユースケースクラスの実装 8-2-7 Commandクラスの仕上げ 8-3 バッチ処理の実装 8-3-1 バッチ処理の仕様 8-3-2 Commandクラスの実装 8-3-3 ユースケースクラスの実装 8-3-4 Commandクラスの仕上げ 8-3-5 バッチ処理のログ出力 8-3-6 スケジュールタスクによるバッチ処理実行 Chapter 9 テスト 9-1 ユニットテスト 9-1-1 テスト対象クラス 9-1-2 テストクラスの生成 9-1-3 テストメソッドの実装 9-1-4 データプロバイダの活用 9-1-5 例外のテスト 9-1-6 テストの前処理・後処理 9-1-7 テストの設定 9-2 データベーステスト 9-2-1 テスト対象のテーブルとクラス 9-2-2 データベーステストの基礎 9-2-3 Eloquentクラスのテスト 9-2-4 サービスクラスのテスト 9-2-5 モックによるテスト(サービスクラス) 9-3 WebAPIテスト 9-3-1 WebAPIテスト機能 9-3-2 テスト対象のAPI 9-3-3 APIテストの実装 9-3-4 WebAPIテストに便利な機能 Chapter 10 エラーハンドリングとログの活用 10-1 エラーハンドリング 10-1-1 エラー表示 10-1-2 エラーの種別 10-1-3 エラーハンドリングの基本 10-1-4 Fluentdの活用 10-1-5 例外の描画テンプレート変更 10-1-6 エラーハンドリングパターン 10-2 ログ活用パターン 10-2-1 ログの基本 10-2-2 ログ出力設定 10-2-3 Elasticsearchによるカスタムログドライバ実装 第三部 アプリケーション開発手法 Chapter 11 テスト駆動開発の実践 11-1 テスト駆動開発とは 11-1-1 コツはできるだけ小さく 11-1-2 サンプルアプリケーション仕様 11-1-3 データベース仕様 11-1-4 APIエンドポイント 11-2 APIエンドポイントの作成 11-2-1 アプリケーションの作成・事前準備 11-2-2 最初のテスト 11-2-3 テストメソッドに何をどのように書くか 11-2-4 最低限の実装 11-2-5 2つ目以降のテスト 11-2-6 1つのテストメソッドに検証は1つの原則 11-2-7 テストコードの確認 11-3 テストに備えるデータベース設定 11-3-1 データベース設定 11-3-2 マイグレーション・モデル・ファクトリ 11-3-3 初期データ投入用シーダーの準備 11-4 データベーステスト 11-4-1 テスト用トレイトの利用・初期データの投入 11-4-2 データベースが絡むテスト 11-4-3 仮実装で素早くテストを成功させる 11-4-4 最初のリファクタリング 11-4-5 返却値の内容を検証 11-4-6 成功が分かっているテストの追加 11-4-7 データ追加の検証 11-4-8 既存テストの修正 11-4-9 バリデーションテスト 11-5 リファクタリングユースケース 11-5-1 そろそろコントローラを使う 11-5-2 フレームワークの標準に寄せていくリファクタリング① 11-5-3 正確なテストが書けない時の対処法 11-5-4 フレームワークの標準に寄せていくリファクタリング② 11-5-5 サービスクラスへの分離 INDEX 謝辞 著者紹介

著者情報

大村 創太郎

大阪を拠点に、主に業務系のWebデータベースシステムの開発・運用に従事。著書は『PHPエンジニア養成読本』(技術評論社)、『Laravelリファレンス』(インプレス)、『PHPフレームワークLaravel Webアプリケーション開発 バージョン5.5LTS対応』(ソシム)。ブログ:「A Small, Good Thing」(http://blog.omoon.org/)。

大村, 創太郎

新原 雅司

1×1株式会社代表取締役。PHPをメインにWebシステムの開発や技術サポートを主業務としている。技術イベントでの講演や「PHPの現場」というPodcastの運営を行っている。主な著書は『Laravelリファレンス』(インプレス)、『サーバ/インフラエンジニア養成読本DevOps編』『Laravelエキスパート養成読本』(いずれも共著/技術評論社)、『PHPフレームワークLaravel Webアプリケーション開発 バージョン5.5LTS対応』(ソシム)など。ブログ:「Shin x blog」(https://blog.shin1x1.com/)

新原, 雅司

栗生 和明

ディップ株式会社所属。テックリードとしてPHPやGoなどを利用したプロダクト開発および開発マネジメントを担当。エンジニア採用や組織開発にも携わっている。Laravel Meetup Tokyoスタッフ。『Laravelリファレンス』(インプレス)の査読を担当。著書は『PHPフレームワークLaravel Webアプリケーション開発 バージョン5.5LTS対応』(ソシム)。ブログ:「ヒビノログ」(https://blog.songs-inside.com/)。

栗生, 和明

竹澤 有貴

スターフェスティバル株式会社所属。PHP、Go、Scalaをメインにデータ解析基盤、プラットフォーム開発およびエンジニアマネジメントなどを手がけている。国内PHPコミュニティやカンファレンスなどで講演を行っている。著書は『Laravelエキスパート養成読本』(技術評論社)、『Laravelリファレンス』(インプレス)、『PHPフレームワークLaravel Webアプリケーション開発 バージョン5.5LTS対応』(ソシム)など。ブログ:「ytake blog」(https://blog.ytake.jp.net/)。

竹澤, 有貴

類似書籍