Open2
クリーンアーキテクチャーについて
クリーンアーキテクチャーとは?
- クリーンアーキテクチャとは、アプリケーションの設計方法を説く設計思想です。
- Robert C. Martin(Uncle Bob)氏が2012年に提唱しました。
- 通称、ボブおじさん🌟
- クリーンアーキテクチャの目的は、主に「テスト容易性」や「変更容易性」です。
- そのため、ビジネスロジック(ドメイン)を中心に置き、インターフェースの層や技術を外側に配置する設計アプローチです。
- クリーンアーキテクチャは、依存の方向性、責務の分離(関心の分離)、依存性逆転の法則を重視します。
- この基準に沿った構成にすることで、責務が分離され変更に強くなりテスタブルになります。
クリーンアーキテクチャーのルール
- クリーンアーキテクチャのルールは次のとおりです。
- ソフトウェアをレイヤーに分割して関心事を分離する
- ソースコードは円の内側(抽象)の方向に依存する
- 制御の流れと依存関係を逆転させて依存の方向を制御する
クリーンアーキテクチャが重要視していること
- クリーンアーキテクチャは、特段新しい考えやアプローチではありません。
- 関係性の分離やSOLID原則を特に尊重した設計方針なのです。
- 個人的にはSOLID原則のうち以下の二つが特に強く現れていると思います。
- 依存性逆転(DIP)の原則
- ドメイン層(ビジネスルールなどが配置される)が技術的な詳細に依存しないようにする上でこの原則を使う
- 単一責任の原則
- 各層が一つだけの責任を持つためにこの原則を使う。
- Enterprise Business Rules層(ドメイン層)はビジネスルールを担当し、Frameworks & Drivers層(インフラ層)は技術の詳細を担当するなど
特に、依存性逆転の原則はクリーンアーキテクチャの本質でもあるので、あらかじめ理解しておいてください。
- クリーンアーキテクチャはビジネスルールを中心に置き、技術的な詳細は外側に追いやる設計
- ビジネスルールが技術的詳細に依存してはならない。技術的詳細がビジネスルールに依存しなければならない
- それを実現するために依存性逆転の原則(DIP)が関わってくる
- 同心円の図の通り層を再現する必要はない。依存関係を適切にコントロールすることが重要
参考・引用
サーバーサイドのクリーンアーキテクチャを考える🌟