第3話「変数と村人たち」
ログ村での生活が始まって十日が経った。
石ころ一つにもIDとパラメータが割り当てられている。`stone_pebble_0x4A7F / weight: 0.3kg / hardness: 4 / material: limestone`。この世界は、すべてがデータだ。
草原を歩けば、一歩ごとに情報が流れ込んでくる。地面の草に成長パラメータが見える。飛んでいる虫に飛行速度が見える。頭上を流れる雲にさえ`cloud_id: C0742 / moisture: 0.63 / drift_speed: 2.1m/s`と書いてある。
最初の三日は情報の洪水で頭がクラクラしていた。十日経った今は、ある程度フィルタリングできるようになっている。意識しないと見えない、意識すると見える——そんな感覚になってきた。職業柄、デバッグモードのオンオフを切り替える感覚と似ている。
---
午前中は農作業の手伝いが日課になっていた。
村長のゴッドが畑の前で手を合わせ、短い祈りの言葉を唱える。その瞬間、俺の視界にコードが展開された。
```
SKILL: 収穫の祈り Lv.3 — 発動
TARGET: field_sector_04 (作物数: 47)
for (crop in target_field) {
crop.growth_rate *= 1.18
crop.disease_resistance += 5
}
mp_cost: 12 → 実行完了
```
関数呼び出しだ。スキルは——関数呼び出しだった。
対象の畑の全作物を配列としてループし、成長速度を一・一八倍に、病気耐性を五ポイント上昇させる。消費MPが十二。整然としたコードだ。
「農業魔法か……いや、これはパラメータチューニングだ」思わずつぶやいた。
「レン、なんぞ言ったか」
ゴッドが振り向く。俺は首を横に振った。「独り言です」
老人は怪訝な顔をしたが、それ以上追及しなかった。ゴッドはもともと口数が少ない人だ。俺が変なことをつぶやいていても、「まあそういう奴なんだろう」と受け入れてくれている——それがステータスの`義理堅さ +4`の実態だろう。
---
次は鍛冶師のバルドだ。
村の端に鍛冶屋がある。バルドは五十代の大柄な男で、毎朝早くから炉の前に立っている。作業中のバルドを見ていると、鍛冶スキルが発動するたびにデータが流れた。
```
SKILL: 鍛冶 Lv.5 — 発動
TARGET: Iron_Bar_07
execute: heat_treatment(temp: 1200, duration: 4.2s)
execute: hammer_strike(force: 2100N, angle: 82deg, repeat: 12)
→ material_tensile_strength: 340 → 520
→ edge_sharpness: 2.1 → 7.8
→ durability_base: 180 → 310
```
職人の技術と魔法の境界線が、この世界では曖昧だ。バルドは「勘と経験で打つ」と言うだろう。でも実際には、スキルが鉄の物性値を直接操作している。勘とは——パラメータ最適化の感覚的な把握のことだったのかもしれない。
「見てんなよ、素人が」
バルドにじろりと睨まれた。
「すみません。見事だったので」
バルドは不機嫌そうにしながらも、鼻を鳴らした。怒ってはいない——満更でもない、というのはステータスを見なくてもわかった。
---
子供たちが草原で遊んでいる。マルが「レン兄ちゃん!」と走ってきた。
数日前に助けた男の子だ。骨折した右足首は、もう普通に走れるようになっていた。子供の回復速度がやたら高く設定されている——`RECOVERY_RATE: 4.8/min`。大人の二倍近い値だ。
「子供時代は回復速度が高め……開発者の優しさか」
思わず笑った。
設計した人間は、子供を優遇している。バグが多い世界を生きやすくするための、意図的な仕様だろうか。プログラマーとして、それが優しい設計に見えた。
「レン兄ちゃん、一緒に遊ぼうよ!」
「俺、運動苦手だぞ」
「じゃあ鬼ごっこは諦めるよ。でもパズルなら!」
しょうがない。俺は草原に腰を下ろして、マルたちが拾ってきた石を使ったパズルに付き合った。子供たちが喜んで問題を出してくる。解くのは早い。なんせ石ころ一つにまで素材と重量が見えているのだから、バランスを取る問題には有利すぎる。
午後の風は気持ちよかった。東京のオフィスでは、昼休みに外に出ることさえ稀だった。
---
十一日目の午後。
仕様解析ノートに「未探索域あり」と書いてある領域が気になっていた。村から半日ほど足を伸ばした先、森の奥の一帯だ。
マルたちには「ちょっと散歩」と言い残して、俺は森を歩き始めた。
デバッガーズ・アイで周囲を走査しながら進む。木々のパラメータが通常の値を示している。`oak_tree_mature / durability: 9000/9000 / growth_rate: 0.01/day`。正常だ。
一時間ほど歩いたところで、パラメータの色が変わり始めた。
データの輪郭が、妙にぼやけている。
嫌な予感がした。
森を抜けた瞬間——
---
視界が、崩れていた。
崩れている、という表現が正確かどうかわからない。でも、それ以外の言葉が見つからなかった。
廃村だった。かつて村があったらしき空き地。建物の輪郭が残っている。炉の跡、井戸の形、石段——それは確かにある。でも。
木々の形が、ピクセル単位で崩壊していた。
低解像度で圧縮されたデータが、さらに劣化してレンダリングに失敗したような映像——建物の角が直角に欠けている。地面の模様が、数十センチ四方のブロック単位でズレている。空との境界がモザイクがかかったように滲んでいる。
俺の目に表示されるコードが、ノイズだらけになっていた。
```
[CRITICAL ERROR] render_chunk() failed
Sector: 07-NW-Logca-Border
Data integrity: 12%
Last valid backup: [NOT FOUND]
Attempting recovery... [FAILED]
Attempting recovery... [FAILED]
Attempting recovery... [FAILED]
```
エラーが連続で出力されている。リカバリーが全部失敗している。
バックアップが存在しない。
俺は震える手でエリアの走査を続けた。
住人の痕跡はある。炉の灰、食器、干してあった衣服——でも人が一人もいない。逃げた跡がない。扉は閉まっている。食器は食卓に並んでいる。飯の途中で席を立ったような、そんな状態のまま——
住人のデータを探した。
```
ENTITY SEARCH: sector_07-NW
Result: [NULL]
```
`NULL`。
nullポインタ参照——参照先のデータが存在しない。
存在していた痕跡はある。でも、エンティティデータそのものが消えている。物体は残っているのに、人間のデータだけが——まるで`delete`されたかのように、どこにもない。
「これは……バグじゃない規模だ」
声に出した。誰もいない廃村に、俺の声だけが響いた。
コードが消えれば、存在も消える。
この世界はプログラムで動いている。オブジェクトのデータが失われれば、そのオブジェクトは「存在しない」ことになる。
人間だって、例外じゃない。
もし人間のエンティティデータが削除されたら——
「……帰ろう」
これ以上ここにいたくなかった。理由が論理的かどうかはわからない。ただ、体が早く離れたがっていた。
---
村に戻り、ゴッドを探した。
「ゴッドさん。西の森の向こうに、廃村があるのを知っていますか」
老人の表情が、一瞬固まった。
「ああ……クウォレン村か。三年前からあそこはおかしくなってな」
「住人は?」
「……わからん。気づいたらおらんようになっとった。一人も、な」
ゴッドは静かに続けた。「最初は荷物が届かなくなった。次に連絡が途絶えた。様子を見に行ったら……誰もいなかった。物はそのままなのに、人だけが、影も形もなく」
「三年前に」
「そうじゃ。王国にも報告したが、辺境の村の話だ。大きく動いてくれるわけもない」
俺は黙った。
三年前から、`sector_07-NW`のデータが崩壊している。人間のエンティティデータが消失している。リカバリーは失敗し続けている。
自然に起きたのか。それとも——
「わかりました。ありがとうございます」
俺は部屋に戻った。仕様解析ノートを開いた。新しいページをめくって、ペンを走らせた。
---
「バグレポート #001
件名: データ消失エラー (クウォレン村 / sector_07-NW)
発生日時: 三年以上前から継続
現象: エリアのレンダリング失敗 / 人間エンティティデータの完全消失
エラー内容: render_chunk() 連続失敗 / バックアップ不存在
再現条件: 不明
影響範囲: 不明 (拡大中の可能性あり)
優先度: CRITICAL」
---
書きながら、手が微かに震えた。
バグを書き留めることが、今の俺にできる唯一のことだ。解決策はない。修正する手段もない。ただ——記録だけは残せる。
ログ村に、ログを残す。
エンジニアとして、それだけは絶対にやる。
次回、第04話「ゴブリン・オーバーフロー」——廃村の調査から戻った三日後、今度は別のバグが爆発する。




