Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

アプリケーションアーキテクチャ

系譜:「依存を内側に向ける」という同じ思想の変奏

レイヤードアーキテクチャヘキサゴナルアーキテクチャオニオンアーキテクチャクリーンアーキテクチャ は、 提唱者も呼び名も異なるが、根底にある考え方はすべて同じ:ビジネスロジックを中心に置き、インフラ(DB・フレームワーク・UI) への依存を外側に追い出すSOLIDのDIP の応用)。

提唱特徴
レイヤードアーキテクチャ伝統的な構成上位層が下位層に依存する片方向の層。最もシンプルだが、素朴な実装だとドメイン層がインフラを意識してしまいがち
ヘキサゴナルアーキテクチャAlistair Cockburn, 2005ポート&アダプターとも呼ばれる。アプリケーションコアの「内」と「外」を明確に分離
オニオンアーキテクチャJeffrey Palermo, 2008ドメインモデルを中心の同心円に据え、インフラを最外層に配置
クリーンアーキテクチャRobert C. Martin, 2012ユースケース層を明示し、境界(Boundary)の設計を強調

どれを選ぶかより、「依存が内側に向いているか」という原則を守れているかの方が重要になることが多い。命名や層の切り方は プロジェクトの慣習に合わせてよい。

一方で、あらゆるアプリケーションにこの思想が必要とは限らない。ロジックが単純なCRUDが中心なら トランザクションスクリプト の方が身軽な場合もある。 UIを持つアプリケーションの表示ロジックの整理には MVC/MVVM が別の軸として関わる。 規模が大きくなった単一アプリケーションの内部分割には モジュラモノリス も参照。