S12-P01 固有スキル【ChatGPT】で異世界全自動化 〜魔法陣はCodexで組み、国はAIが建て、気づけば俺の仕事がなくなりました〜

第21話: デプロイ前にテストしろ

第2アーク · 6,110文字 · revised

窓の外で、枯葉が一枚、風に(さら)われて闇に消えた。

三日間、レンはほとんど眠らなかった。

研究小屋の机の上に、魔法陣の設計図が何十枚も広がっている。書いては消し、消しては書き直す。インクのシミが指先にこびりついて取れない。明け方の空気が窓の隙間から忍び込み、吐く息がわずかに白くなっていた。

季節が変わり始めている。つい先月まで残っていた夏の名残が嘘のように、朝晩の冷え込みが日に日に厳しくなっていた。

だが、レンの頭にあるのは気温ではなく——版管理だ。

前世では当たり前だった仕組みが、この世界には存在しない。魔法陣は一度刻んだら上書きするか、壊して最初からやり直すか——その二択しかなかった。

だが、それではまた同じ事故が起きる。

グレンの工房に通い詰めた。

「師匠。ここを見てください」

レンが設計図を広げると、グレンは分厚い指で線をなぞった。工房の窓から差し込む秋の陽光が、老師の白い髭を柔らかく照らしている。

「ふむ。魔法陣を『層』に分けるということか」

「はい。基盤層——これは動かさない。制御層——ここを変更する。変更する前に、今の制御層を写し取って保存する。問題が起きたら、保存した版に差し替える」

「下書きを残す、と言っておったやつか」

「そうです。ただ、下書きを残すだけじゃない。いつ、何を、なぜ変えたかも一緒に記録します」

グレンは白い眉を上げた。

「なぜ変えたか、まで記録するのか」

「はい。三日前の自分が何を考えていたか、三日後の自分は覚えていません。記録しなければ、同じ間違いを繰り返す」

「……人間の記憶は頼りにならんと言いたいのか」

「記憶は頼りにならないです。でも記録は残る」

グレンは髭を撫でた。長い沈黙の後、静かに頷いた。

「道理じゃな。わしも——若い頃に刻んだ魔法陣を、どういう意図で作ったのか思い出せんことがある。あの時、記録を残しておけば——」

老師の目が、一瞬だけ遠くなった。窓の外で、落ち葉が工房の軒先を(かす)めて舞い落ちていく。

「わかった。お前のやり方を見せてみろ、小僧」

***

メイラが設計に加わったのは、二日目の朝だった。

レンの研究小屋を訪ねてきたメイラは、机の上に散乱する設計図を見て目を輝かせた。丸眼鏡の奥の淡いグリーンの瞳に、火が灯ったような光が宿る。

「レンさん、版管理の仕組み……わたしにも設計させてください」

「助かる。正直、理論面で行き詰まってた」

メイラは眼鏡を押し上げ、設計図を一枚一枚読んでいった。時折、指先で宙に魔法陣の断片を描きながら——まるで楽譜を読むように、構造を頭の中で組み立てているのがわかる。

そして——半日後、メイラは自分の設計図を持ってきた。

レンは目を見張った。

「これは……すごいな」

メイラの設計は、レンのそれとは次元が違った。

レンの設計は「変更前の状態を保存する」だけだった。いわば、写真を撮って箱にしまうような仕組みだ。だがメイラの設計は、魔法陣の変更を「差分」として記録し、差分を組み合わせることで任意の時点の状態を再現できるようにしていた。

しかも、差分同士の衝突を検出する仕組みまで組み込まれている。

「ここ——差分が矛盾した時に、どちらを優先するか術者に確認を求める設計になっています。イヴの事故は、矛盾する命令が同時に存在したことが原因でしたから」

メイラの声が、説明が進むにつれて早くなっていた。眼鏡のつるを何度も押し上げながら、設計図の細部を指差す。その目は、もう照れも恥じらいも忘れて、純粋に輝いていた。

——これが、天才の設計だ。

