情報システム学会 メールマガジン 2011.4.25 No.06-01 [7]

連載 オブジェクト指向と哲学
第4回 分類と分解 - 汎化と集約

河合 昭男

 人は物事を認識するとき、頭の中で「分類と分解」というふたつのロジックをほとんど無意識に駆使しているようです。自分の知識体系をこのふたつのロジックで整理し、自分辞書を日々膨らましながら構築してゆきます。

 分類のルーツはアリストテレスに見られ、分解のルーツはデモクリトスの原子論にたどることができます。今回もソフィーの世界を引用しつつ、このふたつをオブジェクト指向の視点で考えて見たいと思います。
 --
原子
 ソフィーは自分の部屋に行って、封筒をあけた・・・

 なぜレゴは世界一、超天才的なおもちゃなのか?[1](P62)

 「万物の根源は水である―ターレス」古代ギリシャの哲学者たちは、この世界を成り立たせている万物の根源を探し求めました。
 「水」だけでは足りないと考えた哲学者たちは、「空気」、「火」を追加し、エンペドクレスはさらに「土」を加えて4元素説を唱えました。

 レゴには、デモクリトスが原子について述べたほとんどすべての性格がそなわっているので、うまいこといろんなものがつくれるのです。まず第一に、レゴは分けられない。・・・頑丈で穴なんかあきません。・・・ありとあらゆる形をつくれる。そうやってつくったものは、あとでばらばらにできる。そしてまた新しいものを、さっきと同じレゴを使ってつくれるのです。[1](P64)

 ソクラテス以前の哲学者の一大テーマは、万物を構成する根源となる要素を発見することです。デモクリトスは、ものを分解していくと最後にはそれ以上分解することができない究極のものが存在すると考え、それを「原子(atomon)」と名づけました。アトモンとは不可分なものという意味です。したがって、すべてのものはこの原子が組み合わさってできている、と考えました。

 デモクリトスは、自然のなりゆきに働きかける力や精神的なものを思い描きませんでした。あるのはただ原子と空っぽの空間だけだと考えた。彼は物質しか信じていなかった。それで、デモクリトスは「唯物論者」と呼ばれています。[1](P64-65)

引力と斥力
 万物の構成要素たる原子や「水・空気・火・土」には、どのような力が働いて組み合わさったり分解したりするのでしょう?

 エンペドクレスは、自然には二つの異なる力がはたらいている、と考えた。そしてこの二つの力を「愛」と「憎しみ」と名付けた。ものを結び合わせるのが愛で、ばらばらにするのが憎しみです。[1](P56-57)

 このようにエンペドクレスは物質と力を区別しました。

 この二つの力には、互いを引きつける引力と互いを遠ざける斥力があります。愛は引力、憎しみは斥力です。ちなみにこれらの力から、筆者は仏教の四苦八苦を連想します。四苦とは「生・老・病・死」です。八苦はこれに4つの苦が追加されますが、そのなかに「愛別離苦(あいべつりく)」「怨憎会苦(おんぞうえく)」があります。引力により繋がって幸せな人達が切り離されてしまう苦しみ、斥力により離れていた人達がつながってしまう苦しみ、といった運命が人生に必ず訪れます。だからどうするのかというのが仏教の四諦・八正道すなわち苦・集・滅・道です...。
 これはパターンにつながってゆくテーマなので、稿を変えてお話したいと考えています。

形相による分類
 アリストテレスは、世界のものごとをまず「形相と質料」で認識しようとした。

 何かを認識するとき、ぼくたちはものごとを様々なグループやカテゴリーに仕分けする。ぼくが馬を一頭見て、それからもう一頭、また一頭見たとするよ。馬たちはなにからなにまでそっくりではない。でも、すべての馬に共通した何かがある。この、すべての馬に共通したなにかが、馬の形相なのだ。いっぽう、それぞれの馬の違いや特徴は、馬の質料のほうに属している。[1](P148)

 分類の第1ステップは具体的なもの(オブジェクト)を本質が同じものをひとつのグループ(クラス)としてまとめることです。これは、オブジェクトを要素と考えればクラスは集合として捉えることもできます。馬は馬小屋に、牛は牛舎に、鶏は鶏舎に集めます。頭の中でもこのように整頓します。
 一頭一頭の馬はクラス「馬」に属するオブジェクトとして共通のメソッド(形相)を持ちますが、それぞれの個体差としての特徴は属性(質料)の状態に現れます。

