第06話「レベルアップの仕様書」
翌朝、目を覚ました瞬間に気づいた。
視界の右上に、いつも薄く表示されている自分のステータスウィンドウが——光っていた。昨夜と明らかに数値が違う。
```
桐島蓮 / Lv.4 → Lv.5
HP: 120 → 138
MP: 280 → 315
STR: 9 → 11
INT: 42 → 48
AGI: 14 → 16
```
レベルアップが発生していた。
寝る前に確認したときはまだ経験値が足りていなかったはずだ。スポーンポイントを修正した分と、デバッガーズ・アイがLv.2に解放された分のブーストが、睡眠中に合算処理されたらしい。バックグラウンドで動くバッチ処理のようなものか。夜間に差分を積み上げて、朝一で反映する——なるほど設計として合理的だ。
「……地味に嬉しい」
声に出してから、少し恥ずかしくなった。でも実際に嬉しかった。ゲームでもなんでもなく、これは本物のパラメータ上昇だ。昨日より確かに体が軽い。INTが6ポイント上がったのも、元SEとしては素直に喜ばしい。MPが35増えた。デバッグ・ログのような自作魔法を使う余裕が広がる。
ベッドの上に座ったまま、俺はしばらく数値を眺めた。
そして——疑問が湧いた。
レベルアップの仕組みを、まだコードレベルで理解していない。
なぜ戦闘で経験値が入るのか。なぜデバッグで経験値が入るのか。なぜ寝ている間に集計されるのか。この世界のレベルシステムは、どういうロジックで設計されているのか。職業SEとして、仕様を知らずに機能を使い続けるのは気持ちが悪い。
デバッガーズ・アイはLv.2になった。「読み取り・改変が可能」になったとシステムメッセージが言っていた。改変はともかく——自己参照は、できるのか?
試してみることにした。
---
デバッガーズ・アイを、自分自身に向ける。
一瞬の抵抗感があった。外部対象に向けるときとは異なる感覚——鏡の前に鏡を置くような、奇妙な再帰感。視界がわずかにちらついた。ループ処理が始まりかけたような不快な引っかかりがあって、反射的に「無限ループになるなよ」と思った。
そして——展開した。
```
SELF_ANALYZE: enabled
警告: 自己参照は処理コストが高い。
循環参照のリスクに注意。
乱用は非推奨。
実行しますか? [Y/N]
```
「Y」と強く念じると——起動した。
「できた」
思わず声が出た。自己参照が可能だった。ただ、MPが想定よりも速く削れていく。警告の通り、処理コストは高い。体の内側からじわじわと何かが抜けていくような感覚——長時間は無理だ。
でも今は確認したいことがある。急いで自分の経験値のログを追った。昨日の戦闘の記録。コアストーンの修正作業の記録。そしてデバッガーズ・アイのレベルアップ処理——それぞれの経験値の付与根拠が、細かい注釈付きで記録されていた。
```
経験値付与ログ:
+ 28exp [combat_contribution: ゴブリン討伐支援]
+ 147exp [world_stability_contribution: zone_0047バグ修正]
→ 付与理由: 世界安定性パラメータが +0.12 上昇
+ 85exp [skill_evolution_bonus: Debugger's Eye Lv.1→Lv.2]
```
なるほど。
「経験値」の定義をさらに掘り下げると、こう書いてあった。
```
experience_point:
= world_evaluation_score(action, actor)
定義: 世界が「有益な行動」と評価した際に付与される価値スコア
戦闘で付与される理由:
→ 生存確率の向上・危機の排除 = 世界安定性への貢献
デバッグで付与される理由:
→ コードの正常化・バグ修正 = 世界安定性への貢献
```
経験値は「世界からの評価値」だ。何が「有益」かを定義しているのは世界そのもの——つまり、このシステムを設計した何者かの価値観が、ここに反映されている。
戦士が剣で魔物を倒して経験値を得るのも、俺がバグを修正して経験値を得るのも、「世界の安定性に貢献した」という点で同じ評価軸に乗っている。魔法使いが呪文を唱えても、農民が作物を育てても、適切な行動には評価が返ってくる仕組みだ。
「……よく設計されてるな」
感心しながらウィンドウを閉じた。MPが通常より速く減っている。今日の分の自己参照時間はここまでにしよう。「非推奨」という警告は素直に従う。エンジニアの本能として、警告を無視して走らせ続けるのは悪手だとわかっている。
---
朝食を食べていると、村長のゴッドが畑の様子を確認しに出ていくのが見えた。
思い立って、ついていくことにした。
「何の用じゃ」
ゴッドが振り向かずに言う。後ろから来る気配を感じていたらしい。老人の勘は侮れない。
「少し見ていていいですか。邪魔はしません」
ゴッドは疑わしそうな顔をした——`疑念+3`が平常運転なのはわかっているので、これは普通の反応だ——が、黙って許可した。
畑に着くと、ゴッドが両手を組んで何かを唱え始めた。小さな光が手の平から滲み出て、土に吸い込まれていく。光は根のように広がって、畑全体に拡散した。五秒ほどで消えた。毎朝の習慣なのだろう、無駄な動作が一切ない。
スキル「収穫の祈り」——デバッガーズ・アイで解析してみた。
```
SKILL: harvest_prayer
種別: 支援・継続効果
発動条件: 毎朝日の出後30分以内、農作物の生育エリア内で実行
効果:
for each crop in zone.crops:
crop.growth_rate += 0.03
crop.disease_resistance += 0.01
crop.nutrient_absorption += 0.02
発動MPコスト: 8
継続時間: 24時間(翌日の発動で上書き)
```
毎朝0.03の成長加速。病気耐性に0.01。栄養吸収に0.02。
一日あたりで見ると小さい数字だ。でも365日分を計算すると——成長速度で10.95ポイント加速、病気耐性が3.65上昇する。一日の補正は地味でも、一年を通じて積み上がると無視できない差になる。複利の力と同じ原理だ。
「職人技ですね、村長」
「何がじゃ」振り向きもせず、ゴッドが言った。
「いえ。あなたのスキルが——この村の農業生産量を長年支えてきたんだろうなと思って」
しばらく間があった。ゴッドは畑を見たまま動かなかった。
「当たり前のことをしとるだけじゃ」
「当たり前のことを、毎朝欠かさずやる。それが一番難しいんです」
ゴッドが少しだけ、目を細めた。何も言わなかったが——疑念のパラメータが、ほんの少し下がったように見えた。気のせいかもしれない。でも俺にはそう見えた。
---
午後、鍛冶師のバルドのところへも顔を出した。バルドは五十代、熊のような体格で、しかし手先が驚くほど繊細な男だ。金属を叩く音が村の南側からいつも聞こえてくる。
「見てもいいか」
「構わんが、邪魔すんな」
バルドが剣の素材を炉にくべながら答えた。蓮は少し離れた場所に立って、デバッガーズ・アイでスキルの動作を観察した。
バルドのスキル「鍛鉄師の手」——解析してみると、想像以上のものが見えた。
```
SKILL: iron_smith_hands
種別: 製造支援・能動
発動条件: 鍛冶作業中に任意発動
効果:
対象素材の crystal_structure(結晶構造)を可視化
熱処理中に crystal_structure のパラメータを直接操作可能
→ 分子配列を最適化しながら成形可能
→ 通常鍛造比: 耐久性 +45% / 鋭利性 +30%
MPコスト: 14/分
```
「……」
鍛冶のスキルなのに、やっていることは素材の結晶構造を分子レベルで直接操作することだ。現実世界で言えば、製鉄の際に鋼の炭素含有量や結晶粒径をリアルタイムで制御する——最先端の材料工学の話だ。それをバルドは感覚で、毎日やっている。
この世界の職人スキルは、物質の「ソースコード」に直接アクセスする仕組みで実装されている。
「この世界の職人スキルを全部解析したら、材料工学の教科書が書けるな」
思わずつぶやくと、バルドが「何か言ったか」と顎を向けた。
「いえ、あなたのスキルがすごいと思って」
「三十年やってりゃ当たり前だ」
そう言ってバルドは炉に向き直った。
三十年——それも、毎日の積み上げだ。ゴッドの農業スキルも、バルドの鍛冶スキルも、誰かが宿命として与えたものじゃなく、長い年月をかけて精度を上げてきたものだ。
---
夕方、部屋に戻って仕様解析ノートを開いた。
今日一日で確認できたことを書き出しながら——俺はあることを考えていた。
デバッガーズ・アイLv.2は「読み取り・改変が可能」と書いてある。
つまり——自分で関数を「定義」できないか?
既存の魔法はすべて誰かが書いた関数だ。「火球」は炎のパラメータを操作する関数で、「回復」はHPを増加させる関数だ。俺は今まで他人が書いたコードを「読む」ことしかしていなかった。
でも俺は元々、コードを書く人間だ。エンジニアとして七年、ひたすらコードを書いてきた。読むだけじゃなく、書ける。
試してみる価値はある。
---
まず、既存の簡単な魔法の関数定義を参照する。最も単純そうな「光源魔法」の実装を確認した。
```
function light_orb(intensity: float, duration: int):
create_light_entity(
brightness = intensity,
color = [255, 240, 200],
lifetime = duration
)
```
なるほど。書き方の文法がわかった。オブジェクト指向に近い設計だ。引数の型宣言があって、エンティティの生成関数を呼び出す。現実世界のコードより直感的かもしれない。
次に、自分が作りたい機能を定義する。
シンプルでいい。診断ツールが欲しい。対象のステータスを一覧で表示する——それだけの関数。デバッガーズ・アイで見えるものを、誰でも使える形に出力する、そういう魔法。
一回目。失敗。参照先のオブジェクトの指定方法が間違っていた。
二回目。失敗。返り値の型が一致しない。
三回目。失敗。表示フォーマットの指定が欠けている。
四回目。失敗。表示対象の権限設定が抜けていた。
五回目から十回目まで——全部、細部の詰めが甘くて弾かれた。
腹は立たなかった。エラーが出るたびに「なるほど、ここか」と思った。現実世界のデバッグと同じだ。失敗は情報だ。エラーメッセージが理由を教えてくれる。その積み重ねがコードを完成させる。
十三回目の試行。
視界の中で、コードがひとつの形に収まった。
```
function DEBUG_LOG(target: entity):
status = target.getStatus()
display_panel(
format = "status_summary",
content = status,
visibility = [caster, target],
duration = 30
)
return status
```
——発動した。
マルの顔がちょうど窓から覗いていたので、そのまま向けてみると——マルの頭上に半透明のウィンドウが展開された。マルが「うわっ」と驚いて後退する。
```
マル・ログタン / Lv.3
HP: 45 / MP: 28
STR: 8 / AGI: 18 / INT: 12
SKILL: 快速走り Lv.2 / 俊足 Lv.1
ステータス: 健康 / やや空腹
```
「な、なに!? 何が起きた!?」
「テストに付き合ってもらいました。ありがとう」
「急に変な光が出てきて……レン兄ちゃん、また変なことした?」
「変なことじゃない。診断魔法を作っていたんです。完成しました」
マルがぽかんと口を開けた。俺は仕様解析ノートに書き留めた。
```
スキル: デバッグ・ログ(自作)
機能: DEBUG_LOG(target) → target.ステータスを一覧表示する
コスト: MP 4 / 発動
用途: 対象の状態確認・異常検知・戦術情報収集
備考: 派手さゼロ。実用性MAX。
```
「地味でいい」
独り言のように言った。
エンジニアが現場で一番頼りにするのは、剣でも魔法でもなく——何が起きているかを正確に見せてくれる診断ログだ。どんな強力な攻撃魔法より、相手の弱点を正確に示すツールの方が価値がある。それは七年間の経験で骨身に染みている。
「診断ツールほど強い武器はない」
コード名を「デバッグ・ログ」と命名した。
---
数日が経った。
ギルデンが笑いながら村に帰ってきたのは、デバッグ・ログを完成させてから四日後のことだ。隣村まで行商に行っていたらしく、土産話をたっぷり抱えて戻ってきた。
「聞いたか? 隣の村でも同じゴブリンのバグを直した冒険者がいるって話が広まってるぞ。なんでも目から光を出して、ゴブリンを一瞬で全滅させたとか」
俺は手を止めた。
「……かなり盛られてる」
「目だけで敵を丸裸にするとか言ってたぞ。あと、二十匹のゴブリンを素手で倒したって話もあった」
「素手は使ってない。一匹も直接倒してない」
「有名になってきたなあ、レン兄ちゃん!」
マルが飛び跳ねながら言った。ゴッドが「騒ぐな」と言ったが、その口元が少し緩んでいた。バッシュが縁側で「ほう」と短く言って、お茶をすすった。
バグを直す冒険者がいる——噂の尾ひれが、面白いくらいついていた。「目から光を出す」はデバッガーズ・アイの走査光がそう見えたのかもしれない。「素手で全滅」はバッシュの剣技が誇張されたのだろう。情報が人を渡るたびに増幅する——これも一種のログの改ざんだ。
俺は苦笑いしながら、仕様解析ノートのページを繰った。
そして——廃村のバグレポートのページが開いた。
```
バグレポート #001: クウォレン村
症状: データ完全消失
(コード・テクスチャ・エンティティ定義すべて)
原因: 不明
対応: 未着手
緊急度: 高(進行性の可能性あり)
```
デバッグ・ログが完成した今、あの廃村を再走査すれば——新しい情報が引き出せるかもしれない。Lv.1のデバッガーズ・アイでは見えなかったものが、Lv.2とデバッグ・ログの組み合わせで読み取れる可能性がある。
ページにペンを走らせた。「次の調査タスク: クウォレン村再走査。優先度: 高」と書いた。
そう考えていた矢先だった。
村の入り口の方から、蹄の音が響いてきた。
一頭ではない。複数だ。整然とした、軍の馬行のリズムで——
次回、第07話「来訪者」——銀髪の王女は、思ったより早く現れた。そして廃村について、彼女もまた「何かを知っている」ことがわかる。




