Web時代の分散オブジェクト指向?の書き残し。
先のエントリでは
「本」というものを抽象化するにあたって、複数の視点があり、それらが協調して、インターネットという単一のシステムを構成することが現実的になりつつある
と書いた。
ここで、複数のサービスが「同じもの」を分析しているということを示すためには、それらに同じ識別子を割り振るべきだろう…か?。
本の場合は幸いにして ISBN というコードがあるが、そのようなものが無い場合もある。
そうした国際的なコードが割り振られていなければ分析できないというのではあまりに不便なので、各サービスごとに独自に識別子を作ってしまってもよいということにせざるを得まい。
そうすると、「異なる識別子ではあるが、指している実体は同じものである」ということを表す何らかの仕組みが必要になろう。
例えば、RDF にはそういうものがある。
が、一口に「本」と言っても、分析する視点によっては、まったく違うものを指すことがある。
Amazonで売っている本は(マーケットプレイスのものを除けば)全部新品であるから、どれでも同じ本であるとみなして差し支えない。
だが、例えば古本屋だったら、同じタイトルの本でも、初版本とそうでないものでは価値が全然違ったり、汚れ具合によっても値段が変わってきたりする。
Amazonではそういうことはない。
本の識別子として ISBN を使うとしたら、同じ ISBN が指すものが、Amazon の場合は「同じ ISBN を持つ本の集合」なのに対し、古本屋の場合は「この一冊の本」なのである。
こうしたとき、「異なる識別子ではあるが、指している実体は同じものである」と言ってはいけないケースもありそうな気がする。
「同じ」というのは「違う」ということを孕んでいる。
山田さんちの犬のポチ(3歳、オス)と田中さんちの犬のハナ(1歳、メス)は「違う」犬であるが、「犬である」という点で「同じ」である。
また、ポチと鈴木さんちの猫のタマ(2歳、オス)は「違う」固体であるが、「オスである」とか「哺乳類である」という点で「同じ」である。
2つの事象が「同じ」であると言うとき、それは必ず「○○という点に目をつぶれば、××という点では同じである」ということを意味する。
2つの事象のあらゆる属性が完全に「同じ」であるということは、それが存在する時刻も位置も同じであるということであり、それはつまり、2つの事象ではなく1つの事象だったということである。
「A と A は同じである」などと、改めて言う意味はないのだから、2つのものが完全に同じであるということはないと言っていい。
さて、そうすると、2つの Web サービス A と B があったとき、A が X と呼ぶものと B が Y と呼ぶものを、A は「同じ」と主張するが、B は「違う」と主張するということがあり得る。
それはどちらが間違えているということではなく、A の視点から見れば同じなのだが、B の視点から見れば違うのである。
うーん。難しいなぁ。