第三十一話:極微の共鳴
週末。研究室のドアを開けると、そこには稼働し続けるICEの唸り音が静かに響いていた。
「失礼します、‥‥お久しぶりです、今川先生」
忠夫の手には、二週間の執筆コーディングの成果が刻まれた一本のカセットテープが握られている。
「……来たか。佐伯くん、準備は出来ているよ」
今川は、ICEインサーキット・エミュレータの前で、すでに準備を整えていた。
忠夫はテープをセットし、ロードコマンドを叩く。ピーという不規則な変調音が、バイナリデータをメモリ空間へと流し込んでいく。
「……では回します」
忠夫がリターンキーを叩いた瞬間、モニターに鮮やかな青と黒の画面が浮かび上がった。
中央で二つに分割されたフィールド。左右それぞれに、独立して落下を待つブロック。今「対戦型パズル」が、そこに産声を上げた。
「……信じられん」
今川がモニターを覗き込む。二人はキーボードの左右に分かれ、ブロックを操作し始めた。
「この描画速度……。左右のタスクを完全に独立させながら、一ミリ秒の遅延もなく同期させているのか。」
だが、二人が交互にラインを消し、激しいデータのやり取りが発生した直後に「それ」は起きた。
「……っ、止まった」
忠夫が四ラインを同時に消し、相手側へ大量の攻撃データを送り込んだ瞬間、画面が激しくフラッシングし、システムが完全にフリーズした。
「スタックオーバーフローか……?」
今川がコンソールからレジスタの中身を呼び出す。忠夫は画面を凝視し、首を傾げた。
(……何故だ)
一方がラインを消し、相手に攻撃を送る「割り込み処理」の最中に、もう一方がブロックを移動させる命令を送り込んだ。二つのイベントが全く同じクロックで衝突し、リアルタイムOSのタスクスケジューラが無限ループに陥っている。
「なるほど、佐伯くん。ここを見てごらん」
今川がデバッガのコンソールを指差した。
「君のスケジューラは、割り込みを完全に平等に扱おうとしている。だが、この非力なチップでは、衝突した際の優先順位が確定していないと、演算が互いの尻尾を追いかけ始めてしまうんだ」
今川は、ソースコードのリストを追いながら、ペンで一箇所を鋭く指し示した。
「ここを、こうしたらどうだ? 攻撃データの転送タスクに、描画タスクよりも一段階高いプライオリティを与え、かつ、衝突時にはフラグを立てて一クロック分だけ処理を逃がすんだ。癖を逆手に取るのさ」
忠夫はハッとして目を見開いた。
自分は「完璧な並列」を目指すあまり、ハードウェアが持つ「不器用な癖」を考慮に入れていなかった。今川の指摘は、理想論を現実に着地させるための、鮮やかな解決策だった。
「……ありがとうございます、先生。見えました」
忠夫の指が再びキーボードに伸びた。
今川がICEで示したアドレスを狙い、エディタ上でアセンブラのニーモニックを書き換えていく。一クロックを奪い合う熾烈な演算の世界。忠夫は、チップが持つ物理的な限界と対話するように、優先順位のロジックを再構築した。
「書き換え、終わりました」
「よし、バイナリを流し込むぞ」
今川がICEを操作し、パッチを当てた新しいプログラムをターゲットのメモリへと転送する。
「……リセット、スタート」
今川が実行キーを叩いた。
モニターに再び、あの青と黒の世界が戻ってくる。二人は無言でキーボードを叩き、先ほどと同じ激しい攻撃の応酬を再現した。
四ライン消去。大量のデータがバスを駆け抜ける。
一瞬、ICEのコンソールに割り込み競合のフラグが立ったが、システムは沈黙しなかった。今川の授けた「遊び」が、衝突の衝撃を逃がしたのだ。
「……動いた。止まらないぞ、佐伯くん!」
今川が歓喜の声を上げる。モニターの中では、ブロックが滑らかに、そして確実に、未来へと向かって落ち続けていた。
二人の知性が、小さなモニターの中で共鳴を始めた。




