【くりーんあーきてくちゃ】

クリーンアーキテクチャ とは?

最終更新:
💡 ビジネスロジックの「独立宣言」

ビジネスロジックを外部の詳細(DB、フレームワーク、UI)から独立させる設計手法。Robert C. Martinが提唱。

📌 このページのポイント
外側の詳細から、内側のルールを守る 外部ツール 変換・仲介 ユースケース Entities 業務ルール 依存は内へ DB 矢印はソースコードの依存 実行時の呼び出し方向とは別
四つの同心円は代表的な模式図で、外部ツールにはDBの円筒を添えた。矢印はコードの依存が内側へ向くことを示し、層の数は固定ではなく、処理が外側へ渡る実行順序も禁止しない。
ひよこ ひよこ
なぜビジネスロジックを独立させるの?
ペンギン先生 ペンギン先生
DBやUI、フレームワークの詳細が変わったとき、ビジネスルールへの影響を抑えるためだよ。内側を独立させれば、外部ツールなしでルールをテストしやすくなる。ただし移行が差し替えだけで必ず済むわけではなく、境界の実装や互換性の確認は必要なんだ。
ひよこ ひよこ
4つの層の役割は?
ペンギン先生 ペンギン先生
代表的な図では、内側からEntitiesが一般的なビジネスルール、Use Casesがアプリ固有のルール、Interface Adaptersがデータや呼び出しの変換、Frameworks & DriversがDBやWebなどの詳細を担うよ。4という数は模式的で、必ず四つの層やフォルダーに分ける規則ではないんだ。
ひよこ ひよこ
実務で完全に適用すべき?
ペンギン先生 ペンギン先生
目的と負担を見て境界を設計しよう。層の数や名前をそろえるより、内側のコードが外側の具体的な型や名前を参照しないことが中心のルール。HTTPやDB固有のデータをそのまま内側へ持ち込まず、内側に合う形へ変換するんだ。
ひよこ ひよこ
内側の処理からDBを呼びたいときはどうするの?
ペンギン先生 ペンギン先生
内側で定めたインターフェースを外側の実装が満たすようにすれば、実行時には外へ処理を渡しても、コードの依存は内向きにできるよ。「外から内へ」は実行順の制限ではないんだ。ヘキサゴナルなどにも関心を分ける共通の目的があるけど、細部まで同じ設計という意味ではないよ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「クリーンアーキテクチャ」って出てきたら「ビジネスロジックを外部の詳細から独立させる設計」と思えればだいたいOK!
📖 おまけ:英語の意味
「Clean Architecture」 = きれいなアーキテクチャ
💬 Clean(きれいな)Architecture(建築様式)。Robert C. Martin(Uncle Bob)が2012年に発表したよ

参考資料

← 用語集にもどる