表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
先祖返りの町作り ~無限の寿命と新文明~  作者: 熊八
第一章 幼少時代
11/133

第11話 イベントハンドラ

 これまでに(なら)ったいくつかの魔法式を詳細(しょうさい)に解析してみた結果、最初に感じた違和感(いわかん)は確信に変わっていた。

 魔法式は、間違(まちが)いなくプログラミング言語に良く似ている。これに気づいた時、私は当初、アセンブリ言語と呼ばれるものを想定して比較研究していた。

 魔法は自然現象を直接操作するような挙動(きょどう)をする。であるならば、コンピューターで使われているプログラミング言語に置き換えて考えてみると、ハードウェアを直接操作できる、一番低レベルな言語であるアセンブリ言語が、最も近いのではないかと考えたのだ。

 しかし、解析を進めてみると、アセンブリ言語よりも言語体系がすっきりとまとめられており、もっと高級なプログラミング言語に近いという事が判明した。

 そのまま研究を進めた結果、構造化言語と呼ばれる種類のものが最も近いという結論に(いた)った。

 構造化言語の中で一番広く知られており、また、利用もされているのはC言語と呼ばれるものだろう。

 だが、少なくとも、私が習得している魔法式の中には、構造体やポインタといった、C言語に特徴的な機能が見当(みあ)たらなかった。

 これらの事から、私が記憶している範囲のプログラミング言語の中では、Pascal(パスカル)というものが一番近いと考えている。

 実際、判明した魔法文の構文の中には、ファンクションやプロシージャと呼ばれる、関連する機能をひとまとめにするような命令も存在している。

 もちろん、if文のような条件分岐、while文のようなループ命令、算術演算子、変数宣言文等も(そろ)っている。

 このような特性であるため、元々プログラマーだった私にとっては、内容を深く理解する事がとても簡単だ。

 ただ、不思議(ふしぎ)なのは、魔法を使うためには処理の流れを理解する事が必須で、であるならば、魔法式を改造する事は簡単そうに思えるのに、里の誰もそれをしようとはしない。

 祭司長に()()ってしつこく何度もなぜなのかと問いただしてみると、どうやら、アルク族の伝統的な「美意識」が邪魔(じゃま)をしているらしく、保守的なせいで昔の慣習を変えたがらないと理解した。

