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

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

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

エラーが発生しました。

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

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


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

PR
14/36

第14話「戦争という名の過負荷」

 アラートが鳴った。


 一つではない。同時に、十、二十——数え切れないほどのアラートが、ダッシュボードを赤く染めた。


「ノード!」


「えーと——えーと——」 ノードの声が上ずっている。「全域です! 北部、東部、南部——大陸全土から同時にリクエストが急増しています!」


 ダッシュボードを広域表示に切り替えた。大陸の地図が表示される。赤い点が一斉に灯っていた。北部山岳地帯、東の荒野、南部平原——あちこちで、スキル発動のリクエストが爆発的に増えている。


「原因は」


「戦闘です。大規模な戦闘が、各地で同時に始まっています」


 魔王軍だ。


          * * *


 北の平原に、軍勢が展開していた。


 先頭に立つのは銀灰色の髪の男だった。細身で長身。黒い軍服風の装束にマントはない。右手に細い杖——攻撃のためではなく、陣形制御のための指揮棒だ。右目は赤く、左目は前髪で隠されている。


 ゼーレ。魔王軍第一将。


「グラム、先陣を」


 背後に控える赤い肌の巨漢が斧を振り上げた。三メートル近い体躯。目が小さく、表情の変化に乏しい。


「壊ス」


 それだけ言って、グラムが突進した。その背後から、黒いローブに覆われた骸骨のような姿——スカルが、不気味な笑い声とともに骨の魔法を放った。目の奥で赤い炎が揺れている。


「ケケケ……燃エロ、燃エロ」


 ゼーレは二人を見ながら、何も言わなかった。グラムもスカルも、復活するたびに同じことを言う。同じ行動をとる。記憶が拭われているからだ。前回もその前も、まったく同じ台詞を吐いて、まったく同じように突撃した。


 ゼーレだけが覚えている。前回の戦いを。その前の戦いを。


「……始めろ」


 静かに杖を振った。それだけで、平原に展開した魔物の群れが一斉に動き出した。北の前線、東の荒野、南部の守備隊に向けて——大陸全土で同時に。


          * * *


 ダッシュボードの数字が、見たことのない速度で跳ね上がっていた。


 スキル発動のリクエスト数が通常の40倍を超えている。戦闘系のリクエストだけではない。回復魔法、防御スキル、ステータス更新、経験値計算——すべてが同時に処理を要求している。


「ノード、今の処理能力の上限はどこだ」


「えーと……今の負荷だと、あと30分で上限に到達します。そこを超えると、処理が追いつかなくなって——」


「リクエストが滞留して、連鎖的に遅延が広がる」


「……はい」


 世界がどこまでの処理量に耐えられるか。その限界を俺はまだ正確に把握できていなかった。ここまでの運用で少しずつ感覚はつかんでいたが、こんな規模の負荷は初めてだ。


 前の世界では、こういった限界の見積もりと対策を事前に立てておくことが重要とされていた。どれだけの処理量に耐えられるかを事前に計算して、足りなければ余裕を確保しておく。前の世界ではそれを容量計画と呼んでいた。俺はそれを怠っていた。


「まず、やれることをやる」


 俺は優先順位を整理した。


 全リクエストを同じように処理しようとすれば、30分で限界が来る。でも、リクエストには優先度がある。戦闘中の勇者や兵士のスキル発動は止められない——止めたら人が死ぬ。一方で、戦場から離れた地域の非戦闘系リクエストは、少し遅らせても影響が小さい。


「ノード、リクエストを戦闘系と非戦闘系に分けてくれ。非戦闘系は処理を後回しにする。戦闘系を最優先で通す」


「わかりました。ただ、分け方が——」


