ドメインモデリング <<< データモデリング
私はOO言語しか書けないけど中身はDOA派なので、データモデリングは徹底的にやるけどドメインモデリングは一切やらない。
オブジェクト指向のモデリング理論はまったく勉強していない。
本はいろいろ買ったけど、あまりにも面白くないのでぜんぜん読み通せない。
最先端のエンジニアはきっとドメインモデリングをバリバリやってエレガントなクラス図を組み上げているんだろうなぁと思っていたら、naoyaさんがこんなこと書いていらっしゃる:
http://naoya.g.hatena.ne.jp/naoya/20060603/1149301517
自分が何かシステムを作るときにクラス抽出をするときって、頭の中でどういう思考錯誤が
行われてるかなと考えてみたんだけど。近頃のウェブアプリケーション開発のベストプラク
ティスであるところの "Active Record パターンの ORM + MVCフレームワーク" に則ってる
と、この辺は制約のおかげでごく自然に行われてるなあと思った。
ARパターンな ORM を使うと、プログラマは、1つのモデルが1つのテーブルを表し、その1レ
コードが1オブジェクトであるという制約を受けることになるんだけど、この粒度でモデルを
抽出すると、自然と理にかなったクラスが抽出されやすい。
つまり、データベースに保存されるデータを中心にモデルを考える、ここで何の制約もないと
むちゃくちゃになりがちなんだけど、ActiveRecord や CDBI/DBIC あたりを使うことを前提に
考えると、テーブルの設計の自由度に制約があるので、粒度が一定に保たれるという感じ。
<中略>
あとはこのモデルにドメインロジックを追加していって肉付けを行う。
これはつまり、ドメインモデルをデータモデルの従属物にしているということ。
という言い方がまずかったら、ドメインモデルを作るノウハウとデータモデルを作るノウハウは大体おんなじということ。
データモデリングだけ追求していればまだ数年は食えるとわかった土曜日の夜。