無限増殖する金貨【メモリリークの錬金術】
【エピソードタイトル】
第12話:無限増殖する金貨【メモリリークの錬金術】
【前書き】
お読みいただきありがとうございます!
前回、重力が反転して空に落ちていく街を「広域分散型空気クッションパッチ」で救ったイルハとフェリス。
大開発時代の次なるバグの舞台は、自由都市アルカディアの経済の中心である「商業ギルド」。
なんと、使っても使っても財布の中から減らない、夢のような『無限金貨』が出回っているとの情報が。しかし、元プログラマーのイルハの顔は真っ青。それ、世界システムを限界まで圧迫してサーバーダウンさせる、最悪の「メモリリーク(メモリの解放忘れ)」バグだったのです!
【本文】
「――見てよイルハ! この金貨、お買い物に使っても、お財布の中でいつの間にか『複製』されて元通りになってるの! これでもう、一生お金に困らないわ!」
商業ギルドの宿舎に戻るなり、フェリスがホクホク顔で革の財布をジャラジャラと鳴らした。
中を見せてもらうと、確かに不自然なほどピカピカと輝く金貨が、財布の容量を無視してぎゅうぎゅうに詰まっている。
だが、私はその金貨を一目見た瞬間、持っていたコーヒーカップを床に落としそうになった。
「ちょっとフェリス、今すぐそのお財布を床に捨てて(リリースして)!!」
「えっ!? ちょっと、何するのよイルハ! 私の大事な軍資金が――」
「軍資金じゃないわ、それは経済を崩壊させる偽造通貨よ! ……っていうか、経済どころじゃないわね。世界全体のシステムメモリ(リソース)を食いつぶして、大陸ごとフリーズさせる最悪のウイルスよ!」
私は聖剣を引き抜き、フェリスの財布のオブジェクトデータをスキャンした。
半透明のブルーの画面に、おぞましい速度で増殖していくオブジェクトのログが、真っ赤な警告と共にスクロールしていく。
「やっぱり……! これ、錬金術のスクリプトを改造して作られた『GoldCoin_temp』っていう一時オブジェクトだわ。本来なら、買い物をした瞬間に古いデータは破棄されなきゃいけないのに、破棄の関数が記述されていないわ! 使えば使うほど、古いデータがメモリの中に残り続ける【メモリリーク】が起きてるのよ!」
「め、めもりりーく……? よく分からないけど、お金が増えるなら得じゃない?」
フェリスが小首をかしげる。私は彼女の両肩をガシッと掴んで揺さぶった。
「得なわけないでしょ! 世界システムが使えるメモリの容量(上限)は決まっているの! この無限金貨は、消えずに世界の中に残り続けるから、どんどんメモリを圧迫していくわ。このまま金貨が増え続けたら、近いうちに世界全体のメモリが枯渇して、人間も、大地も、すべての処理が完全に停止するわよ!!」
「なんですってぇぇぇぇぇ!!??」
フェリスの絶叫が部屋に響く。
その瞬間、窓の外から「おい! なんだこれ、急に身体が動かなくなったぞ!」「おいおい、馬車がカクカクした動き(処理落ち)になってる!」という、住民たちのパニック交じりの声が聞こえてきた。
窓から外を覗くと、街を行き交う人々の動きが、まるでコマ送りの動画のように不自然にカクついている。風に揺れる木の葉も、一秒ごとにピタッ、ピタッ、と静止している。世界全体の動作フレームレートが、著しく低下(ラグい状態)していた。
「嘘……、もうそこまでメモリが逼迫しているの!? 発生源はどこよ!」
私は聖剣のデバッグ画面を操作し、バグデータのパケットが最も高密度で発生している場所を割り出した。
「商業ギルドの本部よ! あそこで誰かが、この無限金貨を産業規模で大量生成(無限ループ)させてるんだわ!」
「行きましょうイルハ! 世界がカクカクして動かなくなる前に、その大元を叩き潰すわよ!」
私たちは宿舎を飛び出した。
しかし、外の廊下に出た瞬間、私たちの動きすらも「……カクッ……カクッ……」と、コマ送りになってしまう。空間全体のデータ処理が追いついていないのだ。
「う、動きづらいわね……! まるでお団子の中で泳いでいるみたい!」
「フェリス、私の手を握って! 私たちが移動する周囲の空間だけ、一時的にオブジェクトの描画優先度を最大に書き換えるわ!」
私はフェリスの手を握り、聖剣の第二ボタンをホールドした。
私たちの周囲だけ処理速度が正常化し、私たちはカクつく街の人々を追い抜いて、猛烈なスピードで商業ギルドの本部へと滑り込んだ。
ギルドの地下金庫室。そこは、すでに地獄のような光景が広がっていた。
「がははは! 増える、増えるぞ! これさえあれば、我が商業ギルドは世界を買い取ることすら可能だ!」
金庫の中央で、肥満体のギルド長が、怪しく光る自作の「錬金釜」の前に立ち、狂ったように笑っていた。
釜の排出口からは、ドクドクと滝のように『無限金貨』が溢れ出し、すでに金庫の床を埋め尽くして、大洪水のようになだれ込んできている。
「おい、そこクソ仕様の強欲オヤジ!!」
私は金貨の波をかき分け、ギルド長に聖剣を突きつけた。
「今すぐその釜のプロセスを停止しなさい! あなたのせいで世界システムがメモリ不足(Out of Memory)で10分以内にブルースクリーン(完全崩壊)になるわ!」
「うるさい! せっかく手に入れた無限の富を渡してたまるか! おい、警備兵、その不届き者を排除しろ!」
ギルド長が指を鳴らすと、金貨の山から、金貨で形成された巨大なゴーレムが三体、ガシャガシャと音を立ててポップした。
「チッ、また雑魚敵の生成か! イルハ、ここは任せて!」
フェリスが前に出ようとするが、その身体が再びカクッと静止した。
「しまっ……! ゴーレムのデータ量が大きすぎて、こっちの処理が追いつかない……!」
「フェリス、下がって! メモリを食いつぶすバグデータには――プログラマー最強の掃除機能、【ガベージコレクション(メモリ強制解放)】をお見舞いしてあげるわ!!」
私は聖剣を両手で逆手に持ち、金貨で埋め尽くされた床へと力任せに突き立てた。
私の持つ十サークルの魔力を、すべて「不要データのスキャンと解放」のシステムコマンドへと一括変換し、金庫室全体へとパルス状に放射する!
(ロジック構築:グローバルメモリをフルスキャン! 有効なポインタ(所有権)が紐付いていない、かつ、デストラクタが実装されていない全一時オブジェクトを検出せよ! ターゲット、床の金貨および金貨ゴーレム。すべての存在領域を――『System.gc();(強制解放)』!!!)
ピキィィィィィィィィィィィン……!!!
透明な論理の波が、金庫室を駆け抜けた。
その瞬間。
襲いかかろうとしていた金貨ゴーレムの身体が、まるで最初から存在しなかったかのように、光の霧(消去データ)となって一瞬で消滅した。それだけでなく、金庫室を埋め尽くしていた数百万枚の無限金貨も、サラサラとした純粋な魔力パケットへと還元され、大気に溶けて消えていく。
「な、何ィ!? ワシの金貨が、金貨の山が消えていくぅぅぅぅ!?」
ギルド長が悲鳴を上げて釜にしがみつく。だが、私のガベージコレクションの波は、その暴走する錬金釜の本体をも捉えていた。
ドカンッッ!!!
過負荷で火花を散らしていた錬金釜が、根元から爆発して粉々に砕け散った。
その直後。
ジジジ……と鳴っていた空間のノイズが完全に消え去った。
窓の外を見れば、カクカクと不自然な動きをしていた住人たちや馬車が、何事もなかったかのように滑らかに、スムーズに動き始めている。
世界システムのメモリが完全にクリーンアップされ、フレームレートが元の快適な状態へと復帰したのだ。
「はぁ……終わったわね。無事にメモリの解放成功よ」
私は聖剣を収め、額の汗をぬぐった。
「……すごいのね、イルハ。あんなにたくさんあった金貨が、一瞬で跡形もなく消えちゃうなんて。……でも、ちょっとだけ、本当にちょっとだけ、あのお金で美味しいケーキを食べたかった気もするわ……」
フェリスが、自分の空っぽになった財布を見つめながら、がっくりと項垂れている。
「ダメに決まってるでしょ。バグで手に入れたあぶく銭なんて、いつデータクラッシュして消えるか分からないんだから。私たちは私たちのアーキテクチャ(実力)で、真面目に依頼をこなして稼ぐのよ」
私はそう言って、気絶したギルド長の胸ぐらをつまみ上げ、ギルドの裏帳簿を押収した。
世界がオープンソース化し、人々に自由がもたらされた大開発時代。
しかしそれは、メモリリーク、無限ループ、不正アクセスといった、あらゆる「デベロッパーの悪夢」が現実の災害となって襲いかかる、果てしないデスマーチの始まりに過ぎなかった。
「さあフェリス、次はどのバグコードをリファクタリング(物理破壊)しに行こうかしら?」
「……はいはい。定時退社なんて夢のまた夢ね、私のブラックな魔女様」
新しく手に入れたデバッグツールを手に、バグだらけの新世界を全力で駆け抜ける二人。
彼女たちのサービス運用保守(冒険)は、世界が完全に安定稼働するその日まで、止まることなくランタイムを刻み続けるのだった。




