クリーンアーキテクチャってよく聞くけど、実際には何をやってんのや?
どんなことをしているのか知りたいので詳しく調べていこう。できたら個人開発で実装してみたい。
<aside> 💡
関心ごとの分離がクリーンアーキテクチャの醍醐味。
機能を実現しているコアな部分(ビジネスロジックなど)をDBやフレームワークに依存しない形にすることで、他が変わったとしてもコア部分への影響を無くし、変更に強い設計にするというのがクリーンアーキテクチャの醍醐味になる。
外部フレームワークやDBの操作といった技術的な詳細を外側へ追いやることで、最も大切なビジネスロジックを中心に置くことができる。
クリーンアーキテクチャを実装する上で、ビジネスロジックは技術的な詳細に依存をしてはいけません。逆に技術の詳細がビジネスロジックに依存するような形にしなければならない。
変更前クラス | 変更後クラス | 説明 |
---|---|---|
ControllerPresenter | Controller | APIのコントローラー |
View Model | Response | APIのレスポンス |
Input BoundaryOutput Boundary | Application Service | ユースケースのインタフェース |
Use Case Interactor | Application Service Impl | ユースケースの実装クラス |
Input Data | Function Parameters | ユースケースの関数の引数 |
Output Data | Return Values | ユースケースの関数の戻り値 |
Entities | Domain Service | ビジネスロジックの実装クラス |
Data Access Interface | Repository | リポジトリのインタフェース |
Data Access | Repository Impl | リポジトリの実装クラス |
この図が結構わかりやすい。
Clean Architectureでは外側から内側への依存になる。そのため、Application ServiceとRepositoryのインターフェースはUse Caseの内側に存在することになる。