DDDアーキテクチャ・設計設計原則 2026年4月4日

ヘキサゴナルアーキテクチャ(ポート&アダプター)

📁 パターン 👁 -- 閲覧

ヘキサゴナルアーキテクチャ(ポート&アダプター)

定義

ヘキサゴナルアーキテクチャ(Hexagonal Architecture)は Alistair Cockburn が提唱したアーキテクチャパターン。別名「ポート&アダプター(Ports and Adapters)」。

アプリケーション(ドメイン)を中心に置き、外部との接点を「ポート(インターフェース)」と「アダプター(実装)」で抽象化する。

                 ┌─────────────────────────────┐
HTTP API ───────→│  ← Adapter   Port →         │
DB ─────────────→│                             │
Message Queue ──→│    Application (Domain)     │
External API ───→│                             │
Test ───────────→│  ← Adapter   Port →         │
                 └─────────────────────────────┘
  • ポート:アプリケーションが外部に期待するインターフェース(OrderRepository, EmailSender
  • アダプター:ポートの具体的な実装(PostgresOrderRepository, SendGridEmailSender

なぜ重要か

従来のレイヤードアーキテクチャでは「ドメイン → インフラ」の依存関係が発生しやすい。ヘキサゴナルアーキテクチャではすべての依存がドメインへ向かう(依存関係逆転)。

結果として:

  • ドメインロジックをフレームワーク・DBなしでユニットテストできる
  • データベースの種類やHTTPフレームワークを差し替えてもドメインへの影響がない
  • インメモリアダプターで開発初期から動作確認できる

適用場面

  • DDDを採用するプロジェクトの基本アーキテクチャとして
  • テスタビリティを最優先する設計
  • 将来的なインフラ変更(クラウド移行・DBスイッチ)を見越した設計

Functional Core, Imperative Shellとの関係

Functional Core, Imperative Shellは同じ思想の関数型アプローチ。副作用をShell(アダプター)に閉じ込め、Core(ドメイン)を純粋に保つ点が共通する。

関連概念

出典

実践ドメイン駆動設計(Vaughn Vernon)第4章 / Alistair Cockburn “Hexagonal Architecture”