はじめに ある程度の規模のアプリケーションのアーキテクチャを考えるときに開発時の影響範囲を限定的にしたりテスタビリティ向上のためにレイヤードアーキテクチャを適用することが多い。一方でどのレイヤーにどういう処理を置くのかや具体的なディレクトリ構成に悩むことがあるので整理してみる。 あくまで個人的な整理であり、これがベストプラクティスであるというものではない。 レイヤードアーキテクチャ レイヤードアーキテクチャとは まずはレイヤードアーキテクチャについてまとめる。 例えば PoEAA では 3 つのレイヤーが示されている。プレゼンテーション / ドメイン / データソースである。エヴァンスの DDD 本ではプレゼンテーション / アプリケーション / ドメイン / インフラストラクチャ の 4 層に分けられている。 レイヤーの数に違いはあるが、どちらも共通してプレゼンテーションとドメインは区別