学習ロードマップ
依存方向の制御と同心円モデルに代表される、大規模/長寿命のアプリ開発に耐える設計の原則を体系的に学ぶロードマップ。
このロードマップが扱うもの
このロードマップは、機能追加のたびに壊れがちなコードベースと向き合っているバックエンド / アプリケーションエンジニアを対象にしています。学び終えたときには、依存方向の制御や境界設計の原則を理解し、クリーンアーキテクチャやヘキサゴナル、オニオンなどの派生形を状況に応じて選び、現実的な範囲で適用・運用できる状態を目指します。
このロードマップの全体像
このロードマップは、機能追加のたびに壊れがちなコードベースと向き合っているバックエンド / アプリケーションエンジニアを対象にしています。学び終えたときには、依存方向の制御や境界設計の原則を理解し、クリーンアーキテクチャやヘキサゴナル、オニオンなどの派生形を状況に応じて選び、現実的な範囲で適用・運用できる状態を目指します。
1. 原則の俯瞰: 単一責任、依存性逆転、境界づけ、SOLID といった設計原則の意味と関係を整理します。 2. 同心円モデルの理解: エンティティ・ユースケース・インターフェースアダプタ・フレームワークという層の役割と、依存の向きを身につけます。 3. ユースケース駆動の設計: 業務フローをユースケースとして切り出し、入出力ポートとアダプタでの実装に落とし込みます。 4. ドメインモデルとアプリケーションサービス: ドメインロジックをフレームワークから独立させ、アプリケーション層で手続きをまとめる書き方を学びます。 5. テスト戦略: ユニット・結合・エンドツーエンドの役割分担、ドメインの純粋関数化によってテスト容易性を高めます。 6. 現実への適用: フル適用と部分適用の基準、既存コードのリファクタリング、チーム合意の作り方を考えます。
クリーンアーキテクチャは「常に正しい」構造ではなく、プロジェクトの規模や寿命、チーム習熟度に対してオーバーヘッドになることもあります。レイヤーを増やしたこと自体が目的化すると、意味のない抽象が乱立し保守性を逆に下げます。フレームワーク固有の機能(DI、ORM、ミドルウェア)と、独立させたいドメインロジックとの境界設計が肝です。周辺では、SOLID・DDD・デザインパターン、テスト駆動開発、RDB 設計、Web / API フレームワークの構造、リファクタリング手法、チームでの設計レビュー文化を並行して押さえておくと、クリーンアーキテクチャを「ルール」ではなく判断道具として扱えるようになります。
ロードマップ
第 1 章
SOLID 原則・TDD・DDD を Python で束ね、クリーンアーキテクチャを実践へ落とす起点。同心円と依存方向の感覚をコードで掴み、以降の言語横断の議論を支える土台を作る。
ヘキサゴナル(ポート&アダプタ)を手を動かして組み上げ、依存方向の制御を体得する段。1冊目の原則に具体的な構造を与え、境界の引き方を身体で覚える役割。
ドメイン駆動設計の基礎を据え直し、クリーンアーキテクチャと接続して内側の核を厚くする段。なぜ依存を内向きにするのかをモデリングの側から問い直す。
現場の技術トピックを集めた実務テックブックで、設計原則を個別の課題に当てる視点を補う段。理論の道筋に対し、適用時の判断材料として脇に置く。
オブジェクト指向の活用を PHP で平易に説き、設計原則をなぜ守るのかへ立ち返る段。入門の語り口で全体を反芻し、言語に依らない設計観を固める着地点。
読む順に並べています。まずは1冊目から始めましょう。
SOLID 原則・TDD・DDD を Python で束ね、クリーンアーキテクチャを実践へ落とす起点。同心円と依存方向の感覚をコードで掴み、以降の言語横断の議論を支える土台を作る。