魔導構文の安全設計
グレイン邸の地下実験室。
この屋敷にかつていた魔導研究者たちの手によって作られた魔力耐熱仕様の石造りの空間は、今やアイリスの“仮想端末”だった。
「テスト詠唱、開始」
羊皮紙の上に記された構文詠唱文を前に、アイリスは小型魔導石へと魔力を流し込む。
光が浮かび上がり、アイリスは詠唱を始める。
「Si hostis prope est, Fulmen Iacio.」
もし敵が近くにいれば、雷を放て。
詠唱構文としては簡潔で美しい。
命令の実行条件を前に持ってきたことで、トリガー方式での発動が可能になるはずだった。
問題は──“hostis”が何を指しているのか、だ。
「プロペ(prope)=近くに、ってことは、距離判定が必要。
hostis(敵)って変数は……どこで宣言されてるの? 詠唱のどこにも見当たらないけど……?」
詠唱が進行する中、アイリスの視線は羊皮紙の構文に釘付けだった。
光の粒子が構文に沿って走る。
だが──その動きが、不自然に「滞る」のが見えた。
「まさか……! 評価対象が未定義……?」
バチッ!!
魔導石の表面に火花が走った。
一瞬、光の輪が形を崩し、詠唱陣が暴走の兆しを見せる。
「構文エラー! 条件変数“hostis”が未解決!」
アイリスはすぐさま手をかざし、魔力の流れを遮断する。
シュウウウ……。
魔導石の発光が収束し、部屋に沈黙が戻った。
「……危なかった。魔法構文は、“書き方次第で暴走する”。これ、完全に未定義動作じゃない」
彼女の脳内では、もはや詠唱文は「呪文」ではなかった。
それは命令系統であり、構文ツリーであり、未定義はクラッシュの原因だった。
「この言語、魔法の本質に近づけば近づくほど、バグで暴走する可能性が高い」
そして、誰もそれを「仕様として認識していない」。
構文の危険性を知っている者はいない。
誰もが、ただ習った通りに唱えているだけ。
「このままだと、いつか誰かが“読み間違い”で死ぬ……」
アイリスは、震える手でノートに大きく書き込んだ。
“魔導構文には未定義動作が存在する”
それは、彼女にとっての第一の“魔導バグ”だった。
_____________
グレイン伯爵邸の地下実験室。
厚い石壁と魔力遮断加工の施された空間に、アイリスのペンの音が響いていた。
机の上には、書きかけの魔法詠唱ノート。
その見開きに、彼女は新たなタイトルを書き込む。
『Praesidium Structurae Magicae Ver. 0.1』
――“魔導構文式・安全詠唱テンプレート”――
彼女の視線はその下に綴った一文に注がれていた。
Si hostis definitus est et distantia(hostis) < 10,
Tunc Fulmen Iacio.
Aliter Nihil Fac.
「hostisが定義されていないとき、魔法が暴走する。ならば、事前に定義されているか確認する必要があるわ」
アイリスはつぶやく。前回の失敗──条件変数が未定義で、構文が暴走しかけた記憶が脳裏に蘇る。
「それに、“敵が近くにいる”って、どう判断してるのか不明だった。
ならば、構文側で評価条件を明示しなきゃいけないのよ」
魔導構文に必要なのは、明示的な判定・定義チェック・例外処理。
それらは、魔法の中に本来存在しなかった“保守の概念”だった。
アイリスは羊皮紙にラテン語風の構文を書く。
魔力を流し込み、詠唱を始める。
「開始──」
羊皮紙の詠唱文字が光り、空中に構文のラインが浮かび上がる。
「Si hostis definitus est et distantia(hostis) < X,
Tunc Fulmen Iacio.
Aliter Nihil Fac.」
魔力が詠唱を走る。hostis──敵オブジェクトは未定義。
直後、構文は条件を評価し、**Tunc**句に入ることなく、**Aliter**の分岐に移行した。
何も起こらなかった。
「成功……!」
彼女は手を握った。
「未定義の変数を評価しようとせず、分岐をスキップして終息する。構文による安全設計が成立した」
手元のノートに新たな分類を記す。
Structura: Praesidium (防御構文テンプレート)
判定1:Si X definitus est → Xが定義済みかを確認する
判定2:et condition() → 条件(距離、敵意、属性など)
動作:Tunc [発動文]
例外:Aliter Nihil Fac → 何もしない