Javaで最後

 シリコンバレー支店の開設準備中、Sun社を訪問したときにJavaの話を聞いた。営業がやけに不安そうに説明したことを覚えている。まだ打診の段階だったのだ。「ハードを更改してもソフトは使い続ける」という思想に共鳴し、ゴスリング氏が開発に参画していると知って支店のテーマの一つに決めた。(ゴスリングはEmacsエディタの開発者)
 NTTの研究所は当時、次期交換機を検討していた。(研究所はいつでも次期を検討しています)CPUもアーキテクチャも一新し、プログラムも完全に作り変える構想だった。しかし、電話需要は頭打ち、性能向上のニーズはない。高密度・小型化をセールスポイントにしていたが、古い電話局は古い交換機に合わせて建てられている。高密度実装で何倍も重い交換機を設置するには床荷重が足りない。床に鉄の補強材を敷き、間隔を空けて荷重を分散する必要がある。そこまでして次期開発が必要だろうか。そして、そんな次期ハードのためにプログラムを全面作り直すのか。
 全国の交換機をすべて次期に置き換えるまで何年もかかる。その間、新しい電話サービスのプログラムは、新旧両方に開発しなければならない。ハードを更新してもソフトは使い続けることを考えるべきだ。(ノーザン社は十年も前に仮想化を提案していた)
 Javaを交換機に適用できないかと考えた。中間言語を解釈実行するインタープリタ方式は性能が出ないと思われがちだ。しかし、交換プログラムの中でサービスを決定する部分は分析ツリーと呼ばれ、テーブル駆動だ。交換に特化した中間言語なのだ。ハードと高速にインタフェースする部分はC言語などで書けばよい。(ノーザンでは、そこにPascalを使っていた)
 最大の課題はガーベージコレクションだ。動的メモリの言語では、もう使わなくなったメモリをシステム側で解放する。このゴミ回収処理の間、アプリが停止しないよう、うまくやらねばならない。大学院でLISPの処理系を作り、研究所ではELISを使っていたから、ガーベージコレクションの知識はあった。リアルタイムガーベージコレクションの研究者に会い、可能性を探った。
 当時Javaは、パソコンやスマートフォンで動かすことを想定していた。CPUは遅い。メモリも狭い。古い交換機のような環境だ。のちにJavaはサーバで動かすことになる。CPUは高速になり、またマルチコア(1チップの中に複数CPU)が普及する。メモリも広大になった。Webアプリケーションは、サービスを決定し、実行はデータベースの操作だ。排他制御をデータベースで行えば、WebアプリはマルチCPUで並行処理できる。一つのCPUでガーベージコレクションしている間も他CPUが動いているから、Webとしては停止しない。
 ライブラリもJavaで書く。従来ならハード毎、OS毎にライブラリをコンパイルしなければならなかった。中間言語はコンパクトだから、膨大なライブラリもメモリを圧迫しない。
Javaで開発も容易になる。パソコンでコーディングし、テストもできる。従来は、ターゲットにロードして試験していた。コーディングとテストを高速に繰り返せるようになったことで、プログラミングのスタイルも変化していった。(テスト駆動開発などと呼ばれる)
 Javaによって古いメインフレーム文化を打ち壊し、Sunは成功した。しかし、Javaは開発のパラダイムも変えた。Javaを使った開発プロジェクトの管理者から「わからん」とよく聞いた。「勉強してください」と何度言ったことか。本屋に行けば関連書籍が並んでいる。しかし、あまり多くてひるんでしまう。昔は、1つのプログラム言語に解説書は数冊しかなかった。
 Javaでは書籍もコンサルタントも百花繚乱、たくさんの略語が飛び交う。まるでDAIGO百人登場だ。これについて行けない管理職が、若手Javaプログラマに盲従し、多くの失敗プロジェクトを生んだ。
 私は多くのプログラミング言語を経験してきたが、Javaで最後だと思っていた。ところが、帰国から5年後、医療分野で新規事業を企画することになり、COBOLと出会う。保険請求システムORCAである。COBOLで書かれたオープンソースだ。まずソースを読んでみよう。本屋でCOBOLの書籍を探すが、見つからない。会社の図書室の片隅に古い教科書が一冊残っていた。こんな言語を使い続けていていいのか。COBOLをJavaに変換することを目指してソースを読み始めた。
 問題はCOBOLより、その古風なプログラミングスタイルにあると気づいた。メインフレーム時代のユーザインタフェースだ。操作方法を変えず、プログラムだけJavaに変えるのでいいのだろうか。もう一つ、Javaに書き換えたとして、それをどうビジネスにするか。とにかくORCAを動かしてからだ。だが、初期のORCAはとても気難しく、結局、部下は動かすことができなかった。
 そんなとき韓国視察の話が舞い込んだ。病院や薬局は毎月保険を請求する。日本では大半が紙での請求だったが、韓国では電子データでの請求が8割を超えているという。「日本での電子請求ネットワークの構築、お手伝いしますよ」韓国の経産省OBが視察をアレンジしてくれた。
 若い役人に連れられてソウル近郊の病院や薬局を回った。上がってきた請求を審査するセンタでは実際の画面も見せてもらった。(ハングルは全く読めません)
 私はデータ量や転送速度を気にしていたのに、病院の事務員が質問してくる。「請求が却下されるんですよ。日本ではどうですか?」審査センタでは病院に対する不満が噴出した。「こんなひどい請求が上がってくるんですよ。ほら」
 ホテルに戻り、さて今後どう進めたものか、途方に暮れていると、妻から電話がかかってきた。実家でお母さんが倒れていた。いま入院させたところ。脳腫瘍だった。それから、手術、リハビリ、介護施設探し、と日本の医療と介護を、妻と勉強することになった。
 医療介護分野の新企画はすぐ終了となり、他の企画へ。しかし、あのときちゃんとプロジェクトを立ち上げていたら。。。電子カルテの開発に飛び込んだのはNTTを退職したあと、お母さんの七回忌の年だった。ORCAに再会する。まだCOBOLだった。カルテの開発はPHP。Javaは私の最後の言語ではなかった。

この記事が気に入ったらサポートをしてみませんか?