プログラミング・ザ・ワールド ~魔法の呪文詠唱なんて面倒だし恥ずいので関数化して運用します~

みたよーき

プロローグ

「主よ、その全知全能の御力を以てこの哀れなる骸を浄化し御許へと昇らせる炎を我が前に顕現させ給え」

「炎司る精霊よ、その大いなる力もて、我が眼前に炎あらわし、魔に狂った獣の亡骸、灰と成さんと、我願う」

「やがてこの身を焼き尽くさんと欲する地獄の火炎よ! 今は闇制す我が右手に宿りて、この死した魔獣どもを焼き尽くす力となれ!」

 ……唱えられた呪文は三者三様。だが――

 それぞれの手元に現れたのは、ほぼ同じような火の塊。そしてそれは、目の前の、毛皮を剥ぎ取られ積み重ねられた魔獣の死骸に向かい、接触すると瞬く間にその全てを炎で包み込んだ。

(旅立とうとしたタイミングで魔獣の襲撃に遭遇とは、間が良いのか悪いのか……)

 幸い、襲ってきた群れは比較的小規模で、さほどの時間を掛けずに殲滅することができた。それでも二十を越えるほどはいただろうか……と、周囲を見回す。

 あちらそちらで、炎がバチバチと音を立てて激しく燃え、その炎の中で“魔獣だったもの”は骨のみを残し、その身を灰に変えていく。

「……っと、俺も働かないと……」

 理屈抜きの『魔法』と、それを発生させるための『呪文』。何度見ても不思議な感じがするのは、三十年以上の時間を掛けて築いてきた“常識”が未だ受け入れを拒んでいるからかも知れない。

 そう、“この世界”には魔法がある。その発動には“必ず”『呪文』か『魔法陣』を介した(例えるなら、世界というシステムに対する)“入力”が必要ではあるが、呪文の場合、極端な話、主語と述語さえ指定すれば(術者の想像力次第で)発動だけなら、する。ただ、それでは最悪暴走してしまうため、対象を指定する言葉を加えたりして安定させる。魔法のイメージも大切だが、それを適切に言語化する能力が重要、といったところか。

 つまるところ、明確に魔法を発動させたい意志を持って言葉を並べれば呪文として成立するわけだが、どうやらこの世界には呪文の『流派』や『派閥』とでも呼べるものが存在するようだ。まあ、明確にそれを名乗っている例は少ないが、なんとなく分類できる、といった程度にはハッキリ傾向として観測される。

 先ほどの彼らの例でいえば、上から――

『信仰派』:唯一神への祈りを呪文として、魔法の発現を神の力と見なす宗教的な一派

『自然派』:万物には精霊が宿ると考え、その力が魔法を発現させると考える一派

『厨二派』:やべーやつら

 ――といったところか。まあ最後のは、痛々しくはあるけれど、悪いヤツらではない……はず。深く関わって本当に面倒なのは信仰派の方かも知れない、なんて思ったりもするのは日本人的な感覚だろうか?

 これらもあくまで一例で、信仰も一つではないし、それぞれの中にも『韻文派』や『詩篇派』といった分類もできそうだし、そういう形式的なやり方に反抗的な『無頼派』的な人間もいる。人の動きこそあれ、インターネットのようなものがあるわけではない(あるいは失われた?)この世界では、地域によっても変わったりするのだろう。

 まあ、標準的な日本人(と自負する)の俺としては、比較的、自然派が受け容れやすくはある、が、だからといってその流儀に従わなければいけないということもない。

 気持ちを切り替えて、別の魔獣の山の前に立つと、俺は小声でつぶやく。