前世でも何人かの「本物」に出会ったことがある。チームの誰もが二週間かかると見積もった問題を、半日で根本から解き直してしまう人間。レンが積み上げた経験の延長線上にある解法ではなく、まったく別の角度から問題を再定義してしまう——そういう知性。

メイラは、その種の人間だった。

「メイラ。お前、天才だな」

メイラの頬が一瞬で赤くなった。

「て、天才なんかじゃ……既存の魔法理論を応用しただけです。差分記録の概念は、古代の魔法陣修復術に類似例がありまして——」

「いや、天才だ。俺にはこの設計は出てこなかった。俺の発想は『写真を撮って箱にしまう』だった。お前のは『変化そのものを記録する』だ。根本が違う」

「…………」

メイラは俯いて、眼鏡の下の目を隠した。嬉しいのか恥ずかしいのかわからない——いや、両方だ。間違いなく両方だ。

「わ、わたし……レンさんのお役に立てるなら……」

「十分に役立ってる。これで版管理の理論は完成だ。あとは実装——実際に魔法陣に組み込む」

メイラは大きく頷いた。

その横顔を、レンは何の気なしに見ていた。

メイラの髪に秋の朝日が透けて、淡い金色に光っている。真剣に設計図を見つめる横顔は、研究者のそれだ。前世の自分のスタートアップにも、こういう人間が欲しかった。共同研究者として、これ以上の相手はいない。

それ以上の意味は——レンの辞書にはなかった。

***

テスト環境の構築は、さらに厄介だった。

本番環境——つまり、実際にゴーレムが動いている街の魔法陣に手を加える前に、小さな範囲で試す場所が必要だ。

レンは街の外れに、五メートル四方の「実験区画」を作った。

石壁、木柱、簡易な屋根。本番の街とほぼ同じ素材で構成した小さな建造物。秋風が実験区画の周りを吹き抜け、作業台に載せた設計図の端がばたばたと音を立てる。

「よし。まずはこの実験区画で、新しい版の制御魔法陣を動かす」

イヴの制御魔法陣をコピーし、実験区画用に縮小版を作った。メイラの差分管理システムも組み込んである。

「テスト開始」

実験区画のゴーレム——イヴのミニチュア版が起動した。

ゆっくりと動き出す。壁の前に立ち、右腕を伸ばし——

壁をそっと叩いた。

そして、停止した。

「……成功?」

「成功のようです。構造を分析して、最適化の必要なしと判断し、停止しました」

メイラがノートに記録する。

レンは安堵した。テスト環境では動く。問題ない。

「よし、本番に適用する」

イヴに新しい制御魔法陣を書き込んだ。差分管理システムも有効。版の記録もつけた。

イヴが起動する。

街の建設現場に向かって歩き出す。

壁の前に立ち、右腕を伸ばし——

ゴゴン。

壁に亀裂が入った。

「は?」

レンは慌ててイヴを停止させた。今度は停止命令が通った——差分管理の成果だ。しかし、壁には確かにひび割れが走っている。

「テストでは動いたのに……!」

「レンさん、原因がわかりました」

メイラが素早く魔法陣を分析する。

「実験区画の壁と、本番の壁の魔法陣が違います。本番の壁にはグレン師が昔刻んだ補強魔法陣が入っていて——それがイヴの制御魔法陣と干渉しています」

「テスト環境には、グレンの補強魔法陣がなかったからか」

「はい。テストと本番で環境が違う——」

レンは天を仰いだ。

前世でも何度も聞いたフレーズだ。「テスト環境では動いたのに、本番で動かない」。エンジニアが最も恐れる言葉。テスト環境を完璧に本番と同じにすることは、ほぼ不可能だ。なぜなら本番環境には、長い歴史の中で蓄積された想定外の要素が無数に存在するから。

グレンの四十年分の補強魔法陣もその一つだ。前世で言えば、何年も前の先輩エンジニアが残したレガシーコードのようなもの。ドキュメントはない。なぜそうなっているのか本人しか知らないし、その本人ですら忘れている。

「……テストと本番で環境が違う。これを完全に解決する方法は——」

