delhi09の勉強日記

技術トピック専用のブログです。自分用のメモ書きの投稿が多いです。あくまで「勉強日記」なので記事の内容は鵜呑みにしないでください。

「ドメインモデル貧血症」という言葉の起源を調べてみた

概要

DDDに関する本を読んだり勉強会に参加したりすると「ドメインモデル貧血症」という言葉をよく目にする。

ふと「ドメインモデル貧血症」という言葉が元々どこからきたのか気になったので調べてみた。

英語のWikipediaの記事

英語のWikipediaには「Anemic domain model」という記事がある。

en.wikipedia.org

Anemicは「貧血の」という意味なので、これの日本語に訳されたものが「ドメインモデル貧血症」であると考えられる。

この記事によると、最初に「ドメインモデル貧血症」という言葉を発明したのはマーティンファウラーらしい。

This pattern was first described by Martin Fowler, who considers the practice an anti-pattern.

Martinfowler.comの記事

Wikipediaに記載されている通り、Martinfowler.comには2003/11に公開されたAnemicDomainModelという記事がある。

martinfowler.com

以下に引用したように、getterとsetterだけで振る舞いがほとんど存在しないオブジェクトが「ドメインモデル貧血症」の特徴であると述べられており、今日一般的に言われている「ドメインモデル貧血症」と相違ない。

The catch comes when you look at the behavior, and you realize that there is hardly any behavior on these objects, making them little more than bags of getters and setters.

エリック・エヴァンスのドメイン駆動設計(通称エヴァンス本)

意外だったのは、エヴァンス本には「ドメインモデル貧血症」という言葉は以下の1回しか出て来ず、特に重要な概念としてはフィーチャーされていないということだった。(電子書籍で検索したので間違えないと思う。)

アプリケーションは完成したが、ドメインモデルは貧血症になっていて、アプリケーションの求める基本的なデータベースアクセスの要求を満たす程度であり、振る舞いを提供しているのは数少ないサービスだった。(p112)

ただ、さらっと「貧血症」という言葉が使われているので、「ドメインモデル貧血症」という概念自体はエヴァンス本執筆当時から存在していたのではないかと思う。
※ 時系列的には、エヴァンス本の刊行は2003年らしいので、ファウラーの記事が出たのと同じくらい。

実践ドメイン駆動設計(ヴァーノン)

対して、ヴァーノンの『実践ドメイン駆動設計』では「ドメインモデル貧血症」という概念はかなり頻繁に言及されている。

他にもたくさん出てくるが、以下にいくつか引用してみた。

設計をおろそかにした結果がドメインモデル貧血症であるとして、なぜみんな、それが健全な状態だと思い込んで使ってるのだろうか。(p13)

しかし、これは決して、ユーザーインターフェースを基準にしてドメインモデリングするという意味ではない。そんなことをすると、ドメインモデル貧血症を引き起こしてしまう。(p63)

データベースのテーブルやカラムに重きを置きすぎて、それをオブジェクトにどう反映させるのかだけを気にしていたのだ。その結果出来あがるのは、ドメインモデル貧血症に陥った、ゲッターやセッターだらけのモデル群だ。(p181)

結論

  • ドメインモデル貧血症」は「Anemic domain model」の日本語訳
  • 「Anemic domain model」という言葉を発明したのはマーティンファウラー
  • 意外とエヴァンス本には「ドメインモデル貧血症」という言葉は1回しか出てこない。
  • 実践ドメイン駆動設計(ヴァーノン)には「ドメインモデル貧血症」という言葉はたくさん出てくる。