2007年5月30日水曜日

フレームとドメイン

「フレーム (frame)」という英単語がある. 我々の馴染みの言葉で言えば, フレームワークとか, マイケル・ジャクソンの問題フレームとか, 知識表現のフレーム理論の「フレーム」だ. なんだか気安いけど, よく分からない.


同じような英単語に「ドメイン (domain)」というのがある. ドメイン・モデルとか, 問題ドメインとか, ドメイン分割とか. こっちも気安く使っているけど, よく分からない. ドメインとフレームは似ているような気もするけど違うような気もする.


ドメインはもともと「領地」だ. つまりヨーロッパの地続きの野山に, 「俺は領主だ」と自称した人間たちが「ここは俺の」「いや, ここもあそこも俺の」と言って線を引いて回ったのだ. 領地が違うと, 税金の取り立て方も違うし, 言葉も違う. 領地と領地との間には橋が架かっていて, 門番がいたりする. ドメインとはそういうことだ. 何か対象があって, それを何かの都合でぶった切って, 別々の支配下に置いたものだ. だから UI のドメインとパーシステンシ (永続化) のドメインでは, まったく違う法則が支配しており, その二つのドメインをつなぐにはブリッジがいるわけだ.


一方. フレームは枠だ. カメラのファインダから覗いた感じだ. ズーム・イン / ズーム・アウトしたり, 視点を低くしたり高くしたりすると, 景色が違って見えるでしょ. よく右手と左手の親指と人差し指を組み合わせて四角を作って, 目の前に当ててみたりするじゃない. 「こう見たらいいんじゃないか」「こっちから見るとこう見えるな」というときに目の前に置かれたのがフレーム. 別のフレームを置けば別のように見えるけど, 対象そのものが変わってしまったわけじゃない. でも見ている人にとってぴったりくるフレームというものがある.


ソフトウェアを作ろうと思うと, 現実の世界を何とか分割する (分ける = 分かる) ことが必要になるんだけど, フレームとドメインはそのそれぞれ違うやり方ということになる. ドメインは支配者の思想で, フレームは観察者の思想と言えるかもしれない. ソフトウェアを作るには多分どちらも必要. けど, どういうときにどっちのやり方をどれくらい取るか, でそのエンジニアの感性, 思想, 経験が試されることになる. 最適な方法は多分, ない.