巷の技術者向け書籍を読んで何か物足りない、薄っぺらな感じがするものが多い。哲学が感じ取れない。単なるノウハウもの、こうすればできるという実践書ならそれで用が足りる。それで良しとしてしまい何の疑問も問題意識も生じない。一方、海外の工学書からは読んでいて単なる技術以上の奥深さ、哲学が感じられる。翻訳に値する名著のみが日本に持ち込まれていることもあろう。これは表面的な技術力の差だけではない。名著には技術以前に哲学があり、思想がある。我々が学びとるのは単に実践的なテクニックのみで良いのだろうか?日本の工学書がどれだけ海外に翻訳されているのだろうか?これは単純に技術の問題だけではないのではないだろうか。
工学には科学の裏付けがあり、科学には哲学の裏付けがある。本来そうあるべきであろう。しかしながら理工系の大学でどこまで哲学を学べるのであろう。哲学より就職先企業に受け入れられる実践教育が先行しているのではないのだろうか。
筆者にはまことに遅まきながら、近年になりようやくこのような考えを持つにいたった。自分に何ができるであろうか。今回自身の体験から「オブジェクト指向」に軸足をおきつつ、まことに恥ずかしながら自分流の哲学談義を記し、読者のご批判を仰ぐものである。
筆者は’90年代前半頃オブジェクト指向開発に触れ、その美しさに感動し、以来すっかりその考え方にはまってしまい、’98年独立後現在までオブジェクト指向/UMLの教育・普及活動を主な仕事とするようになってきました。
一方、オブジェクト指向の勉強を進める内に、その考え方のルーツは西洋哲学の大きな潮流の中にあるものだと感じるようになってきました。
ギリシャのプラトン対アリストテレスの議論は現在でも十分通じるものです。イデア論とそれを否定するアリストテレスの思想は、中世スコラ学の普遍論争として引き継がれました。イデア論の流れを汲む実在論とアリストテレスの流れを汲む唯名論の一大論争です。その流れは更に近世デカルトから始まる大陸合理論とフランシス・ベーコンから始まるイギリス経験論の一大論争に引き継がれてゆきます。
オブジェクト指向は本来プログラミング技術として始まったもので、このような哲学論争とはまったく無関係に始まったものです。哲学など知らなくてもオブジェクト指向で設計でき、Java/C++でオブジェクト指向プログラミングはでき、システムは何の問題もなく動きます。
意識していようがいまいが、オブジェクト指向の考え方は西洋哲学の流れの中に確かにある、と筆者は思います。オブジェクト指向が一時的な流行語ではなく、ソフトウェア開発の世界に自然に浸透していったのはそれが人間の自然本来の考え方であり、根源的なものであり、普遍性がある考え方だからなのです。
本論に入る前に一応筆者の略歴を簡単に記述します。大学では数学を専攻し、’70年代前半コンピュータ会社に就職しました。当時大学では情報システムなどほとんど教えていず何の知識もありませんでしたが、数学科の卒業生の主要な受け入れ先は急成長が始まったソフトウェア企業でした。
企業の新人研修で初めてコンピュータを学び、最初に配属されたのはメインフレームOS保守・開発部門でした。主な仕事はOSのメモリーダンプ解析です。段ボールひと箱の連続シートのオクタル(0-7)のリストとOSのアセンブラソースコードを突き合わせ、トラブル解析を行うのが仕事です。職人的仕事はそれなりに楽しく、OSのバグを発見した時には達成感を味わえます。段ボールひと箱でバグ1件です。新人に与えられたこのOJTを通して巨大で複雑なOSを少しづつ学んでゆきました。
コンピュータの世界は当時の時代の最先端であり、何となくもっと美しい世界をイメージしていましたが、現実はもっと泥臭い世界でした。まあそんなものかといつしか日常に流されてゆきましたが、その後移動した組織でオブジェクト指向開発なるものを試行する機会に巡り合えました。
‘90年代前半大きな書店にはオブジェクト指向コーナーがあり、分厚く高価な開発方法論の書籍が多数平積みされています。OMT法、Booch法、OOSE法、Fusion法、...などすべてオブジェクト指向の方法論で、沢山あるのは良いようですがどれを読めば良いのか混乱するばかりです。
筆者はOMT法を主に、OOSE法からはユースケースを学びましたが、その過程でオブジェクト指向開発の美しさに触れ感動しました。従来の開発技法を十分研究したとは言えませんが、なんとなく社内の開発手法は職人的で何かすっきりしないものを感じていました。オブジェクト指向は美しいと思いました。
丁度その頃(’95年)UMLのベースとなったUnified Method 0.8が発表され、今日にいたるオブジェクト指向開発普及の引き金となりました。
哲学とは何か?という議論は筆者には荷が重すぎますが、古来3つの主要テーマ「存在論」「認識論」および「人生論」があります。本稿ではオブジェクト指向に軸足に置きつつ主に「存在論」と「認識論」について考察を進めてゆきたいと考えています。
●存在論
存在するとはどういうことか?流れ去るものと不変なものを見極めることは古来ギリシャからの哲学の主要テーマで、オブジェクト指向の考え方のベースにもつらなるものです。
●認識論
認識するとはどういうことか?知識とは何か?
哲学philosophyの語源は「philo愛する+sophy知」、つまり「愛知」であり、その「知識とは何か?」も古来ギリシャからの主要テーマであり、存在論と認識論は車の両輪です。
モデリングとは知識を構造化し可視化することです。UMLはそのための強力なツールです。
●パターン
クリストファ・アレグザンダーのパターン言語は建築の世界で提唱されたものですが、デザインパターンをきっかけにソフトウェアの世界に一大ムーブメントを引き起こしました。更にソフトウェアパターンのみならず、アジャイル開発プロセスや統一プロセスなど開発プロセスにも取り込まれてきました。
これらは本来オブジェクト指向とは全く別物ですが、オブジェクト指向開発・UMLの普及のタイミングに合わせてうまく取り込まれました。
西洋哲学は認識する主体と認識の対象を切り離して考える主客分離がベースですが、パターン言語にはそれらを一体として捉える主客未分の東洋思想が底流にあります。オブジェクト指向は前者に属するものであり、これら異質なものの合一による発展の可能性が内包されています。オブジェクト指向は西洋哲学ですが、パターン言語は本来西洋より日本人の得意な分野であり、これらを合一するのは日本人の仕事です。これが逆輸出できる種です。
身の程知らずにも随分と大風呂敷を広げてしまいましたが、内容は単なる筆者の思い込み・趣味に過ぎず、同じ考えの人は少数派かも知れません。筆者の認識、それは独断的かも知れませんが、敢えてチャレンジしてみたいと考え、まことに浅学ながら今回筆をとらせていただきます。筆者の理解不足や間違いなどご専門の方々にご指摘いただき、更に勉強してゆきたいという気持ちです。
次回から本論に入りますが、とっかかりとして筆者が「オブジェクト指向と哲学」に目覚めるきっかけとなった「ソフィーの世界」[1]から始める予定で準備しています。よろしくお願いします。
--
[1] ヨースタイン・ゴルデル【著】、須田朗【監修】、池田香代子【訳】、「ソフィーの世界」、NHK出版、1995
ODL ObjectDesignLaboratory,Inc. Akio Kawai