「ない、んですよね」

メイラが苦笑した。彼女も理解していた。

そこに、カイルが通りかかった。鍛錬帰りだ。汗だくのまま——いや、この季節に汗だくということは、相当追い込んだのだろう。そのままひび割れた壁を見て首を傾げる。

「お。また壊したのか」

「壊してない。ひびが入っただけだ」

「壊れかけてんだろ。で、今度の原因は?」

「テストでは動いたんだが、本番だと環境が違って——つまり、実験場所と実際の街で条件が異なるから——」

「長い。三文字で」

「……動かなかった」

「つまり、やってみないとわからないってことだろ?」

レンは口を開き——閉じた。

前世の自分なら、この言葉を鼻で笑っていただろう。「やってみないとわからない」なんて、計画性のない人間の言い訳だと。テスト設計を精緻にすれば予測できるはずだと。リスクを定量化して、事前に潰すのがエンジニアの仕事だと。

だが——実際には、やってみないとわからなかった。

前世のスタートアップでも。ここでも。

テストでは動いた。本番では動かない。予測不能な要素は必ず存在する。それを受け入れた上で、壊れた時のダメージを最小化する——版管理とは、つまりそういう仕組みだ。

「やってみないとわからない」を前提として設計すること。

カイルは、それを一言で言い当てた。

「……まあ、そうだ」

「最初からそう言えよ」

カイルはひび割れた壁を指で弾いた。こつん、と乾いた音。

「でもよ、前よりマシだろ。前は壁が半分なくなった。今はひびだけだ」

「……それは確かに」

「なら、正しい方向に進んでる。壊し方が小さくなってるってことだ」

レンは少し笑った。

カイルの論理は乱暴だが、核心を突いている。壊しながら学ぶ。壊す規模を小さくしながら、少しずつ精度を上げていく。

前世の言葉で言えば——move fast and break things。

速く動いて、壊して、直す。

ただし、壊したものは必ず直す。その責任から逃げない。

「カイル。ありがとう」

「え? 俺なんかしたか?」

「いや。いいんだ」

***

その後、三日かけて本番環境を精査した。

グレンの補強魔法陣をすべて記録し、メイラの差分管理システムに登録した。街のあらゆる壁、柱、床に刻まれた古い魔法陣を一つ一つ調査し、イヴの制御魔法陣との干渉がないか確認した。

グレンが手伝った。

「この壁のは、わしが三十年前に刻んだ陣じゃ。確か——北風対策の温熱保持だったかのう」

「記録がないんですか?」

「……ない」

「だから版管理が必要なんです、師匠」

グレンはバツが悪そうに髭を撫でた。

エルナが差し入れのパンを持ってきた。

「はい。あんたたち、ご飯食べてないでしょ」

「あ、ありがとうございます、エルナさん」

メイラが受け取る。エルナはメイラを一瞬だけ見て——視線を逸らした。その視線の動きは速かったが、レンは気づいていた。ただ、何を意味しているのかまではわからない。

「あんたも」

レンにもパンを押しつける。布に包まれたその温もりが、冷えた指先に染み込む。

「……ありがとう。助かる」

「別に。余り物だから」

エルナはそれだけ言って、足早に去っていった。

レンはパンを一口かじった。

外はかりっと、中はふわっと。いつもの味だ。これを食べると、なぜか集中力が戻る。三日間ほとんど眠らなかった疲労が、一口ごとに薄くなっていくような感覚がある。

不思議だった。パンの成分が特別なわけではない。栄養価も普通だ。でも——エルナのパンを食べると、少しだけ頭がクリアになる。

前世でもコーヒーには拘っていた。味ではなくカフェインの効率で選んでいた。だがこのパンの効果は、成分では説明できない。カロリーや炭水化物の量は、ゴーレムが焼いたパンと同じはずだ。

なのに——違う。

その「違い」の正体が、レンにはわからなかった。データで測れないものが、確かにここにある。そのことだけは、認めざるを得なかった。

レンは首を振って、作業に戻った。

***

一週間後。

