さて、ここでクイズです。「Clean architecture とは、 controllers や use cases、entities というクラスを作って繋げるアーキテクチャのことだ、○か×か」。どっちでしょうか?
→ → → 正解は×です。 あの同心円は、あくまで clean architecture の一例として『Clean Acrhitecture』で紹介されたものです。
ストア層とコンポーネント層をわけるアーキテクチャには以下のメリットがあります。
- ストア層の改修がコンポーネント層に影響しなくなる
- コンポーネント側の変更もストア層に影響しない
あくまでレイヤー毎に独立していること、レイヤー間はインターフェイスやポート&アダプタで接続されること、フレームワークやミドルウェアに依存しない、みたいな観点もあってもよさそうだが。
最近はClean Architectureを採用することはデメリットの方が多い気がしていて、これあかん奴なのでは感が強い。
Clean Architecture本の説明は「私(著者)が本気を出せばここまでやるぞ」という話であって、あれがスタンダードな実装モデルというわけでは無いのだが、どうしても参考書通りにやりたがる人が多いせいで不要な複雑さを抱え込む事例が多い。