DDDのディレクトリ構成に関して最近考えていること
この記事は最終更新日から2年以上が経過しています。
概要
ある程度大きなロジックを作る時、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だけそこに定義するなどもできるので、依存関係の整理としても良い気がする
DDDのディレクトリ構成に関して最近考えていること