Open1

clean architectureに関するあれこれ

Shohei KakimotoShohei Kakimoto

各レイヤーについて

Entities

アプリケーションに依存しないビジネスルールをカプセル化した層です。
ECサイトを例にすると、商品、ユーザー、お店などがこのレイヤーに属することになります。

また、このレイヤーは外部のアプリケーションのロジックに影響を受けることがありません。
例えばToDoアプリを作成してるとして、叩かれているAPIがcreateでもupdateでもdeleteでもこのレイヤーには影響がありません。
一言で言えば、業務知識をオブジェクトとして表現したレイヤーになります。

Use Cases

アプリケーション固有のビジネスルールが含まれる層です。
Entitiesが実行されるAPIに依存しないビジネスロジックを含んでいるのに対し、Use CasesではAPIに依存したロジックを含んでいることになります。

しかし、このレイヤーの変更がEntitiesに影響を及ぼすことはありません。アプリケーションの仕様自体が変更されることによってこのレイヤーが影響を受けることは考えられます。

Interface Adapters

この層はブラウザやDBなどのアプリケーション外部世界とやり取りをするためのレイヤーです。例えばControllerなどが含まれます。
Use CasesEntitiesがデータを使いやすくなるように変換する役割も担っています。

Frameworks and Drivers

DBやブラウザ、外部のAPIどの外部世界を示すレイヤーです