1-12 見えた道筋と葛藤
「つまり、こいつの正体はArrayIndexOutOfBoundsException──虚数域例外──だ」
「アレ… アレイ?」
困惑の色を浮かべるリリアに、ボクは説明を続ける。
「ArrayIndexOutOfBoundsExceptionというのは、要するに"列にない席を探す人"みたいなものさ。例えば、10個しかない椅子が並んでいる部屋で、11番目の椅子を探そうとする。そんな椅子はどこにもないから、当然部屋が怒る。『そんな席は存在しない!』ってね」
デバイスの画面に表示された攻撃パターンを指さす。
「な、なるほど?」
リリアはいまいち理解してなさそうだが、いきなりプログラマーでもないのに例外について理解しろというのも酷な話だ。
「ボクらの攻撃が全く当たらなかったのは、やつが常に"存在するはずのない場所"に移動していたから。防御も効かなかった。だってそこには何もないはずなんだ」
データログが次々と更新される。
「グレイシャルバーストが一瞬効いたのは、広範囲の凍結で、やつの移動できる範囲を制限できたから。でも、すぐに別の"存在しない場所"に逃げられてしまった」
「正体は分かった。けど、対策までは──」
ボクはなんとかダメージを負った体を起こす。
言葉が途切れる。
例外種の姿が大きく歪み、その一部がボクの首元へと伸びていく。回避する体力も残っていない。
まずい──。
「カゴメさん!」
リリアの悲鳴が響く。
助けたい。でも、魔力を使えば──。
『また、あの時みたいに……』
記憶が蘇る。
魔法学校での実技試験。制御できない魔力を、必死に制御しようとした日。
最初は上手くいっていた。でも、魔力が徐々に暴走を始める。
『違う、そっちじゃない! 収まって!』
制御を失った魔力が、教室を破壊していく。
机が粉々になり、窓ガラスが割れ、天井が抉られていく。
逃げ惑う級友たち。
「危険だ」「制御できない」「近づくな」──投げかけられる言葉の数々。
先生が必死で暴走を止めてくれたけれど──
それ以来、リリアは魔力を使うことが怖くなった。
型に収まらない、制御できない魔力。使えば使うほど、誰かを傷つけてしまう。
『だから、もう魔法は……』
三日前の暴走も、同じ。
『せっかくカゴメさんが作ってくれた道筋があったのに、またも制御できなかった』
振り返れば、ずっとそうだった。
力を使うたび、誰かを傷つけてきた。
だから、もう二度と──。
例外種の攻撃が、ボクの首元まであと僅かというところまで迫った。
『もう、魔法は使わない──そう決めていたのに』
リリアの手が、杖を強く握りしめる。
『でも、このまま見ているだけ? カゴメさんを見殺しにするの?』
震える手。
迷う心。
そして──3日前の言葉が蘇る。
『この3日、ずっと準備してた。今度は、ちゃんとリリアの魔力を受け止められる』
机に広がっていた羊皮紙。モニターに映る無数のプログラム。
全ては、自分のために。
自分の制御できない魔力を、受け止めるために。
『私の魔力は、型に収まらない──』
その言葉の意味が、今になって分かった気がした。
型に収まらないことは、欠点なんかじゃない。
だって──。
「私の魔力は、どんな型にだってなれる!」
リリアが杖を掲げる。
解き放たれた魔力が、青白い光となって周囲を包み込んでいく。
「リリア!?」
主人公が声を上げる。
今までに見たことのない魔力の奔流。それは型に従うでもなく、暴走するでもなく──まるで意志を持つかのように流れ始めていた。
「カゴメさん! 私の魔力、制御してください!」
デバイスの画面が明滅する。
今なら分かる。この純粋な魔力こそが、リリアの力。
「analyze.magic();《魔力解析、実行》」
コマンドを入力した瞬間、魔力のデータが奔流となって画面に流れ込んでくる。
まるでプログラムと魔法が共鳴するように、リリアの魔力が主人公の作る道筋と完璧に同調していく。
銀髪が風に舞い、リリアは小声で呪文を紡ぐ。その声は次第に力強さを増し、杖の先端に冷気が集まっていく。
周囲の温度が急激に低下し、データの流れさえも凍りつきそうな寒気が広がる。
「これが私の──。」
リリアは迷いなく杖を振り下ろす。
「零下氷新星!《フロスト・ノヴァ・ゼロ・ディグリー》」
解き放たれた魔法が、まるで氷の超新星のように四方八方へと広がっていく。
例外種が作り出した黒い壁が、一瞬で凍てついていく。
そして──凍り付いた壁が、ガラスのように砕け散った。
放たれた魔力は型に従うでもなく、暴走するでもなく、リリアの意志そのものとなって周囲を凍てつかせていく。
「これが、リリアの本当の力……!」
凍りついた壁の破片が、データとなって消えていく。
一瞬の静寂──。
「リリア、今のは凄かった」
ボクは立ち上がりながら言う。
「は、はい! 私にも、驚きで……」
リリアの声が弾む。しかし、例外種を倒したわけではない。
デバイスの画面に次々と表示されるデータを見つめながら──。
「でも、まだ終わっちゃいない。こいつは配列の範囲外に逃げることで、あらゆる攻撃から逃れる。今の攻撃だって、一時的に姿を消されただけかもしれない」
その言葉通り、空間の歪みが再び現れ始めていた。
「配列の範囲外に逃げる……」
リリアが呟く。
「それって、どういう意味なんでしょう?」
「ん、そうだな……」
ボクは考えながら、目の前の空間を指差す。
「例えば今、ボクたちの目の前には決められた範囲の空間がある。普通のバグなら、その範囲の中でしか動けない。でもこいつは──」
現れた例外種が、また空間の歪みの中へと消えていく。
「範囲の外、つまり"存在するはずのない場所"に移動できる。そのせいで、通常の攻撃も防御も効かない」
「じゃあ、どうすれば……」
ボクは、リリアの解き放たれた魔力に目をつける。
「さっきのリリアに技は、一時的にこいつを捉えることができた。それはリリアの魔力が型にとらわれない、純粋な力だから──」
ひらめく──、逆転のアルゴリズムが。
珍しく自分の目が輝き始めたことを自覚する。
「そうか! リリアの魔力は型にはまらないんだから、型の外、つまり配列の範囲の外にだって届くはずだ!」
「え?」
「今までみんな、リリアの魔力を既存の型に当てはめようとしてた。でもそれは違う。リリアの魔力は、"型そのもの"を作り変えられる」
デバイスを操作しながら、ボクは説明を続ける。
「つまり、配列の範囲を変えることができる。やつの逃げ場所を、新しい配列の一部に組み込んでしまえば──」
リリアの瞳が大きく開かれる。
「逃げられなくなる?」
「そう。閉じ込めるんだ。リリアの魔力と、ワイちゃんのプログラムで」
ボクは新たなコマンドを入力し始める。
リリアの魔力に合わせた、特別な制御プログラム。
「冷気で電子的に封じ込めて、そこをプログラムで"正しい配列の範囲"として再定義する」
ボクの説明に、リリアが頷く。
「私の魔力で、檻を作るんですね」
「ああ。でも、ただの氷の檻じゃない」
デバイスの画面に、新しい魔法陣が展開される。
それは魔法とプログラムが融合した、今までにない形をしていた。
「零境氷殻擬装──」
ボクは呟く。
「これが、ワイちゃんたちの答えだ」