「戦闘スキル、回復魔法、防御スキル——これらが優先。ステータス表示の更新、経験値の仮計算、農作物ログ——こっちは後回し。急ぎじゃないものを一時的にせき止めて、急ぎのものだけ通す」


 水路に例えるなら、すべての水を同じ幅の溝に流そうとしているから溢れる。流れを分けて、大事な水路だけ広くする。残りは一時的に溜め池に回す。


 前の世界では、こうした流量の管理を交通制御と呼んでいた。大量の要求が押し寄せたとき、全部をさばこうとするのではなく、優先度の高いものだけを先に通して、残りを後に回す。


「設定しました」 ノードが報告した。「非戦闘系リクエストの処理速度を1/3に制限しています」


「効果は」


「上限到達まで、30分から1時間15分に延びました。でも……」


「足りないか」


「……はい。戦闘系だけでも、負荷がどんどん増えています。魔物の数が多すぎます」


          * * *


 アリアは剣を構えていた。


 北の平原。視界を覆うほどの魔物の群れが迫ってくる。背後にカイルの盾。左にフィオナの杖。右にリーゼルの祈りの鈴。


「アリア!」 カイルが叫んだ。「おい、無茶すんなって言ってんだろ! 前に出すぎだ!」


「わかってる!」


 剣を振った。三体の魔物を薙ぎ倒す。でも、倒した端から次が来る。数が多すぎる。こんな規模の侵攻は初めてだった。


 フィオナが攻撃魔法を放った。制限がかかっているとはいえ、出力の60%は出ている。でも焼石に水だ。倒しても倒しても、次が来る。


「数が多すぎますわ……!」 フィオナが声を上げた。「論理的に考えても、この戦力差は——」


「考えるな、殴れ!」 カイルが盾で魔物を弾き飛ばした。


「リーゼル!」


「大丈夫! あたし、まだ動けます!」 リーゼルが回復魔法を飛ばした。光が味方の傷を塞いでいく。「回復は——回復は止まってないから!」


 悠真が守った回復魔法の優先が、ここで効いていた。


          * * *


 負荷はまだ上がり続けていた。


 ダッシュボードの処理量グラフが右肩上がりで伸びている。交通制御で時間は稼いだが、戦闘系リクエストだけでも処理能力の80%に達しつつある。


 ——おかしい。


 俺はグラフの形を見つめた。何かが引っかかる。


 負荷の増え方が、妙にきれいだった。


 普通、戦闘による負荷は乱雑に増える。魔物が突撃し、兵士が応戦し、魔法が飛び交う——そのリクエストは不規則で、グラフはギザギザになるはずだ。でも、今のグラフは違う。段階的に、ほぼ一定の傾斜で上がっている。まるで——計算されたように。


「ノード」


「はい」


「この負荷の増え方、自然か」


「えーと……」 ノードが少し間を置いた。「言われてみると、不自然に一定です。戦闘による負荷なら、もっとランダムなはずですが……」


 俺はグラフをもう一度見た。


 段階的に負荷が上がっている。まるで「世界がこの処理量に耐えられるか」を確かめるように、少しずつ、着実に、負荷を積み増している。


 大量のリクエストを一斉に送り込んで、処理できるかどうかを確認する。壊すことが目的ではない。「どこで壊れるか」を知ることが目的だ。


 前の世界で、それを負荷テストと呼んでいた。


 本番環境に対して、計算された量のリクエストを段階的に投入し、どこで性能が劣化するか、どこで処理が破綻するかを測定する。破壊が目的ではない。限界を見極めることが目的だ。


「……これは、戦争じゃない」


 声に出していた。


「悠真さん……?」


「これは負荷テストだ。誰かが——何かが——この世界がどこまでの負荷に耐えられるかを、試している」


 魔王軍の侵攻。大陸全土で同時に起きる大規模な戦闘。その負荷は、世界を壊すためではなく、世界が壊れるかどうかを判定するために加えられている。


「魔王の目的は世界を滅ぼすことじゃない」


 俺はダッシュボードを見つめた。


