5秒間の消失
暗闇の中で、体が冷えていた。
渋谷の廃ビルの地下一階。非常階段の踊り場にうずくまって、もう三時間になる。コンクリートの壁と床が体温を吸い取っていく。四月の地上では桜が散り始めているはずだが、地下には季節が届かない。背中を壁に押しつけたまま膝を抱えている。この姿勢がいつから最も楽だったのか、もう覚えていない。
胃が鳴った。空っぽの臓器が、潰れかけた紙袋みたいに収縮する。配送ドローンの朝食サンドイッチを吐きかけてから、何も食べていない。6時間。数字を頭の中で転がした。昨日の今ごろは昼食を終えて、午後のメンテナンスタスクを片付けていた。木村課長の「問題なし」報告書を作って、給湯室で缶コーヒーを飲んで、誰にも話しかけられず、誰にも話しかけず、17時半に退勤していた。退屈な一日だった。退屈が、今は遠い。
喉の奥がざらついている。乾いた布を丸めて押し込まれたみたいだ。ビルの上階に自販機があったが、ログ認証で弾かれた。端末が凍結された人間に、購買機能は残されていない。蛇口をひねっても赤茶けた水が数滴垂れただけだった。水。コンビニの棚に並んでいる120円のペットボトル。昨日まで何の感慨もなく買っていたものが、今は手の届かない場所にある。現金は12年前に廃止された。協力者もいない。グレーゾーンで物々交換をする伝手もない。この完全キャッシュレス社会で経済から切断されるということは、水一杯にすらアクセスできなくなるということだ。人間は水なしで三日生きられるという。あと二日。そのカウントダウンはログ端末には表示されない。
唾を飲み込もうとした。舌が上顎に貼りついて、うまく剥がれなかった。
寒い。四月の地下のコンクリートは、体温をキャッシュのように吸い上げて返さない。走っている間は気づかなかった。走ることに意識を集中していれば、体の声を後回しにできた。プロセスの優先度を上げたまま処理していた。だが止まった。止まったら全部来た。空腹。渇き。寒さ。疲労。走り続けた脚の筋肉が乳酸で重い。膝が笑っている。深爪の指先は昨日よりひどく赤くなっていて、ベンチの縁を握りしめた後遺症が消えない。右手の人差し指の爪の先に血が滲んでいる。低優先度のバグが一斉にキューに積まれて、CPUが追いつかない。そんな感じだった。
地下に降りたのは、建物の構造がGPS信号を減衰させるからだ。保守SEの知識がそこだけ役に立った。ログ端末の位置精度は地上では5cm。地下一階ではコンクリートの遮蔽で数メートルに落ちる。「このビルにいる」ことは分かっても、「地下一階の非常階段の二段目に座っている」までは特定されにくい。
特定されにくいだけで、特定されないわけではない。時間の問題だ。
このビルは再開発地域の端にある築四十年の雑居ビルで、テナントは全て退去済みだった。入口のシャッターは半開きで、誰でも入れる。逃走中に見つけたわけではなく、通勤路の途中で「あそこにボロいビルがある」と何となく覚えていただけだ。計画性のかけらもない。バスの撹乱と同じレベルの行き当たりばったり。
投影ディスプレイを起動した。心拍数87。落ち着いている。三時間も座っていれば体が勝手に平常値に戻る。恐怖は残っているのに、数値だけが正常を示している。バイタルと実感の乖離。デバッグ中にテストが全件パスしているのに本番でエラーが出る、あの嫌な感じに似ている。
未来ログのカウントダウンが画面の隅に表示されていた。残り68時間。朝見た時は72時間だった。4時間が過ぎた。たった4時間走り回って、手に入れたものは何もない。失ったものなら列挙できる。社会的地位。経済活動。体力。体温。水分。そして——社会とのすべての接点。
壁にもたれて天井を見上げた。むき出しのコンクリートに配管が走っている。蛍光灯は切れている。唯一の光源はログ端末の投影ディスプレイだけだ。青白い光が自分の手の甲と、周囲の壁を薄く照らしている。この光だけが自分と社会を繋ぐ線で、同時に追手に位置を教える発信器でもある。
投影ディスプレイの隅に、昨日の推奨夕食メニューがまだ残っていた。「鶏むね肉のサラダ、推奨摂取カロリー580kcal」。殺人予測を抱えて廃ビルの地下にいる人間に、システムは夕食のサラダを提案している。胃がまた収縮した。昨日まで俺もこの推奨メニュー通りに食事を選んでいた。カロリーと栄養バランスが最適化された、予測通りの食事。味は毎日同じだった。それが今は届かない場所にある。
孤独だった。通勤中にすれ違う人間が何千人もいた頃は、孤独を感じたことがなかった。正確には、孤独に気づかなかった。ログ端末が繋いでくれていたから。スコアが社会との接点を保証してくれていたから。その接続が切れた今、俺は本当に一人だ。この地下に、俺以外の人間はいない。上の階にも、隣のビルにも。誰も助けに来ない。11時間かけて理解したことは、それだけだった。
——バグ。
さっき頭の中を通り過ぎた言葉が、引っかかった。
考えるな。何もない。出口はない。走り回って証明しただろう。この社会で逃げることは不可能だと。
だが脳の片隅が、その単語を手放さない。バグ。
俺はログクラウドの保守SEだ。第3層のデータ整合性チェック、エラー対応、定期メンテナンス。ネクストシステムズに入社してから三年間やってきた。地味で退屈な仕事だった。誰からも感謝されない。インフラの裏方。システムが正常に動いている限り、俺の仕事は存在しないのと同じだ。木村課長が「問題なし」と報告書にハンコを押すための下準備。三年間、毎日。
その三年間で——
必死に記憶を手繰った。三年分のメンテナンスログ。エラーレポート。テスト環境での作業記録。膨大な量のデータが、頭の中でインデックスもなく散らばっている。どこかにある。あの退屈な三年間に、一つくらい。一つだけでいい。この状況を変えられる何かが。思い出せ。思い出せ。手がかりを手繰るのは検索クエリを組み立てるのに似ている。キーワードを変えて、絞り込み条件を変えて、ヒットするまで繰り返す。ログ端末。ファームウェア。テスト環境。送信制御。送信——
デバッグメニュー。
心拍数が87から92に上がった。投影の数字がちらついて変わるのを、暗闇の中で見つめた。
一般市民はその存在すら知らない。ログ端末の投影ディスプレイには通常のUIしか表示されない。未来ログ、バイタル、通知、メッセージ。それが端末の「全機能」だと全国民が思っている。だが保守SEだけがアクセスできる隠し画面がある。端末のステータス確認、エラーログの閲覧、テスト用のコマンド実行。通常はテスト環境の端末でしか使わない。自分の端末で開くのは規約違反だが——もう規約違反を気にする段階は通り過ぎている。
そして——半年前に見つけた未修正のバグ。
記憶が返ってきた。定期メンテナンスの最中。テスト環境でログ端末のファームウェアを解析していた。午後三時の眠い時間帯。エナジードリンクを飲みながら、送信制御モジュールのテストケースを流していた。何百回もやった定型作業。だがその日、送信キューが一時的にフリーズした。端末はデータを記録し続けるが、ログクラウドへの送信が停止する。特定のコマンドシーケンスで再現性100%。タイムアウト処理が走って自動復帰するまでの間——およそ五秒。
報告書を書いた。「送信制御モジュールのコマンドシーケンス不整合による送信キューの一時停止。再現手順あり。深刻度:低」。上長の木村に提出した。木村は報告書を——読んだかどうかも怪しいが——「深刻度は低い。次のファームウェア更新で対応する」と言った。更新は半年経っても来なかった。
他の誰もこのバグを知らない。報告書はネクストシステムズの社内サーバーに保管されているが、深刻度「低」のバグレポートを読む人間はいない。ログ管理局にも上がっていないだろう。末端SEが見つけた、末端のバグ。
——待て。
手が震え始めた。空腹と、もう一つ別の何かが混ざった震え。唯一の可能性。これしかない。3時間逃げ回って、バスに乗って、裏路地に潜って、廃ビルに隠れて、何一つ有効な手段がなかった。この社会は完璧に設計されている。逃走不可能なシステム。だがシステムにはバグがある。完璧に設計されたシステムにも、末端にはバグがある。
拓也はこのことを知らなかった。拓也には武器がなかった。研究者だったが、予防拘束された後に何かを変える手段を持っていなかった。社会から切断され、部屋に閉じこもり、壁にログを貼って——そのまま壊れた。
俺にはバグがある。末端保守SEが見つけた、誰にも修正されなかった一つのバグ。木村課長の「深刻度は低い」が、今の俺には唯一の希望だ。
投影ディスプレイのデバッグメニューにアクセスした。手首をダブルタップし、投影面の左端を長押しし、表示されたコンソール画面に保守用パスコードを入力する。パスコードは個人ごとに異なるが、俺のは三年前に配布されたまま変更していない。末端委託企業にまで管理が行き届いていないネクストシステムズの杜撰なセキュリティに、今日だけは感謝した。
ログ端末の管理画面が開いた。暗い踊り場に、デバッグメニューの緑色の文字が浮かんだ。青白い通常UIとは異なる、保守用の文字色。端末のステータスが一覧で並んでいる。送信状態:アクティブ。記録状態:正常。バッテリー:給電中(動脈接続)。ファームウェアバージョン:v7.4.2。
v7.4.2。半年前と同じバージョンだ。更新されていない。
バグは生きている。
コマンドシーケンスを入力した。送信制御モジュールのフリーズを意図的に発生させるコマンド。半年前にテスト環境で確認した手順と同じだ。三つのコマンドを順番に。深爪の人差し指が投影面に触れるたびに、爪の先が痛んだ。血が滲んで、緑色の文字の上に赤い跡がついた。
三つ目のコマンドを入力した瞬間。投影ディスプレイにノイズが走った。
朝、品川駅のホームで投影を閉じようとした時に見たのと同じちらつき。あの時は「湿度や体温の変化で投影素子が揺れた」と思った。違った。あれはバグの兆候だったのだ。送信制御モジュールの不整合が、ノイズとして表面に出ていた。俺はそれを見ていたのに、気づかなかった。
五秒間。送信ランプが消えた。投影ディスプレイの「送信状態」が「アクティブ」から「停止」に変わった。五秒間だけ、俺のデータがシステムに届かなかった。送信ランプが点灯。タイムアウト処理で自動復帰。五秒分のデータが一括送信された。
五秒。
手が止まった。五秒では何もできない。立ち上がって三歩歩くだけで終わる。五秒間の送信停止。使い物にならない。胃の収縮が一段きつくなった。期待した分だけ落差がある。希望という名前のプロセスが起動して、即座にタイムアウトした。
だが——
デバッグメニューをもう一度確認した。端末のステータス画面をスクロールする。一番下に、テスト環境では気にしなかった一行があった。
> 推定停止可能時間:5:00
> 再実行可能までの推定時間:6:00:00(自己修復プロセス完了後)
五分。
文字を三回読み返した。震える指で画面をスクロールして戻し、もう一度読んだ。推定停止可能時間。五分。コマンドシーケンスのパラメータを調整すれば、タイムアウトまでの時間を延長できる。五秒ではなく、五分。五分間、ログ端末の送信を止められる。
ただし、その下の行が冷水をかけた。再実行まで六時間。端末のファームウェアには自己修復機能がある。バグを突いて送信を止めても、六時間後には端末が自力でパッチを当てる。そしてまた同じバグを突く——いたちごっこだ。しかも修復のたびにバグの隙間が狭くなる可能性がある。五分間が、次は四分になるかもしれない。
五分間あれば——走れる。このビルから出て、渋谷の雑踏に紛れるところまで移動できる。ログ端末の送信が止まっている間は、環境ノードが「人がいる」と検知しても、誰なのかは特定できない。人混みの中の幽霊になれる。五分間だけ。
パラメータの調整手順を頭の中で組み立て始めた。タイムアウト値の変更、送信キューの再初期化、フリーズの持続時間制御。手順は三段階。実行には約一分——
階段の上から音がした。
モーター音。
全身が固まった。四つの足が床を打つ、正確で均一な歩行音。人間の足音ではない。人間は足音がばらつく。疲れたり、躊躇したりするから。この足音にはそのどちらもない。金属と金属が規則的に床を叩く音。
巡回犬。
犬型四足歩行ロボット。黒い外装。約60cm。屋内捜索用。保守SEの俺はスペックを知っている。顔認識。体型認識。歩容認識。暗闇でも赤外線で顔を捉える。ログ端末の信号と照合する。一秒もかからない。走っても追いつかれる。階段も瓦礫も踏破する四足歩行。疲れない。迷わない。止まらない。人間のように判断を誤らない。スペックを知っているからこそ分かる——逃げられない。
ログ公安がビルを特定した。GPS精度が落ちる地下に潜ったことが、逆に「電波が不安定になった場所=地下のある建物」と推定する手がかりになったのだ。
モーター音が近づいてくる。上の階から、一段ずつ降りてくる。正確で、均一で、疲れを知らない歩行。
あと何秒で踊り場に来る。何秒で俺の顔を認識する。確保命令が出る。予防拘束。拓也と同じだ。あの暗い部屋。壁に貼られたログ記録。そして圏外への消失——
投影ディスプレイの緑色の文字が、暗闇の中で揺れていた。パラメータの調整。まだ完了していない。五分。五分を手に入れなければ、ここで終わる。
指が動いた。デバッグメニューのコマンドラインに文字を打ち込んでいた。タイムアウト値の変更コマンド。手が震えている。深爪の人差し指が投影面に触れるたびに、爪の先から血が滲む。コマンドラインの緑色の文字の上に、赤い点が散った。間違えるな。一文字でも間違えたらコマンドエラーで最初からやり直しだ。
巡回犬のモーター音が、もう一つ上の階に来ていた。




