英語のWikipediaの記事
英語のWikipediaには「Anemic domain model」という記事がある。
Anemicは「貧血の」という意味なので、これの日本語に訳されたものが「ドメインモデル貧血症」であると考えられる。
この記事によると、最初に「ドメインモデル貧血症」という言葉を発明したのはマーティンファウラーらしい。
This pattern was first described by Martin Fowler, who considers the practice an anti-pattern.
Martinfowler.comの記事
Wikipediaに記載されている通り、Martinfowler.comには2003/11に公開されたAnemicDomainModelという記事がある。
以下に引用したように、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)