本文へジャンプ

「郵便局」から出発した「世界」のモデル化

「並列オブジェクト」の概念は、身近なところではインターネット上の仮想世界「セカンドライフ」(リンデン社)でも応用されています。
今日は、どのように概念が編み出されて発展していったかを、おうかがいしたいと思っています。
まず、そのすこし前の背景からお願いします。

そうですね、私はもともと「言語」「言葉」に興味を持っていたんです。チョムスキーの「生成文法」に惹かれて、図書館に通いつめたこともあるんですよ。修士課程では、論理学的なこと、定理の自動証明器が、修士論文の題材でした。その一方では、研究室の先輩たちとコンパイラの実装をお手伝いするという機会があり、これもおおいに勉強になりました。

当時は、AI(人工知能)の研究が盛りあがっていて、AIと新しいプログラミング言語への興味から、MITの博士課程に留学したのです。「並列オブジェクト」はそこで着想を得ました。

そこでは、「コンピュータは今後どんなふうに使われていくか、どんなふうに使われるべきか」を考えるようになり、その後の研究の指針になりました。周囲の雰囲気は、何を考えてもよいという感じでしたが、私のような考えの人はあまりいなかったですね。

ところで、コンピュータが作られた最初の動機は、数値計算ですよね?

ええ。砲弾の弾道計算などがそのよい例です。

その後、1950年代後半から人工知能を実現しようとする動きが出てきます。人工知能とはつまり、記号処理なんですね。人間の知能や記憶を記号で論理的に表現して、その記号を計算機で操作することで、人間の知能を実現しようとしたのが、当時の人工知能研究でした。

私は、もうちょっと話を広げて、一般的に使えるようにしようと思いました。それが「並列オブジェクト」へとつながっていきます。

世の中の森羅万象を、計算機で表現してシミュレーションするとおもしろいんじゃないかと思ったんです。つまり、いろいろなモノや現象をモデル化し、ソフトウェアとして計算機のなかで動かすということです。

そのあたりをもう少しくわしく教えてください。

たとえば流体の例をあげると、水や空気の動きを方程式で表現するのが流体力学です。そうではなく、水や空気の分子や原子を「オブジェクト(対象)」としてとらえ、それぞれ動くソフトウェアとして表現して、粒子間の相互作用をコンピュータで展開したら、おもしろいでしょう?

粒子の1つ1つが、それぞれ動くプログラムなんですね?

そうです。並列オブジェクトは粒子かもしれないし、1つの物理的な物体かもしれないし、人間かもしれない。コンピュータそのものかもしれない。世の中を構成しているあらゆる要素であっていいんですね。そういう1つ1つの要素を、動くソフトウェアとして表現しようというわけです。

経済現象についても、たくさんのモノ、生産者、消費者を、何かが起きると、次に何が起きるか、という事象のシミュレーションによって、現象の分析や予測ができるでしょう。それを精緻かつ広範に行いたい。

そうすると、もっとたくさん計算機がいるだろうということになります。当時は、まだパソコンもいまのようなインターネットもないころでしたが、半導体技術を始め、計算機の分野が急速に進展していて、いずれ高速なコンピュータがたくさん使われる時代が来るという予兆がありました。

そういう工業的な背景もあり、世の中をかなり一般的に表現できるモデルを考えている人もいて、そういう人たちと議論していくなかで、世の中のモノを動くプログラムで表現するというアイデアに可能性を感じたのです。

この「郵便局」の例はわかりやすいですね。

<図:小さな郵便局のモデル>小さな郵便局のモデル。利用者、局内のポスト、カウンター、ドアのいずれも並列オブジェクトで表現している。

「並列・並行性を持つオブジェクト」は、博士論文のテーマになりました。社会システムあるいは離散事象のシミュレーションを書いて、その形式的な検証をしてみようと思ったのです。そのいい例を探したんですが、ガソリンスタンドへの車の出入りみたいなものでは単純すぎて、退屈です。何にしようかと考えていたとき、ときどき小包を出しに行っていたケンブリッジの中央郵便局のことを思い出しました。

郵便局の中で観察していると、郵便局の人、切手、手紙、窓口、ドア、配送車などは、何かが起きると次に何かが起きて、と事象の連鎖で動いているんですね。これはシミュレーションにできます。

人やモノなど、大部分のオブジェクトは並列に挙動します。それが、たくさんのコンピュータ上のたくさんのオブジェクトが協調しながら動作する、計算機どうしがやりとりする、という並列の考え方に結びついていくわけです。この例は、その後の「モーバイルオブジェクト」の概念も内包しているんです。

ページトップへ戻る