
125
3
アーキテクチャなどです。これらのアーキテクチャは厳密には細かな差
異はあるものの、主目的とコンセプトは同一で、アプリケーションにお
いて最重要であるドメイン層を中心に据えることです。ですので、ここ
ではクリーンアーキテクチャを例にとって説明します。
クリーンアーキテクチャ
クリーンアーキテクチャは、依存関係逆転の原則を編み出し、また
SOLID原則として設計原則をまとめたロバート・C・マーチン氏が提
唱するアーキテクチャで、氏の著書『Clean Architecture 達人に学ぶ
ソフトウェアの構造と設計』にある図3.4.3
※6
に示す図で表現されます。
四つの同心円状の層で構成されていることがわかると思います。
最も外側の層は、データベースやUIなどソフトウェアがやりとりす
る外界のミドルウェアやフレームワークなどなので、アプリケーション
としては実質三層であると考えられます。
最も内側のエンティティ層とユースケース層が、三層レイヤードアー
キテクチャにおけるドメイン層にあたります。エンティティ層とユース
ケース層の違いについて、マーチン氏は以下のように述べています
※6
。
エンティティに含まれる最重要ビジネスルールとは違い、ユース
ケースはアプリケーション固有のビジネスルールを記述している。
これは第2章で述べたドメインロジックとアプリケーションロジック
にあたります。つまり、エンティティ層のコンポーネントには中核ロ
ジックを実装し、ユースケース層のコンポーネントには処理フローロ
ジックを実装します。
その外側にはインターフェースアダプター層があり、三層レイヤード ...