ヒビノログ

個人的なメモを淡々と記録していくブログ。最近はLaravelやスマートフォンの話題など。

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

「PHPフレームワーク Laravel Webアプリケーション開発」というLaravel本の執筆に参加しました。竹澤さん、新原さん、大村さんとの共著で、ソシム社から発売中です。

おかげさまでご好評をいただき、早々に増刷が決定しております。ありがとうございます!!

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

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

本書は以前に出版されたLaravelリファレンスのような「リファレンス」というよりは、具体的なコードを例示しながら、Laravelをより使いこなしていただけるような内容を心がけました。

私は主に前半部分を担当しています。簡単にご紹介を...

1章

Laravel の概要について触れています。章の後半ではHomesteadLaradockを使った環境構築手順と、会員登録&認証系の処理を扱う簡単なサンプルプログラムを載せました。これまでの技術本は、ローカル環境にWebサーバとPHPを入れて環境を作る形が一般的な印象があるのですが、2018年現在、仮想化技術を使った開発環境の利用が広まっており、私が所属する会社でもDockerやVagrantを使って開発を行っていますので、内容もそれに合わせました。サンプルプログラムの説明ではいきなり Illuminate 配下のLaravel本体のコードを読むような記述も一部入っていますが、本書全体を通して、そういったLaravel本体のコードを含めた解説がされていますので、がんばって追ってみてください。

2章

Laravelのアーキテクチャについて触れています。LaravelでCRUDのようなアプリケーションを一度作ったあとにこの章を読んでいただくと、Laravelがどうやって動いているのか、より理解しやすくなるのではと思います。サービスコンテナ、サービスプロバイダ、ファサード、コントラクトと、Laravelの特徴的で主要な機能を説明しています。ときどき、ファサードを使う/使わないといった議論が出ますが、ファサードが動く仕組みについてもこの章で紹介していますので、理解を深めながら、それぞれの現場でコンテキストに合わせて利用の是非を考えていただければと思います。

4章

リクエストとレスポンス、その過程で処理されるミドルウェア、そしてバリデーションについての章です。リクエストではInputやRequestファサードのほか、Illuminate\Http\Request クラスのインスタンスを利用した入力値の取得を扱っています。バリデーションは、フォームリクエストによるバリデーション処理やルールのカスタマイズについて紹介しています。そのほか、ストリームを使ったレスポンス(SSE)やREST APIのレスポンスについても取り上げています。

5章

データベースの章です。前半はマイグレーションやシーダーによるデータ投入を、後半ではEloquentやクエリビルダを利用したデータ入出力について説明しています。Eloquentやクエリビルダはさまざまな機能を持ち、Laravelのバージョンによっても差異があるため、Eloquentの基底クラスである \Illuminate\Database\Eloquent\Model やEloquentのクラスメソッドの返却値として用いられている \Illuminate\Database\Eloquent\Builder 、クエリビルダの本体である \Illuminate\Database\Query\Builder などのコードも併せて参照いただければと思います。また、5章はデータ入出力の章ということで、章末ではデザインパターンの1つであるリポジトリパターンを取り上げ、具体的なコードとともに紹介しています。こちらも参考にしてみてください。

そのほかの章については、竹澤さんや新原さんのブログの紹介エントリをご覧ください!

blog.ytake.jp.net

blog.shin1x1.com

おかげさまで多くの方にお読みいただき、SNSなどでいろんな反応をいただいています。ありがとうございます!

本書は、Laravelを使った開発経験があったほうが理解が進めやすい内容にはなっていますが、全体を通して、設計を行う上での普遍的な考え方だったり、汎用的に使える機能の組み方だったり、サンプルコードに型指定を積極的に取り入れたりと、Laravelだけに閉じない内容が散りばめられているかと思います。

みなさんの日々の開発のお役に立てれば嬉しいです。よろしくお願いします。