Novels

先祖返りの町作り

第10話 イベントハンドラ

それから教わった、いくつかの魔法式を見て、
最初に感じた違和感は、確信に変わった。

魔法式はプログラミング言語、中でも、
構造化言語と呼ばれるC言語に、
とても良く似ている。

if文のような条件分岐、
while文のようなループ文、
算術演算子、変数宣言文等がある。

この特性のため、私にとっては、
内容を深く理解する事が、とても簡単だ。

ただ不思議なのは、魔法を使うためには、
内容を深く理解する事が必須で、
であれば、魔法式を改造する事は、
簡単そうなのに、誰もそれをやらない。

しつこく聞いていたら、どうやら、
アルク族の伝統的な「美意識」が、
邪魔しているらしく、保守的なせいで、
昔の慣習を変えたがらないと理解した。

(これって、もっと綺麗なソースコードに、
 できるんですよねぇ……)

と考えながら、
何気なく地面に書き込んだ、
魔法式を見ていた。

初級の水を作り出す魔法で、
whileループの条件式を、
一か所だけ変更する事で、
魔法の発動時間を変化させるものだ。

魔法式を変更したがらないアルク族が、
例外的に、一部変更する魔法式だ。

目が留まったのは、緊急停止文と言われる、
魔力を使い過ぎた時のための、
whileループを強制的に抜け出す命令だ。

右手の親指と人差し指の先をくっつけたら、
break文のような命令が発動する。

これを見た時に、ひらめいた。

whileループの終了の条件式を、
絶対に成立しないようにして、
無限ループを作る。

魔力を使うような所を、
無限ループさせたら死んでしまうが、
それ以外なら、問題ない。

そして特定の行動をした時に、
変数に行動に応じた値をセットして、
break文を発動させ、
無限ループを強制的に抜け出す。

後はセットされた変数に応じて、
別の関数として宣言した、
魔法式を呼び出す。
つまりは、イベントハンドラだ。

ごく小さい動作で、
各種関数を呼び出せるようにすれば、
いちいち別の魔法として、
魔法式を頭の中で構築しなくても良いので、
魔法の発動が飛躍的に早くなる。

この魔法式の良い所は、
メインルーチンを囲うように、
もう一つ無限ループさせれば、
魔法の掛け直しをしなくても、
ずっと待機状態を維持できる。

不具合があった時の停止命令も、
break文で用意できる。

里の皆も、同時に二種類の魔法式を、
組み立てるぐらいはできる。
祭司長は四種類できるし、
私も三種類ならできる。
よって、常に待機状態となる魔法式があっても、
問題ない。

せっかくなので、
他の魔法式も自分好みに最適化して、
関数化していく。
とっさに必要なのは、身を守る魔法だろう。
とりあえず、強風と土壁を登録しておく。

ここまでやって、
ある事実に思い至り、愕然とした。
何度もしつこく、

「魔法式を安易にいじらぬように」

と言われたので、
気持ち悪いスパゲッティコードを、
無理して暗記した。

しかし、魔法式を読み上げるのは、
暗記するまでだ。

最適化した魔法式で覚えなおして、
頭のなかでこっそりと構築して、
発動すれば良い。誰にも分かりゃしない。

(とりあえず、
 このイベントハンドラの実験が成功しましたら、
 かたっぱしから、スパゲッティコードを、
 最適化して行きましょう)

ちなみに、この新しい魔法の発動トリガーは、
私のオリジナル魔法である事が、
隠しようがないので、開き直って、
そのまま『イベントハンドラ』にした。

そうやって、
魔法の改良や鍛錬を繰り返しながら、
充実した日々を過ごし、3年が経過する頃には、
里に伝わるほぼ全ての魔法を習得した。