mcpField
D
ddd-architecture-selector

ddd-architecture-selector

github.com/full-stack-skills開発17123 回インストール4 週間前に更新
リポジトリ

ddd-architecture-selector について

バックエンド開発者、アーキテクト、テックリード向けに、5種類の DDD アーキテクチャを選ぶための判断ガイドです。チームやプロジェクトの条件を踏まえ、CQRS、ドメイン分類、マイクロサービス分割も検討し、実装ガイドへ案内します。

主な機能

  1. 01Layered、Onion、Hexagonal、Clean、COLAを比較
  2. 02チームと業務の条件から方式を推奨
  3. 03CQRSとEvent Sourcingの段階を評価
  4. 04コア・汎用・支援ドメインを分類
  5. 05境界づけられたコンテキストに基づく分割案
  6. 06各アーキテクチャの実装ガイドへ案内

活用シーン

  1. 01新規 DDD プロジェクトの方式選定
  2. 02移行計画に向けた方式の比較
  3. 03CQRSやEvent Sourcingの必要性の評価
  4. 04境界づけられたコンテキストに沿った分割計画

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/full-stack-skills/ddd-skills --skill ddd-architecture-selector

インストール後、Claude Code で/ddd-architecture-selectorを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

agents/
openai.yaml
examples/
01-ecommerce-platform.md
02-enterprise-logistics.md
03-fintech-billing.md
04-healthcare-payer-system.md
05-saas-startup-evolution.md
references/
06-clean-ddd-hexagonal-strategic.md
11-partme-08-microservice-models.md
12-partme-10-ddd-middle-platform.md
13-partme-19-principles.md
14-partme-20-distributed-qa.md
references/guides/
02-cheatsheet.md
07-comparison-matrix.md
09-faq.md
10-gotchas.md
references/patterns/
01-architecture-deep-comparison.md
03-clean-ddd-hexagonal-cqrs.md
04-clean-ddd-hexagonal-hexagonal.md
05-clean-ddd-hexagonal-layers.md
08-ddd4j-architecture-deep-dive.md
15-per-architecture-guide.md
16-reference-implementations.md

詳細

DDD アーキテクチャ選定ガイド

プロジェクトの状況(チーム規模、ビジネスの複雑さ、技術スタック、インフラの変更頻度、エコシステムの選好)に照らして、5 つの DDD アーキテクチャパターン(レイヤード、オニオン、ヘキサゴナル、クリーン、COLA)を評価するアーキテクチャ選定ガイドです。

ワークフロー

ステップ 1:プロジェクトの状況を収集する
  • チーム規模と DDD の経験レベル
  • ビジネスの複雑さ(シンプルな CRUD/中程度/高)
  • 技術スタック(Spring Boot/Go/Node.js/.NET/Python)
  • インフラの変更頻度(低/中/高)
  • 複数のエントリーポイントの必要性(REST + CLI + MQ + gRPC?)
  • テストカバレッジの要件(単体/結合/E2E)
  • エコシステムの選好(中国のコミュニティ/国際的なコミュニティ)
ステップ 2:判断マトリクスを実行する
  • 7 つ以上の観点から 5 つのアーキテクチャを比較する
ステップ 3:判断ツリーを適用する
  • 複雑さ → チーム規模 → 技術スタック → 推奨アーキテクチャ
ステップ 4:CQRS のレベルを推奨する
  • L0:なし、L1:モデル分離、L2:データベース分離、L3:イベントソーシング
ステップ 5:ドメインの種類を分類する
  • コア/汎用/支援 → ドメインごとに異なるアーキテクチャを適用する
ステップ 6:マイクロサービスへの分割を提案する
  • 1 つの BC → 1 つのサービス。統合・分割のルールも示します
ステップ 7:具体的なアーキテクチャスキルに案内する
  • 詳細な実装ガイドへのリンク

使用する場合(および使用しない場合)

