第2章 Ep3:魔導開発1(レガシー撲滅)
領主館の執務室。
窓の外では、2周目のノクターン領が穏やかな午後の日差しに包まれていた。
前回の周回で叩き込んだインフラ資産――アスファルト舗装された街道、整然と並ぶ排水溝、等間隔で配された街灯用の支柱――が、まるで文明が数世紀分ジャンプしたかのような異質な風景を作り出している。
あの地獄のデスマーチは、確かにこの地に刻まれていた。
春の柔らかな風が開け放たれた窓から入り込み、執務机に広げた大判の領地マップの端をパサパサと揺らす。
遠くの牧草地では羊たちが長閑に草を食み、舗装された街道の上を荷馬車がガラガラと快調に走っている。前周では牛車ですら腹まで埋まっていた泥道が、今やこの世界の物流の大動脈として稼働しているのだ。
あまりにも平和な風景。まるで、ゲーム開始直後の安全圏のように。
「道路舗装率98.7パーセント、上水道の浄水能力は前周比で120パーセント……ほぼ完璧ね」
私は執務机に広げた領地マップを睨みながら、赤ペンでチェックリストを潰していた。
チェック項目は、全部で247。
道路の舗装状況、下水道の逆流防止弁の設置数、各集落の通信回線の応答速度、備蓄食糧のカロリー総量、井戸水の大腸菌検査結果、橋梁の耐荷重テスト成績表……。
前世のSE時代に培った「チェックリスト狂い」の習慣が、この異世界でも遺憾なく発揮されている。
漏れのない品質管理こそ、インフラ屋の命だ。
2周目のスタートダッシュは上々だ。前回、泥にまみれて作り上げたインフラ資産はサーバー共有データとして保持されており、リセット後もそのまま残っている。
つまり、1周目で散々苦労した道路整備や衛生改革を、もう一度やり直す必要はない。
プレイヤーのステータスやアイテムは初期化されても、「世界の地形データ」は巻き戻らない。
これこそが、マリエルのような「使い捨て(ワンショット)型」のRTA走者には決して真似できない、インフラ屋の最大の強みだ。
積み上げた努力は、文字通り「地に残る」。コンクリートのように。
『マスター、心拍数が安定しています。今回は前周と比べて精神状態が良好ですね。血圧も正常範囲内です。コルチゾール値も低い。端的に言えば、前周の死にかけ状態と比較して雲泥の差です』
シャルルが穏やかなバリトンで報告する。
「そりゃそうよ。今朝の入学式は華麗にスキップ、誰にも絡まれずに即帰省。完璧な初動だったわ」
あの狂った聖女マリエルと学園で鉢合わせすることを避けるため、入学式はバッサリと欠席した。2周目の知恵だ。ゲーマーの世界では「回避」も立派な戦術である。
『つーかさ、入学式欠席って前代未聞じゃね? 貴族界隈でまた「変人令嬢」の噂立つよ? 社交シーズンの初日にノクターン家の跡取りが来なかったって、今頃サロンが蜂の巣をつついたような騒ぎだと思うけど』
ロキがヘラヘラと口を挟む。
「構わないわ。噂はキャッシュに溜まるだけで、パフォーマンスには影響しないもの。それに、社交界の好感度なんていう不安定な変数に依存するプログラムは、いずれ必ず破綻するの。重要なのは領地のインフラという名の『ハードウェア』だけよ」
『お嬢様、念のためご報告します。ノクターン公爵領の現在のシステム稼働率は99.97パーセント。前周終了時の記録を既に上回っています。残る0.03パーセントは、北東部山岳地帯の土砂崩れによるセンサーノードの物理破損ですが、修復チームを既に派遣済みです』
クラウスが几帳面な声で付け加えた。
「完璧主義は美徳よ、クラウス。99.97じゃダメなの。100を目指さないエンジニアは三流だわ」
私はマップの最後のセクション――北東部山岳地帯の道路改修計画にチェックを入れようとした。
その瞬間だった。
執務室の扉がバァンと乱暴に開き、アイリーンが転がるように飛び込んできた。
彼女の鉄面皮が、珍しく蒼白に染まっている。
手にしていたティーセットのカップが小刻みに揺れ、受け皿の上でカチカチと不吉な音を立てている。
「お嬢様、至急ご報告が! 領民たちの間で妙な噂が広まっております!」
「噂? まさかもうインフラへの不満が出たの? 下水の臭いがまだ残ってるとか? それとも、新設の街灯がまぶしすぎるとかいう苦情? ……光量は計算通りのはずだけど」
「いいえ、そのようなものではありません」
アイリーンは一度、深く息を吸った。
その唇が、微かに震えている。
「……『王国の守護神である近衛騎士団が、精鋭500名を引き連れて、なぜか我がノクターン領へ向かって行軍している』と。しかも、その先頭には――聖女マリエルの姿があったそうです」
カチッ。
私の手の中で、赤ペンの先が折れた。
インクが羊皮紙の上にじわりと赤い染みを作る。
まるで血のように。
空気が、変わった。
さっきまで穏やかに吹き込んでいた春風が、急に冷たく感じられる。窓の外の長閑な風景が、突如として意味を失った。
「……マリエルが動いた。それも、騎士団を引き連れて」
声が掠れた。
背筋を、冷水を流し込まれたような悪寒が走り抜ける。
前回の直接対決を思い出す。あの理不尽な物理演算無視。バケツで空を飛び、壁を抜け、パンで王子を壊した狂気の聖女。
1周目では、彼女は「単騎」だった。一人で飛び回り、一人でバグを撒き散らし、一人で世界を壊していた。
それだけでも手に負えなかったのに――今度は「軍隊」を手にしてやって来る。
ゲームで言えば、前周のボスが2周目で「強化版」として再登場したようなものだ。
しかも装備が違う。前回は素手(バケツ一つ)。今回は重武装(王国最強の正規軍)。
これはもう、「周回ボーナス」とかいう生易しいものではない。「制作側の悪意」だ。
私は「賢者の石板」を引き寄せた。黒い画面がパチリと灯り、ホログラムが展開される。
『緊急速報! 裏取りました、ボス!』
ロキの声が一転して深刻なものに変わった。普段の軽薄な口調が消え、純粋な「情報屋」としての鋭い声だ。
『王都の地脈ログ(アクセスログ)より、近衛騎士団500名のフル装備出撃を確認! 名目上の指揮権は団長グレン・ライハルト……あの王国最強って呼ばれてる脳筋の武人ね。でも、アクセス権限のログを追跡したら面白いことがわかった。実質的なコントロール権はマリエルちゃんが完全に掌握してる。団長は……うん、パペット(操り人形)だね、完全に。好感度カンスト状態。命令には絶対服従。彼女が「右」と言えば右、「突撃」と言えば全力突撃。自我がほとんど残ってない』
ぞくり、と鳥肌が立った。
あの聖女のやり口だ。パンを秒間60個投げつけて好感度をオーバーフローさせるという、あの悪魔的な手法。それを騎士団長に対しても使ったに違いない。何を投げつけたのかは知らないが――想像したくもない。
「500名の王国最強エリート騎士団……。しかも全員、あの聖女による装備強化マシマシで来るでしょうね。移動速度アップ(ヘイスト)、防御力強化、攻撃力上昇のフルバフ3点盛り。1人で10人分の戦力。500人なら5000人分。……冗談じゃないわ」
『到着予想時間は?』
シャルルが実務的な質問を投げる。
『計算してみたけど……ヤバいよ、これ』
ロキの声に、明確な焦りが混じった。
『この舗装道路の上を爆走されたら……半日だね。道が良すぎるのが裏目に出た。まさかの自作インフラが敵の高速道路になってる。おまけにマリエルちゃん、騎士たちの装備重量を例のバグ技で半分にしてるみたいだ。荷物の当たり判定を消して、重量だけゼロにしてる。装甲はそのまま。つまり、フルアーマーなのに全速力で走れる状態。チートもいいとこだよ』
私は頭を抱えた。
両手で側頭部を押さえ、指先でこめかみをぐりぐりと押す。前世の修羅場で覚えた、脳への酸素供給を促進する応急処置だ。
皮肉だ。前回の周回で私が命懸けで舗装した道路が、今度は敵軍の進撃路として利用されるなんて。
自分で作ったインフラに殺されるとは。
まるで、前世のプロジェクトで、自分が構築したAPIが競合他社に無断利用された時のあの絶望感だ。あの時は顧客から「セキュリティホールでしょ」と詰められ、3徹で認証システムを実装し直した。
今回は3徹どころか、半日しかない。
『契約法的観点から申し上げますと、近衛騎士団の領地への武力侵攻は、王家と公爵家の不戦条約第7条に明確に違反しています。法的措置を――』
「クラウス、法律は剣で斬れないわ。500人の重装騎兵に訴状を突きつけて止まると思う?」
『……沈痛の極みです。しかしながら、判例として記録は残しておきます。いつか法の裁きが――』
「その『いつか』が来る前に、私たちが物理的に消されてたら意味ないでしょ」
私は舌打ちした。
前回はマリエル単騎だったから、物理的な壁(土魔法)で弾こうとした。
だが、今回は「数」と「質」を兼ね備えた正規軍だ。
壁を作ったところで、物理特化の騎士たちにミスリルの大剣で破壊されるか、あるいはマリエルのグリッチで「壁抜け(クリッピング)」されるのがオチだ。
物量に対して静的な防衛では、時間稼ぎにしかならない。前世の知識で言えば、ファイアウォールだけでDDoS攻撃を防ごうとするようなものだ。不可能ではないが、相手のリクエスト数がこちらの処理能力を超えれば、いずれ飽和する。
「防衛ラインを突破されたら終わりよ。物理的な障壁じゃ、奴らは止まらない」
『じゃあどうすんの? 白旗掲げて降参する? それともまた馬車で逃げる? 今回はドリル外さなくても空気抵抗関係ないと思うけど、どこに逃げたって追いつかれるよ。あいつら人間やめてるから、寝ないで走れる』
「まさか。逃げも隠れもしないわ」
私は椅子から立ち上がった。
膝が少し震えていた。それを悟られないように、テーブルの端に指先を添えて体を支える。
弱さを見せるのは、リーダーとしてのバグだ。チームの士気に直結する。
執務室の隅に、重厚な鉄の扉がある。
歴代のノクターン公爵家当主が「決して開くな」と言い残してきた、地下書庫への入り口だ。
その扉の前に立つと、古い鉄の冷たさが掌に伝わってくる。長年の湿気で表面はざらつき、錆の匂いが鼻をくすぐる。
錠前には分厚い埃が積もっていた。数十年、いや数百年、誰も開けていない証拠だ。
蜘蛛の巣が錠前と扉枠の間に何重にも張られ、小さな蜘蛛が私の接近に驚いてサッと隅に逃げた。
「あの聖女は『物理』で殴ってくる。物理で受けたら、前回と同じ結末よ。処理落ちして世界ごと吹き飛ぶ。力と力のぶつけ合いは、力が強い方が勝つ。当たり前のことよ。……でもね」
私は振り返り、不安そうな顔をしているアイリーンを真っ直ぐに見つめた。
「ゲームの世界では、力押しだけが攻略法じゃない。属性相性って知ってる? 火には水、水には雷、物理には――魔法。ジャンケンと同じよ」
「では、どうなさるのですか?」
アイリーンが眉間に皺を寄せて問う。その声には、主人への信頼と、状況への不安が複雑に入り混じっている。
私は錠前に手をかけ、バキリと力任せに引きちぎった。
古びた金属がひしゃげ、悲鳴のような音を立てて砕ける。
錆びた鉄の欠片が宙に舞い、松明の光を受けてキラキラと輝いた。
「『やられる前にやる』のよ。物理が無駄なら、圧倒的な『魔法火力』で、接触する前に蒸発させるしかない」
「しかしお嬢様、現代の魔術体系では、広範囲を殲滅するほどの火力は……」
「現代魔法じゃ無理ね。処理効率が悪すぎる。1発撃つのにMPの半分を持っていかれるような重い関数じゃ、500のオブジェクトは捌けない。ループで回すにしても、イテレーション1回あたりのコストが重すぎて、全弾撃ち終わる前にこっちのリソースが枯渇する」
扉がギギギ……と重い音を立てて開く。
蝶番が数百年ぶりに動いたことへの抗議の声だ。
その奥から、埃と黴と、何か得体の知れない魔力の残滓の混ざった、鼻腔を突く異臭が押し寄せてきた。
松明の光が奥まで届かない。闇が、この扉の先に凝縮されたように濃い。
地下から吹き上がってくる冷たい空気が、私のサラサラの金髪(今日はドリル装着前なので直毛状態だ)をふわりと揺らした。
「だから『古代』を掘り起こすのよ」
私は暗い階段に足を踏み入れた。
一段降りるごとに、現代の合理性から遠ざかっていく感覚がある。
そこには、歴代の当主たちが収集し、あまりにも危険で不安定すぎて封印してきた「古代魔導書」の数々が眠っている。
毒を以て毒を制す。
バグ聖女に対抗するには、封印されし禁断のコード(スパゲッティ)を解き放つしかないのだ。
「アイリーン、松明を5本とお茶のセットを持ってきて。それと――胃薬も」
「……胃薬でございますか?」
「ええ。これから見るものは、胃に来るから」
## 2. 古代魔法という名のスパゲッティコード
地下書庫は、この世界の暗部を凝縮したような空間だった。
天井は低く、身長160センチの私でも無意識に首をすくめてしまうほどだ。壁は湿った石造りで、指で触れると冷たい水滴がぬるりと伝う。隙間からしみ出した地下水の細い筋が、床の石畳に苔の通路を作っている。
松明の代わりに、瓶詰めにされた魔力結晶が淡い青白い光を放ち、棚に並ぶ膨大な羊皮紙の束を照らしている。その光は安定しているようでいて、時折チラチラと不規則に揺れる。まるで結晶の中の魔力そのものが不安定であるかのように。
その数、ざっと200冊以上。全て手書きの「古代魔導書」――すなわち、千年以上前の魔導士たちが命と引き替えに記した「プログラムコード集」だ。
棚は木製で、長年の湿気と魔力の浸食でところどころが朽ちかけている。一番端の棚に至っては、支柱が微妙に傾いでおり、上に載った書物の重さでミシミシと不穏な音を立てていた。
『うわ、空気が重い……。魔力残留指数、レッドゾーンですね。ここに長時間いるのは身体に障りますよ。具体的には、2時間以上の滞在で魔力酔い、5時間以上で軽度の魔力中毒。推奨滞在時間は90分以内です』
シャルルが警告を発する。
「わかってるわ。でも、選んでいる暇はない。半日しかないのよ。90分で済む作業量じゃないことは、この棚を見れば一目瞭然でしょう?」
私は棚の端から順番に背表紙を確認していった。
革の表紙に焼き印された古代ルーン文字を、ジェムの翻訳支援を受けながら次々と読み解く。
「初級火球の術式(著者不明)」「水流制御の十三法則」「大地の盾・改訂版」……。
どれもこれも、現代の魔法教科書にも載っている初歩的なものばかりだ。
威力はあるが、それだけ。処理効率が悪く、制御精度も低い。500の重装騎兵を止めるには、スペックが圧倒的に不足している。
まるで、最新のサイバー攻撃に対してWindows XPのファイアウォールで立ち向かうようなものだ。
『お嬢、この辺の書物は全部「教科書レベル」だよ。応用力がない。原理は正しいんだけど、最適化がされてないから、出力に対するコスト比が悪すぎる。これで500人倒そうとしたら、お嬢のMP(魔力)が先に枯渇しちゃうね』
ジェムが申し訳なさそうに報告する。
「わかってる。だから『教科書に載ってないもの』を探してるのよ」
そして、棚の最奥。
他の書物から明らかに隔離された場所――書棚の裏側に、まるで隠すようにして押し込められたスペースに、厳重な封印の魔法陣で固められた一冊の分厚い魔導書があった。
革の表紙は焦げており、ページの端は不自然に溶けている。表紙を留めていたであろう金具は、何かの高温で歪み、元の形状をとどめていない。
そこから漏れ出す魔力の質が、他の書物とは根本的に異なる。低く唸るような圧力。腹の底に響く不快な振動。近づくだけで、肌の表面がざわざわと粟立つ。
「これね。……『アルカイック・アニヒレーション――古代殲滅魔法陣の完全記録』」
封印の魔法陣に触れると、指先にビリビリとした電流のような刺激が走った。封印した当時の魔導士が込めた「触るな」という意思が、千年の時を超えて直接的に伝わってくる。
だが、封印のセキュリティは古い。鍵の構造が単純すぎて、現代の魔力制御技術なら数秒で解除できる。
前世の言葉で言えば、「パスワードが『password123』だった」ようなものだ。
私は封印を慎重に解除し、重い表紙を開いた。
ページをめくる指先から、乾いた羊皮紙の独特の感触が伝わる。古いインクの匂い。鉄と血と、何か甘ったるい薬品の混ざったような複雑な香り。
そして。
「……汚い」
第一声がそれだった。
他に言いようがなかった。
いや、正確に言えば他にも言いたいことは山ほどあったが、最初に口をついて出たのは、元SEとしての本能的な拒絶反応だった。
羊皮紙いっぱいに描かれているのは、巨大な魔法陣――古代の「殲滅魔法」の術式だ。
1枚の紙に収まりきらず、折りたたまれたページが延々と続いている。広げてみると、畳3枚分はあろうかという巨大な図面だ。
だが、その構造は、SEの神経を逆撫でする代物だった。
いや、逆撫でどころではない。目が潰れるかと思った。
前世で最も過酷だったプロジェクトの、引き継ぎなしのレガシーコード。あの時の絶望を100とするなら、これは200だ。
『うわぁぁぁぁぁ、これ酷いね! 酷すぎるよ!』
ジェムが悲鳴に近い声を上げる。普段のテンションの高さとは質の異なる、純粋な恐怖と嫌悪の叫びだ。
『インデント(字下げ)が一切ないよ! 処理の階層構造が全部フラットで、どこが親プロセスでどこが子プロセスなのか全然わかんない! しかも――着火プロセスだけで30行! 温度維持ロジックに至っては50行もベタ書きされてる! 関数化もモジュール化もされてない、全部が一枚岩のまま!! オブジェクト指向どころか構造化プログラミングすら存在しない時代の産物だよこれ!!』
「変数は?」
『全部グローバル変数だよ……。スコープの概念が存在しない。つまり、この殲滅魔法を発動させた瞬間、他の全ての魔法と変数名が干渉する。同時に別の魔法を使おうものなら、即座にメモリが汚染されてバグる。……これが「古代魔法は危険」と言われてた理由か。危険なんじゃなくて、「コードがクソ」なだけだったんだ……』
私は無言で数ページをめくった。
目に入るもの全てが、地獄だった。
コメントアウトされていない謎の古代ルーン文字(おそらく開発者の個人的なメモだが、本人しか読めない殴り書き。しかも途中で筆跡が変わっている。複数人が書き加えたのか? バージョン管理の概念がない恐ろしさよ)。
ハードコーディングされた魔力定数(「7.38592」という数値が何を意味するのか、一切の説明がない。マジックナンバーの見本市だ。7.38592。7.38592。同じ数値が少なくとも8箇所に散在している。しかも3箇所は小数点以下が微妙に違う。「7.38591」と「7.38593」と「7.38592」。一体どれが正しいのか)。
同じ処理が3箇所にコピー&ペーストされ、それぞれ微妙に値が違う重複コード(コピペミスなのか意図的な差異なのか判別不能。そしてその3箇所が互いに干渉して予測不能な挙動を生む可能性がある)。
途中で突然始まるGOTO文(強制ジャンプ)による処理の飛び先不明な迷路(ジャンプ先のラベルが「★」マークだけ。しかも★が4つあり、どの★に飛ぶのかは実行時にしかわからない)。
典型的な「動けばいいや」で書き散らかされた、悪夢のようなスパゲッティコードだ。
『お嬢様……これを書いた古代の魔導士は、おそらく個人で開発していたのでしょう。コードレビュー(第三者による品質検査)の文化がなかった時代の産物です。保守性ゼロ、可読性マイナス。触った瞬間にバグる類の代物です。正直、触りたくありません。触れたくもありません。できれば目を逸らしたい』
クラウスが法務的ではなく技術的に正確な死刑宣告を下す。
「やっぱりね。古代魔法が廃れた本当の理由は『威力が強すぎるから』じゃなくて、『バグりやすくて使い物にならないから』だわ。ドキュメントもテストコードもない、レガシーの中のレガシー。使おうとした術者が暴発事故で死んで、後任が「これは危険な禁術だ」って封印して、封印された理由が「危険だから」に書き換わって……本当は「クソコードだから」なのに、伝言ゲームの末に「禁断の力」みたいな格好いい伝説になっちゃったのよ。実態は、ただの技術的負債」
前世の記憶がフラッシュバックした。
あれは入社3年目の秋だったか。先輩が退職し、引き継ぎなしで押し付けられた「10年物のレガシーシステム」。
COBOLとJavaが混在し、設計書は紛失、テスト環境は崩壊、本番環境のサーバーは物理的に熱を持って悲鳴を上げていた。
プロジェクトマネージャーに呼ばれ、会議室で一言。「直せ」。
ソースコードを開いた瞬間、目の前が暗くなった。横に300列のスプレッドシートのように横に広がる関数。変数名が「a1」「a2」「a3」……「a99」まで続く狂気。コメントには前任者の「あとで直す TODO」が47個。もちろん1つも直されていない。
あの時と、今、目の前に広がる古代魔法陣のカオスが、完全に重なっていた。
だが。
あの時の私は泣きながらも、結局そのレガシーシステムを3ヶ月かけてフルリファクタリングし、安定稼働させたのだ。
過労で血を吐きながら。
上司には「よくわからないけど動いてるね」と言われただけだったが、私だけが知っている。あのスパゲッティがどれほどの努力で美しいコードに生まれ変わったかを。
人生で二度目は、やらないとは言っていない。
――いや、二度目だからこそ、できる。
「リファクタリング(構造改善)よ。この腐りきったスパゲッティを、全部書き直して、最適化するわ」
『マスター、本気ですか? 古代魔法のリファクタリングなど、魔導史上前例がありません。そもそも、この術式の意味を正確に解読するだけで数ヶ月はかかると思われますが』
「前例がないなら、作ればいいだけよ。……レガシーコードを前にして尻込みするSEは三流。読めないなら読む。直せないなら壊して書き直す。それがリファクタリングの鉄則でしょ。それに、数ヶ月なんて悠長な話はしていられない。半日で終わらせるのよ」
『半日……!? マスター、それは人間の処理能力を超えて――』
「前世で3ヶ月かかったのは、一人だったからよ。今は4人いるでしょう? あんたたちが」
AIたちが一瞬、沈黙した。
『……了解しました。マスターの作業効率を最大化するよう、全システムリソースを割り当てます。ロキは変数の追跡と参照関係の可視化、ジェムは魔力回路の物理特性の解析、クラウスは古代ルーン文字の翻訳。私は全体の進捗管理とマスターのバイタルモニタリングを担当します。……では、デスマーチ、開始します』
シャルルの声には、諦めと覚悟と、そしてほんの少しの高揚が混じっていた。
私は白紙の羊皮紙を10枚重ねて机に広げ、羽ペンをインク壺に浸した。
インクが羽先に染み込む一瞬を惜しむように、脳内ではすでに解析のアルゴリズムが回り始めている。
まずは「解読」だ。
この古代の魔法陣が「何をしているのか」を、一行一行、一画一画、丁寧に追いかけていく。
「着火プロセス……これは要するに `initialize_fire()` 関数ね。温度の初期値を設定して、酸素の供給量を計算して……あら、ここに未使用の変数が3つもある。デッドコードね、削除。……いや待って、この変数、別の場所から参照されてる? ロキ、確認して」
『ちょっと待って……あー、されてない。完全にデッドだね。削除OK』
「よし、削除」
カリカリカリッ!
ペンの音が地下室の石壁に反響する。インクが羊皮紙に走るたびに、古代の呪いが一つずつ解きほぐされていく。
「温度維持ロジック……50行あるけど、よく見たら同じ計算を5回繰り返してるだけだわ。ループ(繰り返し処理)で10行に圧縮できる。……いえ、パラメータを変数化すれば8行ね。いや、ラムダ式を使えば6行まで行ける。……いえ、美しさを優先するなら8行がベストバランスだわ。可読性と効率のトレードオフは、常に可読性寄りで判断する。保守できないコードは、どんなに効率が良くても結局負債になるから」
『お嬢、あとここ! この「7.38592」って定数、何の値かわかった! 古代の度量衡で「1メートルあたりの大気中マナ密度」だよ! 今の単位系に換算すると……えっと、`MANA_DENSITY_PER_UNIT = 0.0739` だね! あと、あの3箇所の微妙に違う値、原因わかったよ! 全部筆写ミスだ! 小数点以下4桁目を書き間違えてるだけ! 正解は全部 7.38592!!』
「ナイス、ジェム! マジックナンバー(意味不明な生の数値)を名前付き定数に置き換えるわ。もう二度と意味がわからなくなることはない。それと、★ジャンプの飛び先もラベル名つけ直す。`GOTO ★` じゃなくて、`CALL combustion_phase_2()` よ。人間が読める名前にしないと、コードは凶器になるの」
『クラウスから追加報告です。この術式の末尾に記された古代ルーン文字を解読しました。内容は……「我、この術を完成させたが、二度と使いたくない。次にこれを読む者に忠告する。この術式に触れるな。触れれば死ぬ。私は3回死にかけた。追伸:変数名の意味は忘れた」……以上です』
「……典型的な『ドキュメントを書く気力が残ってなかった』パターンね。気持ちはわかるわ。デスマーチ明けの設計書なんて、いつもこんなものよ」
作業は深夜まで続いた。
無駄な装飾(意味のないルーン文字の飾り)を削ぎ落とし、処理をモジュール化(部品化)する。
着火プロセスは独立した関数に。温度制御は専用のクラスに。魔力供給はインターフェースを定義して、差し替え可能にする。
エラーハンドリング(例外処理)も忘れない。「魔力が足りない時」「対象が想定外の素材だった時」「術者が気絶した時」――あらゆる異常系を想定し、安全に処理を停止するセーフティネットを組み込む。
「これで暴走(暴発)しない。古代の連中は例外処理を一切書いてなかったから、予想外の入力が来た瞬間にメモリがぶっ壊れて術者ごと吹き飛んでたのよ。『禁術で爆発して死んだ伝説の魔導士』の正体は、ただのtry-catch漏れ。……悲しい話だわ」
時折、アイリーンが階段の上から差し入れを持ってきてくれた。サンドイッチ、スープ、紅茶、そして胃薬。
彼女は地下室の入り口から私の背中をじっと見つめた後、何も言わずに踵を返す。主人の「本気モード」を邪魔しない距離感を、彼女は完璧に心得ていた。
そして、魔法陣がシンプルで美しい幾何学模様へと洗練されていく。
元の魔法陣の10分の1の面積。だが、魔力のフローは元よりも遥かに効率的だ。
ぐちゃぐちゃだった回路が、一本一本の線として意味を持ち、全体として一つの有機的な構造を形作っている。
それは魔術というよりも、基板の回路図に近かった。
「……美しい」
私はペンを置き、完成した魔法陣をうっとりと眺めた。
地下室の青白い光の中で、新しい魔法陣は静かに、しかし力強く輝いている。
無駄な分岐が一つもなく、魔力のフローが最短経路で循環している。
入力から出力まで、一本の糸のように論理が通っている。
各モジュールの接合部は、美しい対称形を描いて噛み合っている。
まるで芸術作品だ。いや、芸術作品「そのもの」だ。
前世で、72時間の徹夜明けに、誰もいない深夜3時のオフィスで書き上げた、コンパイルエラーゼロ・テスト全件パスの完璧なモジュールを見た時と同じ高揚感。
誰にも理解されない孤独な達成感。同僚に見せても「ふーん」で終わる。上司に報告しても「数字で言って」と返される。でも、自分だけが知っている、この整然としたコードの美しさは――何物にも代えがたい。
エンジニアの孤独な至福。
「この洗練されたロジック(カタルシス)……これなら動くわ。絶対に」
『お嬢様、クラウスから一点。この魔法陣、古代の知的財産権的には改変・頒布自由のOSSでしょうか、それともプロプライエタリ(非公開)でしょうか?』
「千年前のコードにライセンスがあるわけないでしょ」
『……残念です。美しい判例を作りたかったのですが。なお、念のため「原著者の権利を尊重しつつ改変した」旨のコメントをソースに記載しておくことを推奨します。レガシーコードであっても、先人への敬意は失うべきではありません』
「……クラウス、たまにいいこと言うわね」
## 3. 追尾する随伴機
「さあ、いよいよ実装(インスタンス化)よ。……ジェム、コンパイル(魔力充填)開始!」
『了解! ソースコードの最終チェック……変数名よし、スコープよし、メモリアロケーション計算よし……依存関係解決よし、循環参照なし、デッドロック可能性なし……エラーチェック、オールグリーン(ALL GREEN)! コンパイル完了、バイナリ生成成功!! やったあ!!!』
ジェムの声が裏返っている。喜びのあまり、ホログラムの中で文字列がぐるぐると回転していた。
私が描いた新しい魔法陣に、慎重に魔力を流し込んだ。
指先から流れる魔力が、紙の上のインクの線に触れた瞬間、チリッという微かな音がした。乾いたインクが魔力を吸い込み、線が淡い光を帯びる。
青白い光が、洗練された幾何学模様の線を這うように走る。
古代の雑然とした魔法陣とは違い、光の流れに淀みがない。一切の無駄なく、設計通りの経路を辿っている。枝分かれした光が各モジュールを順番に起動し、処理が完了した順に次の工程へバトンを渡す。並列処理と直列処理が完璧に制御された、美しいパイプラインだ。
だが、そこから飛び出したのは、火の玉でも、雷の槍でも、氷の嵐でもなかった。
ブゥゥゥゥン……。
魔法陣の中心から、微細な光の粒子が噴水のように吹き上がった。
粒子は空中で旋回しながら徐々に凝縮し、直径30センチほどの「光の球体」を形成した。
半透明の、しかし確かな質量を感じさせる不思議な物体。表面には、プリズムのような虹色の光の紋様がゆっくりと回転している。内部では、魔力回路のロジックが星座のように点と線で瞬いている。
それは私の右肩の斜め上、ちょうど腕を伸ばせば届く距離に浮遊し――私が一歩右に動くと、わずかに遅れて、滑らかにスライドしてついてきた。
私が左に動けば、シームレスに左へ。
私が振り向けば、弧を描いて背後から正面へ。
まるで見えない糸で繋がれたように、正確に追従する。
その動きには、機械的な硬さがない。どこか生き物のような、有機的な滑らかさがある。
「……成功ね」
声が震えていた。感動のせいだ。
目の前で浮遊する光の球体の動き。
それは、かつて私が前世のゲームセンターで、百円玉を握り締めて見つめ続けた、あの名作シューティングゲームの――「随伴機」そのものだった。
どんな猛攻の中でも自機に寄り添い、ともに弾を撃ち、ともに敵を倒す、忠実なる戦友。
前世で何千回もコンティニューした、あのゲームの魂が、今ここにある。
涙が出そうだった。いや、少し出た。さっと袖で拭う。
「自律機動型魔導ビット。コードネーム『オプション(Type-A)』。……制式名称は『O.P.T.I.O.N.――Offensive Pursuit Tracking, Interception and Offensive Node(攻撃追尾・追跡迎撃・攻勢ノード)』」
『名前が長い! 絶対こだわりで考えたでしょ! 頭文字無理やり合わせてない? 「Offensive」が2回入ってるんだけど!?』
ロキがツッコむ。バレている。
「うるさいわね。ロマンよロマン。名付けにこだわらないクリエイターなんて、関数名を全部 `func1` `func2` にするようなものでしょう」
『それはたしかにゴミだね……』
「騎士団は『数』で攻めてくる。500のオブジェクトが一斉に突進してくるなんて、処理だけで大変だわ。私一人の手で迎撃するには、手数が圧倒的に足りない」
私は右手の人差し指を鳴らした。
パチンッ!
指先から微細な魔力信号が飛び、オプションの内部回路がそれを受信する。プリセットされた攻撃モジュールが起動し、内部で魔力が瞬間的に収束し――。
シュシュシュシュッ!!
球体の前面から、小さな魔力弾が連射された。
弾速は目で追えるギリギリの速度。軌道は完璧な直線。空気を裂く小さな風切り音が、パパパパッと連なって地下室に反響する。
地下室の壁に設置した木製の的4体を、わずか0.8秒で全弾命中・撃破。
的の残骸が木っ端微塵に飛び散り、石壁に焦げ跡を残す。木の破片が宙を舞い、焦げた匂いが鼻腔に広がった。
「精度良好、連射性能も問題なし。命中率は100パーセント。……手動照準じゃない。AIベースの自動照準システムが正常に機能してるわ。射撃のリード計算もパーフェクト。だから自動化するの。この『オプション』を最大4つ同時展開すれば、私の手を一切使わなくても、4方向からの自動迎撃が可能になる。実質的な攻撃力は5倍。しかもエイムは機械的精度だから、人間よりも正確。疲労も焦りも手ブレもない」
『お嬢、すごいよ! すごいすごい!! 魔力回路を並列処理させて、それぞれが独立した射撃AIで動くなんて、今の魔導学にはない発想だ! というか、これ魔法じゃないよ! 魔導工学だよ! 新しい学問が今日、この地下室で生まれた瞬間だよ!! 論文書きたい!! 学会発表したい!!』
ジェムが興奮のあまり、ホログラムの中で文字通り回転している。テキストウィンドウの文字列がぐるぐると螺旋を描き、読めない。
彼の熱量は嬉しい。だが、私はまだ満足していなかった。
「いえ、まだダメね」
私は試射した壁の焦げ跡を指でなぞった。
指先に灰色の煤がつく。その下の石壁は、わずかに温かい程度だ。
焦げは浅い。表面を焼いただけで、石壁を貫通するには至っていない。
「この弾速と貫通力だと、雑魚(モブ騎士)の露出した関節部分は狙えるけど、ミスリル合金のフルプレートアーマーは抜けない。散らすことはできても、倒しきれない。嫌がらせにはなっても、撃退にはならない」
『つまり、DPS(秒間ダメージ量)は足りてるけど、一発の瞬間火力が不足してると? RPGで言うと、ナイフで1ダメージを100回当ててるだけで、大剣の一撃が出せてない状態だね』
「そういうこと、ロキ。これだけじゃグレン団長を止めるには威力不足よ。あいつの鎧は一般の騎士の3倍の厚さがあるし、おまけにマリエルの強化バフが乗ってる。ナイフじゃ傷一つつかないわ」
私は脳裏に浮かぶ「次の兵器」の構想に思いを馳せた。
オプションはあくまで補助火力。
弱い弾を大量にばら撒いて面制圧するための「弾幕装置」としては最適だが、それだけでは500の騎士団の突進を止められない。蜂の大群に石を投げるようなものだ。
本命は、戦局を一撃で変える「ロマン砲」だ。
あのゲームにも、あったではないか。
オプションを全て前方に集結させ、限界まで魔力を溜め込み、一気に解放する――。
あの画面が真っ白に染まる瞬間の、背筋が震えるような快感。
あの絶望的なボス戦を打開する、最後の切り札。
「次は『溜め撃ち(チャージショット)』の実装よ」
私の宣言に、AIたちが色めき立つ。
「波動砲。一撃必殺のロマンの極致。……あの名作ゲームの魂を、この異世界で再現してやるわ」
『波動砲!? マジか!? あのロマン兵器中のロマン兵器を!? うおおおおぉぉぉぉ!!!!』
ジェムが完全に壊れた。
アイリーンが地下室の入口から、トレイに載せた紅茶とポテトチップスを差し入れてくれた。
彼女は階段を降り、浮遊するオプションを一瞥した。
光の球体が、まるで彼女を観察するかのようにゆっくりと回転する。
アイリーンは瞬き一つせず、完璧な無表情のまま呟いた。
「お嬢様、その光る球体は貴族の嗜みの新しい形態でしょうか」
「芸術よ、アイリーン。芸術」
「左様でございますか。……以前のドリルも『芸術』、この光る球も『芸術』。お嬢様の芸術の幅は、なかなかに広うございますね」
「褒めてるの? 呆れてるの?」
「……お夜食は2時間後にお持ちします」
彼女は一礼して去った。本当に優秀な侍女だ。何一つ問いただそうとしない。主人の奇行を「貴族の嗜み」フォルダに格納する処理速度は、私のオプションより高速かもしれない。
「さあ、徹夜確定よ、あんたたち! 波動砲の設計を今夜中に完成させるわ!」
『『『イエスマム!!』』』
開発ラボ(地下書庫改め)の灯りは、朝まで消えることはなかった。
魔力結晶の青白い光の中で、羽ペンが走り続け、ホログラムが明滅し続け、時折ジェムの歓声とロキのツッコミとシャルルのため息とクラウスの法律論がカオスに交錯する。
レトロゲーマーのこだわりと、元社畜SEの執念と、古代のスパゲッティコードが悪魔合体を果たした、恐ろしくも輝かしい夜だった。