(これって、もっと綺麗(きれい)なソースコードにできるはずなのですけれど……)

 そのように考えながら、何気(なにげ)なく地面に書き込んだ魔法式を(なが)めていた。

 初級の水を作り出す魔法で、whileループの条件式を一か所だけ変更する事で、魔法の持続時間を変化させるものだ。魔法式を変更したがらないアルク族が、例外的に一部変更する魔法式だ。

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

 おそらくは安全装置として機能しているのだろう。右手の人差し指と親指の先をくっつけると、break文のような命令が発動する。

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

 whileループの終了の条件式を絶対に成立しないものにして、無限ループを作る。魔力を使い続けるようなところを無限ループさせてしまうと、そのまま完全な魔力切れを起こして死んでしまうが、それ以外のところであれば問題ない。

 そして、右手の人差し指と親指をくっつける等、特定の行動をした時に、用意しておいた変数にその行動を示す値を代入してからbreak文を発動させ、無限ループを強制的に抜け出す。

 後はセットされている変数の値を参照し、別の関数として宣言しておいた魔法式を呼び出すように作る。

 つまり、プログラミングのテクニックで言えば、イベントハンドラと呼ばれる機能を疑似的(ぎじてき)に実装する。

 これが実現できれば、ごく小さい動作で各種の魔法が瞬時に起動できるようになる。

 この魔法式のいい所は、メインとなる部分を(かこ)うようにもう一つの無限ループを作れば、いちいち魔法のかけなおしをしなくても、ずっと待機(たいき)状態(じょうたい)を維持できる。

 不具合(ふぐあい)があった場合の停止命令も、同じようにbreak文を使えば用意できる。

 ただ、実際に動かしてみてからデバッグするという作業が少し難しいため、この停止命令だけは何があっても確実に動作するように、事前にソースコードの評価を徹底して行っておく必要があるだろう。

 この里のものであれば、(おさな)い子供を除いて、誰でも二種類ぐらいの魔法式を同時に組み立てる事ができる。

 祭司長は四種類できるし、私も三種類までならできるようになった。よって、常に待機(たいき)状態(じょうたい)になる魔法式が一つあっても問題はないだろう。

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

 理想を言えば、回復魔法や解毒(げどく)魔法みたいなものを登録しておきたい。もし、これができるのであれば、即死でもしない限りは復活できそうな気がする。

 だが、それらの魔法はそもそも存在していないらしい。これは以前に、祭司長に質問して確認していた。

 考えてみれば、この世界の魔法式はプログラミング言語に似ているため、かなり詳細(しょうさい)な処理の流れを記述する必要がある。

 そして、回復魔法と簡単に言っているが、損傷(そんしょう)した人体を回復させる場合、その手順はとても複雑なものになる。

 もし仮に、魔法式で表現する事が可能であったとしても、そのプログラムコードは、恐ろしく長大なものになる事が簡単に予想できてしまう。

 解毒(げどく)魔法についても同様(どうよう)の事が言える。

 一口(ひとくち)解毒(げどく)と言っても、その中和方法等は、毒の種類によって千差万別(せんさばんべつ)だ。腎臓(じんぞう)機能等の人体の免疫(めんえき)能力(のうりょく)を強化するとしても、やはり、非常に複雑な手順を()る必要があるだろう。

 それに、そもそもの話として、何をもって毒とするのかの判断もかなり難しい。

 毒であっても適量であれば薬になるものもある。

 逆に、薬であっても過剰であれば毒になるものも多い。

 これらの事を考えてみれば、魔法式でこれらの便利機能を実現するのは、ほぼ不可能だと断じる事ができるだろう。

 そんな事をぼんやりと考えながら、地面にガリガリと(あたら)しい魔法の魔法式を書き上げていく。

(やっぱり、(あたら)しいプログラムを自作するのって、かなり楽しいですね!)

 ここまでやって、ある事実に思い(いた)り、私は愕然(がくぜん)としてしまった。

 何度もしつこく、祭司長には注意されていた。

「魔法式を安易(あんい)にいじらぬように」

 そのため、無駄(むだ)に複雑で効率も悪い、気持ちの悪いプログラムコードを、我慢(がまん)して暗記していた。

 ちなみに、このようなコードはスパゲッティコードと呼ばれていて、プログラマーからは()み嫌われている。なんでも、無駄(むだ)(から)まったスパゲッティから名付けられたのだとか。

 だが、よくよく考えてみれば、魔法式を声に出して読み上げるのは暗記するまでだ。

 一度覚えてしまったこれらのスパゲッティは、まるっと破棄(はき)してしまい、最適化した魔法式で覚えなおしてから、頭の中でこっそりと組み上げて発動してしまえばいい。誰にも分かりゃしない。

(とりあえず、このイベントハンドラの魔法の実験が成功しましたら、かたっぱしから最適化していきましょう)

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

 とは言っても、魔法文字の発音(はつおん)はかなり特殊なため、通常の口語のような言葉は記述できない。

 そこで、なんとなくそれっぽく聞こえるかな? という音を無理やり当てはめている。

 そうやって、魔法の改良や鍛錬(たんれん)を繰り返しながら充実した日々を過ごし、三年が経過する(ころ)になると、里に伝わる全ての魔法を習得していた。


評価をするにはログインしてください。
この作品をシェア
Twitter LINEで送る
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

この作品はリンクフリーです。ご自由にリンク(紹介)してください。
この作品はスマートフォン対応です。スマートフォンかパソコンかを自動で判別し、適切なページを表示します。

↑ページトップへ