第1-20話 ダウングレードって、何だ!?
アゲハは思った。『あたしにも術式が作れるはずだ』、と。それが出来れば、あたしが使う魔法を強化出来れば、あたしは、あたし達はもっともっと強くなれるはずだ。そしてそれが、あたしとあの娘達のためになる、と…
もっとも、アゲハはこの様な事は初めて…そもそもロクスケ以外、術式作りの経験者がいないのだが…なので、簡単な術式の改造から、徐々に学んで慣れていかなければならない。
ロクスケは自身の『ファイヤーボール』を更にアップグレードし、これまで2種類に固定されていた混合球を構成する元素種類数を不定にしてみせた。アゲハは…その逆を行く。
(使い道を『ファイヤーボール』に限定するなら、構成元素そのものをフロギストンとオキシジェンに固定しても良いし、ならその混合モル比も2:1で良い。その様に、『ファイヤーボール』の術式を改造してみよう。)
ロクスケがアップグレードなら、アゲハはダウングレードだ。
「…とは言っても、もう既に完成された術式があるんだから簡単に出来るわよね…」
自身の借家の、質素なテーブルから立ち上がると、窓の外の『北都』の灯りを見つめながら、アゲハは思った。
「これはあくまで第一歩、あたしが目指すのはそのずっと先よ。」
※ ※ ※
「改造するのは、”ball2”のサブルーチン…最後4つの引数…”phlogiston”と”2”と”oxygen”と”1”を削除し、サブルーチンの中の固定値にする…」
アゲハがまず行ったのは、術式を、空き領域に写し取る事だった。以前、非常に小さな『ファイヤーボール』を撃つために、周囲の球殻を厚くしたのだが、次弾を射出する際に、このままだと無駄に球殻の厚い『ファイヤーボール』を撃ってしまうと、慌てて戻した事があったのだ。その様な事が無い様に、オリジナルは取っておいて、コピーを改造しなければいけない。
「よし…一字一句間違わず、コピーは出来た、はず。これを編集して…」
“spell fireball…”
「待って、元々ある『ファイヤーボール』と、あたしが改造した『ファイヤーボール』が2つある状態で術式を走らせたら、どっちが発動するのかしら!?」
変えた方がいい、アゲハがこれから作る方の術名を。
“spell fireLIGHT”
「ま、炎は灯りにもなるから、これで良いでしょ…」
編集を続けよう。引数は元の『ファイヤーボール』と同じで良いだろう。その中で使うサブルーチンを変えて行く。また名前を考えないと…
subroutine ballPHLOGISTON2OXYGEN1(a,position,rmax,rho,nmax)
「名前が安直…!?放っときなさいよ!!」
誰に対してか分からないがアゲハは呟く。
for i=1 to imax
call randomball(a,position,rmax,imax,i,r,theta,phi)
if mod(i,n)<2 then
call createcluster(a,PHL0G1ST0N,mole*nmax,position,r,theta,phi)
else
call createcluster(a,0XYGEN,mole*nmax,position,r,theta,phi)
endif
:
next i
「それにしても、ロクスケはどうして術式を全部小文字で書いてるのかしら!?ま、いいわ。」
とにかくアゲハの術式は完成した。
「試し撃ちしないとね…」
アゲハは東新街区の北岸に移動した。以前、『エリアファイヤー』の術式を試し撃ちして、ヤカンの湯を沸かした場所だ。
目の前の海に向かって、アゲハは左手の杖を掲げ、唱える。
「ラン、ファイヤーライト!!」
ズキっ「痛っ!!」頭痛に見舞われ、アゲハはその場に崩れ落ちた。もちろん、アゲハの杖からは火花すら出なかった。
「ううう…どうなってんの…!?やっぱりロクスケ以外は術式を作れないって事!?」
頭を押えながらアゲハはもう一度、『ファイヤーライト』の術式を隅から隅まで読み返す。そして…
“call createcluster(a,PHL0G1ST0N,mole*nmax,position,r,theta,phi)”
“call createcluster(a,0XYGEN,mole*nmax,position,r,theta,phi)”
『フロギストン(phlogiston)』に2箇所使われている”o”と1箇所の”i”、そして『オキシジェン(oxygen)』の頭の”o”が、数字の”0”と”1”になっていた。
「そんな…こんなつまらない事で……」
ロクスケはこのために全部小文字を使っていたのだろうか。全部正しく書き直して、もう一度チェックして撃ってみる。
「ラン、ファイヤーライト!!」
ズキっ…!!アゲハは再び頭痛に見舞われた。
「何で………」
アゲハは再び術式を読み直し…
“if mod(i,n)<2 then”
「今、nっていくつだっけ!?」
元々メインルーチンから引っ張って来た2つのマテリアルのモル数n1とn2を足した数がnだった。だが構成元素とモル比をフロギストン2:オキシジェン1に固定したため、”n=n1+n2”の行を削除したため、nに値が代入されていないのだ。そもそもこの場合n=0のため、mod文は『iを0で割った余り』という事になり、ゼロ割りで無限大になったのが頭痛の原因なのだが、アゲハはそこまで知らない。
「…あたしの間抜け!!」
“if mod(i,3)<2 then”と書き直す。
「もう頭痛はごめんよ………」
アゲハは杖を構え直し、目の前の海に向かって唱える。
「ラン、ファイヤーライト!!」
ボっ!! アゲハの杖からようやく、やっと、1つの火球が射出された。
「や………やったぁ………」
アゲハはその場にへなへなと座り込んだ。2度の頭痛を含む大いなる疲労、そして『象牙の塔』で、初めて『ファイヤーボール』の呪文を撃った時と同じかそれ以上の感動が、今のアゲハには満ちていた…




