/note/tech

クリーンアーキテクチャ(The Clean Architecture翻訳)

これらのアーキテクチャは、いずれも、次のようなシステムを生み出す:

  1. フレームワーク独立。アーキテクチャは、機能満載のソフトウェアのライブラリが手に入ることには依存しない。これは、そういったフレームワークを道具として使うことを可能にし、システムをフレームワークの限定された制約に押し込めなければならないようなことにはさせない。
  2. テスト可能。ビジネスルールは、UI、データベース、ウェブサーバー、その他外部の要素なしにテストできる。
  3. UI独立。UIは、容易に変更できる。システムの残りの部分を変更する必要はない。たとえば、ウェブUIは、ビジネスルールの変更なしに、コンソールUIと置き換えられる。
  4. データベース独立。OracleあるいはSQL Serverを、Mongo, BigTable, CoucheDBあるいは他のものと交換することができる。ビジネスルールは、データベースに拘束されない。
  5. 外部機能独立。実際のところ、ビジネスルールは、単に外側についてなにも知らない。

これが全てな感がある。

ディレクトリ構造やモジュール分割はあまり本質的ではないように思えるのだ(結果敵に似たような構造に収斂するとしても)。