類と種
 現実世界で馬の形相は個々の馬の中にあるならば、同じ形相を持つ実体をひとつのグループにまとめると便利です。そこで「類(種)」という考え方ができてきます。形相を同じくする実体のグループを種とします。馬、牛や鶏を「種」と捉えます。これはほぼ上述のクラスにあたります。
 動物という種を考えることもできます。一人ひとりの人は「人という種」に属すると同時に「動物という種」にも属します。一頭一頭の馬は「馬という種」に属すると同時に「動物という種」にも属します。何か混乱しそうなので種の上位にある種を類と呼びます。この場合、動物を種でなく類と呼びます。つまり類の下に種が位置づけられます。
 動物の上にさらに「生物という類」を置くなら、この場合動物は類でなく種です。つまり「生物という類」の下に「動物と植物という種」があります。このように類と種はどちらも形相を同じくするもののグループですが、ふたつの上下関係あるいは一般と特殊を比較するとき上位・一般を類、下位・特殊を種と呼びます。

 オブジェクト指向のことばでいえば、これはクラスの汎化・特化の関係です。類がスーパークラス、種がサブクラスです。集合で考えるなら、類の部分集合が種です。つまり種の要素は類の要素です。

型と集合
 イデア論的考え方は、まずイデアという鋳型があり、そこから同じ性質を持つものが生成されるという考えをとります。
 一方、アリストテレスの考え方は「形相+質料」が一体化した感覚世界の具体的なものがまず存在し、共通の形相をもつものをまとめて「類(種)」と捉えようとしたというひとつの見方があります。これは集合の考え方です。

 クラスにもこの二つの側面−型と集合があります。ちなみにUML2.2仕様書[2]を少し見て見ましょう。次のようにtypeであるという側面と、setという側面があります。typeはプラトン的、setはアリストテレス的な見方です。
--

--

分類と分解
 分類と分解は、ものの本質を追究するため細かくしていくという点で目的は似ていますが、手法が異なります。
 分類はものの本質を追究するために、共通点と相違点に注目して分類を細分化するものです。
 分解はものの本質を追究するために、ものをより単純な構成要素に分けてそれぞれの本質に注目することにより全体をより深く知ることです。
 分類は細分化が進むにつれ段々と具体的になりますが複雑になってゆきます。
 分解を進めると構成要素は単純化され最終的には原子レベルになってしまいますが、全体が持っていた本質は段々失われてゆきます。

 オブジェクト指向では分類の階層は汎化関係で表し、分解の構造は集約で表します。
 プラトンやアリストテレスが今の時代にいれば、UMLで考えを整理していたかもわかりません、...と想像すると楽しくなってきます。UMLの仕様は複雑すぎるからもっとシンプルにして、もっと誰でも使えるようにしようとするかもわかりません。

 マイケル・サンデル教授のハーバード大学白熱教室では「正義とは何か」がテーマになっています。これはプラトンを通して語られるソクラテスの主要テーマであり、アリストテレスが探究したテーマです。
 次回は「分類と分解」のケーススタディとして、ソクラテスの「徳とは何か」の対話を題材にしてUMLでモデリングしながら考えてみたいと思います。

 --

 [1] ヨースタイン・ゴルデル【著】、須田朗【監修】、池田香代子【訳】、「ソフィーの世界」、NHK出版、1995

 [2]OMG UML Infrastructure Ver.2.2


ODL ObjectDesignLaboratory,Inc. Akio Kawai