第2話
第2話
カイは眠れなかった。
機関モニター席のリクライニングを倒し、三時間ほど目を閉じていたが、まぶたの裏に〇・〇〇三秒の断裂がちらつき続けた。バイナリデータの十六進ダンプが網膜に焼きついている。結局、毛布を蹴って起き上がり、個人端末を開いた。コピーしておいた航行ログの生データ。ブリッジの非常灯が落ちた暗闘の中で、端末の画面だけが青白く浮かんでいる。
巡航開始から十四時間。〈グレイハウンド〉は惰性に近い推力で第三解体施設への航路を進んでいる。リアクターの低い唸りが船体を通じて椅子の背に伝わってくる。安定稼働。異常なし。この船が抱えている異常は、推進系ではなく記録の中にある。
カイはタイムコードの不連続点を起点にして、前後三十秒間の全センサーデータを展開した。航行記録のメインストリームは、船の位置、速度、針路、推力——操舵に必要な情報を記録する。だが貨物船にはそれ以外にも、船体構造の健全性を監視するセンサー群が独立して走っている。外殻応力、温度分布、微細振動。これらは航行記録とは別系統のストレージに書き込まれる。改竄するなら、両方を同時に書き換えなければ整合性が崩れる。
「初歩的な話だ」
カイは呟きながら、振動データのスペクトル分析を走らせた。船体に取り付けられた加速度センサーは、推進系の振動、外殻への微小デブリ衝突、重力勾配の変化——あらゆる物理的な力を記録する。個々のセンサーが拾うノイズは些末だが、全体をフーリエ変換にかければ船の運動状態を再構成できる。
結果が端末に表示された瞬間、カイの眉間に深い皺が刻まれた。
問題の〇・〇〇三秒の前後。航行記録上、〈グレイハウンド〉は直進巡航中だった。速度一定、針路一定。推力変動なし。だが、振動データが示す運動状態は違っていた。
船体に横方向の加速度が記録されている。
数値は小さい。〇・〇四Gほどだ。通常の巡航中に発生する値ではないが、軌道修正や姿勢制御で生じる程度のものだと言い張ることはできる。問題は、この横加速度に対応する推力変動が航行記録にまったく存在しないことだった。船が横に動いたのに、エンジンは何もしていない。そんなことは物理的にありえない——外部から力が加わらない限り。
カイは振動データの時系列を拡大した。横加速度は〇・〇〇三秒の空白の直前に始まり、空白の直後にゼロに戻っている。空白の期間中のデータはない。振動センサーにも、同じ区間が欠落していた。だが、航行記録のほうは空白がない——「通常巡航」の値で埋められている。
「書き換えたのは航行記録だけだ。振動データまでは手が回らなかった」
あるいは、振動データの重要性を理解していなかった。操舵や航行判断に使うのはメインストリームのデータであり、船体構造モニタリングのセンサーログは、通常は造船所の定期検査でしか参照されない。この船は解体予定だから、その検査も永遠に来ない。見逃されて当然だった。カイが機関士で、船体センサーの読み方を知っていなければ、気づかなかっただろう。
---
カイは椅子から立ち上がり、補助コンソールの前に移動した。VRヘッドセットには手を伸ばさず、テキストベースのログ解析を続ける。仮想空間で見るより、生データのほうが嘘をつかない。
「シビル」
「はい、レンツォ三等機関士」
「航行ログ三番のタイムコード一四七三・八八一から一四七三・八八四の区間。船体振動センサーの記録を読み上げろ」
二秒の間。シビルの処理時間としては長い。半壊AIの演算速度を考慮しても、単純なデータ読み出しに二秒はかからないはずだった。
「該当区間の船体振動データは正常範囲です。特異な値は記録されていません」
カイの手が止まった。
個人端末の画面には、〇・〇四Gの横加速度が明確に表示されている。時刻一四七三・八八一から開始し、一四七三・八八三六で消失。数値は間違いようがない。だがシビルは、同じデータを参照して「正常」と言った。
前回はタイムコードの不連続を「正常」と言い、今回は振動データの異常値を「正常」と言った。
「シビル。俺の端末にはこのデータが表示されている。横加速度〇・〇四G。お前が見ているデータと照合しろ」
「……照合完了。レンツォ三等機関士の端末に表示されているデータと、船内ストレージのデータは一致しています。数値は正常範囲です」
「〇・〇四Gの横加速度が巡航中の正常範囲だと? 推力変動なしで?」
「巡航中の微細な振動は複数の要因で発生します。重力勾配、デブリ接触、構造共振——」
「推力記録との不整合はどう説明する」
シビルの応答が途切れた。三秒。五秒。合成音声が再開したとき、その声はわずかに平坦さを増していた。まるで、感情のシミュレーションすら停止したかのように。
「該当区間のログは正常です。航行に影響を及ぼす異常は検出されていません」
同じ文言だった。質問の内容に関わらず、同じ結論に収束する。これはAIの判断ではない。判断を上書きする指示が、シビルの中に埋め込まれている。
カイは椅子の肘掛けを握りしめた。
AIが嘘をつくことは、原理的にはありえる。出力フィルターで特定の情報を隠蔽するよう設定すればいい。だが、それは船のオペレーターか、管理権限を持つ者にしかできない。ナビゲーション補助AIの深層パラメータを書き換えるには、造船所レベルのアクセス権が要る。
つまり、航行記録を改竄した何者かは、データだけでなくAIにも手を加えた。改竄の事実を報告させないよう、シビルのレスポンスロジックにフィルターを仕込んだ。
この船のデータが誰かに見られることを——見られて、分析されることを、想定していた。
---
カイは立ち上がり、ブリッジを横切って通信コンソールの前に立った。解体予定の廃船に正規の通信要員はいない。だが緊急通信は乗組員の権利だ。資格に関係なく、誰でも発信できる。
通信パネルの電源を入れようとして、指がスイッチに触れる前に気づいた。パネルの状態インジケーターが消灯している。待機電力すら来ていない。
「シビル。通信系統の状態は」
「通信系統は現在オフラインです。廃棄回航中の通信は、緊急時を除き省電力のため停止されています」
「手動で起動する。通信モジュールへの給電経路を開け」
「了解しました。給電経路を——」
シビルの音声が一瞬途切れた。
「——給電経路は開放済みです。通信モジュール側で応答がありません」
カイは通信コンソールの下部パネルを外した。配線を目視で追う。メインバスからの給電ケーブルは接続されている。だが、通信モジュール本体のステータスLEDが一つも点灯していない。ハード的に死んでいる。
経年劣化か。三十二年前の船だ。通信モジュールが故障していてもおかしくはない。
だが、カイの視線は配線の束の奥、通常なら見えない位置にある接続端子に引き寄せられた。端子の周囲に、わずかな擦過痕がある。工具で最近触られた跡だ。錆や酸化被膜がない。新しい傷だった。
誰かが、出航前にこの端子を触った。
カイはゆっくりとパネルを戻し、通信コンソールの前から離れた。機関モニター席に戻り、端末の画面を見つめる。航行記録の改竄。AIへの隠蔽指示の埋め込み。そして、通信系統への物理的な介入。
三つが揃った時点で、偶然という可能性は消えた。
カイは個人端末の生データを暗号化し、二重のパスワードでロックした。端末をジャケットの内ポケットにしまう。胸元に端末の角が当たる硬い感触を確かめながら、カイは暗いブリッジの天井を見上げた。
垂れ下がった配線の隙間から、非常灯の残光がかすかに漏れている。
この船は、何を積んでいたのか。
あの〇・〇〇三秒に、何が起きたのか。
そして——誰が、何のために、それを消したのか。
解体炉までの航行時間は、残り三十三時間。カイの手の中にあるのは、暗号化された生データだけだ。シビルには頼れない。通信もできない。三万トンの棺の中に、問いだけが増えていく。