Magnolia Tech

いつもコードのことばかり考えている人のために。

『ドメイン駆動設計をはじめよう ―ソフトウェアの実装と事業戦略を結びつける実践技法』を読んだ

訳者の増田亨様より献本いただきました ありがとうございます

さっそく読んでみました


システムは、なぜ必要とされるか?という「why」が有り、次に何を作るべきか?という「what」が有り、それを受けての「how」が有る。

(たまに突然「what」だけが有ったり、なぜか「how」の議論だけが先行する事例も聞くけど、それは順番が間違っているだけなので、その問題はここでは触れない)

この「why」と「what」と「how」が上手く繋がった状態を作り上げていくために、過去にさまざまな開発方法論が考案され、語られてきた。

ドメイン駆動設計」は、開発方法論として「名前がついて、生き残ってきた手法」の一つであり、昨今複数の解説書が発行されている唯一の手法と言える。

ドメイン駆動設計をはじめよう』は、他のドメイン駆動設計の解説書よりも更にこの「why」に踏み込み、事業活動における対象領域の位置付けや、特性を分析し、そこから「what」や、「how」につなげていくことを試みている本だ。


そのシステムのステージというか、作られている状況はさまざまで、「構想だけはある」「だいたい何を作ればいいのか決まっている」「全体の構成は決まっているが、実装のための細部は決まっていない」「すでに全て実装され、稼働中のシステムがある」といった「段階」がある。

また、そのシステムへの関わり方も「経営として投資の意思決定をする」「責任者として開発の意思決定をする」「開発リーダーとして実装の意思決定をする」「開発担当者として分解された要素の設計、実装をする」といった、いろいろな関わり方がある。

本書のように、「まずは事業活動を分析し、何が中核の業務領域なのか?、どこに複雑さが有るか?、自分たちの競争優位性の源泉はどこにあるか?」と言われても、「もう開発計画が決まっている」とか、「そもそももう完成されたシステムの一部の機能追加をする立場だし」とか、「指示されたのは、この機能の実装だけだし」といった「状況」に対する「関わり方」も千差万別な中、こんな一番ゼロベースの段階から関われる人、意思決定できる人ってどれだけ居るんだっけ?となるかもしれない。

たぶん自分もひとりのパーツを作る開発者だったらそう思っていたに違いない。

「そこは自分が踏み込む領域でもないし」と。

ただ、結局「より正しい実装」を考える上では、「そもそもの要求はなんだっけ?」「この機能を提供するとどんな価値があるんだっけ?」というところに繋がっていくので、どんな立場の人でも読む価値はあるし、考えるきっかけになる。

そんなきっかけのフックが欲しい人には最適の本。

ただ、第I部で語られていることは「ドメイン駆動設計という手法によりもたらされる結果」というよりは、ちゃんと事業活動に合わせたシステム構想を描いていけば自然とそうなる(ならないと逆におかしい)ことを、その後の第II部の具体的な設計、実装方法につなげていくために「ドメイン駆動設計の語彙で」定義、解釈したものと捉える方が適切。

別にドメイン駆動設計だから重要な業務に注目するわけでも、システムのスコープを区切る訳でもないし、用語を定義するわけでもないので。

あくまで、分析と、設計・実装を分離させないためのベースラインを揃えるために定義されていると捉える方がいい。


本書は364ページと、一気に読むにはだいぶ厚いのと、少しずつ理解を深めていきながら読んだ方がいい本なので、ぜひ読書会などで色々な人の意見とか、見方を聞きながら、読み進めるといいでしょう。

なお、本書の冒頭でも触れられていますが、翻訳については著者の許諾のもと、割と他のドメイン駆動設計の文献とは、使い回しとは異なる訳が充てられているところもありますので、他のドメイン駆動設計本と並行で読む時はその辺りを気をつけながら読むといいでしょう。