2009年8月24日月曜日

ドメイン駆動を知るために読む本

「ドメイン駆動」とは, (システムの側からではなく)「現実の側」の視点からソフトウェアを作っていく方法のひとつです.


Eric Evansの「ドメイン駆動設計」Domain-Driven Designもそのひとつですし, オブジェクト指向の本来の考え方もそうでしたし, それ以外に源流を持つドメイン分析/設計の考え方もあります.


またユースケースやユーザ中心設計, 問題フレームの考え方なども, 現実の側からのソフトウェア開発の方法のひとつですが, これらはいわゆる「ドメイン」の考え方とは一応区別して捉えられています.


かつては, そして今も「現実をそのままモデリングする」とか「現実から実装までシームレスに開発を行う」とか言うと, 意外なほどに大きな反発を受けることが, ままあります. その人たちは言葉をあまりにナイーブに捉えています. 「モデリング」とはそもそも「特定の視点からの解釈すること」ですから, 「そのまま」とは「まったく同じように」ということではあり得ません (それではモデリングでも何でもありません!). そうではなく, それは「現実の側に立って」モデリングを行う (= 世界を見る, 世界を作る) ことを意味しています.


同じように, ソフトウェア開発は変換/解釈の過程ですから, いくら「シームレス」と言ったからと言って, まったく段差なく変換が行われるわけはありません (まったく段差がなければ自明の結果しか得られません). それは, 「できるだけ変換のギャップを小さくするような」「何らかの意味論を保存するような」変換過程を意味しているだけなのです.


ドメイン駆動のさまざまな方法論については, 一般的なモデリング, パタン, アジャイル開発の知識に加えて, 例えば以下のような書籍を参考にして下さい.



Domain-Driven Design - Tackling Complexity in the Heart of Software, Eric Evans, Addison-Wesley, 2004


きわめて重要な本なのですが, 邦訳されていません. ただし, よい解説「DDD難民に捧げるDomain-Driven Designのエッセンス」(佐藤 匡剛) やAbel Avran, Floyd Marinescuによる縮約版の翻訳「Domain-Driven Design Quickly 日本語版」があります.


Object Design - Role, Responsibilities, and Collaborations, Rebecca Wirfs-Brock and Alan McKean, Peason, 2003


これも「ドメイン駆動」とか言われるずっと前からある, オブジェクト指向の古典で, 責務駆動の考え方ですが, 密接な関係があります. 邦訳もあります.


コンバージェント・エンジニアリング入門 - オブジェクト技術によるBPR, デビッド・A・テイラー, トッパン, 1996


縦書きの薄い (228ページ), 小さい, 古い本ですが, ドメイン駆動がユーザからどう見えるか, どういう効果を与え得るかを的確に示しています.


ドメイン分析・モデリング - これからのソフトウェア開発・再利用 基幹技術, 伊藤潔他編著, 共立出版, 1996


これはオブジェクト指向ではないドメイン駆動の, 特にモデリングや分析などいわゆる「上流」を扱っています. これも古い本ですね.


Executable UML - MDAモデル駆動型アーキテクチャの基礎, スティーブ J. メラー and マーク J. バルサー, 翔泳社, 2003


Eric Evansのドメイン駆動が開発の前半を押さえているとすれば, ドメイン・モデルを動くものに落とし込んでいく過程がモデル駆動です. この両方は車の両輪と言えるでしょう.


ビジネスパターンによるモデル駆動設計, Pevel Hruby, 日経BP, 2007


Eric Evansのとは違いますが, ビジネス分野における具体的なドメイン駆動と言ってもいいと思います. REAというオントロジをベースにしており, アスペクトを使ってモデル駆動で実装しています.


企業情報システムの一般モデル - UMLによるビジネス分析と情報システムの設計, クリス・マーシャル, ピアソン・エデュケーション, 2001


まさに書名の通りです. ただしこれは入り口である, モデリングのところで終わっています.


結構多くの本を並べてしまいましたが, この中で必読書と言えば, 最初の2冊, Domain-Driven DesignとObject Designでしょう. それ以外は副読本, 参考書で, 領域や必要に応じて手にすればいいと思います.


マイアソシエイトストア - ドメイン駆動