第26話:静かなるメモリリーク
初夏の風が、教室の窓から吹き込んでくる。
【281:06:12:44】
カウントダウンが、三百日を切ってから大分経った。
二百八十一日。
九ヶ月と少し。
長いように見えて、やるべきことの量を考えれば、気が遠くなるほど短い。
あの日——エララの屋敷でパッチが破られた瞬間は、今でも悪夢に出る。
リナの瞳からハイライトが消え、体が燃えるように熱くなり、僕の腕の中で意識を失った。
学園の保健室に担ぎ込み、三日三晩、僕はリナの傍を離れなかった。
高熱が続き、うわ言のように「声が聞こえる」と繰り返す彼女のコードを、ひたすら読み続けた。
その間に、パッチのv2.0を書き上げた。
前回の失敗を踏まえ、システム側の検知パターンを回避する設計に改良済みだ。
四日目の朝、リナの熱が引き、目を開けた時——やっと息ができた。
今のところv2.0は安定しているが、いつまで持つかは分からない。
「レイン君。データの復号、完了しました」
放課後の禁書庫。
ミオが分厚い羊皮紙の束を抱えて隣に座った。
エララから借りた鍵のアクセスコードを使い、研究所の外壁データベースから遠隔で引き出した暗号化ファイルだ。
直接侵入するにはまだ準備が足りない。
だから今は、外から読める範囲のデータを解析している。
「どうだった?」
「良い知らせと悪い知らせがあります」
「……悪い方から」
「研究所の論理障壁は七層構造です。最外層は突破できましたが、第二層以降は現地でなければアクセスできない物理認証が必要です」
「……つまり、リモートでの解析には限界があると」
「はい。良い知らせは、最外層のデータだけでも、盟約の『設計思想』の一端が読めたことです」
ミオが広げた羊皮紙には、古代文字と魔法陣の断片が記されていた。
僕の目には、それが膨大なソースコードの一部として映る。
「……API仕様書の残骸か。引数の型と戻り値は分かるが、中身の実装がない」
「入口は見えても、中身はブラックボックス、ですね」
もどかしい。
設計図の「表紙」だけ手に入れて、中身は白紙のようなものだ。
だが、表紙からでも読み取れることはある。
「ミオ、この関数シグネチャを見てくれ。引数に『聖女の魔力密度』がある。戻り値は……『盟約延命期間(年)』」
「……つまり、聖女の魔力が高ければ高いほど、世界の寿命が延びる仕組みですか」
「ああ。そしてリナの魔力密度は、過去の聖女の中でも桁違いに高い。だから教会はあれほど執着してるんだ」
僕は羊皮紙を机に叩きつけた。
怒りで手が震える。
リナの命を、数値化して「燃費」として計算するシステム。
設計した奴の顔が見たい。
「……落ち着いてください、レイン君。怒りはバグの元です」
「分かってる。……でもな、ミオ。これ、本当にクソコードだぞ。例外処理が一切ない。聖女が見つからなかった場合のフォールバックすら設計されてない」
「緊急措置だったのかもしれませんね。……八百年前の」
八百年前の「一時的な措置」が、今もなお世界を支えている。
技術的負債の極みだ。
前世でも、「一時的」と言って書いたコードが十年後も本番環境で動いてた経験がある。
規模は違うが、本質は同じだ。
◇
「レイン、遅い! もうみんな帰っちゃったよ?」
禁書庫から出ると、中庭でリナが待っていた。
初夏の夕日に照らされた彼女の髪が、きらきらと揺れている。
一見、いつもと変わらない笑顔だ。
だが、僕の目にはもう一つの情報が見えている。
彼女のステータスを覗く。
先月より覚醒が進んでいた。具体的な数字は見たくなかったが、瞳の奥に金色の粒子が微かに散っているのが見えた。
`[Patch Integrity: 72%]`
パッチの耐久度も落ちてきた。
このペースだと、あと数ヶ月で隠蔽が破れる。
「悪い、ちょっと調べ物してた。……帰ろうか」
「うん! 今日はね、寮の食堂でシチューが出るんだよ! 楽しみ〜」
リナが嬉しそうに腕を引っ張る。
僕は彼女の手を握り返しながら、もう片方の手で密かにパッチの補修コードを流し込んだ。
こめかみに一瞬だけ触れる。
`[Patch Integrity: 72% → 78%]`
応急処置。
だが、パッチを当て直すたびに、回復幅が小さくなっている。
初回は一発で100%に戻せた。
今は、80%にも届かない。
抗体ができてきている、とでも言うべきか。
システムが、僕の介入を学習し始めているのだ。
(……いたちごっこだ。このままじゃ、どこかで限界が来る)
「ねえ、レイン」
「ん?」
「最近ね、また少しだけ聞こえるの。あの声。……でも、前みたいに怖くはないよ」
「……そう、か」
「だって、レインがいるもん。レインが守ってくれてるの、分かるから」
リナがにっこりと笑う。
信じてもくれているのだろう。
だが、僕が守れるのは、このパッチが機能している間だけだ。
「……リナ。もし僕が、変なお願いをしたら、聞いてくれるか?」
「変なお願い?」
「いつかの話だ。……まだ先のことだけど」
「いいよ。レインのお願いなら、なんでも聞く」
彼女はあっけらかんと言った。
その無条件の信頼が、今の僕には痛い。
◇
夜。
寮の自室で、僕は天井を見つめていた。
赤い数字が、暗闇の中で静かに減り続けている。
【281:02:33:17】
三時間半で約四時間分の減少。
世界の崩壊は、等速ではない。
加速している。
寝る前に、今日の解析結果を整理する。
分かったこと:
一、盟約の構造は「関数型」に近い。入力(聖女の魔力)に対して出力(世界の延命)が決まる純粋関数。
二、その関数の内部実装は不明。ブラックボックス。
三、関数の外側には「副作用」がある。聖女の消滅。
分からないこと:
この関数の代替実装は可能か?
入力を聖女以外のエネルギー源に差し替えられるか?
あるいは、関数そのものを無効化してもシステムが維持される方法はあるか?
(……答えは、研究所の中にしかない)
だが、今の僕たちには研究所に侵入する力が足りない。
第二層以降の物理認証を突破するには、より強力な魔力操作技術が必要だ。
そしてその技術は、教科書には載っていない。
僕は枕元のメモ帳を取り、走り書きした。
『TO DO:
①パッチの改良(v3.0)。v2.0も劣化が早すぎる
②研究所第二層の認証突破手段の調査
③リナの覚醒速度の抑制方法
④エララへの追加協力要請(公爵家の文献アクセス)
⑤ヴァイスの動向監視——あの男、何を知っている?』
やるべきことが多すぎる。
前世で炎上プロジェクトのタスクリストを作っていた時と同じ気分だ。
違うのは、デッドラインを過ぎたら死ぬのがサーバーではなく、大切な人だということ。
僕はメモ帳を閉じ、目を閉じた。
前世では、こんなToDoリストを作るたびに「誰かがやるだろう」と思っていた。
今は違う。やるのは僕しかいない。
そして、リストの一番上に書けない項目がある。
『リナに真実を話す期限を決めること』。
……明日も、偽りの日常が始まる。
【今節の専門用語解説】
・メモリリーク(Memory Leak)
プログラムが使い終わったメモリを解放し忘れ、使えるメモリが徐々に減っていく現象。レインが対処しているのに世界のリソースが減り続ける状況を比喩。外から見れば問題なく動いているが、内部では静かに「漏れ」が進行している。
・API仕様書(API Specification)
プログラムの機能を外部から呼び出すための「取扱説明書」のこと。関数の名前・引数・戻り値は書かれているが、内部の処理手順は書かれていない。表面上のインターフェースだけ分かる状態。
・テクニカルデット(Technical Debt)
「後で直す」と先送りにした設計上の負債。借金と同じで、放置するほど利子(修正コスト)が膨らんでいく。八百年前の一時対策が世界の根幹になっている状況は、究極のテクニカルデット。
・フォールバック(Fallback)
本来の手段が使えない場合に切り替わる代替手段。聖女が見つからなかった場合のバックアッププランが設計されていないのは、緊急時だったとはいえ致命的な設計ミス。




