第30話 解凍された記憶
数日後、コンテナに戻った。
折り畳み椅子を広げて、14番袋の前に座る。メモ帳を膝に置く。前回の辞書登録の続きを3時間かけて入力した。16進数への変換を繰り返しながら、登録件数が800を超えた頃に、指が動かなくなった。
翌日も来た。今日で3日目だ。
登録件数は1,200を超えている。
ウィンドウを5枚展開する。前回固定した空間座標に、一枚ずつ戻していく。14番袋を床の印の上に置く。ずれていないことを確認する。
高速開閉を始めた。
1枚目に生データが流れる。2枚目の辞書変換が走る。3枚目のハイライトが構造を浮かせる。
3日前より、見える量が増えていた。
ヘッダの後ろに続くブロックが、セパレータで区切られながら流れていく。
各ブロックの先頭に、毎回同じパターンが現れる。仮番号03と登録したパターンだ。出現頻度が高い。重要なフラグか、あるいはブロックの種別を示す識別子かもしれない。
4枚目のウィンドウに、仮番号03の後続データを抽出するフィルタを設定した。
流れが、絞り込まれた。
03の後に続くデータブロックだけが、4枚目に表示される。ノイズが減った。構造が、より鮮明に見えてくる。
5枚目を展開する。
4枚目のブロックを、さらに辞書変換にかける。1,200件の登録パターンが、照合を始める。
表示が、変わった。
0と1の羅列ではなく、別の何かが浮かびあがった。
数字だ。
座標のような数字が並んでいる。小数点以下まで続く、長い数字が2組。緯度と経度に似た形式だ。その隣に、また別の数字が続く。日付の形式に見える。年月日と時刻が、8桁と6桁で並んでいる。
春山は手を止めた。
緯度経度と、タイムスタンプ。
それはファイルに付随するメタデータの構造だ。前職で扱ったサーバーのログファイルに、同じ形式のヘッダが付いていた。ファイルがいつ、どこで作られたかを示す情報だ。
魔石の中に、メタデータが入っている。
つまり、魔石の中身は「ファイル」だ。座標と時刻を持つ、何らかのファイル。
6枚目のウィンドウを展開した。
メタデータの後に続く本体ブロックに、フィルタを当てる。辞書変換を重ねる。
何も起きなかった。
本体ブロックのパターンは、辞書登録の範囲外だ。1,200件の登録では足りない。別のフォーマットか、あるいは圧縮がかかっているか。
春山は椅子の背にもたれた。
天井を見た。
メタデータは読めた。本体は読めない。今夜はここまでだ。
帰り支度を始めようとして、手が止まった。
フィルタがかかったままの4枚目のウィンドウに、変化があった。
ブロックが流れる速度が、落ちた。
ほんの一瞬だが、データの密度が変わった。直前まで均一に流れていたブロックが、ある一点で厚みを増している。データ量が多いブロックだ。
春山はそのブロックに、残りのウィンドウをすべて向けた。
フィルタを重ねる。辞書変換を重ねる。ハイライトを当てる。
表示が、滲んだ。
0と1の羅列が、別の形に変わろうとしている。変換が追いつかない。登録パターンが不足している。しかし部分的に、いくつかのブロックが別の何かに変換されつつある。
色だ。
RGBの値が、数字として並んでいる。
赤、緑、青の輝度値が、座標と組み合わさって並んでいる。
画像データだ。
春山は動かなかった。
ピクセルのRGB値と座標。それが大量に並んでいる。画像ファイルの本体部分と同じ構造だ。しかし全体を一度に変換できるだけの辞書登録がない。見えているのは断片だけだ。
辞書登録を増やす必要がある。
今夜では無理だ。
春山はウィンドウを閉じかけて、止まった。
断片でも、変換できている部分がある。その部分だけを繋ぎ合わせれば、何かが見えるかもしれない。5枚のウィンドウの配置を変えた。断片的に変換されたピクセル値だけを抽出して、別のウィンドウに集める。座標順に並べる。
空白だらけの格子が、ウィンドウに浮かんだ。
変換できた部分だけが色を持ち、変換できていない部分は空白のまま、まばらに点在している。全体の2割にも満たない。
しかし色を持つ点の分布が、輪郭を示していた。
青。
広い青が、画面の上半分を占めている。
その下に、緑の塊。
青と緑の境界に、灰色の細い線。
空と、草と、道だ。
春山はウィンドウを見た。
まばらな点の集合が、輪郭だけを示している。空の青、草の緑、道の灰色。それだけだ。建物があるかどうかも、季節がいつかもわからない。人がいるかどうかもわからない。
しかし、屋外だということはわかる。空が広い場所だということはわかる。
公園のような場所かもしれない。
春山は辞書登録を再開した。
RGBの変換パターンを集中的に追加する。ピクセル値の範囲を区切って、色域ごとに登録する。細かい座標計算のパターンも追加する。1件登録するたびに、ウィンドウの空白が一点ずつ埋まっていく。
2時間後、登録件数が1,800を超えた。
指が悲鳴を上げていたが、止まれなかった。
空白が、埋まっていく。
青が、濃くなった。夏の昼間の空の色だ。雲はない。均一な青が、画面の上半分を満たしている。
緑が、細部を持ち始めた。芝生だ。よく手入れされた、短く刈られた芝生。その向こうに、葉の繁った木が数本。木の種類まではわからないが、葉の色は濃い緑だ。夏の盛りの色だ。
道が、幅を持った。コンクリートか石畳か、淡い灰色の遊歩道が、画面の中央を横切っている。
人影が、現れた。
小さな人影が、遊歩道の上にいる。2つある。大きい影と、小さい影。大人と子供だ。
子供の影が、大きい影の方に向かって走っている。小さな腕を広げて、走っている。
春山は画面を見た。
コンテナの薄暗い中で、5枚のウィンドウが重なり合って、一枚の風景を映していた。
夏の公園だった。
青い空。手入れされた芝生。木陰。遊歩道を走る子供と、それを受け止めようとしている大人。
解像度は低い。色の境界が荒い。人影の顔は判別できない。どこの国の公園かもわからない。いつ撮られたかは、メタデータが示していたタイムスタンプしか手がかりがない。
しかしそれは確かに、誰かが見た風景だった。
誰かが、そこにいた。夏の昼間に、公園にいた。子供が走ってくる光景を、誰かが記録した。
その記録が、魔石の中にあった。
春山はしばらく、その画像を見ていた。
これが何を意味するかは、まだわからない。
ただ、わかることがある。
魔石はファイルだ。
メタデータを持ち、画像データを持つ、何らかのファイル形式に準拠したデータだ。そしてそのデータの中身は、演算結果でも、魔法の副産物でも、エネルギーの凝縮でもなく、誰かの日常の記録だった。
子供が走っている。
大人が、受け止めようとしている。
それだけの、何の変哲もない風景だ。
春山は画面から目を離した。
コンテナの壁を見た。鉄板。街灯の光。工場の機械音。
手元のメモ帳を開いた。今日の作業を記録する。登録件数、解析の進捗、次回の課題。次は圧縮フォーマットの解析に取り掛かる必要がある。本体ブロックの大部分はまだ読めていない。今日見えたのは、ファイル全体のほんの一部だ。
ペンを走らせながら、もう一度だけウィンドウを見た。
夏の公園が、まだそこにあった。
春山は画面を閉じた。
5枚のウィンドウが、順番に消えた。
公園も、子供も、大人も、消えた。
しばらく、暗いコンテナの中に座っていた。
エンジニアとして10年以上データを扱ってきた。サーバーのログ、在庫の数字、処理の記録。数字は数字として扱ってきた。中身に何が書いてあるかより、フォーマットが正しいかどうかの方が重要だった。
しかし今日見たのは、数字ではなかった。
数字が変換されて出てきたのは、誰かの夏だった。
誰かが大切にしていたかもしれない、何でもない午後だった。
その「何でもない午後」が、魔石として採掘されて、換金されて、燃料として燃やされている。
春山は立ち上がった。
14番袋を棚の奥に戻した。音はまだ続いている。
シャッターを閉めた。
軽自動車に乗り込んで、エンジンをかけた。
走り出してから、信号で止まった。
今日見た画像のことを、頭から追い出せなかった。
子供が走っている。腕を広げて、誰かに向かって走っている。
それが誰の記憶なのかは、わからない。いつの時代のものかも、どこの場所かも、その後2人がどうなったかも、何もわからない。
ただ、その瞬間は、あった。
確かにあった瞬間が、0と1に変換されて、魔石の中に封じ込められていた。
信号が青になった。
アクセルを踏む。
工業地帯の夜道を、43号線へ向かって走り出した。




