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

新しいかもしれないLaravel本

新しいかもしれない、というのは
本書は3年ほど前の「PHPフレームワーク Laravel Webアプリケーション開発」の
改訂版で、
Laravel8対応のコードなどに変更してあり、一部改訂となっているためです。

3年経ったということもあり、いくつか環境も変わっていますので
その辺りが変わっていたり、文章も所々洗練されたような変更もあります。

はじめに

Laravelの入門に向けた書籍や記事は多くあります。
それらを参考にしてリリースされたサービスも多くあるかと思います。

そんなサービスもおそらく数年経って今も運用されていたり、
機能改善などが継続的に行われているのではないでしょうか?

そのような状況でおそらく、改善がしづらい、だったり
機能追加がなかなか難しい状態であったり、
きっといくつかネガティブな要素もあるのかもしれません。
本書は基本的にそういったアプリケーションに対してどう向き合い、
どういう手法をしておくとより良いか、という内容になっています。

本の読み方

前回のレビューなどでもありましたが、
基本的に初学者向けの内容にはなっていません。

アプリケーション開発全体で機能要求があり、どう実装するかイメージはついている、
ただ高い保守性と長期運用に耐えるようにするにはどう考えて、
実装すれば良いか、そのヒントがPHPで書いてあって、かつLaravelだと都合がいいなぁ、
というレベルの方にはフィットするかと思います。

フレームワークのコードはある程度読める、
責務分割とか聞くけどどういうアプローチがあるの?
疎結合とかテストが書きやすいってどういうこと?

という方にも大きなサポートになると思います。

所謂写経をするようなタイプの本ではありません。

それはなぜか?

写経をしたとしてもそれは書籍の中のサンプルへの課題解決にしかならず、
みなさんのアプリケーションで持っている課題は多種多様で、
それこそ写経したからと言って何も解決されません。

この本は何かの開発案件で、こういう機能が要求されていて
でも作り方がわからない、何かいいサンプルはないかなぁ、という方には不向きです。
ただ所々考え方のヒントや聞いたことがないキーワードなどが出てくると思いますが、
それらをヒントに理解できるように学習していくといいでしょう。
きっと大きな力になってくれます。

どうして細かい解説がないの?

本書にある考え方や物事の捉え方などの手法を解説してから
フレームワークの解説をして、写経できるようにしてよ!みたいな感想を持つ方も多いと思いますが、

考え方や物事の捉え方などの手法

これだけで本が数冊書けるレベルなのと、
Laravelというテーマから大きくずれてしまうので、その辺りは解説していません。

参考書籍は3章の最後に載っていますので是非そちらとともに読んでみてください。

こんな中身

本書は必ずしも初めてLaravelを使う、という方には難しい内容かもしれませんが、 多くの内容はLaravelに限らず導入できる内容になっています。

全体を通してLaravelが主体ではありますが、
一般的なフレームワークの本よりも設計面にフォーカスしています。
ドメイン駆動設計文脈で取り上げられる実装パターンは盛り込まず、
責務分割や、API設計などの視点がいくつか入っています。

graphQLなどの導入も多い現在ですが、
RESTでも表現できることはたくさんあります。
そうした方にはHATEOAS、ハイパーメディアについて解説している箇所が
役に立つはずです。
(多分PHPの書籍でこの手の解説がある本は他にありません)

また大きめなアプリケーションになると必ず発生する、
DBに対して非正規化にするか正規化を守るか、でもどうやってパフォーマンスを改善するか、
という問題に対してはLaravelの仕組みを使ったCQRS的な解説がヒントになるはずです。

このあたりはかなり実戦向きで、
簡単な記述方法だけでSQLもなにも意識せずに実装したい、という方には
まったくLaravelらしくないと感じると思いますが、
何も意識せずに簡単に実装して数年経って顕著化した問題に対する
改善策に結びつくように解説しています。

そういう意味でもやはり初学者向きではないでしょう。

ただこの辺りはフレームワーク、言語すらも問わず応用できるように解説しています。

担当

前回と同じく 担当したのは、3章、4章後半、6章、7章と10章です。 こめた想いは以下の通り

3章

幅を広げすぎないようにMVCとADRのみに焦点を絞って、簡単な解説などがあります。
どちらがいい、という話ではなく開発チームの体制や、長期運用するかどうかなどで大きく変わります。
この先の知識や学習するにはどうしたらいいんだろう、
公式ドキュメントだけの使い方だけではない選択肢の一つとして読んでみると楽しめると思います。

4章後半

レスポンスとミドルウェアが主ですが、
少し前に取り上げられることも多かったSSE(ストリームを使ったレスポンス)だったり、
APIの REST Level 3 / HALの導入方法だったり、
これからのアプリケーション開発に導入することができる内容になっていると思います。

7章

EventとQueueの基本に触れながら、データ分析処理などでも用いることが多いCQRSライクな方法に発展します。
大きなアプリケーションではメッセージングをApache KafkaやAmazon SQS、Kinesis Data Firehose、
RabbitMQなどに差し替えてみてください。

個人的なオススメは前回同様
後半のテスト関連の9章と11章です!

アプリケーション開発のヒントとして役立てていただければ幸いです。

フレームワークに拘らずにそういう何か学びたい

いい本がたくさんあります!

あとは若干自分のバイアスがかかったものではありますが、
分析を学んでアプリケーション設計に活かし、
その周辺のインフラやミドルウェアに対してもどういう観点でどうアプローチしていくか、
物凄く長編になりますが何かしらの形になる予定です。
たぶんコードはPHPではない可能性もありますが・・。

こちらもご期待ください