僕と地豆とDDD

Domain-Driven Design: Tackling Complexity in the Heart of Software

Domain-Driven Design: Tackling Complexity in the Heart of Software

Domain-Driven Design: Tackling Complexity in the Heart of Software というソフトウェア設計に関する本がある。

この設計の考え方は、略してDDDと呼ばれたが、同時に「DDD難民」という言葉さえも生み出したらしい。ハードカバーによる560ページ、6000円を超える、洋書である。今思えば怖い物知らずだった。知らなかったとは言え、よくもまぁこの本を手にとったものだ…。

この本との出会いは、2009年9月に遡る*1。当時も相変わらず、Jiemamyの設計に頭を悩ませていた。この頃、自分は既にオブジェクト指向という考え方に傾倒していたのだが、正直なところ、現実に直面する "ソフトウェアの複雑さ" に対しては、オブジェクト指向のパワーだけでは太刀打ちできない、ということにも薄々感づき始めていた頃でもある。

そんな悩みを、コミッタ間で共有してはいたのだが、やはり思うように進まない。そんな時、「大ちゃんは、きっと(DDDの考え方が)好きだと思うよ」と、この本を薦めてくれたのが id:ashigeru である。

俺は当時、洋書なんて一冊も持っていなかった。英語と言えば、Web上で仕方なく調べるドキュメントの類がせいぜいだった。ただ、だんだん「自分の知りたい情報は、日本語で書かれていない」という事実に気づき*2始めていた自分は、やっぱり英語ももっと読めなきゃなぁ、とも考えていた。

そんな経緯で、初めて手に入れた洋書、それがDDD本であった。この本を読む目的は「DDDの考え方を身に付ける」ことと「英語の自信をつける」ことだったわけだ。

結果から言おう。DDD本は、初めて手にする洋書としてはお薦めできないw 内容が難しい上に、話の流れも難しい。なぜ突然裁判に訴えられた話が出てくるのか*3、理解するのに数時間かかった。普通だったら絶対に挫折する。自画自賛も甚だしいが、根性で読んだ俺エライわ…。かなり時間かかったけど。まぁ、その分自信も実力も付いたので、根性大好きな人には勧めてもいいかもしれないw この経験のお陰で、他の本が簡単に読める気がする。

しばらく読み進めて、id:ashigeru の思惑通りDDDが気に入った俺は、今度は上司 id:j5ik2o にこの本を買って読ませる、という暴挙に出る。この本の内容を理解して、俺と共感してくれる変態はこの人しかいないだろう、と。まぁ、思惑通り上司はこの本に魅了され、翻訳レビュー謝辞にまで名を連ねるに至った。

まさに

俺は俺で、JiemamyをDDDの考え方を参考にしながら設計し、v0.3を作ったりした。あまり知られてはいないが、Jiemamy Project では dddbase というライブラリがあったりする*4。また、著者のEric EvansがDDDのexampleとして作ったTime And Money Libraryをフォークし独自にメンテして、baseunits ライブラリとして整備したりもしてみた。このように、自分が手がけたプロダクトの設計と実装に計り知れない影響を与えたことは間違いない。

まぁ、多くの人にとって、DDD本を読む目的は英語慣れではないだろう。ただでさえ難しい設計実践の書籍である。慣れ親しんだ日本語という言語で的確に意味を掴みながら理解を進めると良いだろう。

間もなく、(色んな意味で)破壊力のあるこの書籍の邦訳版が世に出る。邦題は「エリック・エヴァンスのドメイン駆動設計」である。前述のように「オブジェクト指向が好きだが、それだけでは何か足りない」と感じている、悩める開発者にお薦めしたい。

エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)

エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)

一足お先に献本頂きました。どうもありがとうございます。

*1:今、Amazonの原著ページを参照したら、親切にも「お客様は、2009/9/30にこの商品を注文しました」と表示されていた。

*2:この事実を実感する第一段階は、ググったら自分が出てくる現象であるw

*3:出てくるんすよ、突然…w

*4:汎用ライブラリなので、どこで使ってみても良いかもね。