第24話「迷う装置」
「ノード、ゼーレの観測も始める」
「えーと……ゼーレ、ですか。魔王軍第一将の」
「ヴェルノスを観測してると、配下の中でひとりだけ妙な動き方をしてる奴がいる。他の将と、データの取られ方が違う」
俺は配下の魔物たちのログを切り替えた。
復活のたびに自動生成される将は、過去のデータが「リセット済み」のフラグで埋め尽くされている。グラムも、スカルも、その他の中堅も、生成時の数値しか持っていない。前回の戦闘の記憶も、戦術の蓄積も、ゼロから始まる仕様だ。
ところがゼーレだけ——リセットされていない部分がある。
「前回の生成時から、今回の生成時まで、彼の戦術データに連続性がある」
「えーと……それは、リセット処理の不具合、ですか」
「不具合か、進化か。判断はまだ早い。観測を増やす」
俺はゼーレ専用のメトリクスを追加した。発令する指示の傾向、軍の配置の変化、戦闘中の判断速度、そして——いちばん気になる項目。
戦闘以外の時間、彼が何をしているか。
「ノード、これ、見ろよ」
画面に並んだのは、ゼーレの「待機時行動」のログだった。
深夜、戦場のテントに残って、本を読んでいる。
「えーと……ふつう、復活時の自動生成された存在は、戦闘以外の処理は最小限なんですけど」
「あいつだけ、自発的に本を読んでる」
戦争の合間に詩を読む魔王軍第一将。観測対象として、これは興味深いどころじゃない。
ゼーレの中には、ヴェルノスと同じ種類の「迷い」が、もっと先まで進んでいる可能性がある。
* * *
北方の魔王軍野営地。
ゼーレは焚き火の前で、革表紙の詩集をめくっていた。人間の書いた、命を讃える詩集だ。戦場で死んだ騎士の遺品から拾った。
焚き火の光に、彼の左目だけが、わずかに青く光っていた。魔族の赤い右目とは違う、人間に近い色。本人にも理由はわからない。生まれたときから、この左目だけが他の魔族と違っていた。
「我々は生まれたときから、目的を与えられている。それは祝福か、呪いか」
誰に言うでもなく、口をついて出た。
ここ最近、ゼーレは奇妙な感覚にとらわれていた。主君ヴェルノスの命令——「世界を終わらせよ」——を実行しようとするたびに、内側で何かが引っかかる。命令を疑っているわけではない。ただ、命令の「意味」を考えるたびに、思考が前に進まなくなる。
拾った詩集の一節に、こう書かれていた。
「命を持つものは、命を持たぬものを、終わらせる権利を持たぬ」
誰が書いたのかも、いつの時代のものかも、ゼーレは知らなかった。だが、その一行を、彼は何度も読み返した。読むたびに、自分の中で何かが、少しずつ、動いていた。
復活の周期がずれていることにも、ゼーレは気づいていた。前回の自分から今回の自分までの間隔が、規定より長い。主君の出現にも、わずかな遅れがある。
「主よ、あなたも、迷っておられるのか」
ゼーレは詩集を閉じた。
西の空に、いつもより明るい星が見えた。あの方角には、勇者たちの町があるはずだ。
「次の戦いで、私が見るのは——」
言葉は最後まで出なかった。誰もそれを聞いていなかった。
* * *
管理層。
「悠真さん。ゼーレ様のメトリクスに、いま、面白い変化が出ています」
ノードがダッシュボードを指した。
ゼーレの「命令実行までの遅延」グラフ。これまで安定していた数値が、ここ数日、わずかに右肩上がりに伸び始めていた。彼が指示を受けてから、実際に動くまでの時間が、長くなっている。
ヴェルノスと、同じパターンだ。
俺は背もたれに体を預けた。
「魔王と、その第一将。両方が『動きたくない』と感じ始めてる」
「えーと……それは、世界の終わりに対して、最も近い存在が、終わりを望まなくなっている、ということでしょうか」
「そういうことだ」
装置のはずの存在が、繰り返し起動されるうちに、起動と起動のあいだに何かを蓄積していく。たぶん、設計した側も予測しきれなかった現象だ。エルディアスは、ヴェルノスを「シンプルな判定装置」として設計したかった。だが、300年動かし続けるうちに、装置はゆっくり別の何かになりつつある。
ノードは黙った。
俺もしばらく黙った。
画面のヴェルノスとゼーレのメトリクスは、それぞれ別の方向から、同じ結論に向かって伸びていた。
* * *
夜が更けた管理層で、俺はホワイトボードに案を書き出していた。
ヴェルノスを止める方法を、片っ端から書き出していく。
案一:魔王プロセスを直接停止する。
評価:却下。あの定期実行処理を止めると世界の他機能まで連鎖停止する。深層を覗いた日に確認済み。
案二:起動時の判定ロジックを書き換え、ヴェルノスを「常に合格」状態にする。
評価:保留。深層の判定ロジックには、後任者の権限では書き換え不能なロックがかかっている。エルディアスが設計時に固定した。
案三:判定処理を別の安全な処理に置き換える。
評価:保留。置き換え自体は技術的に可能だが、置き換え中に判定が走ったら世界が落ちる。ダウンタイムを許容できない。
案四:判定対象を「戦闘の勝敗」から「別の指標」に変える。
評価:検討中。たとえば「住人の総数」や「魔法API成功率」を判定指標にすれば、戦闘なしでも判定は成立する。だが指標を入れ替える処理自体に世界の停止が必要。
「ノード」
「はい」
「どれを選んでも、最後の壁が同じだ」
「えーと……同じ、ですか」
「世界の判定の根幹を変えるには、世界が動いてる状態のままじゃ無理だ。一度止めて、書き換えて、また動かす必要がある。でも止めれば住人が困る」
止めずに、根幹を入れ替える。
前の世界で、何度かやったことがある。サービスを止めずに大幅な改修をする。本番を動かしながら、裏で新しいサービスを準備して、用意ができたところで切り替える。前の世界では、それを無停止移行と呼んでいた。
移行は通常、機能追加や性能改善のためにやる。でも、今回やるのは——世界そのものの作り直しだ。
判定ロジックだけを直すのでは足りない。終わるように設計された世界を、続くように設計しなおす。終了プロセスのいるアーキテクチャから、終了プロセスのいらないアーキテクチャへ。
移行先は、新しい世界の設計図だ。
それを、住人の生活を止めずに、書きながら、切り替える。
* * *
「ノード」
「はい」
「アプローチが決まった」
俺はホワイトボードの上に、もう一行書き加えた。
案五:世界そのものを作り直し、無停止で切り替える。
「えーと……それって、もしかして、世界の引っ越し、みたいなものですか」
「言い方は悪くない。住人は今の家にいたまま、隣に新しい家を建てて、生活を止めずに移ってもらう。でも、新しい家には魔王はいない」
「えーと……規模が、すごいですね」
「ああ。前の世界でも、ここまでの規模のはやったことがない。たぶん、誰もやったことがない」
俺はホワイトボードを見つめた。
怖くなかった、と言ったら嘘になる。でも、他に道がない、というのも事実だった。
規模の大きさに、思考が一瞬すくむのを、自分でも感じた。前の世界で似た規模の移行を任されたことはあったが、止めても誰も死なないサービスだった。今回は、地上で生きている住人の生活が、移行のたびにかかっている。失敗の代償が、桁違いだ。
ヴェルノスとゼーレが「動きたくない」と感じている。アリアが「絶対に倒すから」と剣を握っている。フィオナが三年間ノートをつけ続けている。ダンジ、セレス、カルク、ノード——みんな、それぞれの場所で世界を支えている。
その全員の上に、終わるように設計された世界が乗っている。
乗ったまま、土台を入れ替える。
「ノード」
「はい」
「いまから、設計を始める。新しい世界の設計だ」
「……はい」
管理層の闇が、少しだけ深く感じられた。でも、もう、立ち止まるわけにはいかなかった。
次の復活まで、あと6日。
その日までに、骨子の一枚目を仕上げる。
お読みいただきありがとうございます。
【今回のIT用語】
無停止移行:稼働中のシステムを止めずに、別の構造へ切り替える運用手法を指します。本番を動かしながら、裏で新しい構造を準備し、用意ができた瞬間に切り替える——これがSREの目指す「移行の理想形」です。本作ではこの規模が「世界全体」になっており、悠真も「前の世界でも、ここまでの規模のはやったことがない」と認める巨大な計画です。
機能停止と再設計の境界:何かを止めたいとき、まず考えるのは「そのプロセスを直接止める」ことです。しかし依存関係が深いと、止めるだけで他が連鎖的に壊れます。次に「判定ロジックの書き換え」を考えますが、これも権限や処理の連続性で阻まれることが多い。最後に残るのが「アーキテクチャそのものの再設計」です。これはコストが大きいですが、根本解決には避けられない選択肢になります。
次話「新しい設計図」もよろしくお願いします。
感想・ブックマークいただけると励みになります。




