注:これはまとまっていない思考の断片である。
オブジェクト指向とは、端的に言えば、現実世界に存在する何らかの対象を、プログラム上に抽象化して表現する手法である。
抽象化というのは、対象が持つ無限の性質のうち、関心のある一部だけをとりあげることだ(残った無関心な部分を捨てることを「捨象」と言い、抽象と捨象は常に表裏一体である)。
たとえば、りんごオブジェクトがどのような特性を備えるべきかは、どんなシステムを作ろうとしているかによる。
果物屋の会計システムだったら「商品」の特性を持つべきかもしれないし、植物図鑑のシステムだったら「バラ科の植物」の特性を持つべきかもしれない。
これまで、この「システム」は閉じたものだった。
これが開かれるとき、何が起こるだろうか。
例えば、本を抽象化した本オブジェクトを考える。
これには様々な特性――内容、分野、著者、ページ数、出版社、etc――がある。
従来のオブジェクト指向では、本のどのような側面に着目するかによって、必要な情報セットを自分で定義していた。
昨今、本の情報を扱うWebサービスを立ち上げようと思ったら、Amazonを利用するのが王道ではなかろうか。
Amazonのサービスから取り出せる本の情報は、Amazonが管理しているものだけである。それは、本をオンライン上で販売するために必要な情報と言っていい。
Amazonのデータベースが広く公開されることで、様々な新しい可能性が拓けてくるのは周知の通りだろう。
ここで、Amazonを通じて売買するものという以外の側面から「本」を捉えることが、当然可能である。
すなわち、Amazonから取り出せるデータだけでは足りなくなってくる。
要するに、「本」というものを抽象化するにあたって、複数の視点があり、それらが協調して、インターネットという単一のシステムを構成することが現実的になりつつある(この巨大なシステムは決して完成することが無く、情報セットは絶えず変動し得る)。
この時、「本」はどのような特性を持っていて、それはどこのサービスから取り出せるか、また、他のどの情報と連携しているかといったようなメタデータが必要になってくる。
というようなのを織り込んだ体系があっても面白いなぁ、と思った、2008年最後の夜だった。