PHP中級者を目指すステップアップ本「レベルアップPHP」について

「レベルアップPHP」という本を書きました。 技術書典6の個人サークルでお披露目しまして、現在好評発売中です。

レベルアップPHP ?言語を理解して中級者へ? (技術の泉シリーズ(NextPublishing))

レベルアップPHP ?言語を理解して中級者へ? (技術の泉シリーズ(NextPublishing))

この本なんですが、技術書典5の「PHP中級者を目指す」という同人誌を底本としまして、わりと苦労して書き上げた本です。 苦節の末に発売できたので、ご紹介したいと思います。

モチベーション

本書を書こうと思った最初のきっかけは、自分が読みたいと思うPHPの書籍が少なかったことです。 とくにPHP7をはじめとする新しいPHPについて書かれた書籍が欲しくて、初心者向けではないPHP本を意識して書きました。

入門書でもなく、フレームワーク関連の書籍でもなく、PHPという言語そのものについて書いた書籍です。

どんな方に読んでもらいたいか?

  • PHPの入門書を読み終えて、次に向けてステップアップしたい方
  • 古いPHPの知識で止まってしまっており、最近のPHPがわからない方
  • 言語としてのPHPに興味がある方

どのフレームワークを使っている方であっても、役に立つ内容を目指しています。 少々マニアックな内容もあるのですが、自分が持っている(または調査した)PHPの知識を、時間の許す限り詰め込みました。

章構成

全16章でサイズはB5です。ページ数は全体で188ページになります。 B5はいわゆる一般的な同人誌サイズで、商業の技術書に多いA5より少し大きいです。

同人版からそれなりの量を追記しているため、技術書典5の「PHP中級者を目指す」をお持ちの方でも楽しめます。

  • 第1章 型別に理解する変数の扱い方
  • 第2章 変数のスコープと特別な変数・定数
  • 第3章 型の変換
  • 第4章(PHP7) 型宣言
  • 第5章(PHP5.3)名前空間
  • 第6章(PHP5.3)オートロード
  • 第7章 外部ライブラリーの活用
  • 第8章(PHP7)エラーと例外
  • 第9章 アーキテクチャー
  • 第10章 PSRコーディングガイドライン
  • 第11章 正規表現を楽しもう
  • 第12章 テンプレートエンジン
  • 第13章 パフォーマンスとデバッグ
  • 第14章 PHPとバージョンアップ
  • 第15章 良質なPHP情報を得るには?
  • 第16章 Hack/HHVMとPHP
  • 付録A(PHP5.4) ビルトインウェブサーバー
  • 付録B PHPエンジニアとサーバーサイド
  • 付録C 静的コード解析と周辺ツール
  • 付録D セキュリティー

第1〜4章 変数と型と型宣言

「レベルアップPHP」の前半は、変数と型についてです。 もともと型宣言を紹介することが目的で書きはじめた書籍のため、PHPの型について重点的に書きました。

同人版から積極的に追記しており、PHPの型を網羅することを意識しています。

f:id:konosumi:20190423015929p:plain

f:id:konosumi:20190423020719p:plain

第5〜7章 名前空間から外部ライブラリーへ

composerを使った外部ライブラリーの紹介を最終目的に、名前空間とオートロードを解説しました。 名前空間とオートロードがわかれば、composerで外部ライブラリが読み込まれる仕組みを理解できます。

f:id:konosumi:20190423020824p:plain

f:id:konosumi:20190423020155p:plain

第8章 エラーと例外

エラーと例外についてです。PHP7ではエラー関連に変化があるため、キャッチアップしておく必要があります。

f:id:konosumi:20190423020219p:plain

第9章 アーキテクチャー

フレームワークという土台の上で、「どのようなアーキテクチャーを選定して開発していくのか?」 私も迷うことが多いのですが、やはりアーキテクチャーは知っておいたほうが良い分野のため、触りではありますが紹介しています。

f:id:konosumi:20190423020916p:plain