「『火弾(死体の山)』」

 すると、体の前に火の球が発生し、引数にとった“死体の山”をターゲットとして飛んでいき、それを燃やす。

 ――これが、俺のやり方。

 ちなみに、この『魔法関数』とでもいうものを簡単に表記するなら――


 火弾(tgt,pow = normal)

 {

  elemental = fire;

  shape = sphere;

  target = tgt;

  power = pow;

  action = burn;

 }


 ――といったところか。脳内で「こんな感じ」と考えているだけで、実際にコーディングをしているわけではないのだが。

 ちなみに、引数『pow』を渡さない時のデフォルト値『normal』だが、温度指定せずとも他の人たちの扱う炎系魔法と同程度に威力が自動調整される謎仕様である。おかげで変に目立つこともなく、便利なので助かるが。

 C系やJava系をかじったことがある人ならこれで、やろうとしていることは理解できるだろう。むしろ、この記述では詳しい人ほどツッコミどころが増えるだろうが、実際これで発動してしまうのだから仕方ない。ターゲットだって『敵』なんて曖昧な指定でも自分がその『敵』を敵として認識していれば問題無いし、何なら、そもそも英語である必要すら無く、『属性=火。』なんて表記で意識しても発動するのだから、感覚としては、高度なAIが言語から全て自動判別した上にミスも全て修正してくれる超高性能コンパイラに丸投げするような感じか(実際にそんなものがあれば、だが)。まあ、魔法なんて不思議現象を起こすのだ、重要なのは自分が魔法でやろうとすることを、正しく理解・認識しているか、という点なのだろう。

 当然、この“呪文の関数化”なんてやり方は、この世界では他に類を見ない(少なくともこれまでには見たことも聞いたこともない)。

 この世界の魔法というものを調べていくうち、毎回呪文を唱えるのが億劫と感じた(恥ずかしさも少々……いや、多々ある)俺は、「決まった要素やアルゴリズムを言葉で指定していくだけなんだから、いっそ、まとめて一つの関数にできないものか」と考えた。やってみたらできた。ゲームクリエイタとして面目躍如といったところか。

 他の誰もやっていないやり方という意味では『無頼派』的かも知れないが、自分であえて名乗るなら『合理派』とか『定義派』とでも言いたいところだ。

 ――なんて。そんな、実際に口にするつもりもない主張をぼんやりと考えている俺の目の前では、魔獣の肉が“生きているときと違って”魔法の炎で簡単に燃えていく。思えば、この世界の魔法も不思議だが、この魔獣という存在も不思議だ。

 この村を群れで襲ってきたのは、ある一点を除けば、俺の認識では『オオカミ』だ。そしてその一点というのは、額から突き出した“角”である。いかにもファンタジーめいた、ドリル状の三角コーンみたいな、つの。

 その“角”は、この世界の彼らにとっても「普通ではない」という認識のようで、そういった普通ではない動物を、彼らは『魔獣』と呼ぶ。そして、魔獣の肉はよほど食に困ってでもいない限り、こうして燃やされるのが常だ。

 ……『魔獣』といっても、それはあくまでも日本語に訳したら、ということで、こちらに来て学んだ言葉では『マジ・ベステァ』という感じだろうか。『マジ』とか『マギ』と聞こえる部分が『魔』、『ベステァ』の部分が『獣』で、それぞれ英語の『マジック』『ビースト』と音がある程度似ているので分かりやすい。……というか、そういう言葉の類似点からも、ここが単純な『異世界』ではないのではないか、なんて思ったりもするわけだが。

 それでも、実際に『魔法』なんてものが存在する以上、少なくともここは俺が生きていた『地球』ではない可能性だってあるはずだ、とは思う。というか、そうであってほしい、と、まだ頭のどこかで考えているのだろう。

 ……まあ、ただ徒に推論を重ねたところで、真実が分かるわけじゃない。ましてや、魔法なんてあったところで、ただ祈るだけで事実が変わるわけでもない。だからこそ、動く。動くことで、より真実に迫ることができるかも知れない――そんな期待感が僅かでもあることが、俺がこうして東への旅を続ける原動力の一つになっているのだろう。


