新人の研究企画はトレーサ
研究所の新人研修には、「研究テーマ企画」もあった。テーマは上司が配属時にくれる。私のは「障害時の縮退運転」だった。故障したハードを切り離して交換機を運転し続ける研究だ。しかし、これはすぐ取りやめになり、「トレーサ」に替わった。サブルーチンの呼び出しをトレースするデバッグ支援ツール。この頃、交換機の開発ラッシュだったから、デバッグ支援が望まれていた。
このツールは、某大手メーカの提案だった。そのメーカのベテラン技術者が、私の隣でタバコをくゆらせながら企画書を書いていたときには、それが私のテーマになるとは知らなかった。企画書は鉛筆書きで、ところどころに空白があった。私は上司に言われ、発注伝票に「3千万円」をゼロの数を数えて書きこんだ。
ツールが完成し、納品されたとき、企画書の空白は埋まり、概要設計書になっていた。そこまで見通して企画書を書いていたのだ。
発注してしまうと、開発会議や担当モジュールで忙しく、トレーサのことは忘れた。有名なメーカに大金を払ったのだ。安心していた。納品物を見せられて、納入日が明日だと思い出した。
ソースコードを見たいと言うと、メーカの若い担当者は少し躊躇した。見て驚いた。サブルーチンの名前がウルトラマンや怪獣なのだ。「ウルトラマンがタロウを呼び出す」では、このプログラムが何をやっているのかさっぱり分からない。こんなものは受領できないと、徹夜で赤線を引き、ポストイットを付けて突き返した。
プログラムの名称付与には思い入れがあった。交換機では、名称付与方法を厳しく規定していたからだ。そのマニュアル作成が配属後、最初の仕事だった。設計書から用語を抽出し、辞書編纂のようだった。メーカも規定通りに付与していた。このことが、のちにとても役立つ。
さて、翌日の納入日、メーカチーフがリーダのところにやってきた。しばらくして私も呼ばれ、「まあ、受け取ってやれ」となった。腹は立ったが、ツールを動かすことが先決だ。
いよいよトレーサを組み込んで試運転する日、マシン室に行ってみると、メーカはチーフも来ていて、なにやらごちょごちょやっている。トレースできないのだ。
このトレーサは、プログラム間をジャンプするテーブルにアクセスしたとき、割り込みが発生するようハードを設定しておく原理であった。ところが、その割り込みが発生しない。ハードの仕様書通り設定しているのに、である。試運転の日にお蔵入りになってしまった。
反省し、後悔した。三千万円も投じて、役に立たないウルトラマンプログラムを作ってしまった。ハードの仕様書を信じたメーカも悪いが、そんなメーカを鵜呑みにした私に責任がある。
リベンジしてやる。ハードに頼らない方法でトレースすればいいのだ。サブルーチンの呼び出しメカニズムを洗い直し、打開策を考えていたら血尿が出た。ジャンプテーブルを差し替える案を思いついたのもトイレでだった。
ジャンプ先をトレーサにしてしまう。トレースしてから、本来のジャンプテーブルを引き直して飛び直す。今度は自分で企画書を書き、上司に頭を下げて二千万円を了承してもらった。試運転でトレースを確認したときは、メーカと万歳した。
ところが、受話器を上げると交換機が輻輳になってしまう。当時の交換機のCPUクロックは60メガヘルツ位だった。今のCPUはギガヘルツだから、数百倍も違う。サブルーチンのパラメータをメモリにセーブするだけなのに当時の交換機は輻輳になってしまう。それくらいギリギリの性能で運転していたのだ。
トレース対象を絞るなど工夫してみたが、デバッグ対象サブルーチンを予め決めるのは難しい。面倒だという悪評が立つと、どのプロジェクトも使ってくれなかった。
研究テーマ企画発表会では、各プロジェクトから「期待しています」と好意的だったが、それから一年以上経っている。各プロジェクトは試験が真っ最中になっていて、トラブルは御免だった。
七年後、この交換機のプログラムを改良するミッションで、久々にソースを眺めるまで、トレーサのことはすっかり忘れていた。交換プログラムに組み込むデバッグ支援ツールはいくつかあったが、リリース前に完全に取り除くことになっていた。性能に影響しないツールだったが、現場で間違って起動することがないように。
だから、私のトレーサも、リリースまでに取り払われていると思い込んでいた。まさか七年間も、全国の交換機の中に潜んでいたとは。受託して開発したメーカでさえ、削除できなかった。きれいさっぱり消去できるのは、原理を考え、作成を指揮し、失敗し、放置した、この私だけだ。
ところで、トレーサがない交換機を、当時どうやってデバッグしていたのか。若い人には想像できないかもしれない。
大抵はまずメモリを印刷する。「このメモリがこうなっているなら、きっと」と推測していく。それで判らなければ、プログラムがここまで来るか、トラップをしかける。当時は絶対番地でコンソールパネルから設定した。一九ビットのアドレスに対応したスイッチが並んでいて、ここに2進で設定した。そのために絶対番地が入ったリストが必須だった。
マシン室の冷たい床にリストを広げ、「ここまで来る?」「来た」「じゃあ、その先ここは?」と絶対番地を読み上げる者とパネルのスイッチを操作する者の二人で追跡する。マシンが使える時間は限られているから、ペアの呼吸が重要なダブルス競技だった。