3.嵐の予感

ロバートは篠原の肩を抱くようにして、彼の部屋に招き入れた。彼の居室は篠原の想像に反して、落ち着いた雰囲気だった。どちらかといえば、むき出しのコンピュータと配線がはい回る研究室を想像していたのだが、意外にもその部屋にはパソコンらしきものすら見あたらない。木目の大きな机と来客用の大きなソファー、そして壁面にはこれまた時代物の書棚にいっぱい詰まった文学書、といった雰囲気で、およそ凡人が想像するコンピュータサイエンスの教授の居室とはかけはなれたものだった。どちらかと言えば、文学者の書斎、といった雰囲気だ。

ロバートは篠原をソファーに座るように促し、自らも彼の正面にどさっと腰を下ろした。

「どれくらいになるかな」

ロバートが独り言を言うように、流ちょうな日本語で問いかけた。日本を離れてもうずいぶんになるのに・・・と篠原は内心驚いた。

「10年になるかな。ラスベガスの国際電子学会で会って以来だろう。」

「もうそんなになるかな。月日の流れは速いものだな。」

ロバートと篠原はしばらくの間、懐かしい昔話に花をさかせた。学生時代のこと、それからの自分がどのような仕事をしてきたか、話題は尽きることなく続くかと思われた。

「ところで・・・」

とロバートが切り出した。

「困った問題をかかえてるようじゃないか。」

「そうなんだ、送った資料には目を通してもらったかい。」

「ああ、一通り見たよ。」

ロバートは視線を篠原からそらし、窓の方を見てつぶやくように言った。

「たしかに厄介だな、あれは・・」

「君もそう思うか。実際、謎だらけなんだ。技術的な部分だけでも山のように謎がある。まして、誰が何の目的で、となると五里霧中の状況だよ。」

「ごり・・むちゅう?」

「おっと失礼、まったく見通しがたたないという意味だ。君の日本語があまりに上手なんで、つい・・」

「いや、いいんだ。私はもっと勉強しなくちゃいけないな・・・。しかし、この話を私の所に持ち込んでくれたことを感謝しているんだ。私が今取り組んでいるテーマとも大いに関係する問題だから。」

「インテリジェントモバイルコード・・・・だったな。ずいぶん以前に君の論文は読ませてもらったよ。発想はすごく面白いが、でも、あれを実現するとなると大変何じゃないか。」

「そのとおりだ。こうした発想はコンピュータネットワークの初期の頃からあった。しかし、それを実現するプラットホームをどう作るかという点が大きな課題だったんだ。当時はある意味でコンピュータ関連技術の創生期、ビッグバンの最中だったと言える。様々な技術をもとに小さなメーカーが雨後の竹の子のように乱立し、新しいアーキテクチャが次々と生まれてきた。そんな状況下で、すべてのアーキテクチャを統合したモバイルコードのプラットホームを作るなんて実際に不可能に近かったわけだ。」

「しかし、状況は変わった・・・」

「そうだ。90年代後半、あるメーカーによって、ハードウエアに依存しないプログラミングと実行環境が提唱された。JAVAだよ。今じゃ、ほとんどのアプリケーション、いや、もっとインフラに近い部分までもがJAVAで書かれている。」

「でも、ネイティブな実行環境に比べてかなり性能は落ちるはずだ。君の構想の一部は実現可能だろうが、実際君が言うようなリアルタイムのグリッドコンピューティングとなると難しいんじゃないか?」

「そうだ。・・いや、そうだった、と言うべきかもしれないな。」

「・・・というと。」

「これは、まだあまり公にできないのだが、近々面白いものが発表される予定なんだ。」

ロバートはにやりと笑った。

「私に喋っていいことなのか?」

本当は、「いったいなんだ?」と聞きたいところを、敢えてこう言ってしまうのは、お互い秘密の多い研究をしている同士だからなのだが・・。

「ここまで喋って言わない訳にはいくまい。まぁ、しばらくの間、聞かなかったことにしといてほしいのだが・・・」

ロバートは視線をそらして窓の方を見つめながら言った。

「JITという技術は知ってるな。」

「ああ、JAVAのバイトコードを実行時にネイティブコードに変換するコンパイラのことだろ」