「よう、あんた、ハッキリ詠唱しないがキレイな炎の魔法を使うじゃないか。ヤツらの足止めに使った魔法はどういうものか良く分からなかったが……」

 魔獣の骨が運ばれていくのを見送っていると、先ほど『精霊に祈るタイプ』の呪文を唱えていた男がそう言って近づいてきた。

「……俺の魔法は、亡くなった親から教わったもので、遠い東の言葉らしい。そして、秘伝だから、あまり他人に呪文を知られないように、と教えられた」

「ふーむ? ……そういう呪文もあるのか」

「俺も詳しいわけではないが……」

「東へ旅してるというのは、その関係で?」

「そう、自分のルーツを知るために」

「そうか……。とにかく今回は手伝ってもらって助かった。ありがとう」

「こちらこそ、毛皮を分けてもらって助かる」

「ではな。おまえさんの旅行きに精霊の守護があらんことを!」

「ええ、あなたにも」

 去って行く男に続くように、他の者たちもぞろぞろと村へと戻っていく。その背中を見送ってから、足下に置いてあった分け前の毛皮などを袋にしまう――フリをして、つぶやく。

「『亜空間収納(魔狼の毛皮)』」

 俺の魔法は特殊である自覚があるだけに、あまりホイホイと使いたくはないが、重さはともかく、臭いは気になるので、仕方ない。

 ちなみに、この世界の魔法は、いろいろと試した結果、『時間』と『魂』(この表現が適切かは分からないが)以外の事象であれば、そこそこ融通が利く。もちろん、無から有を生み出す、とか、天変地異にも等しい現象、なんていう無茶は通らないようだが。

 なので、いわゆるゲーム的な『インベントリ』に近いものを作ろうと思えばできなくもないのだろうが、謎空間の作成数に(今のところ)限度がなさそうな以上、現実ではこうしてアイテムごとに謎空間を作って収納・取出しを行った方が簡単だし便利だった。

 人間(というか生物)の“魂的なもの”が魔法に対して強い抵抗を示す――つまりこの場合、魔法で作った謎空間に手を突っ込もうとすると強い反発がある――ため、『亜空間収納(アイテム)』と『亜空間取出(アイテム)』に分ける必要があったが、同じアイテム名を引数にとれば問題なくその謎空間の“アドレス的なもの”は共有している。

 ソースコードっぽい表記をすれば、以下のような感じか。


 亜空間収納(アイテム)

 {

  int *p;

  p = 亜空間検索(アイテム);

  *p = アイテム;

 }


 関数内で呼び出している宣言済み関数『亜空間検索(アイテム)』は、すでにある謎空間を検索して、そのアイテム領域がすでに存在すればそのアドレス(的なもの)を、無ければ新たに領域を確保してそのアドレスを返す。都度検索を噛ますのは重複を防ぐためでもある。あとは、その領域にアイテムそのものをしまい込むだけ。……といえば簡単そうだが、やってることは亜空間なんていう概念的なものを実現しているのだから、とんでもない。というか、訳が分からない。なので、深く考えないのがコツだ。だって、魔法だもの。

 ちなみに、アイテム領域内管理は、基本ファーストインファーストアウトのキュー方式で行っている。それで不便があれば手を加えようと思っていたが、今のところ問題無く、そのまま使っている。

 余談かも知れないが、この亜空間、先述の通り魔法は時間には干渉できないために時間停止は無理だが、亜空間内は理想的な環境になっているのか、中身の劣化はかなり抑えられている。食べ物がどこでも手に入るわけではないこの世界で、これは非常に助かる。

 ……と、ちょっと技術者っぽいことなども言ってはみたものの、俺はゲームクリエイタという肩書きではあるが、素人時代からゲーム制作にはツールやちょっとしたスクリプトを使っていた程度で、本格的なプログラミングは入社後にある程度学んだだけだ。なので、表記の怪しさや、もっと上手いやり方があるだろうというツッコミは、ご勘弁願いたい。

 ともあれ、だ。これで目的の動作はちゃんと行われるのだ。本当に不思議だが、そんなファジィさも、魔法が魔法たるゆえんなのかも知れない。……プログラミングの“厳密さ”が好きな人からしたら、腹立たしいかもしれないけれど。

 べつに、呪文に“定型”が無い以上、この亜空間収納だって、呪文を唱える形での魔法でも同じ事はできるだろう。ただ、その場合、

