第32話 データ・リカバリ
復旧作業は、丸二日かかった。
図書塔の中央データベース。壁面を覆うコードの大半が赤く染まっていたのが、少しずつ青に戻っていく。
俺とシェルが並んで座り、改竄されたレコードを一つずつ検証していた。
作業の流れは単純だ。シェルが改竄レコードを抽出し、メモリのバックアップと照合し、俺がコードを書き戻す。一致すれば復元、不一致なら手動判定。三千八百件を、一件ずつ。
地味な作業だった。だがこれが——本当に大事な工程だ。
六時間が過ぎた。
シェルの声が、わずかに震えた。
「レコード#4102。歴史区分:五百年前。内容:古代のナビゲーター・プログラムに関する記述」
「バックアップは?」
「……ありません」
メモリが申し訳なさそうに言った。
「この区分の記録は、バックアップ・プロトコルの対象外でした。古すぎて……優先度が低く設定されていたのです」
「つまり——永久に失われた」
シェルが手帳にペンを走らせた。「復旧不能リストに追加」
淡々と記録している。だが——手が止まった。
「シェル?」
「……いえ」
シェルが手帳を閉じた。また開いた。
「前の世界では——」俺は独り言のように言った。「データベースの復旧作業が、一番きつかった」
シェルが顔を上げた。
「飛んだデータは戻らない。バックアップがなければ——終わりだ。どんなに優秀なエンジニアでも、消えたデータは作れない。そのことを思い知らされるのが——障害復旧のきつさだ」
「……そうですね」
シェルが小さく頷いた。
「私は——データを信じてきました。感情はノイズだと教えられた。でもデータは嘘をつかない。データは確かだ。そう信じてきた」
シェルの声が、静かに変わった。いつもの報告調ではない。
「でもデータは——消えるんですね」
「ああ。消える」
「消えたデータは——取り戻せない」
「取り戻せない」
沈黙が流れた。
俺は次のレコードに手をつけようとして——やめた。
「シェル」
「はい」
「バックアップの重要性って、消えてから初めて分かる。前の世界でも同じだった。『バックアップなんて要らないだろ』って思ってる時期が、一番危険だ。失ってから——急に、保存しておけばよかったと思う」
「……それは、データに限った話ですか」
「いや」
俺は壁面のコードを見つめた。
「何にでも当てはまる。人との関係も。時間も。大事にしておけばよかった、と思うのは——いつも、失った後だ」
シェルが長い間、黙っていた。
それから——
「……お前は、消えたデータを惜しむのか」
シェルが言った。いつもと違う声だった。質問ではなく、確認だった。
「そりゃそうだ。誰かが残した記録だぞ。五百年前の誰かが、何かを記録しようと思って、書き残した。その意志ごと消えた。惜しくないわけがない」
シェルが沈黙した。
長い沈黙だった。
「……そうだな」
シェルの声は——初めて聞く音色だった。
「そうだな」をシェルが言ったのは、初めてだった。
データを「情報」ではなく「誰かの足跡」として見た。それがシェルにとって何を意味するのか——俺には正確には分からない。だが、何かが変わった。
復旧作業が完了した。
メモリのバックアップのおかげで、重要データの大半は取り戻せた。だが大公の言う通り、一部の古代記録は永久に失われた。
大公は失われた記録のリストを受け取り、長い間それを見つめていた。
「数百年分の知識が——一日の攻撃で消えた」
大公の声は枯れていた。
「大公」俺は言った。「今回の件で、バックアップ体制を強化すべきです。メモリのバックアップ・プロトコルを拡張して、全アーカイブを保護対象にしましょう」
「……頼めるか」
「はい」
大公が頷いた。そして——俺に何かを差し出した。
小さな結晶体だった。透明な多面体の内部に、複雑なコードが刻まれている。
「暗号化シールド。我が公国の古代技術だ。源コードの改変を防御するバリアを生成する。使い方は——お前なら分かるだろう」
俺はデバッガーズ・アイで結晶のコードを読んだ。
ENCRYPTION SHIELD v0.3
Type: Code Protection Barrier
Effect: Prevents unauthorized modification
of source code within radius
Range: Variable (user-defined)
Duration: Until deactivated or broken
Power source: User MP
源コードの不正改変を防ぐバリア。これがあれば、ヴァイラスの不意打ちに対する防御力が格段に上がる。
「ありがとうございます」
「礼はいい。世界を守ることが——我が公国の存在意義でもある」
その夜。
復旧作業を並走して戦い続けた二日間で、俺とシェルの間には——自然な信頼が生まれていた。
意識して築いたものではない。一緒にコードを読み、一緒にデータを直し、一緒に失われた記録を悼んだ。その過程で——言葉にしなくても通じるものが、生まれた。
夕食の後、シェルが全員の前で口を開いた。
「一つ、報告があります」
全員の目がシェルに向いた。
シェルは眼鏡を正した。それから——深く息を吸った。
「私は——このパーティに、正式に加入します」
ガルドが目を丸くした。
「お前、今まで正式じゃなかったのか?」
「契約上は『同行者』でした。雇用関係も正式な仲間関係もない。調査の協力者として、情報提供の対価を受け取る立場——それが、これまでの関係でした」
シェルが続けた。
「しかし——この異常現象は、データベルグだけの問題じゃない。世界全体の問題だ」
一拍。
「私の力が必要だろう」
言い切った。
ガルドが笑った。大きな笑い声だった。
「偉そうに言うなあ! でも——嬉しいぜ」
アリアが微笑んだ。「歓迎します、シェル」
メモリが光を揺らした。「わあ——仲間が増えました!」
俺は——笑った。
「よろしく、シェル」
「よろしく——」
シェルが言葉を止めた。何かを飲み込んだような顔をした。
それから——ほんの少しだけ、口角が上がった。
「……よろしく」
それで、十分だった。
夜更け。
宿の窓辺で、俺はメモリに小声で質問した。
他の三人はもう眠っている。廊下は静かだ。月明かりだけが、部屋を照らしている。
「メモリ」
「はい、マスター」
メモリは俺の肩に座っていた。
「世界の『バージョンアップ』って——次のバージョンにする時、前のバージョンのデータはどうなるんだ?」
メモリが沈黙した。
長い沈黙だった。
月が雲に隠れた。部屋が暗くなった。メモリの回路模様だけが、淡い光を放っている。
「マスター」
「ああ」
「その答えを——本当に、聞きたいですか」
俺は黙った。
聞きたくなかった。
でも——聞かなければ、先に進めない。
「聞きたい」
メモリの光が、少し弱くなった。
「前回のバージョンアップの時——旧バージョンのデータは——」
メモリの声が掠れた。
「大部分が——消去されました」
知っていた。設計書に書いてあった。だがメモリの口から直接聞くと——重さが違った。
「消去、というのは——住民も含めて?」
「はい」
「全員?」
「大部分。ごく一部が——移行に成功しましたが——ほとんどは——」
メモリが黙った。
俺も黙った。
月が雲から出た。
光が戻った。
メモリの瞳が、月明かりを反射していた。その瞳に映っているものが——涙なのかデータなのか、俺には区別がつかなかった。
俺は——その答えを、知りたくなかった。
知ってしまった今でも、知りたくなかった。
次回、第33話「バージョン・ヒストリー」——世界のバージョン履歴。その真実が意味するもの。そして——ヴァイラスの本当の目的。




