学習ロードマップ

クリーンアーキテクチャ

依存方向の制御と同心円モデルに代表される、大規模/長寿命のアプリ開発に耐える設計の原則を体系的に学ぶロードマップ。

Pythonではじめるクリーンアーキテクチャ SOLID原則/ドメイン駆動設計/テスト駆動開発を実践 手を動かしてわかるクリーンアーキテクチャ ヘキサゴナルアーキテクチャによるクリーンなアプリケーション開発 [入門]ドメイン駆動設計ーー基礎と実践・クリーンアーキテクチャ 【POD】ACCESSテックブック ちょうぜつソフトウェア設計入門ーーPHPで理解するオブジェクト指向の活用
SCROLL TO BEGIN

このロードマップが扱うもの

/

このロードマップの全体像

このロードマップは、機能追加のたびに壊れがちなコードベースと向き合っているバックエンド / アプリケーションエンジニアを対象にしています。学び終えたときには、依存方向の制御や境界設計の原則を理解し、クリーンアーキテクチャやヘキサゴナル、オニオンなどの派生形を状況に応じて選び、現実的な範囲で適用・運用できる状態を目指します。

学習ステップ

1. 原則の俯瞰: 単一責任、依存性逆転、境界づけ、SOLID といった設計原則の意味と関係を整理します。 2. 同心円モデルの理解: エンティティ・ユースケース・インターフェースアダプタ・フレームワークという層の役割と、依存の向きを身につけます。 3. ユースケース駆動の設計: 業務フローをユースケースとして切り出し、入出力ポートとアダプタでの実装に落とし込みます。 4. ドメインモデルとアプリケーションサービス: ドメインロジックをフレームワークから独立させ、アプリケーション層で手続きをまとめる書き方を学びます。 5. テスト戦略: ユニット・結合・エンドツーエンドの役割分担、ドメインの純粋関数化によってテスト容易性を高めます。 6. 現実への適用: フル適用と部分適用の基準、既存コードのリファクタリング、チーム合意の作り方を考えます。

注意点と周辺知識

クリーンアーキテクチャは「常に正しい」構造ではなく、プロジェクトの規模や寿命、チーム習熟度に対してオーバーヘッドになることもあります。レイヤーを増やしたこと自体が目的化すると、意味のない抽象が乱立し保守性を逆に下げます。フレームワーク固有の機能(DI、ORM、ミドルウェア)と、独立させたいドメインロジックとの境界設計が肝です。周辺では、SOLID・DDD・デザインパターン、テスト駆動開発、RDB 設計、Web / API フレームワークの構造、リファクタリング手法、チームでの設計レビュー文化を並行して押さえておくと、クリーンアーキテクチャを「ルール」ではなく判断道具として扱えるようになります。

ロードマップ

5 つのステップで読み進める

  1. 01
    ステップ 01 Pythonではじめるクリーンアーキテクチャ SOLID原則/ドメイン駆動設計/テスト駆動開発を実践
    Pythonではじめるクリーンアーキテクチャ SOLID原則/ドメイン駆動設計/テスト駆動開発を実践
  2. 02
    ステップ 02 手を動かしてわかるクリーンアーキテクチャ ヘキサゴナルアーキテクチャによるクリーンなアプリケーション開発
    手を動かしてわかるクリーンアーキテクチャ ヘキサゴナルアーキテクチャによるクリーンなアプリケーション開発
  3. 03
    ステップ 03 [入門]ドメイン駆動設計ーー基礎と実践・クリーンアーキテクチャ
    [入門]ドメイン駆動設計ーー基礎と実践・クリーンアーキテクチャ
  4. 04
    ステップ 04 【POD】ACCESSテックブック
    【POD】ACCESSテックブック
  5. 05
    ステップ 05 ちょうぜつソフトウェア設計入門ーーPHPで理解するオブジェクト指向の活用
    ちょうぜつソフトウェア設計入門ーーPHPで理解するオブジェクト指向の活用

第 1 章