一般にコンピュータのプログラム言語には二つのタイプがある。コンパイラ言語とインタプリタ言語だ。あと、アセンブラというのもあるが、いまどき使っている人はごく一部だろう。ちなみに、コンピュータのCPUは、そのCPUが実行する命令を数値化した機械語プログラムを読んで処理を行う。機械語はCPUの種類ごとに異なるため、ネイティブコードとも呼ばれる。この機械語は基本的な処理単位の羅列で、非常に難解なものだ。それを記号化してわかりやすくしたのがアセンブラだが、いまどきアセンブラでプログラムを書くのは、ハードウエアデバイスの制御プログラム屋さんの一部くらいしかいない。普通はより自然言語に近い、用途別のプログラム言語、いわゆる高級言語を使って書くのだが、この高級言語の実行のされ方に前述した二つのタイプがある。

コンパイラ言語はコンパイラという翻訳プログラムを介してプログラムを機械語つまりネイティブコードに変換してから実行するものだ。一方、インタプリタ言語はというと、その言語を読んで直接処理を行うインタプリタというプログラムの上で動作する。わかりにくいかもしれないが、インタプリタは高級言語自体をネイティブコードとするような仮想的な計算機のシミュレータプログラムだと言ってもいい。コンパイルという翻訳操作なしで実行できるため、プログラムの開発やテストの効率がいい反面、いちいちプログラムを解釈しながら処理をシミュレーションするために、処理速度が遅いという欠点がある。

JAVAは、こうしたインタプリタ言語の一種だが、仮想計算機を効率よく動作させるため、JAVA言語で書かれたプログラムを一種のコンパイラにかけ、バイトコードと呼ばれる中間的な言語、というより仮想的な計算機の機械語と言ったほうがいいかもしれない、に変換する。そのバイトコードをインタプリタつまり仮想マシンが実行するわけだ。こうすることで、特定のCPU用の仮想マシンを用意することで、JAVAのバイトコードは、そのまま多くの種類のCPUやOSのもとで動作するポータビリティを持つことになるのだ。

しかし、一旦コンパイルされているとはいえ、バイトコードは一種のインタプリタ言語である。実行速度はネイティブコードに比べれば格段に遅い。この遅さを緩和するために考え出されたのが、バイトコードを実行時に一気にネイティブコードに変換して実行してしまうJIT(Just in Time compiler)だ。この存在により、JAVAの実行速度はかなり向上した。しかし、なお、コンパイラ言語を使って作られたネイティブコードに比べると、様々な理由で実行速度は劣っているのである。

「そうだ。しかし、JITはソフトウエアだし、オーバーヘッドも大きいからネイティブコードに比べれば、やはり遅い」

「ハードウエア化した・・・と?」

ロバートは笑って人差し指を立てた。

「ピンポン!・・・かな」

「もったいをつけずに教えてくれ」

篠原は、じらされているのに我慢が出来なくなって言った。

「チップ化したんだよ。JITを」

「え。JAVAチップか?」

「いや、JAVAチップの構想は初期段階からあった。でも、実際、JAVAのような複雑な言語や実行環境をチップ化するよりも、高速化がめざましい汎用マイクロプロセッサでソフトウエア処理したほうが費用対効果に優れているという結論になって、開発そのものがお蔵入りしてしまった経緯は知ってるな。」

「そうだ、でも、君のインテリジェントモバイルコードを実装するにはJITでもまだ性能が足りないはずだ」

「ある種の用途では、今の形でも充分だ。でも、よりリアルタイム性の高い処理を協調して行うような用途ではもっと高速な処理が必要になる。だからチップ化した。」

「だから何を」

「JITだよ、それもコンパイルといった形ではなく、リアルタイムの写像変換とでもいうような方式でだ。」

「リアルタイム、写像変換?」

「そう、我々はJRCMと名付けたが、CPUからはメモリチップに見え、JAVA のバイトコードを書き込んでやると、読み出した時にはネイティブコードになってるって代物だ。うちの大学の電子工学の天才が考え出したんだがね。面白いのは単純なコード変換のみではなく、特定のアドレスにJAVAを走らせるのに必要なランタイムライブラリもすべてネイティブコードで組み込んでしまっている点だ。」

「そんなことが可能なのか。うまく動くとは信じがたいが」

「もちろん、このチップを単純にいまのPCに組み込んだだけでは動作しない。当然OSそのものがこのチップをうまく制御できないといけないからな。」

「OSはどうするんだ」

「そこが最も極秘の点だ。実は、M社とは数年前から極秘裏に共同開発を行っていて、現在、M社が開発中の次期OSには、このチップのサポートコードが組み込まれているんだ。」

「なんだって?、そこまで話が進んでいたのか?」

