第33話 メモリリーク・ゴースト
その日は単独の清掃割り当てだった。
Gブロックの旧区画。正確には、Gブロックの中でも攻略され尽くした最奥の掃き溜めだ。
探索者が旨味を取り終えた後に残る、リソースの枯渇したエリア。魔物の密度は低い。戦闘の必要はほぼない。ただ歩いて、回収して、出口に戻るだけの仕事だ。
春山には、ちょうどいい時間だった。
解析の続きを頭の中で整理しながら歩ける。
第2区画に入ったとき、気づいた。
壁際に、何かがいる。
魔物ではない。輪郭が、おかしい。通常の魔物はポリゴンが整っている。関節の位置も、動きの方向も、それなりに定まっている。しかしそれは、輪郭そのものが定まっていなかった。
人型だった。
身長は成人男性程度。しかし体表にテクスチャがない。灰色の、均一な面が張り付いているだけだ。腕の長さが左右で違う。首の角度が、物理的にあり得ない方向を向いている。足が、床の座標に正しく接地していない。数センチ、地面に埋まっている。
動いていない。
ただ、そこに立っている。
春山はメニュー画面を展開した。
ウィンドウを5枚重ねる。辞書変換を経由させる。コンテナで積み上げてきた解析環境だ。ただし今回の対象は、魔石のような静止したファイルではない。
魔石の解析が「ストレージ上の静止画ファイルの復元」だとすれば、目の前の人型は「実行メモリ上に残留した不正なプロセス」だ。
アプローチが違う。ファイルの中身を読み解くのではなく、この人型が立っている空間の座標そのものをスキャンする。
フィルター越しに、人型の輪郭を見た。
肉眼ではノイズだ。テクスチャのない灰色の面が、輪郭も定まらずに揺れている。
しかしフィルター越しには、別の構造が見えた。X軸、Y軸、Z軸。3組の座標値が、人型の輪郭に貼り付いている。レンダリングの描画命令が途中で止まっている。ポリゴンの組み立てが完了しないまま、座標だけが確保されて残っている状態だ。
そしてその座標値の隣に、見慣れたフラグが立っていた。
前職でゾンビプロセスを確認したとき、タスクマネージャーに「応答なし」と表示されたことがある。それと同じ構造だ。終了処理が走ったが、完了しなかった。中身のない殻が、メモリを占拠したまま居座っている。
敵対フラグもない。判定もない。ただ、そこにあるはずのないデータが、空間のアドレスを押さえているだけだ。
メモリリークだ。
春山はしばらく、その人型をフィルター越しに見た。
肉眼ではノイズ。フィルター越しでは、無効なデータのラベルが貼られた残留オブジェクト。
攻撃してくる危険はない。しかし放置すれば演算リソースを消費し続ける。前職の感覚でいえば、これは処理すべき案件だ。
春山はウィンドウの操作を試みた。
収納動作と開閉を同時に入力する。通常のスタック入力とは組み合わせを変えた。強制終了に近いシグナルを、座標を指定して送り込む。
人型の輪郭が、一瞬揺れた。
もう一度。
揺れた。
3度目の入力をかけた瞬間、人型の頭部が動いた。
首の向きが変わった。物理的にあり得ない角度のまま、ゆっくりと、春山の方を向いた。
顔はなかった。テクスチャのない、灰色の面があるだけだ。それでも、向いた。
コンテナで聞いていた14番袋のノイズと似た音が、一瞬だけ空気を震わせた。低く、不規則な干渉音。しかし今度は、周波数がわずかに違った。ノイズの中に、何か別のものが混じっているような。
春山は入力を止めなかった。
4度目。
人型が、崩れた。
ポリゴンが散るのとは違う消え方だった。輪郭がぼやけて、薄くなって、そのままフェードアウトするように消えた。魔石も素材も、何も落とさなかった。
ただ、消えた。
春山はその場所を見た。
フィルター越しに確認する。座標値が、消えている。「応答なし」のフラグが、消えている。
処理は完了した。
前職でゾンビプロセスを強制終了したとき、画面からそのプロセスの表示が消えた。すっきりした、と思った。メモリが解放された。システムが少し軽くなった。
今は、すっきりしなかった。
消える直前、頭部が向いた。
それがデータの終了処理に伴うランダムな挙動なのか、あるいは別の何かなのかは、わからない。わからないが、見た。
魔石のデータのことを、考えた。
台所のコーヒーメーカー。夕方の道の自転車。4人分の食卓。公園で走る子供。
あの人型の中にも、何かのデータが入っていた可能性がある。削除に失敗して残留していたということは、元々は何かとして存在していたものだ。それが何かは、わからない。しかし「何か」ではあった。
それを、消した。
春山は歩き出した。
第3区画に入ったとき、また見えた。
今度は2体いた。
1体は子供ほどの大きさで、腕が4本ある。もう1体は人型だが、頭部がない。どちらも床に正しく接地していない。どちらも、動いていない。
フィルター越しに確認する。どちらも同じフラグが立っている。残留データだ。
春山はウィンドウの操作を繰り返した。
子供サイズのものが、先に消えた。
頭部のないものが、少し後に消えた。
2体とも、何も落とさなかった。ただ消えた。
春山は区画を見渡した。
他にいないことを確認してから、歩き出した。
前職で、データ消去の作業をしたことがある。廃棄するサーバーのストレージを初期化する仕事だ。中に何が入っているかは確認しない。どうせ消えるから。そう思いながら、コマンドを実行した。
あのときも、特に何も感じなかった。
今は、違う。
子供ほどの大きさの、腕が4本の何かが、消えた。
それが何のデータだったのかは、わからない。しかしあの台所の画像と、防波堤の後ろ姿を見た後では、「わからない」を理由に感覚を切り離すことが、以前より難しくなっていた。
第4区画の出口近くで、また見つけた。
座っていた。正確には、座っているような姿勢で空中に固定されていた。背もたれのない椅子に座るような角度で、床から20センチ浮いている。頭部と体幹はあるが、脚部がない。上半身だけが、宙に浮いて座っている。
フィルター越しに確認した。同じフラグ。残留データだ。
春山はしばらく、それを見た。
操作を始める前に、少しだけ待った。
理由はわからない。ただ、すぐに消す気になれなかった。
30秒ほど見てから、ウィンドウの操作を始めた。
消えた。
何も落とさなかった。
春山は出口へ向かって歩きながら、今日消したものの数を数えた。
4体。
4体分の残留データを、強制終了した。
正しい処理だ、ということはわかっている。放置すればリソースを食い続ける。他の処理に影響が出る。保守員の仕事として、正しい判断だ。
しかし正しい判断が、正しい感触を伴うとは限らない。
前職で廃棄サーバーのストレージを初期化したとき、そのサーバーが長年動き続けてきた機械だと知っていても、コマンドを実行することに迷わなかった。
今は、迷った。
1体目が消える直前、頭部が春山の方を向いた。あの周波数の変わったノイズが、まだ耳の奥に残っている。
それだけ変わった、ということかもしれない。
出口の光が見えてきた。
春山はトングを作業ベルトに戻しながら、今日の清掃記録をメモ帳に書いた。
回収物。区画の状態。所要時間。
残留データの処理については、書かなかった。
書く欄が、ない。




