構造化世界律を乱すもの

大抵の構造物はコンポジション構造で表現できるのだろう、車一台はどんどん分解していってネジ一個にすることができる。そしてそれはネジ一個がもつ属性とは無関係な設計図によってもとの車に戻ってくることができる。

なかなかそうはいかない場合もあって、設計図がつくれないとき、例えば複数のプラグインが参加して全体構造を形成する場合。これはジグソーパズルを一枚絵に切り目を入れて作るんじゃなくて、ピースひとつひとつから作っていくようなものだ。どうあがいてもピースにあたる同階層のオブジェクトが連絡しあわなくてはならくなり、構造化プログラミング原理主義者はここではまることになる。

これは独自のIDなど言語が本来持ってる型とは別の識別子を導入することで解決が図られる。これは動的で汚い。こういったIDを持つものは、IDの対象に依存している。依存しているがIDが本当に必要な対象を指しているという保証はない。なぜかというと、その参照それ自体が必要性そのものを構成しないから。ものによってはダブルディスパッチを使う方法もあるかもしれない。まあそんなことは実はどうでもいいんです。

問題にしたいのは、ジグソーパズルのピース同士が合致することが保証されてもそれだけでは全体の適正な形成を保証しないということ。例えばmozilla applicationのoverlayにはinsert-afterだのといった「このidをもつelementの直後に俺を挿入してくれ」みたいなattributeがあるが、そんなidをもつelementが存在しなければ意味をなさないし、そうしたところで全体としてみた場合のレイアウトには言及できない。

この問題を解消する方向へ向けるのがジグソーパズルでいうところの角や辺が平らであったりするような、全体の構造の形成に言及する足がかりとなるようなヒント(?)の存在である。firefoxのコンテクストメニューを例にとれば、様々なプラグインが勝手に挿入してくるアイテムの間に必ず存在するセパレータが用意されていて、ここを指定してinsert-afterすることである程度、実に完全ではないがある程度の全体構造への言及を可能にしている。

つづくかも…
ヒントについて考えたい。マクロとミクロの乖離とかそういう感じなんだろうか。わかりません。