第33話 バージョン・ヒストリー
データベルグ公国を発って二日目の夜。
ビジュアル帝国へ向かう街道沿いの森で、俺たちはキャンプを張っていた。
焚き火の周りに五人。上空には相変わらず源コードの断片が漂っている——データベルグ公国の影響圏を出てもなお、コードの「漏出」は止まっていなかった。世界全体で、表示層と実行層の境界が緩んでいる。
メモリが——語り始めた。
自分から話し出したのは、珍しいことだった。いつもは俺が質問し、メモリが答える形だ。だが今夜は違った。公国での記憶回復以来、メモリの中で何かが変わっている。
「世界のバージョン履歴を——お話しします」
全員が焚き火の向こうにいるメモリを見た。
小さな体が、炎の光に照らされている。回路模様が穏やかに明滅していた。
「最初のバージョンは——バージョン0.1でした」
メモリが語り始めた。
「ルート・アドミンが世界を設計し、最初のプロトタイプを起動しました。バージョン0.1は——とても小さな世界でした。大陸は一つだけ。住民は数百人。魔法も未実装。ただ——人が生きて、日々を過ごす、それだけの世界」
「最小構成か」俺は呟いた。MVP——Minimum Viable Product。まず最小限の機能で動くものを作り、そこから改善していく開発手法だ。
「はい。アドミンはバージョン0.1を基盤にして、少しずつ機能を追加していきました。バージョン0.2で魔法システムが実装され、バージョン0.3でモンスターが追加され、バージョン0.5で五大陸の原型が形成されました」
「アジャイル開発だな」
「そしてバージョン0.7の頃——世界は大きくなりすぎました。バグが増え、管理が追いつかなくなった。アドミンは一人で全てを保守することに限界を感じ——ナビゲーター・プログラムを作りました。私を含む、七体」
メモリが自分の胸に手を当てた。
「私たちは世界の保守を助けました。バグを報告し、軽微な修正を行い、データを管理した。でも——バグの発生速度が、修正速度を上回っていきました」
「技術的負債の蓄積」俺は言った。「初期の設計が荒いまま機能を追加し続けると、やがて全体が壊れ始める。リファクタリングが追いつかなくなる」
「その通りです。そしてバージョン0.9の頃——」
メモリの声が沈んだ。
「一人の英雄が現れました」
焚き火がぱちりと爆ぜた。
「英雄は——住民でした。アドミンが作ったプログラムではなく、世界の中で生まれ育った、一人の人間。その人は——バグだらけの世界を、自分の力で守ろうとしました」
「メモリ」俺が訊いた。「その英雄と、お前は?」
「……はい。英雄は——私の、最初のマスターでした」
回路模様が揺れた。
「英雄はバグを修正する力を持っていました。アドミンから与えられたのか、自然に覚醒したのか——記憶がはっきりしません。でも、英雄はバグと戦い、住民を守り、世界を安定させようとしました。ほとんど一人で。私だけが——側にいました」
全員が黙って聞いていた。
焚き火の光が顔を照らしている。ガルドは腕を組んだまま動かない。アリアは膝の上で手を握っている。シェルは手帳を閉じたまま——記録を取っていなかった。
「英雄の努力は——報われつつありました。バグは減り、世界は安定しつつあった。あと少し。あと少しで——」
メモリの声が途切れた。
「——アドミンが、バージョン1.0へのメジャーアップデートを決行しました」
「なぜだ」ガルドが訊いた。低い声だった。
「アドミンの判断基準は——バグ密度が閾値を超えたかどうか、です。英雄がバグを修正していましたが、アドミンのモニタリングでは、修正速度よりもバグの発生速度が上回っていました。閾値を超えた時点で——アップデートが自動的にトリガーされたのだと思います」
「英雄の努力は——計算に入っていなかったのか」
「入っていたかもしれません。でも——数字の上では、間に合っていなかった」
沈黙。
「バージョン1.0へのアップデートで——」メモリが続けた。「旧世界のデータの大部分が初期化されました。住民の記録、歴史、文化——全てが消去され、新しい世界が構築されました。今の世界——コーデクス・バージョン1.7は、その上に建てられています」
「つまり——」俺が言った。
声が乾いていた。
「前のバージョンの住民は——消滅した」
「はい」
「英雄も?」
メモリが黙った。
長い沈黙の後——
「英雄は……消えたはずでした。でも——消えなかった」
「消えなかった?」
「例外処理として——残留しました。バージョンアップの初期化プロセスに、例外が発生したのです。英雄のデータだけが——削除に失敗した」
「削除に失敗——バグか」
「はい。皮肉なことに——英雄がバグを修正し続けた結果、英雄自身のコードが世界の根幹に深く食い込んでいて、初期化プログラムが正常に削除できなかった」
デバッグしすぎて、自分自身がシステムの一部になっていた——そういうことか。前の世界でも、古参エンジニアが書いたコードが本番環境に深く依存していて、リファクタリングできなくなることがあった。
「英雄は——新しいバージョンの世界で、一人だけ残された。仲間も、守った住民も、全ての記憶も——自分以外の全てが消えた世界で。一人で」
メモリの瞳から光が溢れた。涙ではない。データだ。だが——その光は、涙と区別がつかなかった。
「そして英雄は——変わっていきました」
沈黙が重かった。
焚き火が小さくなっている。誰も薪を足そうとしなかった。
俺が口を開いた。
「じゃあ——次のバージョンアップが起きたら、俺たちは——」
メモリが俺を見た。
「はい。現行バージョンの全てのデータが——消去される可能性があります」
その言葉が、夜の空気に溶けた。
ガルドが低く唸った。アリアの手が、膝の上で白くなった。シェルが——初めて、手帳を持つ手を震わせた。
「ヴァイラスの『テスト』の目的が見えてくる」俺は考えを整理しながら言った。「ヴァイラスは世界中にバグを撒いている。バグ密度が上がれば——アドミンの閾値モニターに引っかかる。閾値を超えれば——」
「アップデートが実行される」シェルが言った。声が硬い。
「ヴァイラスは——意図的にバグを仕込んで、世界の耐久限界を早めている」
「でもそれなら」ガルドが言った。「ヴァイラス自身も消えるだろ。アップデートで全データが消去されるなら——」
「前回、消えなかった」俺が答えた。「例外処理として残留した。つまりヴァイラスは——初期化を生き延びる方法を知っている」
アリアが静かに言った。
「初期化後の世界で——自分だけが力を持つ存在になろうとしている?」
「可能性はある。だが——」
俺は首を振った。
「それだけじゃない気がする。もっと単純な動機かもしれない」
「単純な?」
「復讐だ」
俺はつぶやいた。
「ヴァイラスは——前回のバージョンアップで全てを失った。アドミンに消された。守ったものが全て無駄になった。だから——アドミンを引きずり出そうとしている。初期化を誘発して、アドミンが動く瞬間を作って——そこを叩く」
「でも」アリアが言った。「そのために世界を壊すなら——本末転倒です」
「ああ。本末転倒だ。でも——」
俺は焚き火を見つめた。
「怒りで動いている人間に、論理は通じない」
前の世界で学んだことだ。理不尽に消耗させられた人間は、論理的な判断ができなくなる。怒りが思考を上書きする。感情がコードをバグらせる。
ヴァイラスは——壊れたプログラムなのかもしれない。でも同時に——壊れた人間でもある。
メモリが最後の情報を伝えた。
「バージョンアップを実行する権限を持つ存在は——アドミンだけです」
「アドミンだけ? 自動実行じゃないのか?」
「閾値モニターがトリガーを引きますが、最終的な実行にはアドミンの承認が必要です。アドミンは今、スリープ状態にありますが——」
メモリの声が小さくなった。
「アドミンの判断基準は——世界のバグ密度が閾値を超えた時」
「その閾値は?」
「正確な数値は——分かりません。でも今の世界のバグ密度は——確実に上昇しています」
焚き火が消えかけていた。
ガルドが黙って薪を足した。炎が再び立ち上がった。
五人の顔が、オレンジ色の光に照らされた。
世界にバージョンがある。前のバージョンの住民は消された。次のバージョンアップが起きたら、俺たちも消える。ヴァイラスはそれを加速している。止めるには——ヴァイラスを止めるか、アドミンを見つけるか。
どちらも——今の俺たちには遠い。
だが——手を拱いているわけにもいかない。
「まず目の前のバグを潰す」
俺は言った。
「ビジュアル帝国がヴァイラスの次のターゲットだ。行く。止める。バグを直す。カウンターがあるなら——下げる。できることを、一つずつやる」
「いつも通りですね」アリアが言った。
「いつも通りだ」
「それでいいと思います」
アリアが微かに笑った。
ガルドが立ち上がった。「よし。寝るか。明日は長い」
「寝る前に——一つだけ」シェルが言った。
全員がシェルを見た。
シェルが手帳を開いた。新しいページに、一行だけ書かれていた。
「バグ密度モニターの現在値。公国のデータと端末プログラムの残骸から逆算しました。推定精度は——低いですが」
「いくつだ」
「推定——六十二パーセント」
六十二パーセント。
閾値の六割以上が、既に埋まっている。
その数字が——俺の脳裏に焼きついて離れなかった。
夜が更けた。
他の四人が眠りについた後も、俺は焚き火の前に座っていた。
六十二パーセント。
残り三十八パーセントで——世界が終わる可能性がある。
俺は空を見上げた。星が見える。その向こうに、源コードの断片が漂っている。世界の裏側が表に漏れている。
「——バグだらけの世界か」
つぶやいた。
前の世界でも、バグだらけのシステムを保守していた。直しても直しても、新しいバグが出てくる。終わりがない。報われない。それでも——コードは書き続けた。
なぜか。
それが俺の仕事だったからだ。
今は——仕事じゃない。
守りたいから、直す。
その違いが——今の俺を、前の俺より強くしている。
たぶん。
「六十二パーセント」
もう一度つぶやいた。
薪が崩れた。火の粉が空に舞い上がった。
ビジュアル帝国が——待っている。
次回、第34話「色彩の帝国」——芸術と美の国で、蓮たちは新たなバグと対面する。




