ISBN 9784297132347
ちょうぜつソフトウェア設計入門ーーPHPで理解するオブジェクト指向の活用
概要
OOPを起点にクリーンアーキテクチャ・SOLID・TDD・DIを体系的に習得する
想定読者
オブジェクト指向の基礎は知っているが、設計原則・アーキテクチャ・テスト手法を体系化できていない中級開発者。PHPユーザーに限らず、言語を問わず設計力を底上げしたい人。
こんな人には向いていない
- プログラミング自体が初めての人。変数・関数・クラスの基礎を別途習得してから読む必要がある
- すでにClean Architecture・SOLID・DIを実務で運用している上級者には既知の内容が中心になる
- PHPの言語仕様リファレンスを求める人。本書はPHPを例示言語として使うが言語仕様の網羅的解説はしない
読了後にできるようになること
- クリーンアーキテクチャの依存方向ルールを理解し、レイヤ分割の判断軸を持てる
- SOLID原則の各原則(単一責任・開放閉鎖・リスコフ置換・インターフェース分離・依存性逆転)を具体コードで説明できる
- テスト駆動開発(TDD)のサイクルを実践し、テスト可能な設計を意識して書けるようになる
- 依存性注入(DI)コンテナの仕組みを理解し、疎結合な設計を実装できる
- GoFデザインパターンの代表的なパターンを適切な文脈で選択・適用できる
- UMLクラス図・シーケンス図を読み書きし、設計意図をチームで共有できる
本書のキー概念(章解説)
- 第 1 章 クリーンアーキテクチャ — 依存の方向を制御するアーキテクチャ全体像。後続章の設計原則を活かす舞台を先に理解するための章
- 第 2 章 パッケージ原則 — 凝集性・安定性・再利用性の観点でコードをパッケージに分割する考え方を整理する
- 第 3 章 オブジェクト指向 — カプセル化・継承・ポリモーフィズムを再確認するリセット章。既知でも読むと整理につながる
- 第 4 章 UML(統一モデリング言語) — クラス図・シーケンス図の読み書きを習得し、チーム設計議論の共通言語を得る
- 第 5 章 オブジェクト指向原則 SOLID — 本書の核心。5原則をPHPコードで具体的に学ぶ最重要章。初読時は時間をかけるべき
- 第 6 章 テスト駆動開発 — TDDのRed-Green-Refactorサイクルを実践形式で体験する。5章のSOLIDと組み合わせると効果が高い
- 第 7 章 依存性注入 — DIの仕組みとDIコンテナの動作原理を理解し、1章のクリーンアーキテクチャの実装手段として接続できる
- 第 8 章 デザインパターン — GoFパターンをSOLIDの文脈で選択する視点を養う。実務のコードレビュー時に参照しやすい
- 第 9 章 アジャイル開発 — 技術プラクティスをチームプロセスと接続する終章。開発文化の観点で設計の意義を再確認する
ハイライト
- 上級者には定番の知識を体系的に整理するヒントとして、初級者には可愛いイラストで覚えるキーワード集として、幅広く活用していくことができます(本書が中上級者の体系化にも、中級手前の読者のキーワード習得にも使える二重の価値を端的に表している)
- サンプルコードはPHPで書かれていますが、他の言語に置き換えて読めるコードばかりです。PHPを使っているかどうかを問わず、全ての開発者にオススメです(PHP以外の言語ユーザーが購入を迷う際の最大の懸念を正面から解消している記述)
編集メモ
Qiita記事の入力シグナルなし。書誌情報のみで判定。技術評論社から2022年12月刊行、SoftwareDesign誌連載ベースで編集された体系書。OOP・SOLID・TDD・DI・クリーンアーキテクチャを一冊にまとめた構成は中級開発者向け書籍として実務的な需要が見込まれるためpracticalとした
読む前に押さえておきたいこと
- クラスとインスタンスの概念を使ったコーディング経験(言語不問)
- インターフェースまたは抽象クラスの基本的な使い方の理解
- ユニットテストを書いたことがある程度の経験があると6章から最大限学べる
学習のコツ
- 5章(SOLID)を本書の中心に据え、前後の章(3章OOP・7章DI・8章デザインパターン)を5章の補足として読むと知識が有機的につながる
- 1章(クリーンアーキテクチャ)は全体地図として先に通読し、各論を学んだ後に再読すると理解が深まる
- サンプルコードはPHPだが、自分が使う言語(Java・TypeScript・Python等)に書き換えながら読むと定着率が上がる
- 6章(TDD)は手を動かしながら読む章。読むだけで終わらず、実際にテストを書く環境を用意してから取り組む
出版社による内容紹介
SoftwareDesign誌での連載と技術アドベントカレンダー24回ぶんに収まらなかった関連知識を徹底解説。いわゆる「オブジェクト指向」と呼ばれる考え方から発展した分野は、どのようにソフトウェア設計の役に立つのかを、よく知られた原則、テスト駆動開発、デザインパターンなどを通じて理解できる一冊です。上級者には定番の知識を体系的に整理するヒントとして、初級者には可愛いイラストで覚えるキーワード集として、幅広く活用していくことができます。なお、サンプルコードはPHPで書かれていますが、他の言語に置き換えて読めるコードばかりです。PHPを使っているかどうかを問わず、全ての開発者にオススメです。 第 1章 クリーンアーキテクチャ 第 2章 パッケージ原則 第 3章 オブジェクト指向 第 4章 UML(統一モデリング言語) 第 5章 オブジェクト指向原則 SOLID 第 6章 テスト駆動開発 第 7章 依存性注入 第 8章 デザインパターン 第 9章 アジャイル開発
この本がどの学習段階で役立つかは、 関連する ロードマップ から確認できます。