ライブラリの呼び出しを抽象化

 では,どうすればよいのか。「連立一次方程式の解法など共通のライブラリは簡単に呼び出すだけで利用できます。あなたは自分の物理のことだけを考えてください」。そういう発想のもと,いろいろなライブラリをあらかじめ用意し,用途にかなったものを呼び出すしくみを作った。これが1996年に公開した遠隔手続き呼び出し(RPC)のミドルウェア「Ninf」である。

 ちょうどネットワークが速くなってきていた時代でもあった。当時はまだ128kビット/秒といった程度で,実際にライブラリを呼び出して答えが返ってくるまでの通信時間を要したが,ライブラリ部分を高速なコンピュータで実行して処理時間が短縮できたので,処理全体の高速化につながった。また,共有するライブラリとして計算精度の品質保証がされている。Ninfはその後,ライブラリ・コールというサービスとして発展させていった。

 重要なのは,最初のコンセプトから,誰もがクオリティの高いサービスに簡便な手段でアクセスできることを目指していたことである。これが後に,グリッドの構想へとつながった。

Ninfのコンセプトとグリッドの登場

 「コンピュータに使われる時代から使う時代へ」。研究者の期待を背にNinfの開発を進める中,グリッドという用語がコンピュータの世界で使われ始めた。先にも触れたように,技術的,社会的な背景の変化によって,コンピューティング環境は電力網に似たインフラとして認識されつつあったのだ。

 グリッドという言葉が登場したのは1996年から1997年のあたりで,米イリノイ大学に当時籍を置いていた米国の指導的研究者ラリー・スマール氏や,米アルゴンヌ国立研究所(ANL)のリック・スティーブンス氏によって用いられたようだ。公の場でグリッドという言葉が使われだしたのは1997年9月にANLで開催された「Building a Computational Grid」と題したワークショップが最初とされている。筆者らもNinfのプロジェクトを提案した1994年の論文に,「情報へアクセスするサービスも電気と同じように使えることが重要」だと記した。

技術面では仮想化

 筆者はグリッドという言葉には,技術的な側面と社会的な側面の2種類があると考えている。特に我々の社会がネットワークに支援されたコミュニケーションを前提とするものに変わってきた点は,グリッドの社会的必然性を考える上で欠かせない要素だと考えている。

 最初に,技術的な切り口で見てみよう。コンピュータの歴史は仮想化の歴史である。

 まずCPU。はるか昔には物理的に1台のコンピュータをみんなが順番を待ちながら使っていた。1台のコンピュータに向かう人間は,コンピュータの計算能力を使い切っている訳ではない。プログラムを入力している間や出力結果を確認している時間に,コンピュータは遊んでいる状態になる。そこで入出力のインタフェースを複数設けて,1台のコンピュータを同時に複数の人間で共有できるようにしたのがTSS(Time Sharing System)である。人間の反応能力の遅さとコンピュータの高速さをうまく使いながら,コンピュータが自分のためだけにサービスを提供するように見せることができた。

 CPUの次はメモリーである。動かしたいプログラムに必要なメモリー容量がなければ,そのコンピュータでは実行できない。そこで必要なメモリーの一部をディスクにも展開し仮想化する。こうすれば計算させたいコンピュータのメモリー容量を気にする必要はなくなる。プログラムのプロセスは,OSによって仮想化されたアドレス空間目一杯の仮想メモリーを要求するからだ。

 ネットワークの時代になると,今度は時間軸の仮想化までをも含むようになった。例えば電話。相手と回線がきちんと繋がり,相手の時間と自分の時間を同じタイミングで共有しておかないとコミュニケーションが取れない。これに対して電子メールでは,自分の都合の良い時間にメールを送り,相手は都合の良い時間にそれを読む。これは同期から非同期への移行,つまり時間の仮想化にほかならない。非同期という点では紙の手紙と変わらないが,送受信にかかるコストが桁違いに低い。こうして人間同士のコミュニケーションという手段の仮想化が進み,人々の暮らしの効率が上がってくる。物理的な仮想化と時間的な仮想化は,情報技術の進化の産物であるといえるだろう。