About_Clean_Architecture ja - umm/cafu_core GitHub Wiki

Clean Architecture とは?

image

Clean Architecture は 2012年8月に 8th Light のブログUncle Bob 氏が提案したソフトウェアアーキテクチャです。

Hexagonal ArchitectureOnion Architecture に代表される Layered Architecture の一種で、レイヤーによるソフトウェアの分離を強く意識したアーキテクチャです。

ルール

Clean Architecture は以下のようなルールを定義しています。

  • ソフトウェア・プログラムの役割に応じたレイヤーを定義する
  • レイヤーの依存は単一方向である
  • レイヤー間の依存解決には 依存性逆転の原則 に基づいた手法を用いる
  • レイヤーの数は不定である

レイヤーの分離

Domain

Clean Architecture ではビジネスロジックの分離を適切に行うことが求められます。

UseCase として役割に応じたクラスを記述し互いに疎な関係を保つことで、他のレイヤーへの影響をおさえることが期待出来ます。

Data

UI の描画にまつわるデータや、外部 DB からもたらされるデータなど、多用なデータ構造をクラスや構造体として定義します。

これらは、レイヤー間の関心の分離を実現するためにも、別のデータ構造として定義すべきです。

これらのデータを変換するためのインタフェースアダプタのようなレイヤーを定義するのも良いでしょう。