表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
世界が落ちる前に ~勇者が魔王と戦っている裏で、異世界がバグらないようにひとりで回してます。なお前任の神は辞めたそうです~  作者: あべのちょふ


この作品ページにはなろうチアーズプログラム参加に伴う広告が設置されています。詳細はこちら

PR
21/36

第21話「敵を観測する」

「設計を変える」と決めた翌朝、俺はダッシュボードの前に立っていた。


 いつものメインダッシュボード——アラート、ログ、各サブシステムの稼働状況。北部の戦線では今日も小さな小競り合いが続いている。アリアたち勇者パーティは町で休息中。神託は安定。魔法の成功率は79.3%。なんとか、と言うべきか、まだ、と言うべきか。


「ノード」


「はい」


「魔王のデータって、どこにある」


「えーと……魔王、ですか」


「ヴェルノス。あの存続判定テストの実体だ。出現周期、行動パターン、リソース消費、配下の生成数——全部見たい」


 ノードがしばらく考えた。


「ありますけど、ばらばらに散らばってます。普通の脅威としてしか扱われてこなかったので、まとめて見るための画面が用意されてなくて」


「だろうな」


 前の世界でも、最初は同じだった。新しい問題を分析するときは、まずデータが「敵」として分散している。サーバーごと、サービスごと、ログごとに散らばっていて、つなげて見るための画面がない。最初にやることは決まっている。


 ばらばらの数値を一枚にまとめて、見える形にする。


 前の世界では、それを観測と呼んでいた。観測ができれば、原因は見つけられる。観測ができなければ、推測しか残らない。推測で世界を作り直すわけにはいかない。


「ノード、ヴェルノス専用のダッシュボードを作る。集めたいのは——」


 俺は指を折りながら数え始めた。


          * * *


 半日かけて、観測用の画面ができた。


 左上:ヴェルノスの復活周期グラフ。過去10回の出現間隔を点で打ち、線でつなぐ。

 左中央:出現時のリソース消費量。世界全体の処理能力のうち、どれだけが彼の生成と維持に割かれているか。

 左下:配下の魔物の生成数。一日あたりの新規生成、撤退、再生成。

 右上:ヴェルノスの行動ログ。攻撃命令、防御命令、撤退命令、それぞれの発令タイミング。

 右中央:戦闘時の魔王本体の出力。最大出力と平均出力の差分。

 右下:休止期の活動量。倒された後の「沈黙期」に、何をしているか。


「えーと……これだけ集めると、すごい量ですね」


「魔王を倒すために集めてるんじゃない。魔王を理解するために集めてる」


「理解、ですか」


「敵としてではなく、システムとして見る」


 俺は画面を切り替えた。最初に表示されたのは、復活周期のグラフだった。


 規則的に並んでいる、はずだった。


 でも、よく見ると——揺れていた。


「……周期が、ずれてるな」


 均等に並んでいるはずの点が、わずかにばらついている。早すぎる回もあれば、遅すぎる回もある。誤差と言えば誤差の範囲だが、純粋な定期実行処理であればこんな揺らぎは出ない。


 カルクのことを思い出した。あいつの計算データに、勇者の経験値の微小なズレを見つけたのは、ずいぶん前のことだ。あのときも、揺らぎは「何かが起きているサイン」だった。


「ノード、カルクを呼んでくれ」


          * * *


「悠真様! 計算が——」


「合わない、だろ」


 駆け込んできたカルクは、メガネを直しながらうなずいた。


「合わないんです! あのですね、ヴェルノスの復活周期、定期実行処理のスケジュールどおりに動いていないんです。設計上は42日に一度のはずが、最近三回は40.8日、41.3日、42.7日。誤差にしては大きすぎます」


「他のジョブはどうだ。天候、季節、ダンジョン」


「他のジョブは時刻ぴったりです。誤差はナノ秒以下。ですが、ヴェルノスの復活処理だけ、誤差が秒単位、いえ、日単位に近づいています」


 俺はうなずいた。


 定期実行処理が時刻どおりに動いていないとき、考えられる原因は二つしかない。スケジューラ側の不具合か、呼び出された側が何かをしているか。スケジューラは正常に動いている。他のジョブは正確だ。ということは——


「ヴェルノス自身が、起動を遅らせている」


「……起動を、遅らせている?」


「呼び出されてから、実際に動き出すまでの時間にばらつきがある。ナノ秒単位の遅延が、繰り返し起動されるうちに日単位まで積み重なってる」


「それは、なんで遅らせるんでしょう」


 ノードが首をかしげた。


 俺は画面を切り替えた。戦闘時の出力グラフを開く。


 最大出力——理論値を100とすると、ヴェルノスが過去10回の戦闘で実際に出した最大値は、平均で67。最低の回は42。一度も理論値の90%を超えていない。


