Shin x Blog

PHPをメインにWebシステムを開発してます。Webシステム開発チームの技術サポートも行っています。

Laravel 8 対応版「PHP フレームワーク Laravel Web アプリケーション開発」を執筆しました

2018 年に出版された「PHP フレームワーク Laravel Web アプリケーション開発」の Laravel 8 対応版 を共著で執筆しました。

f:id:shin1x1:20210525161810j:plain

前回は Laravel 5.5(LTS) がターゲットだったのですが、あれから 3 年近く経過して Laravel 8 が最新バージョンとなったので、こちらに対応するために内容をアップデートしています。

私は、8 章のコンソールアプリケーションと 9 章のテストを担当しました。

開発現場のお供に

Web アプリケーション 開発の現場で Laravel を使うことを前提に各機能を解説した本です。ある意味、Laravel を触ることが目的ではなく、Laravel を使って Web アプリケーションを開発することが目的の方に向けた本ともいえます。

1 章こそ、チュートリアルなどで良くある環境設定からサンプルアプリケーションを構築する流れですが、2 章以降は機能やテーマごとに利用方法やその背景にある考えを解説しています。読み方としては、最初はまずざっと全体を眺めてどのようなことが書いてあるかを大まかに把握していただいて、後は興味や関心ごとに気になる章をピックアップして読んでいくのが良いでしょう。

Laravel の解説本なので、もちろん Laravel の利用方法を解説しているのですが、特に「3 章 アプリケーションアーキテクチャ」や「9 章 テスト」「11 章 テスト駆動開発の実践」などは Laravel ユーザで無くとも参考になる汎用性の高い内容だと思います。他の章も、機能をどのように利用してアプリケーションを開発していくかという視点で解説している箇所が多くあるので、開発現場でいつでも読める場所に置いていただいて、困った時に参考にしていただければ嬉しいです :)

現在、絶賛 Amazon で予約受付中なので、よろしくお願いします!

なお、これから Laravel を触る方向けには、昨年寄稿させていただいた下記のような記事もあるので、よろしければこちらもどうぞ。

eh-career.com

主な変更箇所

今回、担当章で Laravel 8 対応するにあたって主に変更した箇所は以下です。大まかな流れは前回の Laravel 5.5 を対象としたものと変わっておらず、細かな箇所を Laravel 8 に合わせて変更した感じですね。

8 章 コンソールアプリケーション

  • Carbon を CarbonImmutable に変更
  • Command の戻り値を追加
  • ログ出力先変更を channel で制御

  • バッチ処理通知の解説をスケジュールタスクの解説に変更

9 章 テスト

  • PHPUnit を 6 から 9 に変更
  • tests/Unit/ 以下のテストの基底クラスを PHPUnit\Framework\TestCase に変更
    • 一部テストは Tests\TestCase のまま
  • @expectedException 等の例外テスト用アノテーションを廃止
  • Faker 周り
  • ルーティングで独自 namespace のコントローラを利用する際の設定を削除
  • Mail::assertSent の解説を変更

目次

Chapter 1 Laravelの概要
1-1 Laravelとは
1-2 環境構築
1-3 最初のアプリケーション

Chapter 2 Laravelのアーキテクチャ
2-1 ライフサイクル
2-2 サービスコンテナ
2-3 サービスプロバイダ
2-4 コントラクト

Chapter 3 アプリケーションアーキテクチャ
3-1 MVCとADR
3-2 アーキテクチャへの入口

Chapter 4 HTTPリクエストとレスポンス
4-1 リクエストハンドリング
4-2 バリデーション
4-3 レスポンス
4-4 ミドルウェア

Chapter 5 データベース
5-1 マイグレーション
5-2 シーダー
5-3 Eloquent
5-4 クエリビルダ
5-5 リポジトリパターン

Chapter 6 認証と認可
6-1 セッションを利用した認証
6-2 トークン認証
6-3 JWT認証
6-4 OAuthクライアントによる認証・認可
6-5 認可処理

Chapter 7 イベントとキューによる処理の分離
7-1 イベント
7-2 キュー
7-3 イベントとキューによるCQRS

Chapter 8 コンソールアプリケーション
8-1 Commandの基礎
8-2 Commandの実装
8-3 バッチ処理の実装

Chapter 9 テスト
9-1 ユニットテスト
9-2 データベーステスト
9-3 WebAPIテスト

Chapter 10 エラーハンドリングとログの活用
10-1 エラーハンドリング
10-2 ログ活用パターン

Chapter 11 テスト駆動開発の実践
11-1 テスト駆動開発とは
11-2 APIエンドポイントの作成
11-3 テストに備えるデータベース設定
11-4 データベーステスト
11-5 リファクタリングユースケース