About_Clean_Architecture ja - umm/cafu_core GitHub Wiki
Clean Architecture とは?
Clean Architecture は 2012年8月に 8th Light のブログ で Uncle Bob 氏が提案したソフトウェアアーキテクチャです。
Hexagonal Architecture や Onion Architecture に代表される Layered Architecture の一種で、レイヤーによるソフトウェアの分離を強く意識したアーキテクチャです。
ルール
Clean Architecture は以下のようなルールを定義しています。
- ソフトウェア・プログラムの役割に応じたレイヤーを定義する
- レイヤーの依存は単一方向である
- レイヤー間の依存解決には 依存性逆転の原則 に基づいた手法を用いる
- レイヤーの数は不定である
レイヤーの分離
Domain
Clean Architecture ではビジネスロジックの分離を適切に行うことが求められます。
UseCase として役割に応じたクラスを記述し互いに疎な関係を保つことで、他のレイヤーへの影響をおさえることが期待出来ます。
Data
UI の描画にまつわるデータや、外部 DB からもたらされるデータなど、多用なデータ構造をクラスや構造体として定義します。
これらは、レイヤー間の関心の分離を実現するためにも、別のデータ構造として定義すべきです。
これらのデータを変換するためのインタフェースアダプタのようなレイヤーを定義するのも良いでしょう。