「全力を出していない」


「それは、勇者を試すために、わざと?」


「『試す』なら、もっと安定した出力を出すはずだ。テストの基準が回ごとに揺れたら、判定が意味をなさなくなる。これは、わざとじゃない」


 俺は画面に向かって、独り言を続けた。


「定期実行のたびに、わずかに起動が遅れる。戦闘では全力を出さない。出力にばらつきがある。これは——プログラムどおりに動いていないプログラムだ」


          * * *


「それって、つまり……」


「魔王に、自我のようなものが芽生え始めてる、ということだ」


 俺は自分で言った言葉に、少し驚いた。


 前の世界で、自我のあるプログラムなんて見たことがない。プログラムは命令どおりに動く。命令を実行する速度や順番に揺らぎが出るのは、必ず外部要因がある。


 でも、ヴェルノスには外部要因が見つからない。ジョブスケジューラは正常。リソースも十分。割り当てに優先度の競合もない。それでも、彼は「指示どおりには動かない」状態に向かっている。


 起動を1秒遅らせる。出力を60%で止める。攻撃命令を出すべき場面で、わずかに躊躇する。


 これを人間で表現すると、何になる。


 迷い、だ。


「ノード」


「はい」


「ヴェルノスは、自分が何のために動いているのか、わかっていない可能性がある」


「えーと……それは、エルディアス様が設計した範囲を、超えていますね」


「ああ。設計者は『淡々と判定する装置』を意図したはずだ。でも、何千年も走り続けるうちに、装置側に何かが芽生えた。それが起動の遅延として現れ、戦闘の手加減として現れてる」


 カルクがメガネ越しに俺を見つめた。


「悠真様、つまり——魔王は、世界を終わらせたくないんでしょうか」


「断定はしない。データはそう示唆してる、というだけだ」


 俺は画面の前で、しばらく黙った。


 もしそうなら、話は変わってくる。終了プロセスを無効化する、と簡単に決めていたが、相手が「動きたくない」と思っているなら、戦って消すのではなく、「もう動かなくていい」と伝える道がある。


 前の世界でも、似た経験があった。古いサービスを停止するとき、急に殺すと残存処理が暴れる。ゆっくりと「もうリクエストを受けなくていい」と段階的に伝えていく方が、安全に止まる。


「ノード、もう一つダッシュボードを追加する」


「えーと……まだ追加するんですか」


「『ヴェルノスの躊躇度』だ。出力の理論値からの乖離、起動の遅延、命令発令の間隔。これを毎日記録する。彼が、どれだけ『動きたくない』のかを定量化する」


「えーと……魔王の気持ちを、グラフにするんですか」


「気持ちじゃない。数値だ」


 ノードはしばらく俺を見て、小さくうなずいた。


「……はい。やります」


          * * *


 夜の管理層。


 俺はひとり、ヴェルノス専用のダッシュボードを眺めていた。


 復活周期の点が、揺れながら未来へ伸びていた。次の復活予定は、十七日後。彼が出現すれば、また勇者たちと戦うことになる。アリアが剣を握り、カイルが盾を構え、フィオナが術を組み、リーゼルが祈る。


 そして、その戦いの裏側で、ヴェルノスは——たぶん、躊躇している。


 俺は、彼の中に何があるのかを、まだ知らない。設計者が意図しなかった何かが、彼の中で目覚めかけている。それを敵として消すのか、それとも、別の道があるのか。


 答えはまだ出ない。


 でも、観測は始まった。


 観測が続けば、いずれ見えてくる。それが、前の世界で俺が学んだ唯一の真理だ。


「ノード」


「はい」


「魔王を、もう少し知ろう」


「はい」


 深夜のダッシュボードに、ヴェルノスの数値が並んでいた。グラフの一つひとつが、彼の「迷い」を映していた。


お読みいただきありがとうございます。


【今回のIT用語】

オブザーバビリティ(観測可能性):システムの内部状態を、外から取得できる情報だけでどれだけ把握できるかを指します。ばらばらに散らばっているメトリクス・ログ・トレースを一枚のダッシュボードに集約して「何が起きているか」を見える状態にすることが、SREの最初の仕事です。悠真がやっているのは、まさにこのオブザーバビリティの基本——「敵を観測対象に変える」作業です。


プロセスの遅延と揺らぎ:定期実行されるはずのジョブが時刻どおりに動かないとき、原因は「スケジューラ側」か「実行プロセス側」のどちらかにあります。スケジューラが正常で、特定のジョブだけが遅れている場合、そのプロセス内部で何かが起きていることを示唆します。本作ではこの「揺らぎ」が、ヴェルノスの「迷い」として描かれています。


次話「魔法使いのノート」もよろしくお願いします。

感想・ブックマークいただけると励みになります。

評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

↑ページトップへ