Cover Image for DDDのディレクトリ構成に関して最近考えていること

DDDのディレクトリ構成に関して最近考えていること

概要

ある程度大きなロジックを作る時、DDD(っぽい)ディレクトリ構成にすることが多いのだが、これまでよくやっていたパターンは DDD観点からみるとよくない気がしてきたので見直す。 試しているだけの雑多なメモかつポエム的なものなので、結論はない。

これまでよくやっていたパターン

domain
|---- models
|      |---- hoge
|      `---- fuga
|
|---- services
|      |---- hoge
|      `---- fuga
|
`---- repositories
       |---- hoge
       `---- fuga

このように model / services / repositories というプログラム的な役割で一階層切って、その下にドメインに該当するファイルを作っていた。ただこれだと、同一ドメインに関連するロジックが散逸してしまい見通しが悪くなっている気がする

こうすればよかったのでは?

domain
|---- hoge
|      |---- model
|      |---- service
|      `---- repository
`---- fuga
       |---- model
       |---- service
       `---- repository

プログラム的な役割で最初に階層を切るのをやめて、プログラム的な役割は末節の方に置いた方が収まりが良い気がしてきた。 Rust の mod.rs や TypeScript の index.ts 的なものをディレクトリごとに作れば、外部公開用のI/Fだけそこに定義するなどもできるので、依存関係の整理としても良い気がする