連載:ハッカーの系譜④アラン・ケイ (4/7) 研究者の楽園「パロアルト研究所」の誕生

牧野武文

October 26, 2015 08:00
by 牧野武文

「子どもでも使えるコンピューターを作りたい」と考え始めたとき、ケイの転機となる出会いがあった。エドワード・チードルという研究者が面白いものを開発し始めていたのだ。エンゲルバートのNLSは、周囲に理解されることなく、資金面で行き詰っていたが「パーソナルコンピューター」という発想は、若い研究者を中心に受け入れられていた。チードルは、まさに「非力でいいから、机の上における小さなコンピューター」を作ってみようと試みていた。ケイは、チードルの仕事に注目して、そのコンピューターで動く言語を作ろうと考えた。

なお、この時代、OSと言語は渾然一体としていたので、OSを作ろうと考えたといっても差し支えない。コンピューターが起動すると「言語」の編集画面が現れ、そこにプログラミングコードを書いていくと、コンピューターがプログラムを実行するというのがこの時代のコンピューターの姿だった。

ケイは、この「小さな言語」あるいは「小さなOS」を開発するのに、2つの方針を立てた。ひとつは非力なコンピューターで動作させるのだから、言語もコンパクトで軽快に動かなければならないということだ。もうひとつは、この「パーソナル」コンピューターを使うのは、コンピューター科学者ではなく、ごく普通の医師や弁護士、学生になるはずだ。すると、コンピューター科学者やエンジニアなどにしか通用しないギークな作法は徹底的に排除していかなければならない。

ケイは後に、自分が想定するユーザーを「あらゆる世代の子どもたち」と呼ぶようになる。まだスキルのようなものは身につけていない、常識すら身につけているかどうかあやしい。しかし、好奇心は旺盛で、直感に従って道具を使っていく。そういう人たちを「あらゆる世代の子どもたち」と呼んだ。

「オブジェクト指向」というネーミングは失敗

しかし、そのような言語をどのようにして作ったらいいだろうか。ケイの頭に浮かんだのはスケッチパッドだった(前回参照)。スケッチパッドは図形を描くソフトウェアだが、その扱いはきわめて直感的だった。六角形を描いたら、それをまるで輪ゴムで作った図形のように伸ばしたり縮めたり、変形することができる。複製することもできて、そのような基本図形を組み合わせることで、複雑な図形を描いていくことができる。あのように、部品を作り、それを組み合わせることで、プログラミングができるような言語を作れないかと考えたのだ。

ケイは、後にこのアイデアを「オブジェクト指向」という言葉で呼んだ。ただし、ケイはだいぶ後に、この「オブジェクト指向」というネーミングは誤解を招きやすく失敗だったと述べている。重要なのはオブジェクトではなく、オブジェクト間のメッセージングだったことが後にはっきりとしたたためだ。

オブジェクト指向について、エンジニアやプログラマーは難しい議論を重ねている。しかし、それは実際の言語にオブジェクト指向の考え方を実装して開発をしなければならないからで、オブジェクト指向の元々の発想は実に単純だ。

プログラミングというのは、元々はやるべきことを順々に書いていくという方法から始まった。例えばカレーライスを作るのであれば、「野菜を切る。肉を切る。肉を焼く……」と手順を順番に書いていくことが基本だ。そこに条件分岐という考え方が加わった。「肉が焼けていなければ焼き続ける。焼けていたら次の作業へ」という分岐ができるようになり、プログラミングが記述できる内容は格段に広がった。しかし、基本は手順を順番に記述していくということなのだ。

では、カレーライス店を開くことになって、コックを10人に増やしたとしよう。この10人に仕事をどのように割り振ればいいだろうか。従来のプログラミング的な考え方では、10人それぞれがレシピに従ってカレーを作っていくことになる。しかし、それは愚かなやり方で、効率がよくないことはだれの目にも明らかだろう。「野菜を仕込む人」「肉を仕込む人」「鍋を扱う人」「ご飯を炊く人」と分業した方がはるかに賢い。野菜を仕込む担当は、毎日毎日野菜を切っていけばいいので、肉やご飯の扱いを覚える必要はない。野菜の扱いだけを覚えればいい。これはプログラミングで言うと、野菜のことだけを考えたプログラム、鍋のことだけを考えたプログラム……と書いていけばいいのだから、いきなり全ての手順を書き始めるよりも開発がしやすくなる。プログラムがシンプルになり、間違いが起こりづらく、後で修正するのも楽というメリットが生まれる。

10人の各担当は、最初は寝ている。マスターが野菜担当と肉担当に「仕込みを始めてくれ」と「メッセージ」を送る。それを受けて、野菜担当と肉担当が起き上がって仕事を始める。野菜担当、肉担当の仕事が終わると、彼らは「仕込み終了」という「メッセージ」を発する。すると、鍋担当とご飯担当が起き上がって仕事を始める。この各担当=オブジェクトは、順々に起動して仕事をしていくのではなく、常に相互作用をしている。品質検査担当が「ご飯が硬い!」というメッセージを発すると、ご飯担当は再度ご飯を炊き直す。それも、メッセージを受けて今度は柔らかく炊くのだ。これが大雑把ではあるが、オブジェクト指向で作られたプログラムの動き方だ。

