ドメインとは何か
ドメインはITのお話してると頻繁に出てくるけど、
いちばん分かりやすく言うとドメイン=単位。
あるいは制約。(単位は制約の種類のようなイメージ)
例としてよく使われるのが日付だけど、これは「日」が単位。
だから、単位が同じであるデータ
(たとえば「製造年月日」や「賞味期限」)
のドメインは「日」(または「日付」や「年月日」)となる。
もうちょい詳しく言うとドメイン=同じ制約で定義されるデータの概念。
同じ制約ってのはたとえば「日付」だったら、
・YYYYMMDDの8桁であり
・YYYYは1900以上の整数であり
・MMは1以上12以下の整数であり
・DDは1以上31以下の整数であること。
・ただし、MMが02のときDDは28以下でなければならない
・ただし、YYYY/4が0かつMMが2の時DDは29うんぬんかんぬん
みたいな。
一般的に日付っぽいデータってのはここらへんの制約に縛られてるけど、
それを明確に「日付」はこうである!ってのを定義するとそれがドメインになる。
ドメインを定義することである属性の集合をひとつのエンティティとして扱うことができる。抽象化されるので変更に強い。管理しやすい。
ってのは理想なんだけど、実際はそんなに綺麗にデータモデルを設計できるケースなんてほとんどないので形骸化してるところも多い。ドメイン=データインスタンスになっちゃってなかなか抽象化はできない。