今日,協力会社のまとめのひとと体制の打ち合わせをしていたら,ひょっこり I 氏が現れた。私は驚き「お久しぶりです」と大声をあげていた。I 氏は会社の大先輩である。もう十年以上前に直系の関連会社に転属し,先頃,定年退職した。ところが 2 年前に旗揚げした IT 企業にこのたび顧問として迎えられ,今日,私の事務所にご挨拶に参上したとのことだった。
私が SE になって 2 年目,私の担当プロジェクトに I 氏がオンラインプログラム設計の取りまとめ技師としてやってきて以来のお付き合いである。I 氏は,日本のコンピュータ産業の草創期に高卒で入社し,鉄道座席予約オンラインや株式取引オンラインなど,私の会社が社運をかけて取り組んだ社会インフラ・システムをいくつも設計・開発してきた現場の本当のプロである。私はこれまで 20 年に及ぶ会社生活で,その「芸術的」技量をもって本当に尊敬に値すると思った仕事仲間は I 氏をおいて他にいない。私の会社にはすごいエリート研究者が数多くおり,私はそうした博士先生ともしばしば一緒に仕事をしてきたけれども, I 氏の設計能力と経験との前ではそうした鼻の高い先生たちのスマートな技術も吹っ飛んでしまうのである。それは,プロジェクトの修羅場で,巨塔のごとく立ちはだかる困難な障壁を突き崩して行く I 氏の姿を目の当たりにしたからである。
I 氏がやってきた当時,私の担当の大規模オンライン検索システムは性能問題で火を吹いていた。月額 2 億円近い最新鋭の超大型汎用機を導入する予定だったが,組合せ試験途中のシステムのパフォーマンスを開発機上で性能測定したところ,目標値の 10 倍の CPU 時間を要することがわかった。このシステムは,トランザクション当りの CPU 時間を 0.3 秒以下に抑えないと,顧客要求の端末トラフィックを要求応答時間で捌くことができない。それは待ち行列計算でわかっていた。それで,ダイナミックステップ (走行命令数) を処理装置性能から割り出し,トランザクション・五百万ステップ以下,AP メモリ所要量 5MB 以下とすることが基本設計時点での私たちの目標であった。実測の結果,ダイナミックステップのコマンドミックス (検索モデルの加重平均値) が五千万ステップにも達してしまったのである。おまけに,保守性を優先させプログラムモジュールをダイナミックリンクで設計したことが裏目に出て,モジュールのローディングでシステムがフン詰まってしまった。
最新鋭計算機はできたてのほやほや,出荷検査の最中であった。顧客システムをその工場に持ち込んで性能試験をはじめたころ,その工場の計算機室の控え室で,I 氏を含めて私たちは大型計算機処理装置のハード設計者,OS,DBMS,DC (オンライン通信コントロール) とユーザプログラムのソフト設計者とともに,連日,試験しては対策会議をやった。そのころはなにからなにまですべて自社で開発した計算機システムで商売のできた素晴らしい時代であった。どのような問題も自分たちだけで手を打つことができた。中央処理装置の設計者は製品の信頼性との兼ね合いでギリギリまでクロックチューニングをしてくれた。I 氏は検索のメインパスのアセンブラ・コードを自ら解析し,ラインプリンタ出力紙の裏にフリーチャートを書いて問題点のポイントを説明して対策案を打ち出した。システムは数百万行の規模があるので,I 氏はほんの一握りのコードを漁ったに過ぎないのだけれど,それで十分だった。あとは何十人もいる担当者が手分けして同じようなコードの問題を手直ししてゆけばよかったからだ。こうして I 氏のおかげでダイナミックステップ数を激減させ,サブルーチンをメモリ常駐させてローディングオーバーヘッドをなくす対策を完了することができた。ひと月 2 億円の計算機を 10 台並べないといけない事態にならずにすんだのである。
いけない。「ああ,あのころはよかった」式になりつつある。