「TECHNICAL MASTER はじめてのPHP エンジニア入門編」の感想

## はじめに
PHPの実務経験が3年を超え、何となく色々できるようになってきました。
しかし、先輩エンジニアを見てると知識・経験の差を感じる日々。
「どうしたら先輩たちのようになれるのだろうか...」と悩んでいた時に出会ったのが「TECHNICAL MASTER はじめてのPHP エンジニア入門編」でした。
技術の伸び悩み時期だった自分にピッタリの良著だったので、読んだ感想を紹介します！

## 対象者
この記事は下記のような人を対象にしています。

- PHPer歴1~3年程度で、そろそろ初心者マークを外したい人
- 中級バックエンドエンジニアで初めてPHPに触れる人

## 結論
「TECHNICAL MASTER はじめてのPHP エンジニア入門編」はそろそろ初心者マークを外したいPHPerに最適な技術書です！

## 「TECHNICAL MASTER はじめてのPHP エンジニア入門編」の目次
目次は下記の通りとなっています。
PHPの専門書というよりは、WEBアプリケーションを開発するにあたり、バックエンドエンジニアとして知るべき知識が(良い意味で)浅く広くカバーされています。
「はじめに」で下記のとおり書かれており、まさにその通りの良著だと思いました！
>本書を読めば開発に関して全てがわかるということを目指したわけではなく、開発を行うためにそのような分野があるのかを知り、現時点で何を知らないのかを知っていただくのが目標となります。

```
Part01 PHP言語の知識と新機能(1-19)

Chapter01 最近のPHP
　　01-01 PHPの特徴
　　01-02 PHPの歴史
　　01-03 PHPのさらなる進化
　　01-04 PHPのライフサイクル
　　01-05 PHP言語の発展プロセス

Chapter02 基本構文(20-77)
　　02-01 基本的な構文
　　02-02 変数、定数、型
　　02-03 式
　　02-04 基本演算子
　　02-05 高度な演算子
　　02-06 特殊な演算子
　　02-07 条件分岐
　　02-08 ループ
　　02-09 外部ファイル参照
　　02-10 関数
　　02-11 クラスの基本機能
　　02-12 クラスの応用機能
　　02-13 名前空間
　　02-14 リファレンス

Chapter03 PHPの新機能とモダンな機能(78-103)
　　03-01 配列
　　03-02 型宣言の追加の歴史
　　03-03 PHPDocとアトリビュート
　　03-04 トレイト、列挙型（Enum）
　　03-05 PHP標準化の流れ

Chapter04 パッケージマネージャー(104-119)
　　04-01 Composer
　　04-02 Composerの使い方
　　04-03 オートローディング

Chapter05 モダンなPHPフレームワーク(120-155)
　　05-01 フレームワーク誕生の流れ
　　05-02 Webアプリケーションフレームワークの特徴
　　05-03 Laravel
　　05-04 Symfony
　　05-05 CakePHP
　　05-06 Slim

Part02 より良いアプリケーションを作るための知識

Chapter06 例外処理とロギング(156-171)
　　06-01 例外とは
　　06-02 例外処理の書き方
　　06-03 ログを記録する
　　06-04 ロギングの注意点

Chapter07 認証と認可(172-191)
　　07-01 認証と認可の違い
　　07-02 Session認証
　　07-03 トークン認証
　　07-04 Laravel での認証の例
　　07-05 認証強度を上げるための方法

Chapter08 セキュリティ(192-221)
　　08-01 HTTPについて
　　08-02 脆弱性の原因
　　08-03 基本的な対策
　　08-04 代表的な脆弱性一覧
　　08-05 XSS（クロスサイト スクリプティング）
　　08-06 OSコマンド インジェクション
　　08-07 SQLインジェクション
　　08-08 ディレクトリ トラバーサル
　　08-09 セッション ハイジャック
　　08-10 CSRF（クロスサイト リクエスト フォージェリ）
　　08-11 HTTPヘッダ インジェクション
　　08-12 バッファオーバーフロー
　　08-13 安全なウェブサイトの作り方

Part03 アーキテクチャと設計

Chapter09 設計原則とパターン(222-277)
　　09-01 アーキテクチャ
　　09-02 依存関係
　　09-03 SOLID原則
　　09-04 アーキテクチャパターンとアンチパターン

Chapter10 RESTful API(278-293)
　　10-01 RESTful APIとは
　　10-02 RESTful APIの設計
　　10-03 リクエスト・レスポンスの設計
　　10-04 ドキュメント

Chapter11 データベース設計と運用戦略(294-315)
　　11-01 なぜリレーショナル・データベースを使うのか？
　　11-02 データベース設計
　　11-03 基本のリレーションシップ
　　11-04 ORマッパー
　　11-05 マイグレーション

Part04 アプリケーション開発プロセス

Chapter12 日常的な開発プロセス(316-349)
　　12-01 アジャイル開発
　　12-02 テスト駆動開発（TDD）
　　12-03 PHP における自動テスト
　　12-04 コードレビュー

Chapter13 継続的インテグレーション(CI)(350-378)
　　13-01 GitHub Actions
　　13-02 GitHub Actionsでテストを実行できるようにする
　　13-03 GitHub Actionsで静的解析を実行できるようにする
　　13-04 GitHub Actionsで脆弱性検知をできるようにする
　　13-05 GitHub ActionsでSlack通知を行えるようにする
　　13-06 GitHub Actionsに関わる設定
```