オブジェクトと関数・サブルーチンの違い

プログラミングを高校や大学で教わった方は、「それは関数やサブルーチンで実現できるのではないか」と思われるかもしれない。確かに関数やサブルーチンはオブジェクトと似ているが、決定的な違いがある。それは「データのカプセル化」だ。関数やサブルーチンが扱うデータは、メインルーチンと区別されず、受け渡しされる変数は、そのプログラム共通の場所に置かれ、それを読み取る。さきほどのカレーの例で言えば、「じゃがいも5個、牛肉300g」といった情報を厨房の中にあるホワイトボードに書いて、それをそれぞれの担当者が読んでいくような具合だ。これは一見、合理的に見えるが、実際の作業では問題が生じることがある。なぜなら、ホワイトボードをどのように使うかをあらかじめ計画しておかなければ、途中で書くところがなくなったり、あるいは別の担当者がうっかり消してしまうというような混乱が起こるからだ。

オブジェクト指向では、このようなホワイトボードを用意せずに、全てをメッセージでやりとりする。フロア担当が「客数15人」というメッセージを送り、料理長が計算して「じゃがいも20個、牛肉1500g…」というメッセージを送る。野菜担当は野菜の分量のメッセージだけを受けとり、作業を始める。この野菜の分量以外のメッセージは、「自分には関係ない」と聞き流してしまう。こうすることで、データは必要なオブジェクトだけが知ることになる。ホワイトボードの場合、必要がない担当まですべてのデータを目にすることになり、それが混乱を招く元になるのだ。

このカプセル化が最も役に立つのは、オブジェクトを再利用する場合だ。たとえば、じゃがいもを使うのをやめて、オクラを使ったカレーにメニューを変えるとしよう。ホワイトボード方式では、じゃがいもの分量を書くスペースを削って、新たにどこにオクラの分量を書くかを決めなければならない。しかも、じゃがいも担当を厨房から追い出しておかないと、じゃがいも担当は「じゃがいもの分量が書かれていない!」とエラーを発するかもしれない。オブジェクト指向ではこのような心配はいらない。オクラ担当オブジェクトを追加すればいいだけた。じゃがいも担当向は受け取るメッセージがないから働かなくなるというだけのことだ。

別の厨房では、肉じゃがを作っている。カレー厨房で用なしとなったじゃがいも担当はそちらにいってもらってもいいのだ。カレーと肉じゃがではじゃっかん処理の仕方に違いがあっても、それはほんの少しの修正で済む。大きいのは、ホワイトボードではなくメッセージで必要な分量をやりとりしているので、じゃがいも担当は別の厨房にいっても「じゃがいも20個」というメッセージを受け取って仕事をすればいい。

ケイの分析によると、ソフトウェア開発に必要なコストの85%は、ソフトウェアが導入された後に発生しているという。バグ取りと、改良にコストが掛るのだ。オブジェクト指向の言語では、問題が生じているオブジェクトだけを修正すればいいのでバグ取りが簡単になる。さらに、大きく改良する場合も、オブジェクトを追加するだけでいいし、別のプログラム用に作ったオブジェクトを簡単に流用できる。ケイが狙っていたのは、このような開発の効率化ということもあるが、本当にやりたかったのは、積み木を組み合わせるように直感的にプログラミングしていける言語を作ることだった。それであれば「あらゆる世代の子どもたち」がプログラムができるようになり、コンピューターは人間の創造性を引きだしてくれる道具になるからだ。

研究者の楽園「パロアルト研究所」が創設

ケイは次第に自分の研究の方向性が定まっていく中で、コンピューターグラフィックスのシステムの研究で論文を書き、修士号、博士号を取得した。博士論文は「The Reactive Engine」という名前で、今日で言えば「インタラクティブ・コンピューター」とほぼ同義語になる。ケイの博士論文には、ケイが描いたパーソナルコンピューターの想像図が描かれている。今の感覚で見れば、横にペンタブレットが置かれたありふれたパソコンのイラストだが、当時としては誰も見たことがないものだった。1968年のものであることに注意していただきたい。「自動車」という言葉が存在せず、未来を見つめるビジョナリストたちが「馬なし馬車」という言葉をようやく使い始めた頃に、プリウスの絵を彼らに見せるようなものだ。

0001312-002

アラン・ケイが描いたパーソナルコンピューターの想像図

