「オブジェクト指向の世界」というテーマでJavaとかUMLなどについてソフトウェア開発とは少し離れてオブジェクト指向そのものの哲学的意味を考えてみたいと思います。哲学的というのは大げさですが、現実世界の森羅万象あるいは日常生活を見渡して「それってオブジェクト指向でとらえるとこのように明確に理解できるのではないか」、あるいは「それをオブジェクト指向でとらえるのは難しい。それはなぜか? 何かほかの方法はないだろうか?」などオブジェクト指向とは少し異なった世界のとらえ方であるパターン言語なども見ながら筆者が普段から思っていることを文章にまとめてみたいと思います。あるいは、むしろ文章にしながら自分の考えを整理していくといった方が当たっているかもしれません。筆者の人生観あるいは世界観も含まれてきて、まったくの独断と偏見になりますがご容赦ください。
第1回は「流れ去るものと不変なもの」と題しましたが、このテーマは要はものごとの本質は何かと問うことであり、本連載を通じてずっと考え続けなければならない基本テーマです。
「祗園精舎の鐘の声、諸行無常の響あり。娑羅双樹の花の色、盛者必衰の理をあらはす。おごれる人も久しからず、唯春の夜の夢のごとし。……」
『声に出して読みたい日本語』 ((斉藤孝著、草思社)という本が2001年に出版されたころからベストセラーになっています。この『平家物語』の書き出し部分は同書では「腹から声を出す」というカテゴリに分類されていますが、なるほど響きが良く書籍のタイトルどおりです。
「ゆく川の流れは絶えずして、しかも、もとの水にあらず。淀みに浮ぶうたかたは、かつ消えかつ結びて、久しくとどまりたる例(ためし)なし。世中にある人と住みかと、またかくのごとし。……」
“無常観ポップスの大御所”である鴨長明による「この『方丈記』の冒頭は、表現の緊密さとリズムの良さから『平家物語』の冒頭とともに横綱級の人気を誇る。」。同書からの引用ですが、こちらは「しみじみ味わう」のカテゴリに分類されています。
ところで西洋に目を転じると古代ギリシャの哲学者ヘラクレイトスの言葉によく似たものがあります。
「万物は流転する」
鴨長明の無常観にある諦観含みの達観とはちょっとニュアンスが異なりますが、この世に不変なものはなく、すべてが変化していくという意味は共通しています。
「人は同じ川の水に2度入れない」
この言葉、「ゆく川の流れは絶えずして……」と似ています。ヘラクレイトスも鴨長明も川の流れをじっと見つめて同じ思いにとらわれたようです。川の水は刻一刻と上流から新しい水が供給され、いま流れている水は下流に流れ去ってしまうわけです。
この世に不変なものは何もない。すべて川の水のように流れ去っていく。しかし川そのものはなくならないし不変なものもあるはずです。「流れ去るものと不変なもの」について考えてみたいと思います(図1)。
さて「川」って何だろう……と少し考えてみましょう。例えば東京の多摩川といえば大抵話は通じるわけで、地図にも明記されています。電車で鉄橋を渡るとき、あれが多摩川と窓から指差せるし、堤防には「一級河川多摩川」と立て札があるはずです。あるいは多摩川の下流は東京都大田区と神奈川県川崎市の境界ですから、多摩川が実際に存在することには誰も疑念を挟む余地はありません。
多摩川は実際に存在するわけですからそのものを取り出すことができるはずです。「大き過ぎて技術的に不可能」という答えが返ってくるかもしれませんが、大き過ぎることが取り出せない根本的理由でしょうか? そもそも多摩川って突き詰めればどの部分をいうのでしょうか?
少なくとも見ているだけでなく直接触れることはできるはずです。実際多摩川を流れている水に直接手を触れることはできるし、周辺の水道の水は多摩川から来ています。それで食事、洗濯あるいは風呂を沸かし、私は毎日多摩川の水に入っているのだということもできます。しかしその水自体同一のものではないとヘラクレイトスは考えたわけです(図2)。
あるいは堤防の上に立って水の流れを見下ろして対岸の堤防との間が多摩川だということもできます。このように「多摩川の水」「多摩川の堤防」は直接示せますが、いずれも多摩川そのものではありません。さて多摩川って何でしょう?
国土交通省の定義による多摩川というものはあります。しかし多摩川は一級河川に指定される昭和41年よりも前にも流れていたはずで、それは例えば新撰組の近藤勇が若いころ出稽古のたびに何度も渡った川、あるいはもっとさかのぼって万葉の時代の東歌に歌われている多摩川と本当に同じものでしょうか? 1つ確かなことは「多摩川」という名前だけは同じです。
名前は水の流れよりは不変で確かなものです。ではもっとさかのぼって古墳時代、実際多摩川沿いには前方後円墳もあるので豪族が住んでいたようです。当時この川を何と呼んでいたのでしょうか。何らかの名前はあったはずです。固有名詞ではなく単に水の流れを意味する普通名詞かもしれません。川原で生活しているわけですから日常生活で単に川といえば多摩川に決まっているわけです(図3)。
このように多摩川の流れは日々変化しているので物理的実体としては同一とはいえませんが、奥多摩湖から東京西南部を東京湾に向かう水の流れである多摩川の本質というものは不変です。この不変な本質に対して「多摩川」と名付けたわけです。もっと昔にも何らかの名前はあったはずです(図4)。
別の川、例えば利根川流域に住んでいる人たちが日常生活で意味する川は、多摩川とは物理的実体としては別物です。この物理的実体の本質を利根川、多摩川という固有名詞で呼びます(図5)。場所の異なるこれらの川も水の流れという意味では同じです。この本質を単に川と名付けます。この普通名詞が個々の固有名詞から場所の要素を除いたさらなる本質です(図6)。
オブジェクト指向にはクラスとインスタンスという概念があります。同類のオブジェクトをまとめて抽象化したものがクラスで、クラスに属するオブジェクトがインスタンスです。オブジェクト指向分析設計(OOAD)ではクラスが先かオブジェクトが先かという議論がありますが、人間の自然な考え方としてはまず具体的なオブジェクトを見つけてグルーピングし、それを抽象化してクラスにするという流れが自然です。しかし経験を積むと出てくるクラスは毎回同様なので先にクラスを用意し、逆にその具体的インスタンスを見つけていくことも現実的です。
さて現実世界に戻ります。いくつかの川を見るという経験を積んでいくと「川」とは何であるかというイメージが自然に自分の頭に形成されていきます。つまり具体的な多摩川というオブジェクトと利根川というオブジェクトを抽象概念化して「川」というクラスを作成します。いったんクラスができると、例えば淀川を見たことがなくても「川」のインスタンスとしてそれなりにイメージできるわけです。
図7はクラスとインスタンスをUMLで表したものです。名前に下線の付いているのがオブジェクトまたはインスタンスです。多摩川や利根川は始めは独立したオブジェクトですが、いったんクラス「川」として抽象概念化するとそのクラスのインスタンス「多摩川:川」「利根川:川」として同じグループとなり、淀川もこのグループのメンバーとして認識することができます。
多摩川や利根川などの固有名詞はオブジェクトです。これらを抽象概念化した「川」という普通名詞で呼ばれるものがクラスに当たります。川は水とその流れの道筋を持っています。個々の川は季節や天候によりその水量や流れの道筋などの状態は変化します。つまり川という抽象概念は不変ですが、具体的な川の状態については刻一刻変化していきます。この世のすべてのものは流れ去るものですが、この抽象概念は不変です。
今回は「流れ去るものと不変なもの」というテーマで、表面現象は日々変化するがその裏に隠れた不変な本質があるという話をしました。それに気付いた人がその不変な本質に名前を付けます。具体的な固有名詞として名付けられた本質から固有の要素を取り除いたさらなる本質が普通名詞として名付けられます。オブジェクト指向では普通名詞がクラス、固有名詞がインスタンスと考えることができます。次回からは順序は未定ですが、オブジェクト指向に軸足を置きつつ次のようなキーワードで考えていきたいと思います。
◇ 自然言語vs.UML
◇ プラトンvs.アリストテレス
◇ 西洋哲学vs.東洋哲学、西洋人の発想と日本人の発想
◇ 分析vs.設計、科学vs.工学
◇ 機能要求vs.非機能要求、UML vs.パターン言語
◇ 名前のない品質
◇ ビジネスvs.情報システム
河合昭男(かわいあきお)
大阪大学理学部数学科卒業、日本ユニシス株式会社にてメインフレームのOS保守、性能評価の後、PCのGUI系基本ソフト開発、クライアント/サーバシステム開発を通してオブジェクト指向分析・設計に携わる。
オブジェクト指向の本質を追究すべく1998年に独立後、有限会社オブジェクトデザイン研究所設立、理論と実践を目指し現在に至る。
ビジネスモデリング、パターン言語の学習と普及を行うコミュニティ活動に参画。著書『まるごと図解 最新オブジェクト指向がわかる』(技術評論社)、『まるごと図解 最新UMLがわかる』(技術評論社)。『UML Press』(技術評論社)、『ソリューションIT』(リックテレコム)ほかの専門誌に多数執筆。ホームページ「オブジェクト指向と哲学」。
Copyright © ITmedia, Inc. All Rights Reserved.