ざっくりと、クリーンアーキテクチャの図について
みなさん、クリーンアーキテクチャはご存じでしょうか?
クリーンアーキテクチャとは、DBやフレークワークからの独立性を確保するためのアーキテクチャであり、
以下の図が有名です。今回はこの図を見ていきます。
引用:https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html
Enterprise Business Rules(黄色い円):
Enterprise Business Rulesは、ビジネスルールをカプセル化したオブジェクトのレイヤーです。トランザクションスクリプトやドメイン駆動設計でいうところのエンティティなどにあたります。
Application Business Rules(赤い円):
ビジネスロジックを組み合わせ、ソフトウェアは何ができるのか(UseCase)を表現するレイヤーです。Enterprise Business Rules に所属するオブジェクトを協調させ、ユースケースを達成します。
Interface Adapters(緑の円):
入力(Application Business Rules に伝えるためのデータ加工)、永続化(データの保存・再構築)、表示(結果の表示)を担うオブジェクトが所属するレイヤーです。一般的な MVC フレームワークや単体テストクラスなどはこのレイヤーに所属されます。
Frameworks & Drivers(青い円):
Web フレームワークやデータベース操作オブジェクトなどの詳細なコードを置くためのレイヤーです。このレイヤーでは、Interface Adapterが理解できる形へ変換される必要があり、フロントエンドの UI などもここに所属しています。
引用:https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html
この矢印は依存方向を表しており、内側の層のオブジェクトは外側の層のオブジェクトに依存しないようにするということを表しています。つまり、外側から内側に向かって依存していきます。
クリーンアーキテクチャは、ソフトウェアのライブラリに依存しない、ビジネスルールの変更なしにUIを置き換えられる、ビジネスルールはDBに拘束されない、といったメリットがあります。また、どんなソフトウェアにも適用可能な普遍的なアーキテクチャです。本記事では抽象的な概念しか記載していないので、実装まで解説しているものを見るとより理解しやすいかと思います。
参照サイト:
「実装クリーンアーキテクチャ」(https://qiita.com/nrslib/items/a5f902c4defc83bd46b8)
本ブログの感想や疑問、案件にまつわるお問い合わせは以下のフォームより募集しております。