JavaScript Domain-Driven Design読んだ

このまえ一瞬話題になった本読んだのでメモ。

www.packtpub.com

目次

総評

  • 長さ: ☆☆★★★
  • 読みやすさ: ☆☆☆★★
  • 英語のムズさ: ☆★★★★
  • こんな人にオススメ
    • DDD本読みたくないけど雰囲気だけ知りたいWebマン
    • DDDはわかるけどJavaScriptよくわからないWebマン

本書では、ケーススタディを通じてDDDの諸概念を解説し、これを用いたWebアプリの開発方法を紹介する。 わりとフンワリした感じ。

JavaScript」という名前を冠しているが、ExpressとMochaを使ってるくらいの話だった。 Expressに特化した知見や、SPAに特有の問題に対する解決策などは提案されていない。 また、DDD特有の諸概念についても大まかな解説にとどまり、前触れ無く「Service」という言葉が出てくるなど、正確な理解を得るのは難しい感じだった。

正直、DDD関連の本を読んだことのある人やJSガリガリ書いてる人だと、得られるものは少ないと思う。

長さは短く(前書を除いたら176ページ)、平易な英語で書かれているので、ちびちび進めても1,2週ほどで読めそう。

JavaScript成分あんまり無い

JavaScript成分はExpressとかmochaの本当に基本的な使い方を解説してるくらい。 あとは「値オブジェクトは Object.freeze() するんじゃゾ 」とか「Array#reduce最高」とかそういう感じ。

SPAでの設計ベストプラクティスやExpressで良いAPI書く方法とか期待してたけどそういうのはなかった。

奴隷管理アプリケーション

f:id:amagitakayosi:20150909224115p:plain:w400

ケーススタディは「オークの王国の奴隷管理アプリケーション」を題材に進んでいく。 王国には奴隷の監獄が複数あり、奴隷に金鉱を掘らせることで富を得ている。 また、周辺国への侵略戦争を常時進めており、新しい労働力が補充されるようになっている。

開発者は、ある監獄の管理者(ドメインエキスパート)である顧客に対し、奴隷の増加ペースや逃亡率を考慮して労働力を管理するアプリケーションを作成する。

元ネタは著者がやったホテルの予約管理Webアプリらしい。

  • 奴隷が多いほど儲かる : 空室が少ないほど儲かる
  • 奴隷の逃亡 : 客のドタキャン
  • 奴隷の輸送 : オーバーブッキングした客を他のホテルに送る?

どうやら、↓とあるように、現実世界からかけ離れた設定にすることで、クライアント(ドメインエキスパート)との言語のすり合わせの重要性を強調する、という目的だったようだ。

we are dealing with a world that is very alien to us and that does not have a very established language to deal with its processes

まとめ

DDD本読もうぜ!

僕はまだ実践DDDしか読んでなくて、集約とリポジトリについてよくわかってない所があったんだけど、無印DDDの方ちょっとだけ立ち読みしたら一瞬で疑問氷解した やっぱり無印DDDの方も読まないとなー

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

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

実践ドメイン駆動設計 (Object Oriented Selection)

実践ドメイン駆動設計 (Object Oriented Selection)