目次


クリーンアーキテクチャーってつまりこういうこと?

よくある間違いに手段目的の混同ってのがある。

ソフトウェアの世界で言うと、どこかの会社のフレームワークを使うことが目的のシステムを作ってしまったケース。 これをやってしまうとフレームワーク提供会社に自社のビジネスを支配されてしまう。

正しくは自社内にインターフェースを設けて、そのインターフェース経由でフレームワークを使う。 こうしておけば、フレームワークが気に入らなくなったら他のに乗り換えれば良い。

この自分でインターフェースを定義することで依存関係を逆転する技が

ってやつ。

Clean Architecture(CA) とは DIP を使って、些末な手段の変化から本来の目的を守り、目的に合った手段を選べるアーキテクチャーのこと。

ボブおじさん先生は

の4階層で説明されてるけど、つまるところ

ってことかな。

クラス図で書くと次の通り。

Class Diagram of Dirty Architecture (before CA)

依存の向きが内→外ではなく、外→内になっている状態が汚い

Dirty Architecture

Class Diagram of Clean Architecture (after CA)

内側の Use Case や Interface Adapter は 自分たちの都合で定義した interface を経由して外側の道具を使うのがポイント

Clean Architecture

ただの感想

DIP (Dependency Inversion Principle)ってずるいよね? Interface ってのは契約書みたいなもんだけど、中世の世界観で言うと…

ってことだよね? 考えた人は天才だわ。

参考資料: