第72話 消えた波形、残った応答
エイラの「波形、消失しました」という言葉が、監視室に落ちてから、誰も声を出さなかった。
一秒。二秒。
修司はコンソールを見ていた。波形監視のウィンドウが空白になっている。数値が消えたのではなく、出力そのものが止まった。ユウトの魂波形を検出していたセンサーが、検出対象を失っている。
切り戻し条件のチェックリストが頭の中で動いた。ユウトのバイタルが閾値を下回った場合——波形が消えた時点で、数値上は閾値を下回っている。それだけ見れば、切り戻しを発動する条件に入る。
だが修司は動かなかった。
「修司さん」とエイラが呼んだ。声が低く、緊張している。
「切り戻しを発動しますか。私と二人で判断する取り決めになっています。私はどちらでも判断します。修司さんの確認を待っています」
「少し待ってください」
「波形がありません。対象が消えています」
「消えた原因を確認します。三十秒待ってください」
エイラが黙った。待っている。
修司は帰還セッションのログを最後の行から遡った。
〔帰還セッション:最終遮断処理実行中〕
その次の行を探した。
〔セッション終了——種別:自発的切断(正常終了コード0x00)〕
正常終了コード。
エラー終了ではない。強制切断でも、タイムアウトでも、例外処理でもない。セッションがゼロを返して終わっている。
「エイラさん。ログを見てください。セッション終了の種別コードは何と出ていますか」
数秒の間があった。エイラがログを開いている。
「……0x00、と出ています。これは」
「正常終了のコードです。エラーではない。旧仕様では、こちら側から波形が消えた時点で失敗と判断していた。でも、それは『こちら側のセッション終了』と『向こう側の受信確認』を同じログで扱っていたからです。セッション終了コードが正常なら、こちら側の処理は正常に終わっている」
「向こう側からの確認は」
「今から探します」
廊下の外で足音がした。扉が開いて、バルトロが入ってきた。
廊下でエイラの通信を聞いていたのか、あるいは監視室の外に立っていたのか、表情が固い。靴の音が速かった。
「マナベ殿。波形が消えたと聞いた。工程を停止せよ」
「今ログを確認しています」
「帰還処理は中断せよと言っている。古来より、帰還の儀礼において魂波形が消えた場合は失敗の兆候と定められている。記録にそう書いてある」
「その記録が作られた当時、こちら側のセッション終了ログと向こう側の受信確認ログを別々に扱う仕組みがあったかどうかを確認したいです」
「何を言っている。波形が消えた。それで十分ではないか」
「セッション終了コードが正常を示しています。エラーコードが出ていない」
「我々の技術には、そのようなコードの区別はない」
「古代の技術には区別があります」と修司は言った。
「古代召喚陣には二つの終了ログが設計されています。こちら側の接続が切れたことを記録するログと、外部座標から応答が返ったことを記録するログ、この二つが別になっている。今はセッション終了コードが正常を示している。外部座標の応答ログを確認できれば、どちらに当たるかが分かります」
バルトロが黙った。完全には引かなかったが、修司の言葉の意味を処理している顔だった。
「……確認するまで、工程を停止させる必要はないのか」
「停止は不要です。帰還処理はすでに最終フェーズを終えています。今は事後の確認をしています」
「事後」とバルトロは繰り返した。
「すでに終わっているということか」
「処理は終わっています。あとは結果を読むだけです」
外部座標のログを開くには、基盤炉の通常監視ラインの外側を見る必要があった。
召喚陣の入出力ポートは、帰還処理の間、サンドボックス化されている。そのポートに届いた外部からのパケットを確認する。帰還先座標の方向から何かが返ってきていれば、それが向こう側の応答だ。
修司はポートの受信ログを展開した。帰還処理の最終フェーズ開始から、現在時刻までの範囲を指定する。
数秒待った。ログが出力された。
修司はその中を見た。
一件。短いパケットが一件だけ、外部座標から届いている。
〔受信:外部座標応答。発信元——帰還先座標域。種別:到達確認(Acknowledgement)。タイムスタンプ——〕
タイムスタンプを確認した。ユウトの波形が消失した時刻から、数秒後だ。
「エイラさん。外部座標から応答が来ています。到達確認のパケットです。タイムスタンプは波形消失の直後です」
長い沈黙があった。
エイラが、そのログを自分のコンソールで確認しているのが分かった。数秒後、「確認しました」という声が来た。声が少しだけ変わっていた。「これが、向こう側からの応答ですか」
「現仕様上はそう読めます。受信先の確認を向こう側が返した、という形のパケットです。断定はできません。ただし、失敗を示すログはどこにも出ていない」
修司はメモを取りながら言った。
「帰還ログを三点セットで保存します。こちら側のセッション正常終了ログ、外部座標からの到達確認パケット、基盤炉の安定値。この三つを帰還工程の成功記録として記録します」
〔帰還工程記録:セッション正常終了・外部座標到達確認・基盤炉安定値——三点セットで保存〕
バルトロはその間も、修司の手元を見ていた。
怒っているのではなかった。困惑している、というより、理解しようとしている顔だった。
「……外部座標からの応答とは、元の世界から返ってきたものか」
「そう解釈できます。断定はできません。元世界側で何が起きているかは、このログからは読めない。ただし、こちらから送ったパケットに対して、向こうから返答が来た。それだけは確認できます」
「古代の記録には、このような応答が返ってきた事例は残っていない」
「成功した事例の記録が失われているか、あるいは成功した場合にどう確認するかという手順が書かれていなかったか、どちらかだと思います。失敗の前例は残りやすい。成功した場合の記録は、次の行動に移ってしまうと残らないことがある」
バルトロがしばらく黙っていた。修司のメモを見て、それから外部座標応答のログを自分でのぞき込んだ。眼鏡の奥の目が、ゆっくりと動いた。
「……このログが、後世に向けた記録として残るのなら。今日ここで起きたことを、正確に書き記せ。成功の兆候と、未確認の部分を、両方明記しろ」
「します。曖昧なものを確定させずに記録します」
バルトロが短く頷いた。それだけで部屋を出なかった。壁際に立ったまま、修司の作業を見ていた。
帰還準備室に、リゼットと聖女と、他の召喚者数人がいた。
ユウトが消えた後の帰還準備室は、空だった。石の床に、さっきまで人がいた空気だけが残っていた。聖女がその部屋の中央に立って、生命維持補助の処理を正式に終了させる手順を踏んでいた。
リゼットは扉の外の廊下に出て、壁に背を預けていた。召喚者の一人——カズヤが、少し離れた位置に立っていた。
「行ったんですね」とリゼットは言った。声は穏やかだった。
「ああ」とカズヤが答えた。
「波形が消えたとき、怖かったですか」
「怖かった。消えたとき、終わったと思った。失敗したと思った」
「修司さんがログを確認して、正常終了だと言いました」
「聞こえてた」
リゼットがカズヤを見た。カズヤは廊下の先を見ていた。視線がどこかに定まっていない。
「何を考えていますか」とリゼットが聞いた。
カズヤが少しの間、答えなかった。それから言った。
「あいつが帰れたなら、俺も……帰れる可能性があるんだと思った。頭では分かっていたつもりだったけど、実際に誰かが帰るのを見たら、初めて本当のことに思えた」
「カズヤさんは帰れます。手順は時間がかかりますが」
「分かってる。焦ってない。ただ、今初めて実感した、というだけだ」
リゼットは何も返さなかった。廊下に静かな時間が落ちた。
監視室では、修司が帰還ログの整理を続けていた。
三点セットの保存が完了した。セルアスに帰還成功の報告書を起草するよう依頼した。報告書の根拠として、今日取得したログを全て添付する形にする。
エイラが作業を終えてから、修司の隣に来て立った。
「基盤炉、安定しています。帰還処理中の負荷変動はすでに収束しています。旧テンプレートの復帰試行も、今は止まっています」
「ありがとうございます」
「修司さん。波形が消えたとき、切り戻しを発動しなかった判断は正しかったですか」
「ログが出てから分かったことです。あの時点で発動しなかったのは、セッション終了コードが正常を示していたからです。エラーコードが出ていたら発動していました」
「……私は、切り戻しを発動すべきかどうか迷いました。数値だけ見れば、条件を満たしていた」
「そうです」
「修司さんが三十秒待ってくれと言ったから待ちました」
「エイラさんが判断者として同席していなければ、私がログを見ている間に誰かが別の判断をしていたかもしれない。待ってもらえたことが重要でした」
エイラが少し間を置いた。
「……今日は、手順があったから、判断できました」
「そのための手順です」
夜、修司は外部座標応答のログをもう一度開いた。
保存した三点セットの中の一つ。到達確認のパケット。短い。中身は少ない。発信元の座標域、受信確認の種別コード、タイムスタンプだけだ。
もう少し詳細を開いた。
パケットの末尾に、付加情報のフィールドがあった。帰還処理の際に基盤炉が自動的に付与する補正値が入るフィールドだ。通常、これは処理の精度確認のために使われる。今回の帰還処理で使用したユウトの座標補正値が入っているはずだった。
修司はそのフィールドの数値を確認した。
見慣れた数値だった。ユウトの帰還先座標として処理した値だ。
だが、その隣に、もう一つの値が入っていた。
修司は手を止めた。
ユウトの座標補正値ではない数値だ。別の値が、同じフィールドの中に混在している。値の形式はユウトのものと同じだ。座標補正値として入っている。ただし、ユウトの帰還処理で使った値とは違う。
修司はその値を別のメモに書き写した。帰還処理の前に作ったチェックリストと照合した。召喚者一覧の補正値リストを引き出した。
ユウトの値ではない。
一致するものが、一覧の中にあるかどうかを探した。
なかった。
既知の召喚者の中に、この値に対応するものがない。
修司はもう一度メモを見た。値の構造は、召喚者の座標補正値と同じ形式だ。ただし、一覧にない。
別の可能性を考えた。
修司は自分の召喚時の記録を引き出した。自分がこの世界へ来たときの座標記録だ。
照合した。
違う。修司自身の召喚時座標とも一致しない。
修司はその値をもう一枚のメモに書いた。「補正値——出所不明」と横に書いた。
〔外部座標応答・付加情報フィールド:帰還先座標補正値に加え、未知の補正値が混在している。既知の召喚者リストに一致なし〕
何のための値かは分からない。今この時点では断定できない。
マルファスに見せる価値があるかもしれない。術式の構造から、このフィールドに複数の値が入る理由が説明できるかどうか。
修司はメモをたたんで手元に置いた。
今日の帰還は成功だ。ユウトは帰った。外部座標応答が残った。バッファは守られた。旧テンプレートの復帰ログも証拠として保存した。
それが今日の正確な結果だった。
この補正値の問題は明日以降に持ち越す。
夜の監視室は静かだった。警告色は黄色のまま、しかし今は赤に向かっていない。一段落ちたところで止まっている。




