かとじゅんの技術日誌

技術の話をするところ

ドメイン駆動設計を始めるときにおすすめなコード例

ドメイン駆動設計で開発する時に、まずお手本となるコード例をみたいですよね。

まず、これ見ましょう。
DDDSampleは、Javaで実装されたものです。*1
原書の内容と連動しているので、原書を読んでいる人にとっては分かりやすいと思います。読んでいなくても、概念を抑える前に具体的なコードで実態を把握しておいて、本を読んでもいいと思います。

ちなみに、このあたりを見ていただくと、ドメインオブジェクトを規定するためのインターフェイスが定義されています。
http://dddsample.svn.sourceforge.net/viewvc/dddsample/trunk/dddsample/tracking/core/src/main/java/se/citerus/dddsample/tracking/core/domain/patterns/

このインターフェイスを参考に別のライブラリに切り出したのがこちら。獅子王プロジェクトのdomain-driven-design.jarです。実装クラスはほとんどありません。仕様用のjarとして使います。*2
http://sourceforge.jp/projects/sisioh/svn/view/altair/non-bundle/domain-driven-design-spec/?root=sisioh

Maven2から使いたい人は、以下をpom.xmlに追加してください。

<repositories>
	<repository>
		<id>sisioh.sourceforge.jp</id>
		<name>Sisioh Maven Repository</name>
		<url>http://sisioh.sourceforge.jp/maven2</url>
	</repository>
	<repository>
		<id>sisioh.sourceforge.jp-snapshot</id>
		<name>Sisioh Maven Snapshot Repository</name>
		<url>http://sisioh.sourceforge.jp/maven2-snapshot</url>
	</repository>
</repositories>
<dependencies>
	<dependency>
		<groupId>org.sisioh</groupId>
		<artifactId>domain-driven-design-spec</artifactId>
		<version>1.0.0</version>
	</dependency>
</dependencies>

Time and Money Code Library
あと、こちら。SpecificationやValueObjectが中心だと思いますが、参考になると思います。この開発には、Evansも設計に絡んでいるようです。業務アプリになると時間やお金の話がでてくるので、参考に見ておくとよいかも。弊社ではid:daisuke-mがコードを読み込んでいたような気がします。

他にもサンプルがあるよって情報あれば、コメントかトラックバックいただけば幸いです。

*1:[http://dddsamplenet.codeplex.com/:title=DDDSample.Net]もあるようですが、中身はよく知りません

*2:弊社のid:daisuke-mと一緒に実験的にやっているプロジェクトなんでJavadocの訳は宛にしないでくださいw