✅ 使用する場合❌ 使用しない場合
新しいプロジェクトを開始し、アーキテクチャの決定が必要な場合アーキテクチャがすでに決まっている場合 → 該当するスキルに直接進む
複数の DDD アーキテクチャを比較する場合DDD の学習だけが必要な場合 → ddd-architecture-awesome を使用する
チームが最適なアプローチを判断できない場合既存プロジェクトのアーキテクチャ評価が必要な場合 → ddd-architecture-evaluator を使用する
マイクロサービスへの分割戦略を計画する場合選定後にドメインモデリングが必要な場合 → ddd-domain-designer を使用する
CQRS の必要性を評価する場合DDD ではないプロジェクトを評価する場合(標準的な MVC を検討してください)
中国のエンタープライズチームが技術選定を行う場合DDD が不要なシンプルな CRUD の場合 → 標準的な MVC を使用する
チーム規模や DDD の成熟度が不明な場合既存の DDD コードのコードレビューが必要な場合 → ddd-code-reviewer を使用する

境界

カテゴリ説明代替手段
✅ 対応範囲新規プロジェクトのアーキテクチャ選定(5種類のDDDアーキテクチャ)—
✅ 対応範囲移行判断のためのアーキテクチャ比較—
✅ 対応範囲CQRS/イベントソーシングの必要性評価—
✅ 対応範囲ドメインの分類(コア/汎用/支援)—
✅ 対応範囲境界づけられたコンテキストに基づくマイクロサービスの分割—
✅ 対応範囲チーム規模からアーキテクチャへの対応付け—
⚠️ 要件基本的なプロジェクトの状況:チーム規模、ビジネスの複雑さ、技術スタック—
⚠️ 要件分類にはドメインエキスパートまたはプロダクトオーナーの参加が必要です—
❌ 対象外アーキテクチャがすでに決定している場合は、このスキルを使用しないでくださいddd-architecture-layered / ddd-architecture-onion / ddd-architecture-hexagonal / ddd-architecture-clean / ddd-architecture-cola(それぞれ次のコマンドでインストールします:npx skills add full-stack-skills/ddd-skills --skill <name>)
❌ 対象外DDD の学習や概念の理解だけが目的の場合は、このスキルを使用しないでくださいddd-architecture-awesome(インストール:npx skills add full-stack-skills/ddd-skills --skill ddd-architecture-awesome)
❌ 対象外既存アーキテクチャの健全性と品質を評価する場合は、使用しないでくださいddd-architecture-evaluator(インストール:npx skills add full-stack-skills/ddd-skills --skill ddd-architecture-evaluator)
❌ 対象外アーキテクチャ選定後のドメインモデリング/集約設計には使用しないでくださいddd-domain-designer(インストール:npx skills add full-stack-skills/ddd-skills --skill ddd-domain-designer)
❌ 対象外DDD 準拠に関するコードレビューには、このスキルを使用しないでくださいddd-code-reviewer(インストール:npx skills add full-stack-skills/ddd-skills --skill ddd-code-reviewer)
❌ 対象外DDD を採用しない/標準的な MVC プロジェクトには、このスキルを使用しないでください標準的な MVC ガイドを使用してください(DDD スキルではありません)

対象ユーザー

このスキルは、バックエンド開発者(DDD アーキテクチャの実装担当)、ソフトウェアアーキテクト(パターンの評価と選定担当)、テックリード(チームの実装をレビューする担当)、および DDD 初学者(ドメイン駆動設計の基礎を学ぶ方)向けに設計されています。

ルール

  1. アーキテクチャの選定では、少なくとも5つの側面を評価する必要があります。
  2. イベントソーシングを既定で推奨しないでください。L2 CQRS が成功した後にのみ推奨します。
  3. 選定では、チーム規模とドメインの複雑さを最優先の要素にする必要があります。

5種類のアーキテクチャの判断マトリクス

