Alan Kay 講義ノート

1994年4月21日、Smalltalk の生みの親である Alan Kay が、立命館大学のびわこ・くさつキャンパスで講演しました。これは、山本和彦が作成した聴講ノートです。

タイトル

The best way to predict it in the future is invent it.

未来を予見する最良の方法は、それを発明してしまうことだ。

講演内容

アメリカでは、世界を変えてしまうようなとても素晴らしいアイディア --- たとえば民主主義や微積分 --- をハッピーなアイディアと呼びます。時として人は、このハッピーなアイディアを思い付きます。ここでとても面白い疑問が湧きます。

ハッピーなアイディアを思い付くのは、生まれつきの才能でしょうか、それとも、学習によって学べるものなのでしょうか?

私の好きな McLuhan の言葉に

I don't know who discovered water, but it wasn't a fish.
誰が水を発見したかは知らないが、発見者が魚でなかったことは確かだ。

というのがあります。(と、Alan は金魚バチのなかの金魚を指しながら続ける。)

我々は信念という水の中を泳いでいる魚のようなものです。アメリカ人にとってはアメリカの風俗習慣が水に当たります。そして、その信念によって、他の人の考えは間違っていると思い込んでしまうことがあります。

しかし、

Terrific ideas behind good ones.  

という言葉があります。われわれは、冗談などの(我々の水の範疇を越えた)good ones を口に出したときに、

と言ってハッピーなアイディアを思い付くのです。

ところで、ある物を作り上げるためには使用に耐え得る強度を持たなくてはなりません。(と言って、Alan は次の言葉を紹介した。)

You can make a dog house out of anything。
犬小屋ぐらいなら、ツマヨウジで作ってもよい。

60年代にソフトウェアが始まったころは、データ構造やアルゴリズムが強調されていたために、個々の部品が歯車のように絡み合って全体を構成していました。これは、1つの部品が壊れると、全体が壊れてしまうという問題を含んでいます。

私がソフトウェアを始める前は、生物学を学び、生物学で学位を取りました。皆さんの体の中には10,000,000,000個の細胞があります。そして、少々の細胞が壊れたからといって、人が死ぬことはありません。うまくいっている細胞の数が圧倒的多数であれば、全体としてうまくやっていけているのです。

さて、ここで一般的な教育(general education)がどうして重要であるかについて述べましょう。オブジェクト指向の考え方は、生物学とソフトウェア工学という違った考えの接点として生まれたハッピーなアイディアなのです。(金魚が金魚バチを飛び出して空気に触れることで水を発見したり、他の金魚バチを発見したことに対応する。)

今まで歯車だったソフトウェアの個々の部分を、詳細を隠して保護することで細胞に変えられました。こうすることによって、エラーを早い段階(細胞内)で捕まえ、全体が致命傷を受けることを防げます。

このように一般的な教育を学び、異なった分野やからヒントをえることは非常に重要なことなのです。もし、あなたが3倍の知能指数を持って、1000前の世界に行ったとしたら、現在あるすべての素晴らしい物を発明発見できるでしょうか? それは、不可能です。また、ハッピーなアイディアを思い付くことが才能として、子孫に受け次がれるのではないことも明らかです。

つまり、人はハッピーなアイディアの発見を学習によって会得するのだと言えます。さて、そのプロセスを紹介しましょう。

プロセス1: Find a better goldfish bowl.
より良い金魚バチを探す。
プロセス2: Make a better goldfish bowl.
より良い金魚バチを作る。

出発点から目的地に行く方法はいくらでもあります。その典型例を3つ紹介しましょう。(Alan は、横長の長方形の左上に出発点、右下に目的地がある絵を見せながら続ける。)

1番目のぐねぐねしながら目的地にたどり着く思考は、まったく先の見通しを付けずに問題を解決しようとする政治家のものです。2番目の少し右にいって、下に行き、また右に行く思考は、徐々に問題解決を計るエンジニアやビジネスマンの思考です。

そして、3番目の思考は数学者のものです。これは、最初は一見目的地と逆の方向に向かっていますが、一旦問題を深く理解すれば、超高速道路に乗り、目的地に一番近いところで降りるものです。

問題を解くことよりも理解することが重要です。問題を深く理解できれば、解決策はいくつも見付かりますし、理解のプロセスの延長に解決があるのですから。そして、間違った問題を解いてはいけません。エンジニアは時として、間違った問題 --- COBOL、C、UNIX を良くすることなど --- を解いています。

人が作ったものを学ぶだけではなにもなりません。批判できるぐらいにならないといけないのです。そして、ハッピーなアイディアを思い付く一番の武器は、みなさんの頭のなかにある科学なのです。