(3) 魔法アイテムのプログラミングできちゃったんですけども
この小説は のらねこに何ができる? の中のシリーズの1つ “のら小説家に何が書ける?”(高クオリティ小説の王道な書き方) の本文内にて設計したものを、実際に小説として書き起こしたものです。
小説の書き方の連載の方も、合わせてご覧ください。
https://project.sylphius.com/columns
3
窓の外を見ると、街並みそれ自体には、あまり異世界感はなかった。
もうすっかり夏といった日差しの強さは向こうとさほど変わらず、待ちゆく人々もたいがい普通の薄着の半袖。ファッションセンスが残念な人と、そうでない人の落差が大きいのも、向こうとの共通事項といえそうだ。みんな耳が頭の上にある点と、尻尾を隠していると思しきふくらみが背中にある以外、歩く姿勢がネコ背なんてこともなく普通に“人”である。
建物は、異世界というより諸外国と呼んだ方がイメージしやすいだろうか。ピンクかクリームで統一された色のビル群は全て石造りと思われ、少なくともここから見える範囲では二階建てか三階建て。1階が店舗、2階以上が住居またはオフィス、という造りが多いようで、いずれも住居用の部屋には装飾の凝った窓枠があり、ところどころベランダのあるところも。
ガラスがあって同時に馬車もあることから、文明度合いは19世紀のヨーロッパといったところだろうか? 通りには、銀行、魚屋、散髪屋、食堂、エトセトラ、エトセトラ。日用品を買い求める人が来る店が多い地区なのだろう。そのためか、あきらかに現地人といった風体の人が多いものの、とはいえ観光客と思われる人もいる。決して混雑はしてないが、そこそこに人通りもあるようだ。
だがその中に一部、プレートアーマーとブレードソードでフル装備の人がいる。兵士かとも思ったが、だがその隣を歩く女性は三角帽子と宝石のジャラジャラついたワンピース。魔女スタイルだ。で、さらにその隣はライトアーマーと腰に細い剣。
この統一感のない戦闘職っぽさは……やはり冒険者なのか。しかも、どうやらその中には空を飛ぶ道具を使う人もいるようで、バイク状の何かに乗って飛んでいく剣士もいる。一般人と比べると、どちらかといえばやや冒険者の方が羽振りが良いようだった。このあたりの子供は成人の際、リスクをとるか低収入の安定か、その選択を迫られるのかもしれない。
そしてもう1つ、向こうの世界と大きく違うのが、気を失う直前にも見た月。さっきは2つかと思ったら、この窓からは3つも見える。そのうち1つは空の4分の1を覆うほど巨大で、クレーターやクレパスまではっきりと視認できた。先ほどオルソラはこの世界を地球であることに変わりないと言ったが、この月を見るだけでもそれが間違いだと分かる。僕らの世界の地球は、こんなに巨大な衛星を、この至近距離で維持はできないのだ。
「ふぅ……」
景色を眺めるのにも飽きて、僕は少し大きめのため息をついた。
彼らの前では平然としゃべっていても、僕だって仕事を失ったショックから完全に立ち直ったわけではない。それに加えて生活環境までガラッと変わりそうともなれば、多少ワクワクしていることを認めたとしても、精神的にはかなりのストレスである。
僕が今いる部屋は、改めてみると事務室というより、工房のようにも見えた。よく見ると中央の作業台はかなり巨大である。
その作業台の目立つところに、紫色の宝石の入ったオブジェが置いてあり、それを中心に紙が散らかっている。全ての紙に4~5重ほどの同心円が描かれており、その中のいくつかには円周上に文字と、中心部に崩れた星型のような模様が描かれている。
これがもし僕の予想通りなのであれば……魔法陣だ。
「なるほど。極度に発達した科学は魔法と区別がつかないというけど、これは科学と区別しやすいな」
そんなことをつぶやいて、すでに書き込みがある方の紙を拾ってみる。
――NETU! ONDO TARINAI! とある。おそらくは“熱! 温度足りない!”と書きたかったのだろう。男の字だからルーパが書いたんだと思う。
だが、それらの魔法陣に書かれた呪文を少し眺めていて気づいた。てっきりエロイムエッサイムとか、スイヘーリーベーみたいな魔法の言葉が書かれているものと思っていたら、どうも違う。
数字や記号の類が思ったよりも頻繁に登場するのである。
「これ……。プログラムじゃね?」
一部を抜粋するとこんな感じ。
se g = fflg. esisto ferro ita 2. dirigo su. esisto ferro ita 2. per 200. muovo accanto 2 9999.
fino per. osservo temp ttemp. se ttemp < 120. continuo. fino se. fino se.
少なくとも、ファンタジー小説に出てくる魔法の呪文とは文法が違うことが明らかだ。
また、単語は英語ではないものの文字そのものはアルファベット。雰囲気が少し英語っぽい語もあるので、それをヒントにいくつかの紙を見比べ、知ってる単語と使い方の似ているものをピックアップしてみた。
多分だけど、対応表としてはこんな感じ。
per ⇒ for
fino ⇒ end
muovo ⇒ move
su ⇒ up
giù ⇒ down
accanto ⇒ side
se ⇒ if
本当にごく一部だが、何とか読み取れる範囲でこれだけ解読できた。
そこから、先ほどのルーパの「熱足りない!」というメモの、矢印が指す先をもう1度見てみる。
この部分である。
per 800. muovo accanto 5. fino per.
「ああ、そりゃそうだろうな」
僕はすぐに気がついた。これでは熱は効率的に発生しない。
これは、僕の知るプログラム言語に置き換えるとこうなるはずだ。
for i = 0 to 800
move side 5
end for
この中の for は同じ処理を繰り返すコマンドで、ここでは 800 と書かれているので ≪800回繰り返せ≫ の意味になる。それから、もし "move side 5" という部分が ≪物体を横に5動かせ≫ であれば、それを800回繰り返すわけだ。
なのでこれは ≪物体を横に5動かすことを800回繰り返せ≫ である。
メモの内容から察するに、ルーパは物体同士をこすり合わせて熱を発生させようとしたのかもしれない。だとすると、温度を上げるために移動速度を限界まで上げてみたが、それでもダメだった、ということなのだろう。
でもそれはそうだろう。
冬場の寒い日に手を温めるために両手をこすり合わせるとき、温度を上げるのにひたすら手を高速化しようとする人はいない。物体に摩擦熱を発生させるには「こすり合わせる」のではなく、「こすり“付け”合わせる」のだ。つまり両手をくっつけただけではダメで、より圧着させるように力を入れないといけない。
普通みんな無意識にそうしているはずである。ルーパのプログラムには、この圧着させる部分がない。
だからこのやり方で温度を上げたいのなら、プログラムはこうなる。
for i = 0 to 800
move down 1
move side 2, 9999
end for
物体を横移動させる際に、下にも移動させてやる。こうすることで物体同士が圧着する。
さらにそれをガトーニアのプログラム言語に置き換えると "per 800. muovo giù 1. muovo accanto 2 9999. fino per." となり、これが正しい摩擦熱発生ロジックだ。
「ふむ……。試したいな」
思いついた以上、実際に試さなければならない。それがエンジニアの掟。
散らかった紙の下に、ペン、コンパス、定規が乱雑に放り投げられているのを見つけた。
僕は呪文が何も書かれていない新しい同心円紙を探し出し、そこにルーパの呪文と全く同じ魔法陣を書く。ただしメモ書きの部分にオリジナルの記述を足して。そもそも単純に書き写すだけでいいのかは分からなかったが、もし間違いがあればそれはそれで仕方ない。
「さて、どうやって動かすのかな……?」
オブジェには、すでに別の紙がクリップで止めてあった。それを外して、自分が書いた魔法陣を同じように取りつける。
だが当然、魔法の起動方法が分からない。
てっきりこのオブジェが魔法装置だと思っていたが、とりたてて起動スイッチのようなものがあるわけでもない。もしかしたらこれはただの置物で、実際には魔法使いが己の魔力とかを使ってやるのかもしれない。万が一、某宅急便屋のように血で起動する仕組みとかだと、魔女の家柄でも思春期でもない僕にはもうお手上げである。
あ、いや、思春期はまだギリいける? 黒ネコのクツシタともしゃべれてるし、大丈夫大丈夫。
押せそうに見えるところを押してみて、スライドできる場所がないか探し、ひっくり返し、振り、回し、息を吹きかけ、引っ張れそうなところを引っ張ってみたが、オブジェはウンともスンとも言わない。
「うーん……。やっぱ無理なのかな?」
僕は、オブジェの中心にある一番大きな紫色の宝石に手を当てて、「動け~~~~」
情緒とか何とか、そんな感じの感情を込めて、手をプルプルさせながら念じてみる。
すると――。
「みーん……」
という非常にか細い音とともに、オブジェの宝石が突然光りだした。
「え? 起動した!? 僕いったい何をした?」
何がきっかけだったのかよく分からないが、ともかく、魔法陣を書いた紙の目の前に、僕が書いた魔法陣をそのまま空中に投影したような光る像が浮かび上がる。その光をよく観察してみたが、改良した部分はちゃんとその通りになっているようだった。
それから魔法陣の目の前に、2枚の簡素な板の像が現れる。レーザー投影の立体映像を見ているようだ。そしてその板がシャカシャカとランダムな動きを見せ始め、だぁいたい800回くらい動いたかな、といったところで停止。板の動きから、"muovo accanto" という命令が、板をランダムな方向に動かすものだったことが分かった。
なるほど。プログラム通り。
僕が読み取った通りであれば、魔法はこのまま終了するはずだ。
が――。
ここで想定外のことが起こった。
「ちり……」
またも小さな音がして、魔法陣を書いた紙の中央部分が赤く輝いたかと思うと、そのまま白い煙を出し始めたのである!
「わー!!!」
僕は慌てて魔法陣紙をバシバシ叩き、火を消す。火力が弱かったせいか、幸いすぐ消えた。
「び、ビビった……」
すいませんすいませんすいません、もうしません。
あ、そっか。摩擦熱を上げたんだから当然の現象だ。あるいはもしかすると、魔法陣紙は僕らの世界の紙よりも燃えやすいのかもしれない。
人の物に勝手に触ってはいけないという教訓を嫌というほど得た僕は、オブジェに二度と触らないことを決意しつつ、証拠隠滅のため魔法陣紙をクリップから抜き取ろうとした。
「どうしたの! 大丈夫!?」
だが時すでに遅し。僕の叫び声で3人が飛び込んできてしまった。静かで聞こえなかったが、実は隣の部屋にでもいたのかもしれない。
「ご、ごめん……。魔法陣の紙を1枚ダメにした……」
こうなったら仕方ない。怒られるのを覚悟で、僕は焦げた紙をオルソラに渡す。ダメになったのは紙だけで、オブジェは特に問題ないはず。むしろ問題なくてくれ。
「え?」
オルソラはびっくりして紙を少し眺めていたが、「あ、これ、あなたが実験してた発熱器?」
と、紙をルーパに渡す。
「ん? ああ、そうだな。でもダメにしたって……」
「あ、いや、そいつはそっくりに真似て書いたコピーなんだ。原本は手をつけてないよ。起動できそうだったからやってみたら、そしたら火がついちゃって……。てへぺろ!」
やっぱ許してもらえないかな?
「は? 焦がしたって……俺の魔法陣がか? この魔法陣は紙を焦がすほど熱くならないはずなんだが……。むしろ紙が燃えてくれなくて悩んでたんだ」
「うん。メモにもそう書いてあったからさ、効率的に熱が出るように修正したんだ。そしたら火がついた。でもごめん、もう2度としない」
「え、いや、マギアテスターに異常がないならいいんだが……」
ルーパは僕がオブジェと呼んでいたものを少しチェックし、「うん、こっちは問題ないな」
よ、よかったー!!!
だが3人が驚いていた理由は、機械を僕が勝手に使ってしまったことではなかった。
「ってゆーか、あんたなんでマギア使えるのよ!?」
オルソラが目をまんまるくしていた。
あ、そっちか。そりゃそうだ。魔法陣そのものは向こうにはないものなんだから、それが使えてしまうのは不思議なことだろう。
けど、僕にとっては問題はそこではないのである。
「なんでって……」
僕は、本当に慎重に慎重に、なるだけ彼らに悪印象を与えないワードを選びながら、「まぁ……。専門家だから、じゃないか……な?」
と答えることにした。
だってエンジニアだもの。嘘ではない。
つづく