目的


クリーンアーキテクチャってよく聞くけど、実際には何をやってんのや?

どんなことをしているのか知りたいので詳しく調べていこう。できたら個人開発で実装してみたい。

わいのメモ


クリーンアーキテクチャとは

image.png

<aside> 💡

関心ごとの分離がクリーンアーキテクチャの醍醐味。

機能を実現しているコアな部分(ビジネスロジックなど)をDBやフレームワークに依存しない形にすることで、他が変わったとしてもコア部分への影響を無くし、変更に強い設計にするというのがクリーンアーキテクチャの醍醐味になる。

外部フレームワークやDBの操作といった技術的な詳細を外側へ追いやることで、最も大切なビジネスロジックを中心に置くことができる。

クリーンアーキテクチャを実装する上で、ビジネスロジックは技術的な詳細に依存をしてはいけません。逆に技術の詳細がビジネスロジックに依存するような形にしなければならない。

image.png

変更前クラス 変更後クラス 説明
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の内側に存在することになる。