「このアイテムをすでに収納する亜空間を検索し、有ればその場所へ、無ければ新たに亜空間を創造しその場所へ、このアイテムを収納せよ」

 ――って、回りくどいわ! となること請け合いだ。この程度ならまだしも、さらに処理が複雑になればなるほど、効率性が向上するチート能力と言えるかも知れない。ズル、といってもそれは、俺だけにしか使えないのであれば、だが。

 しかし、この“魔法(あるいは呪文)の関数化”が、他の人間にもできることなのかは、今の俺には判らない。そして、これができる(できてしまう)ことがこの世界において問題無いことなのかも判らない。問題があったら困るから、こそこそと使っている、というわけだ。

 ハッキリ詠唱しない言い訳として「一家(あるいは流派)の秘伝」というのは、珍しくはあるが無いわけではないようだ。だから大丈夫だとは思うが、いざとなれば「もともとは遙か東の『遺跡』で見つかったものらしい」とでも言えばいいだろう。

 そう、『遺跡』と呼ばれる場所では、この世界の人々ですら不思議に思うようなものが突然に発見されたりする。それが『魔道具』であれば、その『魔法陣』を複製して生活に役立てることもあるし、特に便利なものは争いの種にならないようにか、または宗教的な理由なのか、秘匿されることも稀にあるそうだ。

 もっとも、役に立たない、あるいは使い道が判らない、といったものも多いようだ。例えば……俺が東を目指す理由の一つでもある、この『日本語の書かれた金属片』とか。

 ともあれ、そんな場所なら、おかしな呪文の一つや二つ、見つかっても不思議じゃないと、きっと思ってもらえることだろう。


 ――ところで。

 プログラムをかじったことがある人なら、もしかして、こんなことを思ったのではないだろうか? すなわち――

「無限ループって怖くね?」

 ――と。

 俺は思った。だからいろいろ試す前にまず、あらゆる呪文関数より優先されるコマンド『break』を設定した(脳内で)。

 それは問題無く機能し、『break』一つ呟くだけで、あらゆる魔法を途中でキャンセルできた。できてしまった。

 あらゆる魔法――そう、他人の魔法さえも、だ。

 一度、軽い気持ちでこっそり使ってみたら、その人はものすごく狼狽え、ビビっていた。信仰篤かったのだろう、「神に見放された!」と、自分の首を括らんばかりに取り乱したので、落ち着かせ、もう一度やってちゃんと発動する事を確認させて、事なきを得た。

 それ以来、自分の命に危険でも迫らない限り、他人の魔法には絶対に使わないぞ、と心に誓った。

 まあ要は、この世界の人たちにとって、『魔法』というものはそれほど重要なのだろう、ということだ。


 事実、俺が初めての実戦でこうして全くの無事でいられるのは、魔獣の発見が早かったことや、村の規模が小さいおかげで戦力の集結が迅速だったことなど、いろいろな理由はあるだろうが、やはり一番は魔法のあったおかげだろう。

 対象に掛かる重力を強くする魔法はすぐに抵抗を受けて霧散したが、その僅かな時間の目に見えない重力変化が、魔獣に強い警戒を抱かせたのだろう、思った以上の足止め効果を発揮した。今後を考えれば、今のうちにこういった経験をできたことは大きい。

 この世界に生きる人たちにとって重要であるということは、すなわち、この世界を生き抜こうとする俺にとっても、重要なものになるはずだから。


 ――そう、これは、そんな世界に放り出された俺が、真実を求め、この世界を旅して生き抜く、そんな物語だ――

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る