## 理解度が低かった章
「全然知らなかった」というものから、「用語は聞いたことあるけど、内容を詳しく説明はできない」「概念は知ってたけど、そういう用語で呼ぶのは知らんかった」など、さまざまな学びがありました。

### 02 基本構文
意外と知らない・使っていないPHPの機能が多かったです。
また、理解が曖昧な用語もあったので、下記にリストアップ。

- 抽象クラス、メソッド（abstract）
- final
- リファレンス
- アトリビュート
- 式と文の違い
- インターフェイス
- インスタンス化
- プロパティ（クラス内変数）
- メソッド（function）

### 05 モダンなPHPフレームワーク
前職はLaravel、現職はfuelPHPを利用しているが、それ以外は名前聞いたことある程度。
Laravel,Symfony,CakePHP,Slimなどの特徴を横並びでまとめられているのはとてもわかりやすかったです。

### 08 セキュリティ
ここ、フレームワークに任せっきりで、全然知らないことが露呈。
下記にリストアップ。

- OSコマンドインジェクション
- ディレクトリトラバーサル
- セッションハイジャック
- バッファオーバーフロー

### 09 設計原則とパターン
オニオンアーキテクチャとか、クリーンアーキテクチャとか、よくカンファレンスで聞いてたけど、全然実務経験がないので理解できてなかったです...。
SOLID原則もそれぞれは本で読んだことあったけど、あまり理解できてなかったことを自覚しました。

本著ではSOLID原則を、具体的なPHPの記述を通じて理解できるようになっており、この部分だけでも読む価値ありだと思います！


### 12 日常的な開発プロセス
テスト駆動開発ってそういうことだったのね...というのが具体的なコードを通じて理解できました。
ここもかなりおすすめの箇所です！


## 理解度が高かった章
下記は実務経験があったり、勉強会やカンファレンス参加などでそこそこ知識があった部分。
改めて自分が詳しい部分を言語化できて有意義でした。

### 01 最近のPHP
毎年PHPカンファレンスに参加しており、聞いたことある話が多かったです。

### 03 PHPの新機能とモダンな機能
現職の勉強会でカバーしたばかりの内容。
「これは勉強会でやったヤツだ！」と進研ゼミ状態でした。
勉強会ありがてぇ！！！

### 04 パッケージマネージャー
まぁ、普通に業務で使ってます、って感じ。

### 06 例外処理とロギング
「これ、今月実務でガッツリやったことや！」と進研ゼミ状態。
実は前職ではあまり経験がなかったので、直近で最も成長を実感した部分。

### 07 認証と認可
これもフレームワーク任せではあるけど、実務経験あり。

### 10 RESTful API
前職でガッツリAPI開発してたので、問題なし。

### 11 データベース設計と運用戦略
前職~現職で実務経験あり。

### 13 継続的インテグレーション(CI)
自分で構築したことはないですが、業務で利用してるので特に知らなかったことはなかったです。

## おわりに
「TECHNICAL MASTER はじめてのPHP エンジニア入門編」の感想についてまとめました。
PHPer初心者脱却を目指すエンジニアにおすすめの良著です！