イヴが、再び起動した。

レンは建設現場で腕を組み、ゴーレムの動きを見守っている。傍らにはメイラがノートを構え、カイルが腕組みで仁王立ちし、グレンが椅子に座って茶を飲んでいた。

空が高い。秋晴れの青が、夏の濃さとは違う澄んだ色をしている。街路に植えた若木の葉が色づき始めていた。

「テスト環境で三十回試行。すべて正常。本番環境の古い魔法陣との干渉チェック済み。差分管理システム稼働中。版番号は二十三」

「二十三回も書き直したのかい」

カイルが呆れた声を出す。

「二十二回失敗したってことだ」

「それ、すごいのか?」

「すごくない。普通だ」

イヴが建設途中の壁に近づいた。

右腕を伸ばす。

壁の表面をそっと触れた。構造を分析している。

三秒の沈黙。

イヴが腕を引いた。

『構造分析完了。最適化対象——なし。現状を維持します』

レンの肩から力が抜けた。

「……動いた」

「動きましたね」

メイラが微笑む。

「壊さなかったな」

カイルが親指を立てた。

「ふん。当然じゃ」

グレンが茶を(すす)った。

イヴは建設途中の壁に新しい石を積み始めた。一つ一つ、丁寧に。積むたびに、制御魔法陣が構造を分析し、問題がなければ次へ進む。問題があれば——一つ前の状態に戻して、やり直す。

版管理が、機能していた。

窓の外——工房の向こうに広がる景色を、レンはちらりと見た。街路の木々が赤と黄に色づき、落ち葉が石畳の上を転がっている。空は高く、秋の雲が薄く流れていた。

ステータスウィンドウを確認する。

ゴーレム2号「イヴ」
   状態: 通常稼働
   制御魔法陣: v23(差分管理有効)
   直近動作: 建設作業——正常
   警告: なし

「警告: なし」の四文字が、こんなに嬉しいものだとは思わなかった。

「ただ——」

レンは腕を組み直した。

「これで完璧ってわけじゃない。新しい魔法陣を書くたびに、新しいバグが生まれる可能性がある。版管理はバグを防ぐ仕組みじゃない。バグが起きた時に戻せる仕組みだ」

「つまり、まだ壊れることはあるのか?」

カイルが訊いた。

「ある。ただ、壊れた時のダメージを最小限にできる。そして原因を特定して、同じバグを二度と起こさないようにする。その繰り返しだ」

「……終わりがないってことか」

「終わりはない」

カイルは腕を組んで、空を見上げた。

「大変だな、お前の仕事」

「まあな。でも——壊しながら進むしかない。壊し方が小さくなっていれば、前に進んでいる」

「お前がそう言うなら、信じるよ」

カイルが笑った。

レンも少しだけ笑った。

***

夕暮れ。

建設現場を離れ、レンが工房に戻ろうとした時——

「小僧」

グレンが、椅子から立ち上がっていた。

いつもの穏やかな表情ではなかった。灰色の目に、深い光が宿っている。白い髭の奥の口元が、一文字に結ばれていた。

夕日が老師の横顔を照らしている。秋の日はすでに短くなり、この時刻でも空の半分が茜色に染まっていた。

「少し話がある」

レンは足を止めた。

「……何ですか、師匠」

「ここではなく——工房に来い」

グレンの声は静かだった。だが、有無を言わせない重さがあった。

レンは夕日に照らされた老師の背中を見つめた。その背中は、いつもより小さく見えた——いや、違う。いつもより真っ直ぐだった。何か、覚悟を決めた人間の背中。

「わかりました」

壊れた壁を修繕中の工房。そこで何を聞かされるのか、レンにはわからなかった。

ただ——グレンの目の奥にあった光は、レンがこの世界で初めて見る種類のものだった。

それは、たぶん——未来への心配と、弟子への信頼が、同じ場所に同居している光だ。

レンは老師の後を追った。

落ち葉が二人の足元を音もなく滑っていく。夕日が、二人の影を長く伸ばしていた。

文字数: 6,110