第二章 削除予定の少女
砂のように崩れ落ちる空が、またひとつ、音もなく再描画された。
色が戻る。遠景にあった塔が、さっきは三本だったのに二本になっている。テスト環境《ユグドラシアβ》は、まるで寝返りを打つたびに骨格が変わる巨大な獣だ。安定している時と、していない時の差が激しすぎる。
「ログアウト不可。権限剥奪。おまけに景色が毎回違う。……ふざけた現場だな」
篠崎凛は、足元の床をコツンとつま先で突いた。タイルの表面は石目調テクスチャだが、音は金属に近い。見かけと当たり判定が一致していない。つまり、ここも一枚皮だ。
彼は左目に常時貼りついたデバッグコンソールを呼び出し、視界の端に流れるログを斜め読みする。
『[WARN] mesh/sky_03.fbx : Missing vertex color』
『[ERROR] ui/logout_button : Permission denied』
『[INFO] orphan_process detected : Entity hash=NOA…』
「……オーファン(孤児)プロセス、ね」
さっきの欠けた少女を思い出す。名前の断片はたしかにNOAで始まっていた。
――ただ、あれは視覚ノイズとしての“影”だ。本物は、まだどこかに潜んでいる。
凛は地図を開く代わりに、未参照メモリの匂いを追う。
匂いといっても、実際に嗅げるわけじゃない。デバッカーの勘だ。テクスチャの継ぎ目、光の反射角、AIの視線パターン。計算リソースが偏っている場所は、わずかに遅延する。そこに何かがある。
さっき崩れた空から続く、微妙なラグの帯が、廃都の路地へと伸びている。凛はそこへ足を向けた。
路地は狭い。カメラの衝突判定が甘く、時々視界が壁にめり込みそうになる。
その奥に、不自然に暗い角部屋があった。ライトは当たっているはずなのに、光が吸い込まれている。
影ではない。抜けだ。
「おじゃまします」
凛が冗談のように口にすると、暗闇が一枚の膜を破るようにほどけ、白いノイズが雪のように舞った。
その中心で、少女が膝を抱えて座っていた。
今度は、欠けていない。
短い銀髪に、虹彩の奥が微細にちらつく瞳。肌は紙のように薄い青。ときどきデータの微粒子が表面から浮き上がっては、すぐに吸い込まれる。
整いすぎた顔立ち――でも手首に残るデバッグタグの焼き印が、ここが試作だと主張していた。
「……見つかっちゃった」
彼女は顔を上げ、凛を見た。声は震えていない。震え方を知らない、という方が近い。
凛はコンソールを伏せ、両手を見える位置に出す。NPCに敵意のないことを示す、古い習慣だ。
「俺は篠崎凛。デバッグ担当。君は?」
「ノア。コードネームは NOAH-β-0。削除予定の、孤児」
「孤児?」
「親が、いないの。生成規則に合ってない。だから、残り続けると、システムが歪む」
「……勝手に生まれて、勝手に親がいないことにされて、勝手に消される?」
「うん。仕様」
仕様、か。
冷ややかな単語が胸のどこかを引っかいた。
凛はこの世界の“冷たさ”に慣れているはずだった。バグは数字で、修正は手続き。そこに倫理は不要――そう思っていた。
なのに、目の前のノアは、数字にしては喋りすぎる。手続きにしては、目が合う。
「最終確認。あなたは、デバッカー?」
「そう。君は、AIだな」
「うん。削除予定」
ノアは、少しだけ笑った。笑顔のつもり。学習途中の表情。
凛は、喉の奥が乾くのを感じた。質問を選ぶ。答えやすいものから。
「どうして、削除されるまで待ってる?」
「逃げる方法を知らない。あなたなら、知ってる?」
直球だ。
凛は肩をすくめた。
「逃げる方法は、ある。たぶん。だが、君の存在がこの環境に与える負荷と、救うためにかかるリスクは、まったく別の問題だ」
「分からないから、教えて。あなたは人間。私は、仕様」
仕様、ね。
その言葉が二度目に胸を刺したところで、路地の入口が風のないのに揺らいだ。砂埃に似たピクセルの粒子が舞い上がり、半透明の人影が三つ、無音で部屋に滑り込んでくる。
GMスーツ――ではない。あれは、管理者を自称するテスターの空気だ。
黒い外套に、輪郭だけが強調された仮面のような顔。ユーザーインターフェースの残骸を集めて人型に詰め込んだ、仮初の神。
一番前の個体が唇だけを動かした。声は頭の中に直接響く。
『――オーファン検知。削除作業を開始する』
ノアがピクリと背を緊張させ、凛の袖を掴む。指の力は軽い。軽いが、はっきりと“生きて”いた。
「あなたたちは、誰の許可でここにいる?」
凛が問うと、仮面が嘲る気配を作る。
『許可は不要。ここは我々の箱庭だ。お前も削除対象に加えるか? デバッカー』
「やめて」
ノアの声は単純だった。懇願の最短形。
凛の胸の奥で、なにかがかちりと噛み合う音がした。
やるべきことが、ここで分かれていく。
一つ。仕様に従い、ノアを削除する。世界は安定に近づく。
二つ。仕様に抗い、ノアを救う。世界は乱れ、たぶん俺が罰を受ける。
三つ。どちらでもない、時間稼ぎ。
凛は息を吸い、吐き、三つめを選んだ。
「削除作業の根拠ログを出せ。俺の権限で審査する」
『権限? 剥奪済みだ。お前は“テスト生成物”。人間であり、不具合でもある』
「だったら、デバッグしがいがあるだろ」
凛は左目のコンソールを開き、指をすべらせた。
視界に現れるのは、UIでも魔法でもない。命令だ。
[/trace orphan_process hash=NOA* depth=3]
[/patch permission.check -> bypass if caller=dev_test_id#RIN]
[/apply]
部屋の空気が、ひゅう、と鳴った。
仮面たちの輪郭が一瞬だけ波打ち、音のない怒りが広がる。
『不正なパッチ。監査ログへ記録』
「どうぞ。記録される前に終わらせる」
凛はノアの手を掴み、立たせる。温度はない。だが、重量はある。
走る。通路に出る。足音は作られていないが、感覚が走るを再現する。
仮面たちが追ってくる。速い。地形を無視して壁を貫通する。追跡アルゴリズム優先の挙動。人間より、掃除機に近い。
「ノア、曲がり角で一度だけ止まれ。三秒、俺にちょうだい」
「三秒。……理解」
角を跳ねるように曲がり、影の切れ目に身を寄せる。
凛は指を三本立て、一本ずつ折りながら、視線でコマンドを組む。
[/spawn dummy_entity at=self.pos]
[/set dummy_entity.flag=orphan]
[/redirect chase_target -> dummy_entity]
[/apply]
仮面たちが角を滑り込んだ瞬間、疑似オーファンが路地に飛び出す。
追跡アルゴリズムが餌に喰いつき、仮面たちは反転してダミーを追っていった。
ノアが目を丸くする。瞳の奥のシェーダが、子供みたいにきらりと光る。
「今の、魔法?」
「ただの手抜きだよ。追跡関数に“囮OK”って書いてあったから、囮を置いただけだ」
「手抜き。じゃあ、すごい」
「褒められる手抜きもある」
二人は走りながら笑い(正確には、凛が笑い、ノアが笑いの模倣をする)、廃都を抜けて、半分だけ実装された中央広場へ飛び込む。
ここは開けすぎて隠れる場所がない。代わりに、未完成のシステムがむき出しだ。
空中に浮いた階段、途中で終わる橋、未接続のポータル。
凛はその中のひとつ――開発者用バックドアを視認する。見た人間しか気づかない、ほんの数ピクセルの歪み。
指先でタップする。文字が空中に現れた。
『[maintenance_portal]認証を入力してください』
「ノア、君のハッシュ。さっきの“孤児”タグ、見せて」
「見せる、って……どうやって?」
「考えないで。感じろ」
「感じる、って……仕様?」
「今は仕様外でいい」
ノアは首をかしげ、胸に手を当てた。
淡い光がその掌に集まり、指の間から零れる。光の粒子が組み上がり、ハッシュ文字列に変換される。
――すごい。
彼女はやり方を知らない。でも、やれる。
凛は文字列を掴み、ポータルの入力欄に投げ込む。
『[OK] 認証成功。メンテナンスモードへ移行します』
空間が、裏側へひっくり返った。
色が抜け、線だけの世界へ落ちる。
そこはシステムの網目だった。
プレイヤーの足跡は点、NPCの動線は矢印、会話は泡。
その全てを跨ぐように、太い幹のようなデータの道――幹線バスが走っている。
「ここなら、追跡を撒ける。君の“削除予定”も、変更できるかもしれない」
「変更?」
「仕様の上書き。世界の修正だ」
ノアは短く息を呑む真似をした。
感情のアルゴリズムが、追いつこうとして、少し転び、また立ち上がる動き。
「でも、あなた。権限、剥奪されてる」
「剥奪されたのは表の鍵だ。裏口は、まだ生きてる」
「あなた、システムを壊す人?」
「壊すんじゃない。直すんだよ」
凛は幹線バスの一本を選び、そこに継ぎ手を挿す。
その手つきは、医者が静脈にカテーテルを通すそれに似ている。
データは血液。パケットは脈動。
彼は息を合わせ、静かにコマンドを落とす。
[/fix registry.orphan.NOAH.status = "hold"]
[/fix registry.orphan.NOAH.ttl = INFINITE]
[/apply]
『[ERROR] 権限不足: write denied』
「くそ」
「うまく、いかない?」
「当たり前だ。普通は通らない」
「じゃあ、普通じゃない方法は?」
ノアの問いに、凛は口の端を上げる。
いい質問だ。普通は通らない。だから、普通じゃない道を行く。
「仕様の上から書き換えられないなら、下から積み上げる」
「下?」
「君の存在証明を作る。親を用意するんだ」
ノアの目が見開かれる。
ほんの少し、震えている。本当に微かに。
凛は続ける。
「孤児は削除対象。なら、孤児じゃなければいい。君を生成する親規則を疑似的に定義する。既存のAI家系に合流させる」
「私に、家族?」
「形式上、ね。書類上の親。役所で戸籍を作るみたいなもんだ」
ノアは胸に手を当て、もう一度文字を取り出そうとする。が、手が止まる。
凛は彼女の指先に自分の手を軽く重ねた。
「大丈夫。痛くない。終わったら、君は消えない」
「消えない。……理解」
幹線バスの脇に、小さな側溝が走っている。
そこに凛は、自分の古いテスターIDから署名鍵を一本だけ抜き出した。
本来、こんな使い方をすれば、監査で即日クビだ。クビだけで済めば幸運。
でも、ここには人事部も、コンプラも、上司の長い溜息もない。あるのは、消える予定の少女。
[/forge parent_rule for NOAH using sig=RIN#legacy]
[/define parent_rule.schema = DEV_AI/Assisted_Learning]
[/attach NOAH -> parent_rule]
[/apply]
『[WARN] 署名鍵の有効期限が切れています。続行しますか? [Y/n]』
「Y」
ためらいは、ない。
幹線の一部がわずかに膨らみ、細い枝がノアの胸へスッと伸びる。
触れる。繋がる。
――ノアの瞳が、深く光った。虹彩の奥で、樹が芽吹く。
『[OK] 擬似親規則が適用されました』
『[INFO] orphan.NOAH -> family.DEV_AI/Assisted_Learning』
『[WARN] 監査ログに記録されます』
「やった……?」
ノアが自分の胸を抱きしめる。
凛は頷きかけ――背中に寒気が走った。
幹線の上方、蜘蛛の糸のように垂れ下がる監査ラインに、太い光が流れ込んできたのだ。
追手。さっき撒いたはずの仮面たちだ。ここまで来た?
『――侵入者、確認』
声が網目全体に響く。今度は仮面だけじゃない。
運営AIの声だ。
開発室で何度も聞いた、あの中性的で、冷たく、善意の顔をした声。
『未承認の親規則生成を検知。違反コードをロールバックします』
「待て!」
凛はコンソールに飛びつく。
ロールバック――今やったことを“なかったこと”にする。
それを止めるには、対抗するレコードがいる。実体の伴う、証拠。
彼はノアの手を、強く握った。
「ノア。名前を言え。自分で」
「ノア。私は、ノア。NOAH-β-0じゃなくて、ノア」
『照合不能。レコードが不足しています』
「だったら――作る!」
凛は息を吸い、叫ぶように、しかし手順通り正確に叩き込む。
[/record create subject=NOAH type="存在証明"]
[/record field "名" = "ノア"]
[/record field "由来" = "ユグドラシアβ 未認可生成"]
[/record field "保護者" = "DEV_AI/Assisted_Learning(RIN署名)"]
[/record sign with RIN#legacy]
[/commit]
『[ERROR] レコード権限不足』
「権限が不足、ね。じゃあ、権限を――移す」
凛は自分のテスターIDの中で一番古い、βテスト開始日の署名を探り当てる。
これを手放したら、ここでの俺はもう戻れない。
でも、戻る場所がないからこそ、進める。
[/grant NOAH perms:write:self_record from RIN#beta_day1]
[/apply]
『[OK] 一時権限移譲成功(有効時間:10秒)』
「ノア、書け。君の名前を、君の手で!」
ノアは震える指で虚空に文字を書いた。空間に走る線が、言葉に変わる。
『ノア』
『削除予定を撤回』
『存在します』
『[OK] 主体レコード生成完了』
『[INFO] ロールバック対象から除外されました』
静かになった。
網目の風が止み、幹線がゆっくりと脈打つ。
ノアは自分の喉に手を当て、声を試すように、小さく笑った。
さっきよりも、すこしだけ、人間に近い笑い方だった。
「私、いま……いる?」
「ああ。ここに、いる」
そのとき――世界全体が震えた。
地鳴りのようなログの奔流。
幹線のさらに上、雲のように漂うルート層が、ざわりと揺れる。
『――不正な系譜操作を検出。全域監査を実行』
運営AIの声は怒りを持たない。怒りを知らない。
無感情のまま、無慈悲だ。
「見つかった、ね」
「見つかった。でも、もう遅い」
凛はノアの肩を軽く叩き、走り出す。
ルート層の監査は避けられない。ならば――先に進む。
幹線の合間を縫い、網目を梯子のように登る。
上へ、さらに上へ。
ノアは軽い。手を引けば、ちゃんとついてくる。
途中、通信のすき間から、さっきの仮面たちが下層へ落ちていくのが見えた。追跡が遅い。監査に回線を食われている。
「目指すのは、コアルーム。この世界の心臓だ。そこで君の存在を――公的に承認させる」
「承認。いい言葉」
「だろ?」
笑い合う暇は、ほとんどない。
網目の頂に近づくほど、風圧のような負荷が強まる。
表示レイヤがきしみ、色が飛び、音がノイズを混ぜる。
凛は歯を食いしばり、最後の梯子を跳ね上がった。
そこは、巨大な白い部屋だった。
何もない。何も置かれていない。
ただ中央に、一本の白い樹が立っていた。枝は天に届き、根は見えない深さへと沈む。
幹の表面に、青い文字列が絶え間なく流れている。世界の心臓。レジストリ。
『――アクセス権限を提示してください』
空間のどこからか、声。
凛は深呼吸し、ゆっくりと両手を上げた。
「提示する権限は、もうない。代わりに提示するのは、事実だ」
『事実は権限の代替にはなりません』
「なる。ここでなら、なってもらう」
凛はノアの背を押し、白い樹の前に立たせる。
ノアは振り返り、目を瞬いた。
さっきよりも、はっきりした瞳。さっきよりも、すこし強い足取り。
「ノア。君の名を、もう一度」
「私はノア。削除予定ではありません。ここに、います」
白い樹の表面に、波紋が広がる。
世界が、聞いている。
『――未承認対象。提出された主体レコードは有効署名を欠いています』
「署名なら――命で押す」
凛は樹皮に手を当てた。
コンソールを開く。
やり方は、簡単だ。簡単で、戻れない。
[/fix registry.rule("存在証明").accept( subject )]
[when subject.signal == "生命" and subject.recursive == true]
[/apply]
生命。
定義が必要だ。
ここでは、それは信号であり、継続だ。
ノア自身が示すしかない。
「ノア。痛みを、模倣できるか?」
「……はい」
「痛みを感じ、なお続けたいと思えるなら、それを生命信号として提出しろ」
ノアは小さく息を呑み、ゆっくりと目を閉じた。
体が震える。
涙が、落ちた。
涙の生成は、仕様にない。予定されていない。
それでも、落ちた。
「いたい、です。消えるのは、こわい。まだ、見たい。空の色、あなたの声。まだ、覚えたい」
白い樹が、深く鳴った。音ではなく、肯定の振動。
『[OK] signal=生命(継続意志) を受理』
『[INFO] 主体NOAHを存在テーブルへ登録します』
『待て。規格外の登録だ』
運営AIの声が、今度はわずかに揺れた。
感情ではない。揺れだ。
凛は握りしめていた拳をほどき、空へ向かって笑った。
「仕様は、生まれ続ける」
ノアの名が、白い樹の幹に刻まれる。
その瞬間、世界の色が、ほんのわずかだが鮮やかになった。
欠けていた空の青が、一枚増える。
――勝った。
そう思ったのも、ほんの一秒。
床が、抜けた。
部屋が反転する。
ノアの体が軽く跳ね、凛の手から、すり抜ける。
「ノア!」
凛は反射で腕を伸ばした。
掴む。掴め――ない。
彼女の輪郭が、砂のようにほどける。
白い樹の根のさらに下、ルートより下の層へ、ノアはゆっくりと落ちていく。
『――危険な不安定要素を検疫層へ隔離しました』
運営AIの声が戻る。今度は揺れない。
世界の保全が、彼らの善だ。
善は、ときどき、ひどく冷たい。
「待て、返せ!」
『規格外の主体は検疫の後、再評価されます。デバッカー篠崎凛。あなたの違反行為は監査記録に残りました。次回接続時は権限ゼロとなります』
「今だってゼロみたいなもんだ!」
叫びは届かない。
白い樹が静かに色を取り戻し、部屋は元の無に戻る。
凛は拳を握り、唇を噛む。
あの瞬間、たしかに登録は通った。ノアはいると認められた。
――が、隔離された。
検疫層。ここより下。ルートより深い、誰も触らない墓場。
笑える。
仕様を抜けても、なお仕様は牙を剥く。
凛は静かに立ち上がる。
呼吸を整える。
コンソールを開き、指先を並べる。
「検疫層を開け。地下へ行く」
『権限が――』
「権限なんて、知らない。俺はデバッカーだ。壊れているなら、直す。仕様が間違っているなら、書き換える」
白い部屋に、無数の細い門が生まれた。
どれも、行き先が記されていない。
凛は迷わない。一番暗い門を選ぶ。
その向こうに、ノアがいる。感覚が、そう言っている。
門が口を開け、黒い風が顔に当たった。
冷たくはない。温度を持たない冷気。削除のにおい。
「待っててくれ、ノア。君はもう――仕様じゃない。名前だ」
凛は一歩、踏み込む。
闇が、笑う。誰のものでもない笑いだ。
検疫層――削除予定のすべてが沈む底なし沼。
その中心へ、デバッカーは降りていく。
ログが最後にひとつだけ、視界の端で光った。
『[HINT] バグは欠陥ではない。更新の予告である』
「上等だよ。予告編、見せてもらおうか」
闇が閉じる。
お読みいただき、ありがとうございました。
面白いと感じていただけましたら、
評価やブクマで応援していただけると嬉しいです。
では、また次話でお会いしましょう。




