Clean Architecture 読書メモ 〜用語のまとめ〜
クリーンアーキテクチャ本の理解を深めるために記事にまとめながら読もうと思います。
この記事ではクリーンアーキテクチャ本の中で出てくる重要な用語をまとめます。
クリーンアーキテクチャの目的
ヘキサゴナルアーキテクチャなどクリーンアーキテクチャとよく似た様々なアーキテクチャが提唱されています。これらのアーキテクチャの目的は主に以下のような点が挙げられます。
- ビジネスロジックのロジックの実装に集中しやすくする。
- コードの変更を容易にする。変更の影響範囲を小さくする。
- テストを容易にする
これらの目的を達成するためにビジネスロジックを実装するレイヤとUI、ネットワーク通信、DBアクセスなどのビジネスロジック以外のレイヤに分離し、各レイヤ間の依存関係を制限します。
クリーンアーキテクチャを構成するレイヤ
よくクリーンアーキテクチャの説明としてこの図があげられますが、このレイヤ構造のみがクリーンアーキテクチャというわけではありません。書籍内でもこの図は概要図であると述べられています。
書籍内では以下の4つのレイアが紹介されていますが、レイヤ数は必ず4つである必要はありません。しかし、外側のレイアから内側のレイヤのみに依存性を持つというルールは必ず守らなくてはいけません。この依存関係のルールによりビジネスのロジックがフレームワークやDB、UIへ依存することを防ぐことができます。
Frameworks & Drivers
UI, Devices DBと等のシステム固有の要素から構成されます。フレームワークやDB固有のオブジェクトはこのレイヤに含めます。
Interface Adapters
外部からの入力データをUse CaseやEntityで使用する形式へ変換します。Presenter, View, Controllerはこのレイヤに含めます。コントローラやフォームからの入力データは変換された後にUse Caseへ渡され、Use Case からの返り値はPrenterに渡されます。
Application Business Rules
Use Caseから構成されます。Application-specific Business Rulesを表現するレイヤです。
Enterprise Business Rules
Entityから構成されます。対象ビジネスのコアとなるCritical Business Rulesを表現するレイヤです。
クリーンアーキテクチャにおけるビジネスルールの種類
クリーンアーキテクチャ本では業務を以下の2種類に分けて考えます。
- Critical Business Rules
システムが対象とするビジネスにおいてコアとなるビジネスルールです。このルールは業務がシステム化されている、されていないに関わらず必ず必要となるものです。
- Application-specific Business Rules
対象業務をシステム化した際に必要となるビジネスルールです。
レイヤの構成要素の詳細
- Entity
対象業務をシステム化した際にCritical Business Ruleを表現したオブジェクトです。Critical Business Rulesを表現したオブジェクトであり、システム的なフレームワークやDB等と独立していなければいけません。
- Use Case
Application-specific Business Rulesを表すオブジェクトであり、1つ以上の関数を持ちます。入力値から業務ルールに従い値を返します。Entitiy間のデータフローを制御します。Use Case内では複数のEntityを使用する可能性があります。