評価項目LayeredOnionHexagonalCleanCOLA
学習コスト★☆☆★★★★★★★★★★★☆
ビジネスの複雑さへの適合性★☆☆★★★★★★★★★★★★
CRUD の効率性★★★★☆☆★☆☆★☆☆★★☆
インフラの置き換えやすさ★☆☆★★★★★★★★★★★☆
テストのしやすさ★☆☆★★★★★★★★★★★★
中国語コミュニティ★★★★☆☆★☆☆★☆☆★★★
コード生成のサポート良好不十分不十分不十分優秀
モジュールの物理的な分離低中中高高
進化の道筋の明確さ★☆☆★★★★★★★★★★★★
適合するチーム規模1-55-155-1515-505-50
起源Martin FowlerJeffrey Palermo(2008)Alistair Cockburn(2005)Robert C. Martin(2012)Alibaba(2018)
アーキテクチャ最適な用途避けるべき状況
Layeredシンプルな CRUD、小規模チーム、従来型 MVC からの移行複雑なビジネスルール、インフラの頻繁な変更
Onion高いテストカバレッジ、インフラの変更CRUD が中心のアプリ、抽象化の経験がないチーム
Hexagonal複数のエントリーポイントを持つシステム、マイクロサービスの標準化単一エントリーポイントのシンプルな CRUD、迅速なプロトタイプ
Clean大規模なエンタープライズシステム、厳格な物理的分離小規模チーム(<5)、迅速な MVP の反復
COLA中国の Spring Boot エコシステム、エンジニアリング標準Java 以外の技術スタック、国際的なチーム

3ステップの判断ツリー

ステップ 1:ビジネスの複雑さを評価する
Business Complexity?
│
├── Simple CRUD (80%+ CRUD operations)
│   └── Planning DDD adoption in future?
│       ├── No  → LAYERED ARCHITECTURE
│       └── Yes → COLA Simplified (single module)
│
├── Moderate (core business logic with rules)
│   ├── Chinese ecosystem / Spring Boot + MyBatis?   → COLA
│   ├── Value domain layer purity most?               → HEXAGONAL
│   ├── Multi-entry system (REST + CLI + MQ)?         → HEXAGONAL
│   ├── Infrastructure changes often?                 → HEXAGONAL / ONION
│   └── .NET / Python stack?                          → ONION
│
└── High (multiple BCs, microservices)
    ├── Enterprise / international team?              → CLEAN ARCHITECTURE
    ├── Chinese enterprise, per-service standards?     → COLA (multi-module)
    ├── Mixed tech stack per service?                 → HEXAGONAL per service
    └── Need microservice + standard per module?      → COLA + HEXAGONAL hybrid
ステップ 2:チームの規模に合わせる
チームの規模推奨アーキテクチャ理由
1-5Layered または COLA の簡易版手続きが最小限で、最も迅速に開発できます
5-15Hexagonal / Onion / COLA(単一モジュール)抽象化と生産性のバランスが取れています
15-50Clean / COLA(マルチモジュール)物理的に分離でき、チームで並行して作業できます
50+マイクロサービス + サービスごとの Hexagonalチームが自律的に動け、独立してデプロイできます

進化の道筋:チームの成長に合わせて、アーキテクチャを段階的にアップグレードします。1-5(Layered)→ 5-15(Hexagonal)→ 15-50(Clean/COLA)→ 50+(Microservices+Hex)。

ステップ 3:最終的な推奨
次の条件に当てはまる場合選択するもの理由
Spring Boot + MyBatis + 中国のチームCOLAエコシステムとの適合性、中国語のドキュメント、スキャフォールディング
複数のエントリーポイント(REST + CLI + MQ + gRPC)Hexagonalアダプターパターンで複数のエントリーポイントに対応できます
厳密なモジュールの物理的分離が必要な大規模企業CleanEntity → UseCase → Adapter の分離を徹底できます
インフラストラクチャ(DB、MQ など)の変更が頻繁Hexagonal または OnionPort/Adapter により簡単に切り替えられます
迅速なプロトタイプ作成から、後で DDD に移行Layered → アップグレード導入コストが最小限で、明確な進化の道筋があります
複雑なビジネスルール + TDDHexagonalドメインレイヤーを独立してテストできます
DDD に不慣れなチームで、段階的な導入を目指すLayered従来の 3 層アーキテクチャに最も近く、学習曲線が最も緩やかです
マイクロサービスの内部アーキテクチャ標準サービスごとに Hexagonal + COLAポートによる分離 + エンジニアリング標準
読み取りが多く、クエリが複雑CQRS L2読み取りと書き込みを分離し、個別に最適化できます
完全な監査証跡が必要Event Sourcing(L3)イベントストリームが監査を自然にサポートします