Pythonではじめるクリーンアーキテクチャ SOLID原則/ドメイン駆動設計/テスト駆動開発を実践

  1. Pythonではじめるクリーンアーキテクチャ SOLID原則/ドメイン駆動設計/テスト駆動開発を実践

    Pythonではじめるクリーンアーキテクチャ SOLID原則/ドメイン駆動設計/テスト駆動開発を実践
    この章の 1 冊 Pythonではじめるクリーンアーキテクチャ SOLID原則/ドメイン駆動設計/テスト駆動開発を実践

    Python でクリーンアーキテクチャ・SOLID・DDD・TDD を一冊で実践する

    この本で身につくこと
    • クリーンアーキテクチャの各層(エンティティ・ユースケース・アダプター・インフラ)の責務とその連携を実装レベルで説明できる
    • SOLID原則5つを Python コードに当てはめ、どの原則がどの設計判断に効くかを判断できる
    • ドメイン駆動設計(DDD)の戦術パターン(エンティティ・値オブジェクト・リポジトリ)を Python で表現できる
    • ユニットテスト・統合テストを用いた包括的なテストカバレッジを、依存性逆転を活かして構築できる

    想定読者: Pythonでの開発経験はあるが「コードが肥大化してフレームワーク依存が外せない」という課題を感じている中級エンジニア。設計知識をコードレベルで身につけたい人

    本の詳細を見る →
  2. 手を動かしてわかるクリーンアーキテクチャ ヘキサゴナルアーキテクチャによるクリーンなアプリケーション開発

    手を動かしてわかるクリーンアーキテクチャ ヘキサゴナルアーキテクチャによるクリーンなアプリケーション開発
    この章の 1 冊 手を動かしてわかるクリーンアーキテクチャ ヘキサゴナルアーキテクチャによるクリーンなアプリケーション開発

    ヘキサゴナルアーキテクチャを Java コードで段階的に実装する

    この本で身につくこと
    • ドメイン層をフレームワークや DB から切り離し、依存の方向を内向きに統一する設計ができる
    • 入力ポート・出力ポートの役割を区別し、ユースケースを実装する際の境界を定義できる
    • Web アダプタと永続化アダプタをポートに対して実装し、置換可能な構造を組み立てられる
    • アーキテクチャ境界ごとのテスト戦略(ユニット / 統合 / システム)を使い分けられる

    想定読者: レイヤードアーキテクチャの限界を感じており、ユースケース・ポート・アダプタパターンを実装レベルで理解したい中級 Java 開発者

    本の詳細を見る →
  3. [入門]ドメイン駆動設計ーー基礎と実践・クリーンアーキテクチャ

    [入門]ドメイン駆動設計ーー基礎と実践・クリーンアーキテクチャ
    この章の 1 冊 [入門]ドメイン駆動設計ーー基礎と実践・クリーンアーキテクチャ

    DDD の思想からクリーンアーキテクチャの実装まで段階的に習得する

    この本で身につくこと
    • 「エヴァンス本」の要点をオブジェクト指向・アジャイル・分散アーキテクチャとの関係性から再構成して理解できる
    • ユビキタス言語の策定プロセスと、開発チーム・ドメイン専門家の協働における具体的な使い方を把握できる
    • イベントストーミングを用いてドメインイベントを洗い出し、その知識をソースコードへ落とし込む手順を体験できる
    • イベントソーシングの概念(状態変化をイベントとして記録し再構築する設計)を実例から理解できる

    想定読者: オブジェクト指向の基礎は押さえており、DDD を実務に導入したいが「エヴァンス本」の抽象度に挫折した経験を持つバックエンドエンジニア

    本の詳細を見る →
  4. 【POD】ACCESSテックブック

    【POD】ACCESSテックブック
    この章の 1 冊 【POD】ACCESSテックブック

    株式会社ACCESSのモバイル技術知見をクリーンアーキテクチャ等で実践的に解説する

    この本で身につくこと
    • クリーンアーキテクチャをAndroidアプリ開発に適用する際の設計方針と実装パターンを把握できる
    • Androidのファイルストレージ(内部/外部/スコープドストレージ)の仕様と使い分けを整理できる
    • 企業内エンジニアが実務で直面した技術課題と解決アプローチの事例を複数把握できる
    • 各章が独立した構成のため、関心のあるテーマだけを選んで知識を補完できる

    想定読者: Androidアプリ開発に携わるエンジニアで、クリーンアーキテクチャの実装例やAndroidのファイルストレージ仕様を体系的に整理したい人

    本の詳細を見る →
  5. ちょうぜつソフトウェア設計入門ーーPHPで理解するオブジェクト指向の活用

    ちょうぜつソフトウェア設計入門ーーPHPで理解するオブジェクト指向の活用
    この章の 1 冊 ちょうぜつソフトウェア設計入門ーーPHPで理解するオブジェクト指向の活用

    OOPを起点にクリーンアーキテクチャ・SOLID・TDD・DIを体系的に習得する

    この本で身につくこと
    • クリーンアーキテクチャの依存方向ルールを理解し、レイヤ分割の判断軸を持てる
    • SOLID原則の各原則(単一責任・開放閉鎖・リスコフ置換・インターフェース分離・依存性逆転)を具体コードで説明できる
    • テスト駆動開発(TDD)のサイクルを実践し、テスト可能な設計を意識して書けるようになる
    • 依存性注入(DI)コンテナの仕組みを理解し、疎結合な設計を実装できる

    想定読者: オブジェクト指向の基礎は知っているが、設計原則・アーキテクチャ・テスト手法を体系化できていない中級開発者。PHPユーザーに限らず、言語を問わず設計力を底上げしたい人。

    本の詳細を見る →