第28話 スタック・エラー
尼崎の貸しコンテナは、港から15分の工業地帯の端にある。
周囲は夜になれば人が来ない。監視カメラはない。手書きの賃貸契約書だけが存在する、春山にとって唯一の「オフサイト・バックアップ」だ。
月に一度、棚卸しに来る。
シャッターを開けると、圧縮袋が整然と並んでいた。棚に区分けして積み上げた袋が20個。それぞれにマジックで番号を振ってある。最終確認日も書いてある。前職の部材倉庫と、管理の方法は変わらない。
春山は作業ベルトから端末を取り出して、在庫のチェックを始めた。
今月の増分は7袋。うち3袋がHブロックの素材、4袋が通常の清掃品だ。Hブロック分は別区画に分けて保管している。グレードが違うものを混在させると、後で仕分けが面倒になる。
問題は、14番の袋だった。
先月、試験的に限界まで圧縮した袋だ。通常の圧縮では3袋分の容量を1袋に収めるところを、スタックの入力回数を倍に増やして5袋分を詰め込んだ。袋自体は変形していない。
重量登録も消失している。正確には、消失というより桁が溢れた結果として記録が崩れているのだと推測している。詰め込んだ量がシステムの計算できる上限を超えて、処理が重量の算出を途中で放棄した。
前職で似たバグを見たことがある。データベースの整数型に入りきらない数値を突っ込んだとき、カラムの値がゼロになるか、マイナスに転じるかどちらかだった。外見上は何も変わっていない。
ただ。
春山はしゃがんで、14番の袋を耳に近づけた。
音がしていた。
音というより、正確にはノイズだ。周波数が不規則に揺れる、低い干渉音。壊れかけたラジオが遠い放送を拾っているような、あるいは接触不良のスピーカーが空気を震わせているような音だ。袋の口を閉じているのに、内側から染み出している。
春山は袋を床に置いた。
隣の15番を持ち上げた。こちらは通常の圧縮だ。耳に近づける。音はしない。
16番、17番。どちらも通常圧縮。音はない。
14番だけが鳴っている。
春山はしばらく、その音を聞いた。
前職で似た現象に一度だけ遭遇したことがある。物流センターの在庫管理サーバーが過負荷状態になったとき、接続していた端末のスピーカーから同じような音が出た。データの転送が詰まって、バッファが溢れかけているときの音だ。あのときはサーバーを再起動して、バッファをクリアした。
この袋の中で、何かが溢れかけている。
春山はメニュー画面を開いて、14番袋のアイテムログを確認した。
登録上の内容は圧縮された魔石が大量に記録されている。重量はゼロ。容量は正常範囲内。エラーフラグは立っていない。システム上は何も問題がない状態だ。
しかし音はしている。
春山はステータス画面を開いた。
閉じる。
開く。
ウィンドウの開閉を繰り返しながら、14番袋のスロットにアクセスする。高速で開閉するたびに、スロットの表示が一瞬だけ乱れた。通常の表示では「魔石×多数」としか出ない欄が、ウィンドウが開いている0コンマ数秒の間だけ、別の何かを表示しようとして、消える。
速すぎて読めない。
春山はアケコンの操作を思い出した。格ゲーの1フレーム入力は、指ではなく手首と腕全体の動きで出す。指だけで叩くと、必ず遅れる。身体全体の動きを同期させて、最小の動作で最速の入力を出す。
開閉の速度を上げた。
スロットの表示が、長く滲んだ。
数字の羅列ではない。記号でもない。春山が見慣れている何かに近いが、それが何かを認識する前にウィンドウが閉じる。
もう一度。
長く滲んだ表示が、0.2秒だけ止まった。
春山は画面から目を離した。
コンテナの壁を見た。鉄板に、外の街灯の光が薄く差し込んでいる。
今見えたものを、頭の中で整理する。
数字の羅列だ。
記号は混じっていない。0か1か、どちらかしかない文字が、高密度に並んでいる。
それだけなら、ただのノイズかもしれなかった。
しかし羅列の先頭に、見覚えのある構造があった。
一定のビット数ごとに区切りが入り、先頭の数バイトが固定のパターンを形成している。
前職でバイナリファイルをダンプしたとき、ファイルの種別を示すマジックナンバーが先頭に並んでいた。あの構造と同じだ。ランダムなビット列ではない。何らかのフォーマットに沿って、意図的に構造化されたデータだ。
バイナリだ。
春山は床に膝をついたまま、しばらく動かなかった。
魔石の中に、バイナリが入っている。
頭の中で、その一文を三度繰り返した。
魔石は燃料だ。照明に使われる。暖房に使われる。石油に代わるエネルギー源として、社会インフラの一部になっている。ガソリンスタンドの代わりに魔石からの充填所がある。電力会社の代わりに魔石精製プラントがある。誰もがそれを当然のこととして使っている。春山も疑ったことはなかった。
その燃料の中身が、構造化されたバイナリデータだ。
ガソリンを燃やすとき、誰もガソリンの中身を確認しない。電気を使うとき、誰も電子の構造を気にしない。魔石もそれと同じだと、全員が思っていた。春山も含めて。
しかし中身がある。フォーマットに沿って構造化された、何らかのデータが。
それが何かは、まだわからない。ただ、世界中で毎日燃やされているものの中に、データが詰まっているという事実だけが、コンテナの冷えた空気の中に静かに置かれていた。
説明がつかない、とは言えなかった。
前職のサーバーが過負荷になったとき、バッファから溢れたのはデータだった。この袋の中で起きていることは、それと同じだ。詰め込みすぎた結果、内側のデータが外に滲み出している。
ノイズの正体は、データの漏洩だ。
問題は、魔石に何のデータが入っているかだ。
春山は14番袋を持ち上げた。
音は続いている。低く、不規則に。
袋を棚の一番奥に押し込んだ。他の袋との間に、緩衝材代わりのダンボールを挟んだ。音が若干、遠くなった。
シャッターを閉める前に、もう一度だけ耳を澄ませた。
コンテナの外からは、工場の低い機械音が聞こえる。港の方角から、船のエンジン音が風に乗って来る。
14番袋の音は、それらとは違う周波数で鳴り続けていた。
春山は軽自動車に乗り込んだ。
シートに背中を預けて、天井を見た。
魔石のバイナリが何のデータかは、まだわからない。
ただ、圧縮しすぎた結果として「内側が滲み出す」という現象が起きたことは確かだ。これを意図的に再現できれば、魔石の中身を読める可能性がある。
読んで、何が出てくるかは知らない。
知る必要があるかどうかも、まだわからない。
ただ、前職でサーバーのバッファが溢れたとき、中身を確認しなかったことが後で問題になった。確認していれば、障害の原因を先に潰せた。確認しなかったから、本番環境でエラーが出た。
保守員の習性として、溢れたものは確認する。
それだけのことだ。
エンジンをかけた。
工業地帯の夜道を、43号線へ向かって走り出した。助手席のグローブボックスの中で、今日回収した通常品の魔石がいくつか入った袋が揺れた。
その袋は、音を立てなかった。




