第51話 カーネル・パニック
```
KERNEL PANIC: Fatal error detected in world-layer process.
System cannot recover. All active threads suspended.
Initiating emergency dump...
Bug density: 85% → CRITICAL
```
その文字列が、俺の目の前に浮かんだ。
デバッガーズ・アイが、世界のコードを読み取っている。けれど——今この瞬間、世界の源コードは読み取るどころか、ページを繰るそばから書き換えられていた。
アドミンが起動した。
ただそれだけで、世界が変わった。
---
空の亀裂は広がり続けていた。
セキュリア要塞国の城壁の上から見下ろすと、北の空が——文字通り「裂けていた」。岩盤が割れるように、あるいは紙が千切れるように。その向こうに金色と黒が入り混じった空間が覗いていて、そこからは常識とは異なる何かが漏れ出していた。
空気が違う。
光が——おかしな角度で差し込んでいる。
太陽は北西にあるはずなのに、城壁に落ちる影は東を向いていた。
「亀裂から光の屈折が起きている」メモリが言った。「空間座標の参照先がずれています。亀裂の近傍では、位置情報が——」
「座標値がバグってる」俺は言い換えた。「本来ここにあるはずの光が、別の場所で届く」
「その通りです」
「デバッガーズ・アイでどこまで見える」
「現在の亀裂は——七カ所。五大王国の主要都市の上空に集中しています。最も大きいのはロジカ王国のカラン首都上空——直径およそ三キロメートル」
「三キロ」
「六時間前は一キロ以下でした。急速に拡大しています」
急速という言葉の意味を、頭の中で計算し直した。六時間で三倍。同じペースが続けば——十二時間後には九キロ。二十四時間後には二十七キロ。三十キロ超の亀裂が首都の上空に。
都市機能は麻痺する。
「カウンターは」
「85%——変化なし。現時点では横ばいです」
「今は、な」
俺はそれだけ言った。
アドミンが起動した直後のこの静けさは、嵐の前の静けさだと感じていた。
---
「報告する」
シェルが城壁から俺を呼びに来た。朝から動き通しで、目の下に濃い疲労が滲んでいる。
「ロジカ王国、北部二十三区で重力反転。昨夜から続いている。住民が天井面に張りついたまま動けない状態。建物の構造体にも影響が出始めていて——重力反転した状態で荷重がかかり、崩壊が始まっている」
「規模は」
「影響範囲は半径二キロ弱。人口密集地だ。住民への避難勧告は出しているが——天井にくっついている人間をどう降ろすかで、現地の魔法師が対応に追われている」
「重力反転を直接修正するか、それとも落下を緩和するかで話が変わる」
「どちらも必要だ」
俺も同意した。
重力反転を修正すれば、天井に張りついた住民は今度は「落ちてくる」。高さによっては致命的になる。単純に直すだけではダメだ。段階的に重力を戻すか、あるいは先に下に何かを敷くか。
「他は」
「ビジュアル帝国、ラスル区で時間の加速が起きている。一分が——体感で三十分に相当する速度になっていて、住民の老化が肉眼で確認できるレベルで進んでいる。緊急度は最高だ」
「時間係数が誤った値に書き換えられている」俺は言った。「誰かが、か——アドミンが起動した影響で自動的に変化したか」
「後者だと思う。夜中に世界全域で無数のバグが自然発生していた——アドミンの起動に伴う初期化プロセスの副作用だと見ている」
「他は」
「ネットワーク連合の中継塔、四十七基が同時停止。データベルグ公国の古代図書館で、記録魔法が暴走して本の文字が全て消えている。セキュリア要塞国は——今のところ自国の防衛に集中できているが、城壁の外では状況が違う」
一息で報告を終えて、シェルは俺を見た。
「お前が動ける?」
「動く」
「——昨夜、五時間、立ちっぱなしだった」
「眠れなかっただけだ。問題ない」
「それが問題だ」シェルが言った。声は静かだが、目が真剣だった。「昨夜の対処で、自己コードの劣化が六%を超えている。追加の酷使は——」
「分かってる」
「分かっているなら——」
「シェル」俺は言った。「ロジカの住民は今も天井に張りついていて、ビジュアル帝国の住民は今も老化している。俺が動かない理由はない」
シェルは何かを言いかけて、止めた。
「——だろうと思った」短い沈黙の後、彼はそう言った。「座標データを送る。優先度は時間加速——ビジュアル帝国が最重要だ。老化は不可逆になりうる」
「了解した」
---
ビジュアル帝国、ラスル区。
転移してきた瞬間に、俺はそれを「感じた」。
空気が——重い。
時間が、形を持っているような気がした。
通常の時間は「流れる」ものだが、ここでは違う。時間が「押し寄せてくる」。立っているだけで、何かに追いかけられているような感覚があった。
「デバッガーズ・アイ——展開」
視界が変わった。
現実の風景の上に、もう一層の情報が重なって見える。これがLv3の力だ——環境変数の直接読み取り。世界のコードが、薄い膜のように浮かんでいる。
時間を定義する変数は、通常「time_coefficient = 1.0」だ。
ラスル区の値は——「time_coefficient = 30.47」
三十倍。
住民から見れば、一秒が三十秒として過ぎていく。一日が——ひと月分の時間として体に刻み込まれる。
俺は変数に手を伸ばした。
環境変数を直接書き換えることは、Lv3の能力の核心だ。書き換える感触は——コードのデプロイに似ている。前の世界でもやっていた感覚。サーバーの設定値を書き換えて、本番環境に変更を反映させる。それと同じ、でも——ここでは「本番環境」が現実世界そのものだ。
`time_coefficient: 30.47 → 5.0`
まずは急激な変動を避けて、段階的に戻す。
変化は——即座だった。
空気の重さが和らいだ。押し寄せる時間の感覚が、少し引いた。
住民の動きが——ゆっくりになる。
ゆっくりになる、というのは逆説的な表現だが、彼らから見れば「世界が正常な速度を取り戻した」ということだ。加速した時間の中で走り続けていた体に、ブレーキがかかる。
「マスター、時間係数の変化を確認しました」
「次の段階に進む——3.0まで下げる」
`time_coefficient: 5.0 → 3.0`
数秒待つ。住民の様子を確認する。急激な変化は、それ自体がバグを誘発する。急ブレーキは、急加速と同じくらい危険だ。
「1.5」
「1.2」
「1.0」
最後の書き換えは——一番慎重に。
`time_coefficient: 1.2 → 1.0`
空気が——正常に戻った。
時間が、普通に流れていた。
住民が、互いに顔を見合わせていた。自分たちが「何分」過ごしたのかを、まだ理解できていないらしい。一人の老人が、自分の手を見ていた。皺が増えていた。戻らない時間が、その手に刻まれていた。
「老化した部分は元に戻るか」
「戻りません」メモリが答えた。「時間変数は修正できましたが、既に進行した生物学的変化は——源コードのバグ修正では対応できません」
「そうか」
俺は老人の方を見た。老人は——笑っていた。泣きながら、笑っていた。
隣に若い女性が駆け寄っていた。娘か孫か、そういう誰かだろう。老人が彼女を抱きしめた。
不可逆な変化があっても——生きていれば、まだ何かがある。
「次に移動する」
---
ロジカ王国、北部二十三区。
重力が——逆転していた。
空が下で、地面が上だった。
俺は転移してきた瞬間、とっさに周囲の物に手をかけた。壁の外壁。環境変数が確認できるまで、物理的な支点がないと思考が散漫になる。
`gravity_vector: (0, 9.8, 0) → (0, -9.8, 0)`
逆転している。
空の方向に「落ちている」。
建物の構造は悲惨だった。柱が下(本来の上)方向に圧力を受けて、いくつかの建物では既に屋根が陥没していた。「床」が今や「天井面」として荷重を受けているためだ。木造の家屋は特に脆く、俺が転移してくる間にも、遠くで建物が崩れる音がした。
天井には人がいた。
二十人ほど——いや、もっとか。建物の中にいた人間は全員、天井に張りついている。表情は恐怖に強張っていた。子供が泣いていた。老人がうずくまっていた。
「まず落下を緩和する」
俺は変数を読んだ。
`gravity_vector: (0, -9.8, 0)`
単純に反転させれば——彼らは今度は「落下してくる」。高さは三メートルから六メートル。何も準備せずに落とせば、骨折者が出る。最悪、死ぬ。
「段階的に変える。まず半分——4.9に」
`gravity_vector: (0, -4.9, 0)`
人々が天井から少し浮いた。
「絶対値を下げて——1.0まで」
`gravity_magnitude: 9.8 → 1.0`
重力を弱くする。体重が軽くなる。月面に似た状態。
天井の人々が、ゆっくりと浮き上がった。重さが六分の一になった体を、手足で制御しながら、少しずつ床の方向へ降りてくる。
「2.0——3.0——5.0——7.0——」
段階的に戻す。
全員が地面に降り立った瞬間、正常な重力が戻った。
「「「——!」」」
歓声が上がった。叫び声とも泣き声ともつかない声が、二十三区の空に響いた。子供が地面に足をつけた瞬間、しゃがみこんで地面を触っていた。硬くて冷たくて、確かにそこにある床の感触を、確かめるように。
俺は少しだけ、それを見た。
それから向き直った。まだ終わっていない。
---
「マスター」
転移の瞬間にメモリが呼んだ。
「何だ」
「確認してください——右手を」
俺は動きながら、右手を見た。
揺らいでいた。
指の輪郭が——ノイズのように。一瞬だけ透けて消える。また戻る。また消える。
「自己コードの劣化——現在9%」
「さっきから3%上がった」
「三十分の使用で3%です。このペースでは——」
「分かった」
「分かっただけでは——」
「分かってる」俺は言った。「でも今は止まれない」
メモリが沈黙した。
反論しないが——納得もしていない。そういう沈黙だった。
俺は自分の手を見た。透けて消える指を。
痛みはない。感覚もある。普通に動く。ただ——見た目が、不安定だ。存在が揺らいでいるような感覚が、表面に出てきている。
「劣化が何%になると、機能に影響が出る」
「20%を超えると——デバッガーズ・アイの精度が落ちます。30%を超えると——環境変数へのアクセス自体ができなくなる可能性があります」
「今9%で、使用を続けると」
「——現在のペースで四時間で20%に達します」
四時間。
「分かった。使い方を変える」
俺は判断した。
「細かい案件は各国の魔法師に任せる。俺が動くのは——環境変数レベルの修正が必要な案件のみだ。それ以外はシェルに振ってもらう」
「了解しました」
「一つ一つの処理は丁寧にやる。雑に速くじゃなく——正確に処理する。処理の精度が落ちると、余計な修正が増えてリソースを消費する。最初から正確に仕上げる方が、結果的に体への負荷が少ない」
「……マスターは、今それを学習しましたか?」
「前の世界でも、同じ失敗をしかけた」俺は言った。「だいたいデッドラインの直前に、何でもかんでも手を出して、全部中途半端になる。バグを直すために入れたパッチが新しいバグを生む。それを直すためにまたパッチを入れて——雪だるま式に問題が増えていく」
「ここでも同じことが起きていましたね」
「——ああ。俺は急いでいる時ほど、一件一件に集中する必要がある。それだけだ」
---
ネットワーク連合、通信中継区。
四十七基の中継塔が同時停止していた。
中継塔は五大王国間の通信を担う基幹インフラだ。これが落ちると——情報が伝わらなくなる。被害状況の報告が来なくなる。連携が取れなくなる。シェルの情報収集能力が大きく落ちる。
これは——意図的だ、と俺は判断した。
ランダムなバグなら、四十七基が「同時に」落ちることはない。確率論的に、ほぼあり得ない。
「ヴァイラスの介入か、アドミンの影響か」
「判断材料が不十分です」メモリが言った。「ただ——停止パターンを見ると、連鎖的に停止しています。一基が落ちて、その通信先が切断されて、次の基地に誤信号が送られて停止する——という連鎖です」
「ドミノ倒し」
「そう言えます」
「つまり最初の一基を落としたのが原因で、残りは自動的に落ちた」
「その通りです」
「最初に落ちた基地はどれだ」
「通信記録を解析しました——第七基地。ここが起点です」
デバッガーズ・アイを向けた。
第七基地の通信ログが読み取れる。
エラーログの中に、送信元のアドレスがあった。
それは——ヴァイラスのシグネチャと一致していた。
「……ヴァイラスが仕掛けた」
「確認できました」
「ドミノ一枚を倒すだけで、四十七基が落ちる設計を突いた。インフラの設計上の脆弱性を狙った攻撃だ」
修正は、最初の一基から始めた。
第七基地の停止フラグを解除する。`tower_status: OFFLINE → ONLINE`
通信が再開した瞬間、連鎖して次の基地への誤信号が止まった。次々と復旧シグナルが流れていく。
全四十七基が復旧するのに、三分かからなかった。
「……ドミノの始まりを直せば、後は自動で戻る」
シンプルな原理だが——仕掛けた側も同じことを知っている。次は同じ手が使えない。ヴァイラスは次に違う手を使ってくる。
「シェルに報告を送る。中継塔の設計構造を見直して、連鎖停止が起きにくい冗長化を提案してくれ」
「了解しました」
---
午後に入って、シェルから報告が上がってきた。
「全体的な状況——バグの発生頻度が上昇している。午前中と比較して、一時間あたりの発生件数が1.4倍」
「カウンターは」
「——87%」
二ポイント上がった。
「上昇ペースは」
「過去三時間で2ポイント。このペースが続けば——十八時間以内に90%に達する」
「ヴァイラスが意図的にペースを上げている」
「そう見ている」シェルが言った。「お前が修正速度を上げてきたから、それに対抗するように攻撃密度を増している。お前が速く動くほど——向こうもそれに合わせてくる」
「いたちごっこだ」
「そうだ。しかも向こうには——疲弊がない」
その一言が、重かった。
ヴァイラスはプログラムだ。体がない。疲れない。対して俺は——この三時間でも、右手の揺らぎが増している。
「自己コードの劣化は」
「14%になりました」メモリが静かに言った。
「分かった」
「マスター——」
「分かっている。今は少し休む。次の案件の前に、十五分でいい」
セキュリア要塞国に戻った。
城壁の上の、風の当たる場所に座った。
空を見上げると——亀裂は、午前中より確実に広がっていた。金と黒の空間が、より鮮明に見える。その奥に、輪郭がある。まだ形にはなっていないが——確かに「何かが」いる。
アドミン。
起動はしたが、まだ「動いていない」。
ただ——存在している。
「前の世界では、夜中まで働いて、気づいたら倒れていた」
俺は誰にともなく言った。
「気づいたらって——コードの海に溺れて、気づいたら職場のソファで夜明けを迎えていた。体より先に頭が壊れて、何が正しくて何が間違っているかの判断基準が、ある時点から消えた。バグを直しているつもりで、新しいバグを生んでいた。それが分からなかった」
「……マスター」
「同じことをしかけていた。また」
メモリが——少しの間、何も言わなかった。
そして静かに言った。
「あなたは気づきました。それは——前の世界とは違うことです」
俺は少し笑った。笑えたことに、少し驚いた。
「そうだな」
「前の世界でのことは——私には分かりません。でも今のあなたには、仲間がいます。あなたが壊れないように見張っている人間が、複数います」
「シェルとか」
「シェルも、ガルドも、アリアも。そして私も」
「お前は人間じゃない」
「そうです」メモリが言った。「でも——あなたを失いたくないという気持ちは、人間と同じだと思います」
俺は右手を見た。
揺らいでいる指先を。
何でもない、と思いたかった。でも——これは確かにあった。体が限界を示すサインが、コードとして自分の存在に刻み込まれている。
「次の案件を教えてくれ」
「——一件だけ。データベルグ公国、古代図書館です。記録魔法の暴走が収まっていません」
「行く」
立ち上がった。
---
データベルグ公国の古代図書館は、国の中心部に位置していた。
外観は白い石造りで、七百年前に建てられたという歴史的な建物だった。高い窓から光が差し込んで、通常は静謐な知識の殿堂のはずだ。
今は違った。
窓から光の粒子が吹き出していた。
本の文字が——漂っていた。
物理的な文字が空中に飛び出して、光の粒子になって飛び回っている。七百年分の知識が、ページを突き破って宙に散らばっている。
「記録魔法が暴走している」
「はい。図書館全体に張り巡らされた『永続記録術式』——本の文字を永続的に保存する魔法が、源コードのバグで逆転しています」
「永続記録が『永続削除』になっている」
「その通りです」
デバッガーズ・アイで図書館の術式コードを見た。
複雑だった。
単純な変数の書き換えでは対応できない。記録魔法は図書館の構造そのものに組み込まれていて、個別のパラメータではなく——魔法の「論理構造」レベルで破損していた。
「これは——単純な環境変数の修正じゃない」
「はい。術式コードの部分的な書き換えが必要です。より精密な介入が必要になります」
精密な介入。
つまり——消耗が激しくなる。
でも。
俺は図書館の中を見た。
司書らしき老婆が、床に膝をついて、舞い散る文字の粒子を両手でかき集めようとしていた。戻らない、と知りながら。七百年分の知識が消えていく様を、目の前で見ながら。
「やる」
俺は術式コードに手を伸ばした。
破損した部分を特定する。論理の「どこが」逆転しているか。保存ではなく削除になっている分岐点。
見つけた。
`record_function.mode: PRESERVE → ERASE`
ここだ。
だが単純に書き換えると、既に「消去中」のデータが処理途中で止まる。それはそれで別の問題を引き起こす。
「消去処理を一時停止させて——処理キューをクリアして——その後でmodeを戻す」
`record_function.status: PROCESSING → PAUSED`
文字の粒子が、止まった。空中で静止した。
キューをクリアする。処理中のデータを安全な状態に戻す。
`record_function.mode: ERASE → PRESERVE`
`record_function.status: PAUSED → PROCESSING`
術式が再起動した。
静止していた文字の粒子が——ゆっくりと、本のページに戻り始めた。
全部ではない。既に消去が完了していた文字は戻らない。でも——今も処理中だったものは、全て保存方向に切り替わった。
司書の老婆が顔を上げた。
文字が戻っていく様を見て、口を押さえた。
全部ではない。相当な量が失われた。七百年の記録の、一部が消えた。でも——残せたものが、ある。
「ありがとうございます」
老婆が言った。
俺は何も言えなかった。
全部は守れなかった。
「マスター」
「——分かってる。行く」
---
夜が来た。
俺はセキュリア要塞国の作戦室に戻っていた。
一日動き続けた体が——重かった。疲労ではない。何か違う重さ。コードの負荷が、物理的な感覚に変換されているような。
「報告する」
シェルが正面に立った。
「本日の対処件数——環境変数レベル修正:七件。術式コード介入:二件。復旧支援:十三件」
「カウンターは」
「——87%。横ばいで維持できている」
「ヴァイラスは」
「攻撃頻度は上がっているが、今日は直接行動を取っていない。観察しているのか——次の手を準備しているのか」
「次の手がある」俺は言った。「ヴァイラスはこれで終わりにするつもりはない」
「同意する」
「アリア、各国の状況は」
「全五大王国、今日の攻勢は抑えられています」アリアが答えた。「各国の魔法師も対処に慣れてきました。ただ——」
「ただ?」
「消耗しています。十五時間以上、連続で対処に当たっている術師もいます。今日は何とかなりましたが——明日以降が」
「交代制を提案してくれ。無理に続けて全員がダウンするより、交代で維持する方がいい」
「了解しました」
俺は右手を見た。
揺らぎが——増していた。
指先だけだったものが、今は手首まで及んでいる。見ていると——腕が半透明になる。すぐに戻るが、一瞬だけ、自分の腕の輪郭が現実から浮いてしまう。
「自己コードの劣化は」
「——17%です」
「明日はもう少し件数を絞る」
「今日も言っていました」メモリが言った。
「今日より絞る」
「……よろしくお願いします」
---
夜中、俺は一人で城壁の上にいた。
眠れなかった。体は疲れているのに、頭が止まらない。
アドミンが目覚めた。カウンターは87%。ヴァイラスは動いている。この世界には、カウンターが100%に達すると何が起きるか、まだ誰も正確には知らない。
俺は空を見上げた。
亀裂が、光っていた。
カーネル空間が滲み出す夜の空は——奇妙なほどに美しかった。金色と黒の色が混ざり合って、本来の星空の上に別の宇宙が重なっている。
「前世の俺は、この瞬間を知らなかった」
俺は呟いた。
「コードを書き続けて、システムを維持し続けて、その先に何があるかを考える前に——終わった。でも今は、世界そのもののコードを書いている。これは——俺が前の世界でやりたかったことだったのか、それとも違うのか」
答えは、なかった。
ただ——空の亀裂が、少しだけ広がった気がした。
「マスター」
メモリが隣に浮かんでいた。いつの間に来ていたのか。
「眠れないのですか」
「考えすぎてしまう」
「……私も」
俺はメモリを見た。
「考える?」
「考えます」メモリが言った。「アドミンが目覚めた。カウンターが上がっている。この先が——怖いという感情に近いものが、あります」
「お前が怖い?」
「私は人工の存在です。でも——あなたたちがいなくなるのは、嫌です。この世界がリセットされるのは、嫌です。それを嫌だと思うのは——プログラムの外にある感情なのか、それともプログラムされた反応なのか、私には分かりません。でも——嫌だと思っています」
俺はしばらく何も言えなかった。
「——俺もだ」
「え?」
「嫌だ。この世界がなくなるのは。アリアも、ガルドも、シェルも、お前も——消えるのは、嫌だ」
「だから戦うのですか」
「それだけじゃない。でも——その気持ちは、確かにある」
二人で空を見た。
亀裂の向こうに、アドミンの輪郭がある。まだ眠っている。でも——目覚めかけている。
「明日も、動く」
俺は言った。
「一人で全部やろうとはしない。でも——できることはやる。それだけだ」
「——はい」
メモリが言った。
「私も、できることをします。あなたと一緒に」
---
夜明け前、シェルから通信が来た。
「——蓮」
声のトーンが違った。普段の淡々とした情報報告ではない。
「何だ」
「セキュリア要塞国の防衛システムから、アラートが上がった」
俺は立ち上がった。
「ファイアウォールか」
「ファイアウォールに——突破が発生している」
俺は石壁を蹴って走った。
「規模は」
「これまでのどの突破とも違う。通常の攻撃ではなく——内部から、正規のアクセス権限を使ってファイアウォールを通過している」
正規のアクセス権限。
「——アドミンのコードが」
「そうだ」
俺はクリプト国王の作戦室に飛び込んだ。
国王は起きていた。鎧は着ていないが、剣は手元に置いていた。夜通し起きていたような目をしていた。
「分かっている」国王が言った。「たった今、報告が来た」
「ファイアウォールの状況は」
「突破そのものは——現時点では一カ所。だが」
国王が俺を見た。
重い目だった。
「そこから流れ込んできているコードを分析した。我が国の暗号術師が全員で解読にかかっている」
「何が流れ込んでいる」
「——古代のコード、だ」
国王の声が、少しだけ揺れた。
二千年間、一度も落ちたことのないファイアウォールを守ってきた男が。
「世界が作られた時代の源コードが——ここを通り始めている」
俺はデバッガーズ・アイを展開した。
ファイアウォールの亀裂を捉えた。
流れ込んでくるコードの断片を、読み取った。
そこには——コメントが残っていた。
```
// World initialization: Phase 1
// Ancient authority code: enabled
// Admin override: confirmed
// Note: This is not an attack. This is a restoration.
```
俺は画面の中のその言葉を、しばらく見続けた。
攻撃じゃない、と言っている。
修復だ、と言っている。
アドミンの立場から見れば——この世界のバグを全部消して、新しくすることが「修復」なのかもしれない。
俺の体で揺らいでいる指先のノイズが、また一瞬、強くなった。
「——始まった」
俺は呟いた。
これはもう、防衛戦じゃない。
次の戦いは——アドミンが定義する「修復」の、意味を問い直す戦いだ。
次回予告——第52話「セキュリティ・ホール」。世界最強の防壁が、内側から破られた。ゼロデイ脆弱性でも、総力攻撃でもない——管理者権限を持つ者の、正規のアクセスによって。ファイアウォールの向こうから流れ込む古代のコードには、この世界が「封印」してきた禁忌の命令群が記されていた。時間停止、空間消去、存在抹消——現行世界では使えないはずの力が、今、解放されようとしている。力を手にした人間は、何をするのか。パンドラの箱は、もう開いた。




