メインコンテンツまでスキップ

✨️ アーキテクチャを支えるデザインパターンの体系

本ページでは、各 Structural Style が どのデザインパターンの組み合わせによって支えられているか を一覧化する。

Clean / Hexagonal / Onion(Dependency Rule 系)

これらのスタイルは「依存方向の制御」「ポート・アダプタ構造」が中核であり、
次のデザインパターンが強く関与する。

  • Adapter:Port/Adapter の “Adapter” 部分
  • Strategy:UseCase 抽象化の中心
  • Command:ユースケースを操作オブジェクトとして扱う
  • Facade:アプリケーションサービスの外観
  • Proxy:外部 API/インフラアクセスの抽象
  • Abstract Factory:依存切り替え(テストダブル含む)
  • Builder:集約構築など複雑生成の補助

主役パターン:Adapter / Strategy / Command

Layered / Domain Model Layered

レイヤー境界の明確化と責務分離を支えるパターン。

  • Facade:上位レイヤから下位を隠す外観
  • Template Method:Service / Repository の処理骨格共有
  • Strategy:ドメインロジック切り替え
  • Composite:集約内部の階層構造表現
  • Proxy:外部システム or 遅延アクセスの抽象化

UI 系(MVC / MVP / MVVM / MVU)

UI Interaction スタイルを支える主要パターン。

  • Observer:状態 → UI の反映
  • State:UI 状態の保持
  • Command:UI イベントを操作オブジェクト化
  • Mediator:View と ViewModel / Presenter の仲介
  • Memento:Undo/Redo などの状態復元
  • Strategy:描画戦略・入力制御の差し替え

MVU(React / SwiftUI / Jetpack Compose)では特に
State + Command + Observer が強く現れる。

Microkernel / Plugin Architecture

プラグインの拡張性・ホットスワップ性を支えるパターン群。

  • Strategy:プラグインの切り替え
  • Abstract Factory:プラグイン生成の統一化
  • Proxy:拡張ポイントのラップ
  • Mediator:プラグイン間調整
  • Facade:コアシステムの外観 API

Reactive / Actor / Event Loop / Streams

イベント駆動・非同期処理・アクターモデルを支えるパターン。

  • Observer:イベント購読
  • Mediator:イベント分配
  • Command:メッセージを操作オブジェクトとして扱う
  • State:Actor の内部状態
  • Iterator:ストリーム処理の順次化
  • Chain of Responsibility:イベント処理の段階的伝搬

Flow / Pipeline(Pipe & Filter / Streaming / Batch)

段階的な処理フローを実現する構造。

  • Chain of Responsibility:フィルタの連鎖
  • Iterator:ストリームの逐次処理
  • Mediator:ステップ間の調整
  • Strategy:各処理ステップの差し替え

Data-centric(Active Record / Table Module / Transaction Script)

データ中心の構造は次のパターンの影響が大きい。

  • Template Method:永続化処理の統一
  • Proxy:遅延ロード
  • Observer:変更通知
  • Strategy:バリデーション戦略
  • Command:トランザクションスクリプトとしての操作

✅ この一覧の活用方法

  • Structural Style を選ぶ際に、実装で必要になるパターンが自然に分かる
  • 現在のコードベースがどのパターンを多用しているかから、採用すべき構造スタイルを逆算できる

アーキテクチャ(構造) ⇄ デザインパターン(実装)
の橋渡しとなるガイドページである。