LOG_004 ー Runaway Script: The Price of Overwriting
構文魔法は順調だった。
いや、そう“思っていた”。
火球、照明、風圧、簡単な浮遊、自己強化――
ArcScriptは日々の調整によって少しずつ安定してきていた。
特に、構文エラーによる暴発も減り、記述方式に“正解パターン”のようなものも見え始めていた。
そして、俺は調子に乗った。
その日は、風系魔法の拡張実験をしていた。
小型の旋風を部屋の中で再現し、紙くずを舞い上げる──そんな無害な構文のつもりだった。
@cast
spell {
type = "wind";
mode = "vortex";
strength = 2;
radius = 1.5;
duration = 30;
}
今までは“type = projectile”や“light”のような単一処理が多かったが、
今回は初めて“mode”を追加してみた。
それが、いけなかった。
魔力を流した瞬間、構文が発動する。
風が起こる。机上の紙が揺れる。問題ない。
──と思ったのも束の間。
風は止まらなかった。
設定した半径を超え、部屋全体に渦を巻き始める。
机が倒れ、本棚が軋み、カーテンが引きちぎれる。
「まずい……!」
構文の解除処理を書いていなかった。
魔法は“実行”されたが、“終了”する構文がなかったのだ。
// termination_condition = none
俺のミスだった。
魔法の持続処理に明示的な終了条件がなければ、魔力が尽きるまで動作を続ける。
だが、俺の魔力量では“尽きる”前に自分が吹き飛ぶ。
部屋の扉を開けようとするも、風の圧に阻まれて開かない。
それどころか、棚の角材が飛んできて、肩をかすめた。
「……っぐ、ぅあ……っ!」
痛み。恐怖。
久しぶりだった。“死”を感じたのは。
その瞬間だった。
「コードキャンセル!」
部屋の外から、怒鳴るような声。
風が、ピタリと止まった。
ドアが開き、駆け込んできたのは――父だった。
「……馬鹿者ッ!!」
部屋が荒れ果てたまま、俺はその場に座り込んでいた。
父の声が耳に痛い。
「構文魔法がどれだけ危険か、わかっていたはずだ! 書きっぱなし? 終了処理なし? 冗談じゃない!」
俺は何も言い返せなかった。
「魔法というのはな……暴走すれば災厄だ。構文で書くというのは、それを“人為的に設計する”ということだ。
責任も、結果も、すべて自分に返ってくる。それがわかっていたか!」
わかっていた“つもり”だった。
でも実際に、家具が吹き飛び、自分の肩に裂傷が走る光景を見て、初めて本当の意味を知った。
「……すみません……」
父は深くため息をつくと、そっと俺の肩を見た。
「もう構文を書くなとは言わん。
だが、自分が作った“魔法”が人にどれだけの影響を与えるか。それだけは絶対に忘れるな」
その夜、俺は初めて“魔法開発ノート”の最初のページに、こう書き加えた。
/**
注意:すべてのコードは、誰かの命を奪う可能性がある。
常に終了処理と制御条件を記述すること。
*/
魔法が技術である以上、それは設計者に責任がある。
“書ける”ことは誇っていい。
でも、“扱う覚悟”がなければ、それはただの破壊だ。
この日から、俺のArcScript開発は一段階、深くなることになる。