第10章 PSRコーディングガイドライン

PSRを紹介したのは、チーム開発において統一性のあるPHPの書き方というものを考える機会になれば良いと思ったからです。

「PSR0、1、2」は基本ですが、とくに知ってほしかったのがPSR3のロガーインタフェースです。 ログにもガイドラインや推奨される書き方があり、適切なエラーレベルを選定することがWebシステムの運用に役立ちます。

f:id:konosumi:20190423020941p:plain

第11章 正規表現を楽しもう

私的な話ですが、私はPerlが好きな(PCREはPerlと類似している)ので、書くモチベーションが高かった章です。 正規表現は難しく感じる方も多いかもしれませんが、扱えるようになってくると楽しいです。

正規表現のテクニックはPHP以外でも役立つので、純粋にプログラマーとしての実力を上げたい方にも必要な知識かと思います。

f:id:konosumi:20190423021005p:plain

第12章 テンプレートエンジン

同人版からは、素のPHPタグにおける変更点について追記しました。 ASPタグ(<%, %>, <%=)はPHP7で削除されてしまったのですが、意外と使っている方もいそうな気がしています。

f:id:konosumi:20190423021034p:plain

第13章 パフォーマンスとデバッグ

PHPの入門書では、パフォーマンスやメモリー使用量について触れられることは少ないため、あえて追記しました。 var_dump()やmemory_get_usage()を知っているだけでもだいぶ違いますし、PHPがメモリを節約するためのコピーオンライトについても書きました。

私は新人時代にパフォーマンスの悪いプログラムで苦い経験があるため、同じ轍を踏む方が少しでも減らせれば良いなと思っております。

f:id:konosumi:20190423021057p:plain

第14章 PHPとバージョンアップ

PHPは毎年のようにバージョンアップを繰り返すプログラミング言語のため、変化についていくための努力が必要になります。

f:id:konosumi:20190423021122p:plain

第15章 良質なPHP情報を得るには?

PHPの情報収集についてです。 本書で取り上げた中でひとつだけ挙げるとすれば、「WEB+DB PRESS」の連載記事は総集編も含めて読んでおくと役に立ちます。

f:id:konosumi:20190423021147p:plain

第16章 Hack/HHVMとPHP

PHPにも派生言語があることを知ってほしくて追記しました。 派生言語が誕生した動機やモチベーションを知っておくことで、PHPの特性や弱点などが見えてきます。

f:id:konosumi:20190423021208p:plain

付録

付録はオマケ程度の位置づけなのですが、ビルトインウェブサーバーはもともと「PHP中級者を目指す」の第1章です。

ビルトインウェブサーバーを使えば、ルーティングエンジンをお手軽に体感したり、APIのモックサーバーを簡単に立てることができます。

f:id:konosumi:20190423021230p:plain

f:id:konosumi:20190423031112p:plain

さいごに

私ごとで恐縮ですが「レベルアップPHP」は技術書典6向けの同人誌の執筆と時期が重なったため、とても苦労しました。 そのため今年の年末年始休暇は、ほぼ本書の執筆だけで終わってます(苦笑い)。

ひたすらPHPそのものについて書いた本でして、多少マニアックな側面もありますが。 書くのに苦労しただけあって、少なくともPHPエンジニアである自分が読みたいと思える本にはなってます。

技術書典6は終わってしまいましたが、5/3の「埼玉実業実学書典(銭けっと)」にも本書の見本を持っていきます。 (注釈:まだ未確定ですが、現時点では本書の電子版DLカードを当日販売する予定です) もし埼玉の近くにお住まいの方がいらっしゃいましたら、当日もぜひお待ちしておりますー。

銭けっと (実業実学書典) - zeniket ページ!

レベルアップPHP ?言語を理解して中級者へ? (技術の泉シリーズ(NextPublishing))

レベルアップPHP ?言語を理解して中級者へ? (技術の泉シリーズ(NextPublishing))