DDD 読書会 #1(前半)

Domain Driven Design (ドメイン駆動設計) という本の読書会を開催していて、この前2回目を開きました。

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

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

この本は?

大雑把なカテゴリとしては「ソフトウェア開発」です。「アジャイル開発」や「オブジェクト指向設計」の両方のテーマの本と言えると思います。

この本はXPやオブジェクト指向設計の大家が絶賛するくらいの良書と言われています。一方で、難しいと評判で、またこの本の主張にまつわる話を聞く限りでは「理想が高すぎる」「現実的でない」という評判もあります。さらに現時点では日本語版がありません。

読書会とは?

勉強会やセミナーの一種です。テーマとなる本を読んできて、集まった際にその本の内容についてみんなで議論する、という実におたくっぽい集会インテリジェントなミーティングです。googleで検索すると宗教や政治関係が多いみたいですが、ソフトウェア関係でも結構行われています。読書会の目的は色々ありますが、読書を進める強制力になる事や、理解の確認や議論が行えるので、今回の本は読書会にとても向いていると思います。

という事で、一人で読むにはキツいし勿体ないので読書会形式にして、2週間に1回ディスカッションを行っています。

第1回 (Preface)

本書の導入部分にはソフトウェアを開発する上での本書の主張が書かれてあります。

その主張を簡潔に分かりやすく表現するには文章力も英語の理解力も正直自信がないのですが、あえて言ってしまうと、

「スムーズにプログラムを改良するために、ソースコードはやりたい事を一番分かっている人のイメージそのままに書こう」

という事です。「やりたい事」に関係する物事(解決すべき問題に関わる領域)をドメイン、「やりたい事を一番分かっている人」をドメインエキスパートなどと呼ばれます。ドメインを元に設計や実装を行うという意味で「ドメイン駆動設計」という事なのでしょう。

仕事で開発をした事のある人には、少なくともこの主張の理想の高さだけは伝わったのではないでしょうか。:-) この理想を現実的なレベルにまで落とすためのノウハウが、この分厚い本の主な内容です。

Part 1にはドメイン駆動設計を行うための原則や概要が最初の3章に書かれています。

  • 知識の咀嚼(Knowledge Crunching)
  • ユビキタス言語(Ubiquitous Language)
  • モデル駆動設計(Model-Driven Design)

第1回では上の二つまで進めましたので説明しよう…と思ったのですが、全くまとめられなかったので、後日書こうかと思います。