エンジニアのソフトウェア的愛情

または私は如何にして心配するのを止めてプログラムを・愛する・ようになったか

ドメインモデルが貧血になる

貧血というと。 個人的には、持病の影響で慢性的に貧血気味なんですが、ソフトウェア的愛情的にはそのような貧血ではなく。

ドメイン駆動設計を標榜するわりには、やればやるほどモデルからドメインの知識がはがれて痩せていくのを目の当たりにして、何がそうさせるのか不思議な思いでいる今日この頃。

そのような状況は「ドメインモデル貧血症 (Anemic Domain Model)」という名前で呼ばれています。

bliki-ja.github.io martinfowler.com

名前がつくくらいなので頻発する症状なのでしょう。 「実践ドメイン駆動設計」にも繰り返し登場します。

しかし奇妙なことに、ドメインモデル貧血症をこの業界のあちこちで見かける。 問題は、ほとんどの開発者がそれを当然であるかのように見ているということだ。 実際にシステムで使ったときに深刻な状況になるということに、気づきさえしない。 大問題だ。

Vaughn Vernon 「実践ドメイン駆動設計」

サービス層が云々…といった類の話はあちこちでされていますし、そこまで語れるほどの技量もないので、それらは他に譲るとして。

近くで見ていて沸いてきたのが「オブジェクト指向って自分が思っているほど浸透していないの?」という疑問。 不思議なくらいに新しいクラスが定義されていないし定義されない。

オブジェクト指向にもとづいたフレームワークを利用しているので、フレームワークが提供するクラスのサブクラスは定義されているのですが、中の処理を定義したそのサブクラスに全部書いてしまう。 たとえば二つひと組で意味を持つ値があったとしても、クラスの中でいつも二つの値としてベタ書きされ、そのクラスが値の操作を受け持つ。

面倒なことを嫌う性格なので、二つの値が常に一緒に扱われることとか、その値を操作をその値自身でなくどこかに頼まなければならない状況は、いろいろと消耗させられます。

疑問というよりも不満なのかもしれません。

そんなこんなで最近はちょっと仕事疲れです。

いつか読むはずっと読まない:知能よりも

個人的には。 人工知能がどれだけ賢くなるのだろうということよりも、意識も生まれるのだろうか、人工知能の中に意識も再現できるんだろうか、そんなことばかりが気になります。