LoginSignup
3
0

More than 3 years have passed since last update.

自分なりにClean Architectureを理解する

Posted at

概要

Clean Architectureに関して自分なりに可能な限り簡潔にまとめてみました。

Clean Architectureで達成する事

関心の分離

関心の分離により達成できる事

関心の分離によって、下記のことを達成できる。

(1) フレームワーク非依存

アーキテクチャは、機能満載のソフトウェアのライブラリに依存していない。これにより、システムをフレームワークの制約で縛るのではなく、フレームワークをツールとして使用できる。

(2) テスト可能

ビジネスルール(ソフトウェアの核心)は、UI、データベース、ウェブサーバー、その他の外部要素がなくてもテストできる。

(3) UI非依存

UIは、システムのほかの部分を変更することなく、簡単に変更できる。たとえば、ビジネ

スルールを変更することなく、ウェブUIをコンソールUIに置き換えることができる。

(4) データベース非依存

OracleやSQL ServerをMongo、BigTable、CouchDBなどに置き換えることができる。ビジネスルールはデータベースに束縛されていない。

(5) 外部エージェント非依存

ビジネスルールは、外界のインターフェイスについて何も知らない。

Clean Architecture概要

依存関係は内側一方向のみで、外側のルールを、内側に持ち込んではいけない。

つまり、内側の層では外側の層の実装を知ってはならず、また一切影響を受けてはならない。

https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/28464/11d18689-9a99-5bc0-39dc-e48623f1d11c.jpeg

図を各レイヤーごとに理解する

エンタープライズビジネスルール(Entities)

  • システムが自動化されていなくても存在する最重要ビジネスルール・最重要ビジネスデータをカプセル化したもの
  • システムの中で最も独立していて、最も再利用可能であるべき

アプリケーションビジネスルール(Use Cases)

  • アプリケーション固有のビジネスルールを記述する
  • エンタープライズビジネスルールをいつ・どのように呼び出すかを規定したルール が含まれている

インターフェースアダプター(Controllers/Presenters/Gateways)

  • 内側(Entities/Usecases)と外部(DB・Webフレームワーク)でデータフォーマットをそれぞれ便利な形式に変換するアダプター

フレームワークとドライバー(UI/Web/Devices/DB/External Interfaces)

  • フレームワークやツールで構成されている(DB, Webフレームワーク等)

参考

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0