「世界が壊れるかどうかを、確かめることだ」


          * * *


 北の平原。


 ゼーレは、前線から少し離れた丘の上に立っていた。杖を軽く振るだけで、魔物の陣形が変わる。右翼を押し出し、左翼を引き、中央を厚くする。チェスの駒を動かすように、正確に。


 グラムが叫びながら突撃している。スカルが笑いながら魔法を放っている。二人とも、なぜ戦っているのかを考えたことがない。命令だから戦う。それだけだ。


 ゼーレだけが考えていた。


「……勇者よ」


 前線で剣を振るう少女の姿が見えた。何度も戦った相手だ。前回も、その前も。


 ——お前は何のために戦う?


 風が吹いた。前髪が揺れて、左目が一瞬だけ露わになった。赤い右目とは違う——青い光が、一瞬だけ覗いた。


 すぐに前髪で隠した。


「……命令に従うのは簡単だ」


 小さく呟いた。


「だが、命令の意味を問うことは——許されていない」


 杖を振った。魔物の第二波が動き出す。負荷は、まだ上がる。


          * * *


 管理層で、俺はダッシュボードと向き合っていた。


 処理能力の90%に達している。残りの余裕は10%。交通制御で非戦闘系を後回しにしているが、それでも限界が近い。


「ノード」


「はい」


「もう一つ確認したい。この負荷テスト——もし世界がこの負荷に耐えられなかったら、何が起きる」


「処理が追いつかなくなって、世界全体の応答速度が落ちて、最終的には——」


「世界が止まる」


「……はい」


 魔王は、世界を壊そうとしているのではない。世界が壊れるかどうかを判定している。壊れなければ——合格。壊れれば——。


 まだ仮説だ。でも、グラフの形がそう言っている。あの段階的な負荷の上げ方は、壊す意図のある攻撃ではない。耐えられるかを確認する試験だ。


 なぜ魔王が世界を試すのか。何のために。誰の命令で。


 今はわからない。でも、一つだけ確かなことがある。


 今、この瞬間、世界の処理能力が限界に近づいている。それをどうにかするのが、俺の仕事だ。


「ノード、全域のリソース配分を見直す。セレスの天候管理とダンジの迷宮制御から、戦闘処理に回せる分を一時的に融通する。セレスとダンジに連絡を」


「了解しました。ただ、天候と迷宮の制御精度が下がりますが」


「今は戦闘が最優先だ。天気が少し荒れても、迷宮の調整が遅れても、人は死なない。でも戦闘処理が落ちたら、前線の人間が死ぬ」


「……わかりました」


 ダッシュボードの数字が動いた。融通されたリソースが戦闘処理に回り、処理能力の余裕がわずかに広がる。90%から、85%に。


 足りない。でも、今はこれで凌ぐ。


 79.3%の向こうに、ミラがいる。戦場の向こうに、アリアがいる。


 数字の向こうの人間のために、管理人は数字と向き合う。


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


【今回のIT用語】

負荷テスト:本番環境やそれに近い環境に大量のリクエストを計算的に投入し、「どこで性能が劣化するか」「どこで処理が破綻するか」を測定するテストです。Apache JMeter、k6、Locustなどのツールが有名です。壊すことが目的ではなく、限界を知ることが目的——悠真はこの特徴から、魔王軍の侵攻が単なる破壊ではなく「世界の限界を試す判定」であると気づきました。


トラフィック制御:大量のリクエストが一度に押し寄せたとき、全部をそのまま処理しようとすると全体が潰れます。優先度の高いリクエストだけを先に通し、それ以外は後回しにする——本文で悠真が「交通制御」と呼んだのがこれです。Webサービスでは「レートリミッティング」「プライオリティキュー」とも呼ばれます。


キャパシティプランニング(容量計画):システムがどれだけの処理量に耐えられるかを事前に見積もり、不足するなら余裕を確保しておく設計思想です。悠真はこの計画を立てていなかったため、魔王軍の侵攻で初めて「限界がわからない」という事態に直面しました。


次話「限界の先へ」もよろしくお願いします。

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

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

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

↑ページトップへ