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

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

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

エラーが発生しました。

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

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


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

PR
20/36

第20話「神の設計図」

「えーと……ドキュメントはあったはずなんですけど……」


 ノードの声が、深層の闇の中で揺れていた。


「あったはず、というのは」


「えーと……記憶にはあるんです。エルディアス様が、最後に何かをまとめていらした、って。でも、どこにあるかは……すみません、思い出せません」


「思い出せ、とは言わない。場所のあたりはつくか」


「たぶん、深層のいちばん奥です。普通のコードと違う場所に置いてあった気がします。コードと一緒にすると、誤って参照されたり書き換えられたりするから、って」


 俺はうなずいた。前の世界でも、設計思想を書いた文書はコードと分けて管理するのが常識だった。コードはどう動くかを書く。文書はなぜそう作ったかを書く。両者の役割は違う。


「探そう」


「はい」


 深層の闇の中で、俺たちは設計書を探し始めた。


          * * *


 半時間ほど、深層をたどった。


 コードの森を抜けると、コードのない区画があった。空白の領域。普段の運用ではアクセスされない場所。そこに、一つだけ文書が浮かんでいた。


『この世界の設計について』


 タイトルだけ書かれた、表紙のような表示。俺は手を伸ばし、開いた。


 目次が浮かび上がった。


『1. この世界の目的』

『2. 主要な構成要素』

『3. 存続判定について』

『4. 終了処理について』

『5. 後任者への申し送り』


 ただ、後ろの二つ——『4』と『5』のタイトルは、前の三つに比べて、ほんの少し薄かった。文字の輪郭がぼやけていて、まだ表示の解像度が上がりきっていないような、こちらに完全には届いていないような、そんな薄さだった。前の世界でも、後任者の状態や対応の段階に応じて、参照できる情報の範囲が段階的に開示されていく仕組みはよく見た。読む準備のできていない人間に、いきなり全部を渡さない——設計者の慎重さなのか、優しさなのか、たぶん両方なんだろう。


 俺はしばらく、目次を見つめた。


 ここに、すべてが書いてある。世界がどう作られたか、何のために作られたか、なぜ終わるように設計されたか——その答えが、この文書に書かれている。


 開いていいのか、という躊躇が一瞬だけ走った。


 でも、開かなければ何も解決しない。


 俺は『1. この世界の目的』を開いた。


          * * *


『この世界は、有限の実験として設計された』


 第一行に、そう書かれていた。


『私は、命というものが何かを知りたかった。完全な環境で生まれた命と、欠陥のある環境で生まれた命と、どちらが豊かに生きるのかを試したかった。だから、わざと欠陥を残した世界を作った。劣化していくように、有限であるように、設計した』


 俺はそこで一度、文章を閉じた。


 息が浅くなっていた。


 欠陥は、わざと残されている。


 数千年かけて世界が劣化してきたのは——障害が増え、魔法の成功率が下がり、ダンジョンが暴走するようになったのは——バグの蓄積ではなかった。最初からそういう設計だった。


「えーと……悠真さん、大丈夫ですか」


「……大丈夫だ」


 大丈夫じゃなかったけど、続きを読むしかなかった。『2. 主要な構成要素』は後でいい——いま知りたいのは、魔王の正体だ。俺は『3. 存続判定について』を開いた。


          * * *


『有限の実験には、終わりの時期を決める必要がある。しかし私は、その時期を一方的に決めることができなかった。住人たちは予想以上に面白く、予想以上に強かったからだ』


 俺は読みながら、エルディアスのコメントを思い出していた。

 

 `// 彼らは予想以上に面白い`


 深層で何度も見たコメントだ。あれは、住人を観察していた彼の率直な感想だったらしい。


『そこで、終了の時期を住人自身に決めさせることにした。世界の終わりは、住人がもうこの世界を支えられなくなった時——それを判定する装置として、定期的に「強い敵」を出現させる。住人が倒せる限り、世界はまだ生きていると判定する。倒せなくなったとき、世界は終了処理に入る』


 俺は、読んでいた手を止めた。


「……これか」


「……はい」


「魔王だ」


「はい」


 強い敵——魔王。住人が倒せる限り、世界は存続。倒せなくなれば、世界は終了。


 前の世界に、似た構造があった。サービスが正常に動いているかを定期的に確認するための、生存確認テスト。一定間隔でテスト用の要求を送り、応答があれば「動いている」と判定する。応答がなければ「死んでいる」と判定して、再起動するか、停止するかを決める。


 前の世界では、それを存続判定テストと呼んでいた。


 魔王は、世界に対する存続判定テストだ。エルディアスが定期的に走らせる、世界の生存確認。勇者が倒せる=応答あり=世界は生きている。倒せない=応答なし=世界は終了する。


 応答あり、なし。それだけの判定だ。


 でも、その判定を実行するために、何度も人が死んでいる。


          * * *


『一方的に世界を終わらせることに、私は罪悪感を抱いていた。だから、終了の判定には「住人が抵抗できる形」を与えることにした』


 文章は続いていた。


『魔王が出現したとき、住人は戦うことができる。勇者を立て、武器を取り、組織を作り、抵抗することができる。それは無駄な抵抗ではない。彼らの抵抗が、世界の存続を実際に決定する。判定の主導権は、私ではなく彼らにある』