ドメインの分割とマイクロサービスへの分割

ドメインの分類(コア/汎用/支援)
ドメインの種類投資戦略推奨アーキテクチャ例
Core Domain(コアドメイン)最大限に投資し、内製するリッチドメインモデルを備えた Hexagonal / Clean / COLA注文管理、決済処理、価格設定エンジン
Generic Domain(汎用ドメイン)購入するか、オープンソースを再利用するLayered または既製の SaaS認証、認可、通知
Supporting Domain(支援ドメイン)外部委託するか、優先度を下げるLayered またはシンプルな CRUDレポート、管理ダッシュボード、データエクスポート

重要なルール:汎用ドメインや支援ドメインに Hexagonal や Clean を適用しないでください。労力が無駄になります。複雑なアーキテクチャはコアドメインだけに適用してください。

マイクロサービスの分割ルール
  1. デフォルト:境界づけられたコンテキスト 1 つにつき、マイクロサービス 1 つ
  2. 分割する条件:デプロイの頻度、スケーリングのニーズ、チームの所有権が異なる
  3. 統合する条件:強いトランザクション整合性が必要、コンテキストが小さい(開発期間が 2 週間未満)、同じチームが担当
  4. 保守的に始める:サービスの数を少なくし、必要に応じて分割する(先読みではなく、必要性が実証されてから)
  5. 通信:結果整合性にはイベント、強い整合性には RPC(まれ)

CQRS レベルの提案

レベル説明コストアーキテクチャのサポート使用するタイミング
L0 — なし単一モデル、単一 DBゼロすべてのアーキテクチャ(デフォルト)シンプルな CRUD、読み取りと書き込みの競合がない場合
L1 — モデル分離CommandService + QueryService、共有 DB低すべてのアーキテクチャ読み取りと書き込みの差が中程度の場合
L2 — DB 分離Command DB + Read DB(ES/スレーブ)、イベントで同期中ヘキサゴナル/クリーン/COLA読み取り量が多い場合、複雑なクエリがある場合
L3 — イベントソーシングイベントストア + プロジェクション、すべてのイベントを再生高ヘキサゴナル/クリーン監査証跡、時間軸クエリ、コンプライアンスが必要な場合

推奨:L0 から始め、より高いレベルが必要であることを実証してください。適切なポート分離のため、L2 以上はヘキサゴナルまたはクリーンアーキテクチャと併せてのみ採用してください。

アーキテクチャスキルの選択

選択したアーキテクチャ次のスキル
レイヤードddd-architecture-layered(インストール:npx skills add full-stack-skills/ddd-skills --skill ddd-architecture-layered)
オニオンddd-architecture-onion(インストール:npx skills add full-stack-skills/ddd-skills --skill ddd-architecture-onion)
ヘキサゴナルddd-architecture-hexagonal(インストール:npx skills add full-stack-skills/ddd-skills --skill ddd-architecture-hexagonal)
クリーンddd-architecture-clean(インストール:npx skills add full-stack-skills/ddd-skills --skill ddd-architecture-clean)
COLAddd-architecture-cola(インストール:npx skills add full-stack-skills/ddd-skills --skill ddd-architecture-cola)

関連:ddd-cqrs-architecture / ddd-domain-designer / ddd-architecture-evaluator(いずれも npx skills add full-stack-skills/ddd-skills --skill <name> でインストールできます)

注意点

15 個の落とし穴については、references/gotchas.md を参照してください。

よくある質問

15 件の Q&A については、references/faq.md を参照してください。

セキュリティと安全性

このスキルは純粋なドキュメントです。ユーザーデータを収集せず、外部サービスやネットワークにアクセスせず、実行可能なスクリプトも含みません。

参考資料

詳細な比較、マイクロサービス/ドメイン、クリーン+DDD+ヘキサゴナル、ddd4j の分析、注意点、よくある質問、外部リソース、5 件のケーススタディについては、references/ を参照してください。

コメント