前提
読解する上で、基本的な指針が私はある。それは、何らかの主張は、何らかの主張に対する反論として位置しているということである。
つまり、何かをわざわざ標榜するということは、それ以前に何らか問題となる課題があったり、著者の意見とは異なる言説あるいは現象があるのだろうと思う。
これは、学生時代に、ゼミで西洋哲学(この言葉も俗な手垢が付きすぎて好きな言葉ではないが)の話になり、教授に「なぜカントが純粋理性批判を書いたかわかるか?」と聞かれた出来事に起因する。
モデル
ドメイン駆動設計の冒頭でモデルの説明がされている。モデルとは簡素化である、と翻訳されている。
当面の問題を解決する上で関連する側面を抽象化し、それ以外の詳細を無視することが簡素化の詳解である。
ドメイン
一方で、ドメインの説明もされている。プログラムはユーザーの何らかの活動や関心と関係があり、ユーザーがプログラムを適用する対象領域がソフトウェアのドメインらしい。
一体どうゆう意味なのだろうか。
代数的に文を再構成すると以下のようになるだろう。
プログラム=ユーザーの何らかの活動や関心と関係があるもの
ドメイン=ユーザーが{(プログラム)=「何らかの活動や関心を遂行するために」}
適用する対象領域
意訳すると、プログラムをより端的に目的を遂行するための手段と定義してみると、ドメインとは、ユーザーが行う手段の目的になるだろうか。
文中には例として「ソースコード管理システムのドメインはソフトウェア開発そのもの」と記載がある。
これを先ほど導いた意訳(で示した論理)に照らすと何がわかるか。
ソフトウェア開発が目的とした時に「その手段としてソースコード管理システムがある」としたなら、先の意訳は大きく外れているわけでもなさそうである。
収束
あまり話を広げすぎないように、一旦ここで前提を振り返り、ここまで見てきたモデルとドメインについて整理しよう。
後続の文章でモデルとは「選び抜かれてシンプルにされ、意図的に組み立てらえた知識の表現形式」とある。先に挙げたモデルとは簡素化であって、問題を解決する上で関連する側面の抽象化であるとあった。
これを一言でまとめるならば、あくまでモデルは手段である、ということではないだろうか。
それに対して、(コンサル御用達の概念である手段・目的という枠組みを前提にして考えるなら)ドメインとはまさにその目的のことであろう。
そうなると、システム開発とはモデル(手段)ではなく、ドメイン(目的)にフォーカスすることを是としているように個人的には感じた。