LOG_001 ー Couldn't Read the Grimoire, But I Understood It
三歳の春。
俺は、生まれて初めて“魔法”と呼ばれるものに触れた。
といっても、魔法が発動する瞬間を目にしたわけではない。
俺が与えられたのは、一冊の魔法書だった。
装丁は黒の革。装飾は銀の箔押し。開くと、ルーン文字に似た筆記体でびっしりと何かが書かれている。
「まずは、この火球魔法から始めましょう」
教師役の老人――魔導士協会から派遣されたという“魔法教師”が、机の上に広げた書を指差した。
「“エクス・フレア・デルタ・α”。この呪文を覚えて、唱えるだけです。
火属性の初級魔法で、投射と爆発が自動で組み込まれています」
俺の隣にいた兄は「エクス・フレア・デルタ・アルファ!」と嬉しそうに声を張り上げた。
すぐに教師から「完璧です! 素晴らしい」と褒められていた。
だが、俺はその言葉を声に出す気になれなかった。
なぜなら――
構造がおかしいと思ったからだ。
この呪文、明らかに命令列の構造をしていた。
“エクス”……明らかに「起動」を意味している。executeか、startか。
“フレア”……属性。Flare=火。明らかに変数っぽい。
“デルタ”……動作処理。物理法則への作用。
“α”……出力定数。Level.A という記号にも見える。
……これは、呪文じゃない。構文だ。
思えば、俺の前世はずっとこの“構文”と向き合ってきた。
if文、for文、関数定義、クラス設計、API仕様、非同期処理、バグとエラーと例外と付き合い続けて――
その結果が、この目だ。
見慣れた“魔法”に、プログラム言語の影を見出してしまったのだ。
魔法教師は説明を続けていた。
「魔法とは、神より与えられし神聖な力の発露です。
人はその声=詠唱によって、神秘と交信し、力を借り受けます」
宗教的な説明だった。
この世界では魔法は“神の力”という側面で語られているらしい。
だが、俺にはその説明がむしろ腑に落ちなかった。
なぜなら――「順番を変えたら動作が変わる」のだ。
実際に、教科書の端に小さくこう書かれていた。
※デルタをベータに変えると、発動タイミングが変化します
※“エクス”の代わりに“アクス”を使用すると暴発の危険があります
つまり、文法がある。ルールがある。
誤字をすれば暴発する。入れ替えれば効果が変わる。
これは、完全にコードだ。
呪文ではない。構造化されたスクリプトだ。
俺は夜な夜な、子供用の魔法書を読みふけった。
意味はわからないはずの文字列が、構造として理解できてしまうのが自分でも怖かった。
この世界の子供たちは、「覚える」ことで魔法を学ぶ。
でも俺は、「読む」ことができた。
しかも、「意味」が理解できる。
俺のノートには、こんな文が並んでいた。
@cast
spell {
type = "projectile";
attribute = "fire";
explode_on_hit = true;
power = 60;
}
まるで魔法の実行構文のようなメモだった。
でも、実際に声に出しても魔法は発動しなかった。
当然だ。
音声インターフェース(=呪文)という出力形式にしてない以上、
このスクリプトは魔力に認識されない。
つまり、“実行環境”がない。
魔法を唱えるためには、何かしら“魔力と接続された通訳”が必要だ。
まるで、インタプリタだ。
コードを読んで実行する仕組みが、何処かにある。
「この世界の魔法、実は“翻訳可能な技術”じゃないか……?」
俺は、鳥肌が立った。
魔法を使う者たちは、それが“神の声”だと信じている。
でも俺にはわかる。これは、技術だ。
構文があり、引数があり、変数があり、エラーがある。
ならば、読み書きできる。
いや――創造できる。
俺はこの世界で、
“コードで魔法を作る”ことを目指す決意を固めた。
そしてそれが、
やがてこの世界の魔法体系そのものを書き換える、最初の一歩になる――
まだ誰も知らない。
この三歳の少年が、
この世界に“新たな魔法の言語”を持ち込もうとしていることを。