ところが、このケイの未来の実現はしばらく待たなければならなくなった。あれだけ豊富だったARPAの予算が削られ始めたのだ。そもそもがARPAに豊富な予算が割り当てられたのは、スプートニクショックによるものだった。それから10年近く経つと、パニック的なスプートニクショックも落ち着きを取り戻し、ある意味、科学技術予算は適正配分に回帰し始めていた。「国防に利するため」というフレーズを企画書の頭につけてさえおけば、莫大な研究予算が獲得できるという研究バブルの時代は終わってしまったのだ。エンゲルバートの研究が行き詰まったのも、これにより予算が削られたためであったし、ケイもARPA関連の研究の中で、自分の夢を実現するということがしづらくなっていた。

しかし、ケイにとって都合がいいことに、1970年にゼロックス社がカリフォルニア州パロアルトに研究所を設立した。ゼロックス社は、1906年に設立された歴史のある企業だ。当初はハロイド社という名前で、印画紙や写真関連機器の製造販売をしていた。この頃は小さな地方企業にすぎなかった。しかし、1946年頃から、書類の写真コピーを素早く大量に作る技術=ゼログラフィーの研究を始め、13年という長い研究期間を経て、普通紙コピーができる機械「Xerox 914」の開発に成功した。このコピー機は大ヒット商品になり、社名もゼロックスに変更し、一躍フォーチュン500に入る大企業に成長した。

0001312-003

ゼッロクス社の大ヒットコピー機「Xerox 914」 Images By Wikipedia

しかし、60年台後半になると、ゼロックス社の成長も頭打ちになり、コピー機の次に柱となる商品開発が必要になってきた。コピー機でオフィスを席巻していたゼロックス社が将来のライバルになると恐れたのがコンピューターだった。コンピューターで書類をデータとして作るようになったら、コピー機などは不要になってしまう。電気のオンオフで記録されるデータは、簡単にコピーができるからだ。

そこで、ゼロックス社はデジタルを研究し、次世代「オフィス機器」の研究所を設立することにしたのだ。デジタルが自分たちの将来の敵になるのだったら、率先してその敵を研究して、将来はデジタルをゼロックスの柱にしていこうと考えた。タイミングも良かった。ARPAの予算が急激に絞られたため、優秀なコンピューター科学者の多くが失業の憂き目に遭っていたのだ。ゼロックス社パロアルト研究所、通称PARC(パーク)は、普通であれば準備期間に3年ほどをかけて、研究者を集めなければならないところを、わずか1年で始動することができた。

ケイは一応ユタ大学の教職の仕事があったし、カーネギーメロン大学からはケイのダイナブック構想の研究をしないかと誘われていたので、PARCにはコンサルタントというやや距離を置いた関わり方をした。しかし、あっという間にPARCに魅力的な研究者が続々と集結し始めた。職を失っていた研究者が続々とPARCに雇われ、それが評判を呼んで、民間企業や大学から移籍してくる優秀な研究者もいた。エンゲルバートの研究チームからも移籍してくる研究者もいた。その様子を見て、さらに優秀な研究者が移籍してきて、PARCではコンピューター科学者のドリームチームが結成されているような状況になった。

ケイはその様子を見て、「これは面白くなりそうだ」と、PARCへの完全移籍を決めたという。ケイは後にこう語っている。「アメリカ中のコンピューター科学者を優秀な順に上から1から100まで番号をつけたら、そのうちの67人がPARCにいた!」。ケイがこの発言をした時、実際にはPARCの研究者は50人程しかいなかったが、PARCがたった1年で世界最高の研究所になったことは間違いなかった。

ケイは1972年に冒頭で紹介した「あらゆる世代の子どもたちのためのパーソナルコンピューター」を執筆して、ダイナブックの研究を始めようとした。しかし、PARCの上層部はそれを認めなかった。アイデアとしては素晴らしいものの、あまりにも夢物語過ぎて実現の可能性が少ないと判断されたのだ。そこで、ケイは当時の技術で可能なダイナブック的なパーソナルコンピューターの開発を提案した。これをケイは「暫定ダイナブック」と呼んだ。この研究は、他の研究者からも支持され、本格的に研究がスタートすることになった。この「暫定ダイナブック」には、「アルト」という愛称がつけられた。

(敬称略/全7回)




ロシア下院が「VPNやプロキシを禁じる新しい法案」を採択

July 26, 2017 08:00

by 江添 佳代子

ロシア連邦議会下院は2017年7月21日、市民のインターネット利用を制限するための法案を全会一致で採択した。 これはロシアでのVPNやプロキシなどの利用を非合法化する法になると伝えられている。この採択を受け、モスクワでは2000人以上の市民が「インターネットの自由」や「ロシア当局によるオンライン監視…

中国北京市に大量の偽携帯基地局が存在する理由

July 25, 2017 08:00

by 牧野武文

以前、偽の携帯電話基地局から大量の広告ショートメッセージ(SMS)を発信した事件をお伝えした。その際、偽携帯基地局からのSMSは、発信元の電話番号を自由に偽装できるため、受信者側では本物のSMSなのか、偽物なのかの見分けがつかないという危険性を指摘した。案の定、中国で、偽携帯基地局から発信したSMS…