たまたま今日、データモデルの設計についてレビューする機会があった。こういう機会って割とあるのだけれども、ざっと聞いてから、ざっと話すみたいな反射神経をもとめられるケースがおおいので、いつもやっているやり方について書いておきたい。ちなみに本論はこのビール缶を空けた時点でおわる。あしからず。
そもそもデータモデルの設計って何のためにするのか、ビール缶の2本目に取りかかっている立場でいうと、これからつくるシステムで表現可能な状態を設計するためってことになりそうである。まあ難しいことは言わないけれど、システムでやりたいことができるようにしてあげなきゃらないし、システムがやりたくなりそうなこともやれるようにしてあげなきゃならない。
データがシステムの寿命よりも長いってのは、まあおっさんの説教で聞いたことがあるのかもしれないけれど、今回のシステム開発のスコープ外だからといって、何でもYAGNIの精神で切り詰めればいいってもんでもないのがデータモデルの世界である。新しい要件がでた瞬間にデータモデルレベルで詰むみたいなシステムをつくっちゃあ、末代までの恥とされるのがソフトウェアエンジニアの世界である。
だから、データモデル設計の段階で、システムのリリース時点でシステムができなきゃいけないことはデータモデルとして当然できなきゃいけないし、システムのリリース時点ではできなくてもよいけれども、将来いかにもできなきゃいけないようなことについても、当然できるようしなきゃいけない。
そんな、簡単にいうけれど、と読者のみなさんはお考えだろう(そう考えない人や答をもっている人は対象読者ではない)。