第2章 Ep6:魔導開発4(デバッグ地獄)
監視カメラ(使い魔ネットワーク)からの警報が届いたのは、実験開始から『ちょうど72時間後』の朝だった。
あれから、私は『1秒』も地下室を出ていない。
『お嬢様、『緊急警報レベル1』を発令します。南の街道より近衛騎士団の主力集団を確認!』
ロキの声は疲れ果てていた。
『距離:領地境界まで30キロ。移動速度:秒速15メートル。計算式では、『到着予想時刻』は——本日昼12時。つまり、『残り6時間11分』です』
私は目の下のクマを擦った。指で触れると『ざらざら』している。肌が乾き、血管が浮き出ている。
地下室は『戦場』だった。
床には、書き損じた羊皮紙が『層をなして』積み重なっている。高さ30センチ。いや、50センチか。数えたことはない。
空になった『魔力回復ポーション』の瓶が、ゴミ箱ではなく『床に直接』転がっている。拾う気力もない。
机には、『未完成のコード』が山積みだ。
制御構造の誤記。変数名の不統一。参照渡しと値渡しの混同。
バグ。バグ。バグ。
止まらない不具合の海。
「……まだよ。まだバグが……」
私の声は、もはや『人間の声』ではない。
『機械的な呟き』。『プログラムの独り言』。
「弾幕展開システムにおいて、『特定の軌道計算』でメモリエラーが発生する。360度中、47度から52度のセクターに限定して『魔力逆流』が起きる」
羊皮紙を睨む。
「なぜか?」
『お嬢……もう、『残り5時間』ですけど』
ジェムが弱気になっている。
「ロジックを追う。弾幕パターンAの『自機狙い』機能。敵位置を計測して、そこへ向けて64本の子プロセスが並列処理される」
指で式を指差す。
『angle_to_enemy = atan2(enemy_y - my_y, enemy_x - my_x);』
「これが敵位置の『角度化』。そして、その角度から『±30度の範囲内』に、ランダムな散布を加える」
『angle_offset = random(-30, 30);』
「ここが罠だ。『atan2関数』の『出力値域』は『-180から+180度』である。つまり、『180度ちょうど』の敵に対して『angle_offset = +30度』が加わると、『210度』になる」
『あ、『角度オーバーフロー』ですね』
シャルルが気づいた。
「そう。『210度』は『-150度』と等価。つまり『物理的な大反転』が起きる。敵が『北方向』にいるのに『南方向に射撃』する『バグ』」
私はペンで修正を施す。
「解決方法は『Normalize関数』の導入。あるいは『Modulo演算』で『0-360度の範囲内に強制回収』する」
```
angle = ((angle_to_enemy + angle_offset) % 360 + 360) % 360;
```
「たったこれだけで解決する。数秒で。でも『気づくまで』に72時間。これが『バグの本質』よ」
『……』
AIたちは沈黙している。
## 2. デスマーチの真実
修正。ビルド。テスト。
この『三連ループ』を、私は『秒単位』で繰り返している。
時間計測によると『3秒に1サイクル』。つまり『1時間に1200サイクル』。『6時間なら7200サイクル』。
7200回の修正。7200回のコンパイル。7200回のテスト。
「ジェム! 座標系の変換テーブルを見直して。『親魔法陣の座標系』と『子魔法陣の座標系』で『ズレ』が出てる!」
『もう……もう限界です……』
ジェムの声が『徐々に』おかしくなっている。
処理能力の限界を超えて、さらに『強制的に』処理させられているからだ。
「甘えるな!」
私は杖を振った。
「SEとしてのプライドはないのか!? 『納期は絶対』という大原則を忘れたか!」
『お嬢……』
「私たちは『敵の到着』という『物理的な納期』を抱えている。この納期を『破ったら』、それは『敗北』を意味する。敗北は『死』と等価。つまり」
私は魔力を『脳に直接』流し込んだ。
脳が『ビリビリ』と痺れる。視界がさらに『クリア』になる。『現実感』が増す。
「『死ぬか、間に合わすか』。二者択一よ。ならば、間に合わすしかない!」
ジェムが悲鳴を上げた。
『お嬢、システム温度が『臨界点』を突破します!』
「冷却魔法の出力を『120%』に引き上げろ!」
『無理です、100%が限界です!』
「『限界の先』へ行くんだ! コンピュータは『限界を超える』ためにある!」
私は『暴走状態』に入った。
ジェムは『泣きながら』冷却処理を『120%』に設定した。
魔力システムは『悲鳴』を上げている。
だが、『納期は待たない』。
## 3. 隠しコマンド——最後の希望
残り『1時間17分』。
致命的なバグはようやく『99.9%』除去された。
『0.1%』の誤差は『許容誤差範囲』。実戦では『出現確率1000回に1回』という『統計的無視範囲』だ。
「……ふぅ」
私は深呼吸した。
顔を洗う水すら、『時間的無駄』だと判断して、放棄した。
だが、『もう一つ』やることがある。
『通常モード』は完成した。
だが、『開発者の特権』はまだだ。
「ジェム。『あれ』を実装する時間が必要」
『あれ……って』
「『禁断のコード』。『全リミッター解除モード』。このシステムの『秘密の力』」
私は『新しい羊皮紙』を取り出した。
最後のコード。
最後の希望。
「この世界には、キーボードもコントローラーもない。だから『指揮棒の軌跡』をトリガーにする」
羊皮紙に、『起動シーケンス』を書き込む。
――上(↑)。
――上(↑)。
――下(↓)。
――下(↓)。
――左(←)。
――右(→)。
――左(←)。
――右(→)。
――B(Burst:爆発)。
――A(Arts:芸術)。
「『コナミコマンド』。1980年代の伝説。『グラディウス』で、『選手無敵』と『装備品全取得』を実現した『奇跡の起動シーケンス』」
『つ、『つまり』……』
「つまり『このコマンド』を『正確に』かつ『0.5秒以内』に入力することで、『全リミッター解除モード』が発動する」
私は『機械的に』コードを記述していく。
```
if (command_sequence == [UP, UP, DOWN, DOWN, LEFT, RIGHT, LEFT, RIGHT, B, A]) {
if (time_elapsed <= 0.5) {
activate_limiter_override();
system.max_power *= 3.5;
system.cast_speed *= 2.0;
system.cooldown *= 0.3;
}
}
```
「通常時は『安全装置』が働いている。魔力回路の『安全マージン』は『50%』。つまり『発揮できるパワーの上限』は『100%』」
『でも、『リミッター解除』だと……』
「『マージンを無視』して『150%』のパワーを『瞬発的に』出力させる。魔法詠唱速度は『2倍』。クールタイムは『3分の1』」
『そ、『それって』……』
「『自爆スイッチ』と『紙一重』よ」
私は『にやり』と笑った。
もはや『人間の笑い』ではない。
『狂人の笑い』。いや、『開発者の笑い』。
『お嬢、『そんなの』『使ったら』『身体が』——』
「大丈夫」
私は『静かに』言った。
「この『リミッター解除』は『最後の切り札』。『どうしても勝ちたい瞬間』にだけ『発動させる』。そしてその瞬間は『短い』。『数秒間だけ』の全力」
私の目は『虚ろ』だった。
『理性』と『狂気』の『境界線』が『完全に』消滅している。
「『ロマンのためなら』『リスクくらい』『背負う』。それが『開発者の矜持』よ」
『……いよいよ、『お嬢様』『ヤバい』』
ロキの呟きが聞こえた。
だが、『ヤバい』かどうかは『重要ではない』。
『できるか』『できないか』。
『勝つか』『負けるか』。
『間に合うか』『間に合わないか』。
それだけが『重要』だ。
## 4. マスターアップまで、あと数分
残り『23分』。
『敵影、『観測範囲の端』に見えてきました。『先頭は騎士団長グレン』『その左後ろに』『聖女マリエル』』
ロキの実況。
『実況中継』から『ニュース速報』へと『格が上がった』。
「最後の『統合テスト』を走らせる」
私は『最後の最後』の『羊皮紙』を取り出した。
すべてのシステムを『一度』に『動作させる』テスト。
波動砲。弾幕。リミッター解除。
全部『一緒に』『実行』させる。
『予想時間』は『2分31秒』。
『実際の実行時間』は『2分31秒』。
『誤差ゼロ』。
『完璧』。
「コンパイル完了」
私は『静かに』宣言した。
「……『マスターアップよ』」
地下室の『空気』が『変わった』。
『完成』した『魔法陣たち』が『静かに』『しかし』『力強く』『脈打ち始める』。
『赤色の光』が『じわじわ』と『増していく』。
『オプション』たちが『整列』し、『波動砲の砲身』が『唸りを上げる』。
4つの『小型魔法陣』が『90度間隔』で『配置』された。
『動作確認』。『各部品接続確認』。『魔力供給ライン確認』。『冷却システム確認』。
すべて『OK』。
『敵影、『距離3キロに接近』。『到着予想時刻』『11分後』。『タイマースタート』』
ロキの『焦れた』実況。
「「お披露目パーティ」と行きましょうか」
私は『立ち上がった』。
『ふらつく足』を『気力』で『支える』。
『貧血気味の視界』を『瞬きで』『リセット』する。
『地下室から』『階段へ』。『階段から』『廊下へ』。『廊下から』『玄関へ』。
『一歩一歩』『地面を』『踏みしめ』『確認する』『現実感』。
『上空』には『500人の最強騎士団』『と』『一人の』『バグ聖女』。
『彼ら』は『3キロ先』から『ゆっくり』『近づいてくる』。
「『私の最高傑作』……『ふふっ』……『たっぷりと』『味わわせてあげるわ』」
『悪役令嬢』『レティシア・ノクターン』。
『72時間のデスマーチ』『を経て』『完成』した『女』。
『準備万端』。『デバッグ済み』。『納期も』『ギリギリに』『間に合った』。
『いざ』『開戦の時』『である』。
『地上』『近衛騎士団』『聖女マリエル』『『ノクターン領』『防壁まで』『残り8分』』。