「そうだ。我々も当初はオープンソース系OSを使おうとしていたんだが、オープンソースの台頭に危機感を覚えたM社が、資金提供と引き替えに、彼らのOSへの対応を先行させることを望んだわけだ。我々も商用製品ではいまだ圧倒的なシェアを持つM社を無視できない。そこで、将来的にはオープンソース系にも展開することを認める条件で、彼らの申し入れを受けることにしたんだ。ただし、このことを知っているのはM社の中でもごく一部の人間だけだ。」

「でも、M社のプラットホームは特定のCPUに依存してるじゃないか。他のプラットホームはどうするんだ。」

「それも考えてあるよ。JRCMは内蔵するマイクロコードを交換すれば、他のCPUやOSにも対応できるようになってるんだ。技術の進歩というのは驚くべきものだよ。それだけじゃない。JRCM はホストのOSを介してネットワークと直接通信ができる。モバイルコードや処理結果の送受信は自前でできてしまうんだ。」

「でも、M社の次期OSは今年の春にはリリース予定だ。JRCMは間に合うのか?」

「そこが問題だ。チップはできあがってはいるが、量産にはまだ時間がかかる。ましてや、PCメーカーがこのチップを取り込むまでには、さらに時間が必要だろう。だから、代替策を考えた。」

「代替策?」

「そう、もし、我々がモバイルコードに対応したアプリケーションを公開するまでに、ハードウエアが間に合わない時のために、M社の次期OSには、JRCMの機構をソフトウエアでシミュレートする機能を組み込んである。少なくともJITと同程度以上の性能は出せるはずだ。しばらくの場つなぎだがね。」

「このことは、OSリリース時に発表されるのか?」

「いや、しばらくは秘密だ。利用法を標準化する前にマニアックな連中に変にいじりまわされても困るのでね。」

「その情報が、万一漏れたら危険じゃないのか?。モバイルコードの機構は悪用可能だろう」

「だから君には、聞かなかったことにしてほしいのだが。」

ロバートはいたずらっぽい笑いを浮かべた。

「機密の保持にはM社も我々も最大限の配慮を行っている。万一、リバースエンジニアリングされても、容易に発見できないような工夫もしてある。関係者が悪意を持つ可能性もゼロではないが、最小限の人員しか巻き込んでないから可能性は極めて低いと思うよ。」

「なるほど、すべて計画済みというわけか・・・」

「そうだ、だが・・・・」

「だが?、何か不都合でもあるのかね。」

「わからないか?」

ロバートは上目遣いに篠原を見て言った。

「まさか・・・」

「そう、そのまさかを疑っている。君のところの事件が、これとなんらかの関係があるのではないか、とね。」

「だが、この情報は極秘なんだろう。」

「だから、逆に気になる・・・、といったところだ。侵入を受けた企業は、丁度、このバージョンのOSの日本語版を試験していたわけだからな。」

「じゃ、例のプログラムはモバイルコードなのか?」

「いや、それはわからない。モバイルコードの機構を悪用した悪性プログラムということも考えられる。だが、まったく関係ないかもしれない。ただ、あんなことをするようなプログラムは、モバイルコードの機構を使えば、比較的簡単に作れることは間違いない。」

「もし、そうだとすれば、どこからか機密が漏れだしたことになるな。」

「そうだ、実際に、モバイルコードについてではないが、このOSの仕様の一部が漏洩している証拠がある。」

「インターネット上の掲示板に情報が漏洩したという件は私も聞いている。問題のプログラムが持ち出したのではないかと疑われているようだが。」

「その可能性はある。だが、別の経路も間違いなくあったと我々は考えている。実際、M社は委託先の企業にすべての情報を公開していたわけではない。もちろん、モバイルコードについても公開されていないのだが、それ以外にも、ローカライゼーションに無関係ないくつかの仕様は伏せられている。しかし、漏洩した内容には、彼らには秘密にされていたものも含まれているのだ。」

「なんてことだ、それじゃ、日本で起こった騒ぎは、もしかしたら米国を巻き込んだ大事件の一部、ということになるな。」

「米国だけじゃない、インターネットは世界中を繋いでいるからな。君たちは、望むと望まざるとにかかわらず、厄介な問題に巻き込まれてしまったんだよ。」

篠原は事態の大きさに動揺を隠せなかった。厄介な問題と思ってはいたが、まさかこんな大がかりな事件に巻き込まれてしまっていようとは。いったい、これから何が起こるのだろう。不安な気持ちが押し寄せてきた。だが、逃げ出すわけにはいかない。この事件は篠原やその周囲の人間たちにとっても、なんとしてでも解決せねばならない重大なものだった。

窓の外は暗雲がたちこめて、時折、稲光と雷鳴がとどろいていた。

4.トラの尾 へ

メニューへ戻る