「……抵抗の機会」


 俺はつぶやいた。深層で見たコメントが、頭の中で重なった。


 `// 終了判定。住人が抵抗できる形にした。せめてもの`


 あのコメントは、これのことだったのか。


 エルディアスは、世界を終わらせる装置を組み込んだことに耐えられなかった。だから、住人が戦って勝てる形にした。住人の手で「もうしばらく続けます」と意志表示できる仕掛けを残した。


 優しさだ。


 でも——同時に、残酷だ。


 住人は知らない。自分たちが戦っている敵が、世界の存続判定テストだとは知らない。倒したら何が続くのか、倒せなかったら何が起きるのか、何も知らないまま、命を懸けている。


 アリアも知らない。


 今、北部のどこかで、彼女は剣を握って魔王軍と戦っている。彼女の戦いの一つひとつが、世界の存続を判定するための応答信号として送られている。彼女は、自分の戦いの意味を、知らされていない。


「ノード」


「はい」


「アリアは……勇者は、テストデータなのか?」


 深層が、しんと静まり返った。


 ノードは答えなかった。たぶん、答えを持っていないんだ。


「住人は、テスト用の入力なのか? それとも、本物の命なのか? エルディアスは、どっちのつもりで作った?」


 ノードは長い間、言葉を探していた。その目が一瞬、金色に揺れた。それから、小さく言った。


「えーと……エルディアス様は、最後まで、決められなかったんだと思います」


「……決められなかった?」


「はい。テストデータとして扱うなら、もっと割り切った設計にしたはずです。抵抗の機会なんて与えずに、決まった時刻に終わらせるだけでよかった。でも、そうしなかった。住人を本物の命として扱おうとしました。それなら、有限の実験なんて始めなければよかった。でも、それも始めてしまった」


「どっちつかずか」


「……はい。たぶん、エルディアス様も、答えを出せないまま、去ったんだと思います」


 俺は文書を閉じた。


 設計者は、答えを出せなかった。答えを出せないまま、装置だけ残して去った。装置は今も動き続け、住人は今も知らないまま戦っている。


 そして、後任者の俺が、ここに立っている。


          * * *


 南部平原。


 ミラは麦畑の前にしゃがんで、土に指を埋めていた。


 今日の土は、少しだけ冷たかった。いつもより乾いていた。でも、麦は育っていた。穂は重く、色も濃い。今年も収穫はできる。村のみんなはそう言っていた。


 ミラは空を見上げた。


「……元気かなあ」


 誰のことを言っているのか、ミラ自身もよくわかっていなかった。ただ、空のずっと向こうにいる「だれか」のことを、ふと思った。世界がちゃんと息していると感じる瞬間がときどきある。あれは、誰かが何かをしてくれているからだと、ミラはなんとなく信じていた。


 風が吹いた。麦の穂が、ざあっと波打った。


 ミラは笑った。


 今日も、世界は動いていた。


          * * *


 俺は文書の前に立っていた。


 ミラのことを、俺は知らない。アリアの顔は遠くから何度か見た。リーゼルとは神託で繋がった。でも、地上には何億という住人がいる。俺はそのほとんどを知らない。


 でも、知らない命を、知らないまま終わらせる権利は、俺にはない。


 エルディアスが答えを出せなかったのは、わかる。たぶん、彼にも答えはなかった。完全な答えが出るまで動けないなら、何も決められない。


 でも、俺は前に進むと決めた。


 答えが出なくても、住人をテストデータとして扱うことだけは、しない。


「ノード」


「はい」


「俺はこの設計を変える」


「……はい」


「終わるように作られた世界を、続くように作り直す。魔王に担わせている判定の役割をやめさせる。住人は、勝手にテストの対象にされていることをやめさせる」


「えーと……それは、世界の根本を作り直すということで……」


「そうだ」


 ノードは少し黙ってから、いつもの調子で言った。


「えーと……難しそうですね」


「ああ。難しい」


「あっ、フリーズしてました」


「いや、今のはフリーズじゃなくて、考えてただろ」


「あ、はい。考えてました」


 深層の闇の中で、俺は文書を閉じた。


 設計書の前半は読み終えた。世界が何のために作られたか、なぜ終わるように作られたか、どうやって判定されているか——必要なところはわかった。『4. 終了処理について』と『5. 後任者への申し送り』は、依然として、文字が薄いままだった。たぶん、いまの俺の段階では、まだ開かない。どこかで条件を満たしたとき——おそらく、「設計を変える準備ができた」とシステムが判定したとき——に、解像度が上がって、読める状態に切り替わるんだろう。あれを読むのは、その時でいい。


 わかっただけでは何も変わらない。


 次にやることは、設計を変えることだ。


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


【今回のIT用語】

Liveness Probe(生存確認テスト):KubernetesなどのシステムでよくWebサービスが正常に動作しているかを定期的に確認するための仕組みです。一定間隔でテスト用の要求を送り、応答があれば「動いている」、応答がなければ「動いていない」と判定して、再起動や停止の判断に使います。本作では、魔王の出現がこの「存続判定テスト」として設計されており、勇者が倒せる=世界は応答あり=存続、倒せない=応答なし=終了、という判定機構になっています。一見シンプルな仕組みですが、判定対象が「人の戦い」であるところに物語の重さがあります。


デザインドキュメント:システムの設計意図・思想を残した文書のことです。コードは「どう動くか」を表現しますが、デザインドキュメントは「なぜそう作ったか」を残します。後任者がコードを引き継いだとき、これがあるかないかで運用のしやすさが大きく変わります。エルディアスがコードと分けて文書を残していたのは、現実のSREや設計者にとっても理想的な引き継ぎ方です——内容の重さは別にして。


次話「敵を観測する」もよろしくお願いします。

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

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

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

↑ページトップへ