プログラマブル魔法陣の開発
### 7-14 プログラマブル魔法陣の開発
マルコの提案から数日後。
ミユキは、図書館の一角でセオドアと向き合っていた。
彼との共同研究も正式にスタートしていた。図書委員のオフィーリアも、資料の提供や実験の手伝いで協力してくれている。
テーマは『プログラマブル魔法陣理論』——魔法陣にパラメータ変更機能を持たせる、革新的な理論だ。
二人の間には、びっしりと数式と魔法陣が描かれたノートが広げられている。魔法理論書も何冊も積み重なり、付箋が無数に貼られていた。
「この部分の魔力伝達効率……もっと上げられないだろうか?」
セオドアが、眼鏡を押し上げながら真剣な表情で尋ねた。
セオドアの表情には、少しの焦りと——何か深い悩みが見え隠れしていた。
「前からやっていた個人的な研究なんだが、実は、この実装部分で行き詰まっていたんだ」
彼が、小さく息を吐いた。
「理論上は効率化できるはずなのに、どうしても実現できなかった」
「理論は完璧だとおもう。証明も済んでいる。でも——現実には動かない」
セオドアの声には苦悩が滲み、いつの間にか独白のようになっていた。
「僕は……ハートウィン家の長男として、学者の道を歩んでいる……。代々、魔法理論学者を輩出してきた名家だ。父も祖父も、王立学会の会員だった……」
「だから——失敗は許されない」
その言葉に、ミユキは少し驚いた。
『プレッシャーを感じてるんだ……。名家の期待を背負って、完璧を求められているのね』
前世の自分も、厳しい環境で完璧を求められていた。
セオドアが、自嘲するように笑った。
「僕は、魔法陣を論理的に見ることができる。証明することもできる。しかし——このままでは……実際に動くものを作ることができない……。理論学者としては優秀になれるかもしれないが、実践者としては半端者なんだ……」
彼の言葉が、途切れた。
◇
「えっと……」
ミユキは、魔法陣を見つめた。
頭の中で、自然とプログラムの構造が展開される。
『魔力伝達……これはデータの転送と同じだ』
『パイプライン処理を使えば、効率が上がる。それに、バッファを入れれば安定性も向上する』
「あ……分かりました」
「ええっ? もう!?」
よほど驚いたのだろう、セオドアの声が裏返っている。
ミユキは、魔法陣ペンを取り出して、ノートに描き始めた。
「魔力の流れを段階的にするんです。一気に送るんじゃなくて、小分けにして順番に」
「それと、一時的に魔力を保持するバッファ機能を追加します」
「ほう……」
なんとか落ち着きをとりもどしたセオドアが、身を乗り出してノートを覗き込んだ。
彼の瞳が、次第に驚きの色を帯びていく。
「これは……まるで水路のような構造だな」
「はい。一気に水を流すと溢れますが、少しずつ流せばスムーズですよね」
「おおぉ! なるほど……!」
セオドアは、はっとした表情になった。
「僕は、魔力伝達を数学的に最適化しようとしていた。でも君は——日常の現象に例えて、直感的に理解している……。これが……実践者の発想か」
彼の声には、感嘆と——少しの羨望が混じっていた。
◇
二人の研究は、時間を忘れるほど熱中するものだった。
魔法陣の基礎理論を確認し、プログラミングの概念を導入し、実装方法を議論する。
議論の中で、セオドアの表情が次第に変わっていくのがミユキには分かった。
最初の堅さが解け、身を乗り出すように話し始めている。
「従来の魔法陣は、一つの用途に特化している」
その声には、最初とは違う——熱がこもっていた。
「その特化の過程で、どうしても固定された機能に限定されてしまう」
「しかし、君の理論はその限定を解除するのか」
彼は立ち上がり、興奮した様子でノートを見つめた。
「これは……僕が三年間探し求めていた答えだ。魔法陣の機能を可変に、魔力を流動的なものにする……!」
「理論と実践の橋渡しだ……!」
ミユキは、少し考えてから言葉を選んだ。
「セオドア先輩……実は、もっとすごいことがあるんです」
「もっと……だって?」
『魔法陣は「チューリング完全」になる……。条件分岐と繰り返し処理を適切に実装すれば、理論上あらゆる計算が可能……前世で学んだ計算理論。でも、そんな前世の専門用語をそのまま使うわけにはいかない』
「はい。この理論が完成すれば——原理的には、あらゆる魔法を実装できるようになります」
「あらゆる……魔法を……?」
セオドアの瞳が、さらに輝きを増した。
「それは……つまり……」
「火魔法も、水魔法も、治癒魔法も——全て、同じ基盤の上で動かせるんです」
ミユキは頷いた。
「必要なのは、正しい論理構造と、適切なパラメータだけです」
「……なんてことだ」
セオドアは、しばらく言葉を失っていた。
そして——深く息を吸い込んだ。
「君は……魔法の本質を数学的に証明し、魔法陣を汎用……いや、万能にするのか!」
「これは……王立魔法学会でも、誰も到達していない領域だ……!」
「はい。それが、プログラマブル魔法陣の真髄です」
◇
ミユキは、新しいページに魔法陣を描き始めた。
「それでは、実際に魔法陣に『変数』を実装してみます」
「ああ、以前話していた変数だな」
セオドアが身を乗り出す。
「はい。まず、魔法陣の中にパラメータ領域を設けます」
ミユキが説明しながら、魔法陣に特殊な記号を描いていく。
「例えば、火魔法の威力を決める部分に変数領域を配置します。例えばここに『10』という数値を設定すれば小さな炎になり、『100』を設定すれば大きな炎になります」
「同じ魔法陣で、威力を自在に変えられるんです」
「……天才か」
セオドアが、感嘆の声を漏らした。
「これは……魔法史上最大の革命になる」
「そんな、言い過ぎですよ……」
前世で論理演算を、デジタルコンピュータの概念を作り上げた天才達に申し訳なく思うミユキだった。
◇
さらに議論は続く。
「それから、『関数』の実装も進めたいんです」
「関数化……それも以前言っていた、処理を部品化する仕組みだな」
セオドアが頷く。
「はい。例えば、魔力制御の処理を一つの独立した魔法陣構造としてまとめます」
「そうすれば、他の魔法陣からその構造を参照して、繰り返し使えるんです」
ミユキは、次々と魔法陣を描いていく。
前世で学んだプログラミングの考え方を、魔法理論に応用していく。
「すごい……すごいぞ!」
セオドアが興奮した様子で立ち上がった。
彼の普段の冷静な態度からは考えられないほど、感情を露わにしている。
「こんな発想……今まで誰も思いつかなかった!」
そして——彼は、ふっと笑った。
自嘲ではなく、解放されたような笑みだった。
「僕は——ずっと理論の檻の中にいた。完璧な数式、完璧な証明。それが全てだと思っていた。でも君は……実践から入り、理論を後から構築している……。それが——本当のエンジニアリングなんだな」
「いえ……ほんとに、言い過ぎですよ……」
ミユキは照れながら答えた。
「いや、素晴らしい」
セオドアが、真剣な眼差しでミユキを見つめた。
「君と研究していると、僕も——理論だけでなく、実践の楽しさを感じる」
「これが……『ものを作る喜び』なんだな……」
◇
「それでは、この理論を論文にまとめよう」
セオドアが提案した。
「学園の月例研究発表会に提出するんだ」
「論文……ですか」
「ああ。こんな革新的な理論、発表しない手はない」
「それに——」
セオドアが、真剣な表情になった。
「君の理論は、世界を変えるだろう。多くの魔法使いが、この理論を学べば——魔法技術は飛躍的に進歩する」
「わ……分かり、ました」
ミユキはたどたどしく頷いた。
『世界を変える……』
その言葉が、胸の奥で反響する。
『この世界を……大きく変えてしまうかもしれない』
ふと、不安が過ぎる。
この世界は、前世で自分が開発していたゲームの世界。
その世界の魔法システムを——根本から変えてしまう。急激な発展を遂げることになるかもしれない。
前世で読んだ異世界ものの小説では、主人公が新しい技術を持ち込んで、良くも悪くも世界を変えてしまう展開があった。
『それは……本当に、正しいことなんだろうか』
でも——。
セオドアの真剣な眼差しを見て。冒険者たちの喜ぶ顔を思い出す。
『多くの人が、この技術を必要としている』
『魔法をもっと効率的に、もっと安全に使いたいと願っている』
『だったら——』
ミユキは、小さく息を吸った。
『変化を恐れていたら、何も始まらない。前世で学んだことを、この世界で活かす。それが、今の私にできること』
不安はある。
でも——それ以上に、前に進みたいという想いがあった。
◇ ◇
翌日。
魔動機関研究会の実験室に——ミユキとセシリア、エドワードの三人が集まっていた。
昨日セオドアと議論した理論を、実際に試すためだ。
「セオドア先輩とは理論を完成させる。二人には、それぞれの専門分野での応用研究をお願いしたいの」
ミユキは、二人に向き直った。
「私、治癒魔法での応用実験がしたい!」
セシリアの声が弾んだ。
「俺は戦闘用魔法だな。状況に応じて威力を変えられるのは、実戦で有利だ」
エドワードも頷いた。
◇
まずは基本動作の確認から始めた。
実験用の魔法陣を床に描き、変数部分に威力のパラメータを設定する。
ミユキが魔力を込めると——魔法陣が淡く光り、小さな炎が現れた。パラメータを変更して再度試すと、今度は人の頭ほどの大きさの炎が現れる。
「すごい! スムーズに威力が変わる。ばっちりだな!」
エドワードが興奮した様子で言った。
火魔法、水魔法、風魔法——どれも予想通りに動作する。
◇
「次は——もっと複雑な機能を試してみるね」
ミユキは、新しい魔法陣をセットし始めた。
「複数の変数を同時に制御する魔法陣。威力と範囲と持続時間を、それぞれパラメータで調整できるようにしてみる」
「おお……それができれば、実用性が一気に上がるな」
エドワードが期待した様子で言った。
ミユキは、前世のプログラミング知識を総動員して魔法陣を設計した。
三つの変数を定義し、それぞれを魔力の流れに接続する。
論理的には完璧だ。
『プログラムなら、これで動くはず』
自信を持って、魔法陣を完成させた。
「じゃあ、試してみるよ」
ミユキは魔力を込めた。
魔法陣が光り——。
◇
その瞬間——。
予想外のことが起きた。
魔法陣が激しく明滅し始めたのだ。
「え……?」
ミユキは驚いて手を引いた。
でも——魔法陣は止まらない。
光が強くなり、魔力の流れが暴走し始めた。
「ミユキ! 魔力供給を止めて!」
セシリアが叫んだ。
「やってる! んだけど——止まらない!」
これは——バグだ。
プログラムのバグと同じ、予想外の動作。
でも——プログラムと違って、実体を持つ魔力が暴走している。
『危ない!』
「セシリア、エドワード、下がって!」
ミユキは二人を庇うように前に出た。
そして——緊急停止用の魔法陣を素早く描く。
前世のプログラマー経験で培った、デバッグ技術。
「トライ、キャッチ、ブレイク!」
暴走したプロセスを強制終了する——緊急停止魔法陣。
ミユキは、それを暴走している魔法陣に重ねた。
魔力が激しくぶつかり合い——。
そして——。
「ヌルポインターエクセプション!」
ぱっと、光が消えた。
魔法陣が、完全に停止した。
◇
静寂。
三人は、しばらく呆然としていた。
「……危なかった」
エドワードが、ようやく口を開いた。
「ミユキ、大丈夫か?」
「う、うん……」
ミユキは、床に残った魔法陣の痕跡を見つめた。
頭の中で、何が起きたのか分析する。
『三つの変数を同時制御……論理的には正しかったはず』
『でも、実際には暴走した』
『なぜ……?』
「ミユキ……」
セシリアが、心配そうに近づいてきた。
「ごめん……失敗しちゃった」
ミユキは、小さく呟いた。
胸の奥が——苦しい。
前世では、プログラムが動かないことはよくあった。
バグを直し、デバッグを繰り返し、何度も試行錯誤した。
でも——今回は違う。
『プログラムなら、これで動くはず』
『私の知識を使って設計した』
『なのに——動かなかった』
◇
「ミユキ、僕らは君を責めたりなんてしないよ」
エドワードが優しく言った。
「研究には失敗がつきものなんだろ。一度目で完璧に動く方が珍しいって」
「でも……」
ミユキは、拳を握りしめた。
『私……プログラミングの知識があれば、魔法陣も同じように設計できるって思ってた』
『前世の経験があれば、何でもできるって……』
『でも——違った』
心の中でそう認めて——ミユキは気づいた。
『そうだ……これは、プログラムじゃない』
『魔法陣は、この世界独自のもの』
『プログラミングの概念を応用できるけど、完全に同じじゃない』
セシリアが、ミユキの肩に手を置いた。
「ミユキ、落ち込まないで……。失敗したからこそ、新しいことが分かるんだよ」
「……。ありがとう……。」
「それに——」
セシリアが微笑んだ。
「失敗を一緒に乗り越えるのが、仲間でしょ?」
その言葉に——ミユキの胸が、じんと温かくなった。
『前世では……失敗したら、怒鳴られるだけだった』
『誰も助けてくれなかった』
『でも——今は違う』
◇
「……あり……がとう、二人……とも」
ミユキは、あふれ出る涙をこらえながら言う。
『あれ……なんで、こんなに泣けちゃうんだろう?』
前世なら、失敗なんて何度もあった。それでここまで感情的になることはなかった。
『やっぱりまだ十五歳の肉体は感情が不安定になりやすい……のかな?』
思春期のホルモンバランス。成長期の脳の変化だろうか。震える心の裏側で、前世の医学知識が、勝手に分析する。
そっと、セシリアがミユキを抱きしめた。
「ほんとうに……ありがとう」
仲間の優しさに、素直に感動できる。前世では固くなっていた心が、今は柔らかい。
「もう一度、考え直してみるね……」
「プログラムの知識だけじゃなくて——この世界の魔法理論も、ちゃんと学びなおさないと」
「それが良いと思うな」
エドワードが頷いた。
「俺たちも協力する。一緒に考えよう」
ミユキは、暴走した魔法陣の痕跡をもう一度見つめた。
『失敗した……でも、これは終わりじゃない』
『むしろ、始まりだ』
『前世の知識と、この世界の魔法理論を——本当の意味で融合させる』
『それが、私がやるべきこと』
新しい決意が、胸の奥から湧き上がってきた。
◇ ◇
数日後——。
ミユキはセオドアと図書館で向き合っていた。
「失敗してしまいました……」
ミユキは、暴走した魔法陣のスケッチを見せた。
「複数の変数を同時制御しようとしたら、魔力が暴走してしまったんです」
セオドアは、スケッチをじっと見つめた。
「……なるほど。見る限り、論理としては完璧だ」
「しかし——魔法陣で扱う魔力には物理的な制約がある」
「物理的な……制約?」
「ああ」
セオドアが、新しいページに図を描き始めた。
「魔力は、実体を持つエネルギーだ。流れには速度があり、容量には限界がある」
「論理式は正しいかもしれないが、実際の魔力の流れを考慮しないと、暴走する可能性がある。魔力は——水路の中の水のように、一定の速度を超えられない」
その説明に——ミユキははっとした。
『そうだ……魔力は物理的なエネルギー』
『データ転送とは違う』
『水道管に、一度に大量の水を流したら——溢れる』
「つまり……三つの変数に同時に魔力を供給しようとしたら、流量が足りなくて暴走した……?」
「その通りだと思う」
セオドアが頷いた。
「君の理論は正しい。でも、魔法理論の物理的制約を考慮する必要がある」
セオドアは、少し微笑んで続けた。
「君が以前言っていたじゃないか——魔力を一気に流すのではなく、段階的に流すべきだと」
「あ……」
ミユキは、少し驚いた。
『私が偉そうに言ったこと……』
「その通りなんだ。君の実践的なアプローチと、僕の理論的な知識——両方を組み合わせれば、この問題を解決できる」
ミユキは、深く頷いた。
『セオドア先輩は……私の気づきを、ちゃんと受け止めて、そして、それを理論として補強してくれる』
「じゃあ……魔力の流れを制御するバッファを追加すれば」
「そして、変数への供給を順次処理にすれば」
「ああ! それだ!」
セオドアが立ち上がった。
「順次処理なら、魔力の流量を管理できる!」
「一つずつ変数に値を設定していけば、暴走しない!」
二人は、同時に新しい魔法陣を描き始めた。
ミユキのプログラミング知識と、セオドアの魔法理論。
それが融合した瞬間だった。
◇
改良した魔法陣を、再び実験室で試した。
セシリアとエドワードも立ち会っている。
「今度こそ……」
ミユキは、魔力を込めた。
魔法陣が光る。
今度は——暴走しない。
順次処理によって、三つの変数に安定して値が設定されていく。
そして——。
炎が現れた。
威力、範囲、持続時間——全てがパラメータ通りに制御されている。
「成功だ……!」
エドワードが拳を握った。
「やった! ミユキ!」
セシリアが抱きついてきた。
ミユキは——また涙が溢れそうになった。
図書館にいるセオドアに、後で伝えよう。
『前世の知識だけじゃ足りなかった』
『でも、この世界の仲間と協力すれば——乗り越えられる』
『それが分かっただけでも……失敗した価値があった』
◇ ◇
図書館を出たミユキは、夜空を見上げた。
大月と小月が、静かに輝いている。
『セオドア先輩との理論研究』
『セシリアとエドワードとの応用研究』
『トビアスとの魔動機関研究』
『マルコとのビジネス……』
色々なことが、一気に動き始めている。
『前世では想像もできなかった、充実した日々』
でも——同時に、不安もある。
『誰かが……私を見ている気がする……』
今日も、図書館で視線を感じた。
なぜかそれが——頭から離れない。
『マルコが言っていた……「新しい技術には敵も現れる」』
『私の研究が……誰かに狙われている……?』
考えたくないが——否定できない。
◇
「ミユキ!」
後ろから、明るい声がした。
振り返ると——セシリアが駆け寄ってくる。
「あ、セシリア」
「一緒に寮に帰ろう! 夜道は危ないし」
「うん……ありがとう」
ミユキは、セシリアと並んで歩き始めた。
友達がいる。
それが——何よりも心強い。
「ねえ、ミユキ」
セシリアが、ふと真面目な顔になった。
「何か……悩んでる?」
「え……」
「だって、たまにすっごく不安そうな顔してるもん」
セシリアの言葉に、ミユキは少し驚いた。
『気づかれてたんだ……』
「……実は」
ミユキは、小さく息を吐いた。
「最近……誰かに見られてる気がするの」
「見られてる……?」
「うん。図書館でも、研究会でも……視線を感じる」
「でも振り返っても、誰もいない」
セシリアの表情が、真剣になった。
「それ……気のせいじゃないかも」
「え……」
「実はね、私も最近変な気配を感じてるの」
セシリアが声を潜めた。
「学園の裏手とか、旧校舎の近くとか……誰かが隠れて見てるような」
その言葉に——ミユキの背筋が凍った。
『セシリアも……感じてる』
『じゃあ、気のせいじゃない……?』
「エドワードにも相談した方がいいかも」
セシリアが提案した。
「三人で気をつければ、少しは安全だと思う」
「……うん」
ミユキは頷いた。
でも——胸の不安は、さらに大きくなっていた。
**あとがき**
「ぬるぽ! ガッ!」
といういにしえのネットスラングを、魔法陣の緊急停止呪文にしてみました。前世の知識が、こんな形で役に立つとは……(笑)
※現実の「ヌルポ……」うんぬんは、NullPointerExceptionの略で、プログラムが無効なメモリアドレスを参照したときに発生するエラーです。魔法陣の暴走を強制終了する呪文として、ちょっとユーモラスに使ってみました。
それと、暴走を止めるときの掛け声(呪文?)も、プログラマーがデバッグするときの「try-catch-break」をもじっています。これも、前世の知識を活かした小ネタです。
それから、「チューリング完全」というのは、計算理論の用語で、あるシステムが任意の計算を実行できる能力を持っていることを指します。魔法陣が「チューリング完全」になるというのは、理論上あらゆる魔法を実装できるようになるという意味で使っています。ファンタジーものでは、こういう専門用語をどうやって説明するかが難しいですが、ミユキの頭の中で自然に理解されているという設定で、あえてそのまま使っています。詳しく知りたい方は、計算理論やチューリングマシンについて調べてみると面白いですよ。興味がありましたら、ぜひ調べてみてくださいね。




