第29話 英雄の残像
メモリの容態が安定したのは、翌朝のことだった。
大公宮の客室で、メモリは俺の隣の椅子に座っていた。回路模様の明滅は収まっている。だが表情には、まだ疲弊の色が残っていた——と、AIの「表情」を読む自分に少し驚く。いつの間にか、メモリの顔の微細な変化を読み取れるようになっていた。
五人が客室に集まった。
「話せるか」
「はい、マスター」
メモリが頷いた。声は平静だが、瞳の奥にまだ光の揺れがあった。
「回復した記憶を——話します。ただ、断片的です。全てが繋がっているわけではありません。途中に空白がある」
「構わない。分かるところだけでいい」
メモリが口を開きかけて——止まった。
「一度——」メモリが言い直した。「少し、待ってください」
クーリングプロセスが走った。回路模様が規則的に明滅し、体内のデータを整理しているのが分かる。数秒の沈黙。全員が黙って待った。
メモリが深く息を吸った。クーリングプロセスが呼吸を模倣している。その仕草が——人間に近づいている。
「大丈夫です。話せます」
「遠い過去——この世界がまだ『バージョン0.x』と呼ばれていた時代がありました」
メモリが語り始めた。
「バージョン0.x。つまり、正式リリース前の世界」俺が補足した。
「はい。テスト版——プロトタイプに近い世界でした。不安定で、バグだらけで。魔法はまだ体系化されておらず、モンスターの挙動は予測不能で。世界そのものが——壊れかけていました」
「壊れかけた世界で——誰かが戦っていた」
メモリが頷いた。
「一人の英雄がいました」
声が、わずかに震えた。
「英雄は——バグだらけの世界のために戦いました。モンスターの暴走を鎮め、崩壊する地形を修復し、混乱する住民を守った。一人で。ずっと、一人で」
「一人?」アリアが訊いた。
「はい。バージョン0.xの世界は人口も少なく、戦える者はほとんどいませんでした。英雄は——ほぼ単独で、世界を守り続けていました」
ガルドが腕を組んだ。
「……たった一人で、か」
その声に、何かが混じっていた気がした。共感なのか、理解なのか——俺は一瞬ガルドの横顔を見たが、すぐに視線を戻した。
「はい。そしてその英雄は——成功していました。バグを修正し、世界を安定させつつあった。あと少しで、世界は安定版に移行できるはずだったのです」
「だが——」シェルが言った。
「はい」メモリの声が沈んだ。「バージョン1.0への大規模アップデートが実行されました。ルート・アドミンの判断で」
沈黙。
「アップデートの際——旧世界のデータの大部分が初期化されました。英雄は——記録から消えました」
「消えた、ということは——死んだのか」ガルドが訊いた。
「わかりません。記録が消えたということは、通常であれば——はい、消滅したということになります。しかし——」
メモリが額に手を当てた。記憶の空白にぶつかっている。
「——しかし、ヴァイラスのコードスタイルが、その英雄時代の書き方に酷似しています」
部屋が静まり返った。
「整理しよう」
俺が言った。
「事実だけを並べる。推測は推測として分ける。これが基本だ」
俺は指を折りながら確認した。
「事実。バージョン0.xという旧世界が存在した。そこに英雄がいた。英雄はバグと戦い、世界を守っていた。しかしバージョン1.0アップデートで旧世界のデータは初期化された。英雄は記録から消えた」
一拍置いた。
「事実その二。ヴァイラスのコードスタイルが、設計書のスタイル——つまりアドミンの書き方に似ている。そしてメモリの記憶によれば、英雄時代のコードにも似ている」
「推測。英雄が——ヴァイラスになった?」
ガルドが言った。
「可能性はある。だが確証はない。英雄とヴァイラスが同一人物なのか、英雄のコードを引き継いだ別の存在なのか、それとも全く無関係なのか——まだ判断できない」
シェルがペンを走らせながら言った。
「仮説としては三つですね。一、英雄がヴァイラスに変質した。二、ヴァイラスは英雄のコードを複製した別の存在。三、偶然の一致」
「三は薄い」俺は言った。「コードスタイルの一致は偶然では起きにくい。プログラマーの癖は指紋のようなものだ。変数の命名規則、インデント幅、コメントの書き方——全てが一致するなら、同一の書き手か、その書き手を模倣した者だ」
「つまり、一か二か」
「今のところは」
アリアが静かに口を開いた。
「仮に——英雄がヴァイラスの成れの果てだとしたら。英雄は、なぜ世界を壊す側に回ったのでしょうか」
俺はメモリを見た。
メモリが答えた。声は小さかった。
「もし——もし英雄が、自分が守った世界を消された怒りで変質したのだとしたら……」
「復讐か」ガルドが言った。
「推測です。確証はありません」
「だが——」俺は言った。「動機としては、成立する」
世界を守るために全てを捧げた。その世界がアドミンの一存で消された。自分だけが残った。守るべきものを全て失った。
その絶望が——怒りに変わったとしたら。
「プログラマーとして言えば」俺は続けた。「コードのバグは『直すべきもの』だ。だがヴァイラスが元は人だった——元は英雄だったなら、これは単なるバグ修正の問題じゃない」
シェルが冷静に言った。
「仮にヴァイラスが英雄の成れの果てだとしても、今行っている行為の事実は変わらない。世界中にバグを撒き、住民を危険にさらしている。動機が理解できることと、行為を容認することは別だ」
正論だった。
シェルは感情をノイズとして排除する——だが、この場合、そのクールさが正しい判断を導いている。
「そうだな」俺は頷いた。「事実は事実だ。ヴァイラスがどんな過去を持っていようと、今この瞬間、世界を壊しているのは変わらない」
だが、頭では理解しても、胸の奥に残るものがあった。
俺は——ヴァイラスの孤独が、少しだけ分かる気がした。
前の世界で。
三十六時間の連続勤務。バグを直しても、直しても、次のバグが降ってくる。直したことを誰にも感謝されない。直さなければ怒られる。評価されない仕事を、誰にも見られない場所で、延々と続ける。
俺は——消耗して、壊れて、死んだ。
英雄も——守り続けて、報われず、消された。
似ている。
「考えても仕方ない」
俺は自分に言い聞かせた。
今やるべきことは、目の前のバグを直すことだ。ヴァイラスの過去がどうであれ、世界を守らなければならない。
だが——心の隅で、問いが消えなかった。
もし俺が、英雄と同じ立場だったら。
守り続けた世界を消されたら。
俺は——どうなっていただろう。
その夜。
アリアが俺に問うた。
宿の廊下で、偶然すれ違った——わけではないだろう。待っていたのだと思う。月明かりが窓から差し込む廊下で、アリアは俺に向き直った。
「レン」
「ああ」
「あなたなら——ヴァイラスを修正できるのですか?」
俺は黙った。
「それとも——削除するしかないのですか?」
修正か、削除か。
プログラマーにとって、バグに対するアプローチは基本的に二つだ。修正——原因を特定し、正しい状態に戻す。削除——問題のあるコードを取り除く。
ヴァイラスが「バグ」なら、修正か削除か。
だがヴァイラスが「元は人」なら——
「分からない」
俺は正直に答えた。
「今の俺のLv2じゃ、ヴァイラスのコードに対抗すること自体が難しい。修正するにも削除するにも——まず、力が足りない」
「では——力があったら?」
「力があったら——」
俺は言葉を探した。
見つからなかった。
アリアは俺の答えを待たなかった。
「答えを急ぐ必要はありません。ただ——その問いを、持ち続けてください」
そう言って、アリアは自室に戻った。
俺は廊下に立ち尽くした。
月明かりが、窓枠の影を床に落としている。
修正か、削除か。
その問いは——簡単には答えが出ない。
答えが出ないまま、俺は自室に戻った。
眠れない夜だった。
次回、第30話「インジェクション・アタック」——データベルグ公国の中央データベースに、大規模な攻撃が始まる。




