第27話「ひとつずつ、組み立てる」
「悠真くん、まずわたしから見てくれる?」
翌朝、最初に骨子を持ってきたのはセレスだった。
彼女のダッシュボードに、新しい天候制御の設計図が浮かんでいた。今までの天候制御は、季節を「劣化していくもの」として扱い、年ごとに少しずつ寒暖の幅が広がる仕様だった。新しい設計では、その劣化前提が外れていた。
「季節は、いまの土地ごとの自然な振る舞いをそのまま受け取る形にしたの。北は寒いまま、南は温暖なまま、中央は穏やか。劣化は、もう、必要ないのね」
「ある程度の揺らぎは残すんだな」
「ええ。完全に同じ天気が続くのは、住人にとって退屈だから。揺らぎは『楽しみ』として残すの」
俺はうなずいた。設計の本質を理解している。
前の世界で、最初は「同じ動きを再現する」ことに必死だった新しいシステムが、ある時点から「あえてばらつきを許容する」設計に変わる瞬間があった。完全な均一は、利用者の側から見れば、むしろ違和感になる。世界も、たぶん、同じだ。
「ねえ、悠真くん。ひとつだけ、お願いがあるの」
「なんだ」
「気まぐれな雨を、年に何度か、許してくれる? 計画にない、ほんの少しの雨。それは、わたしの趣味なの」
「設計の中に書いておけ。許容範囲だ」
「ふふっ」
「セレス」
「なあに?」
「これを書いたとき、楽しかったか?」
セレスが少し考えてから、にっこり笑った。
「ええ、すごく」
彼女の背景の空に、虹がかかった。
* * *
「悠真様! 経済の式、できました!」
昼前にやってきたカルクは、メガネの周りに数式の雲を漂わせていた。
「終了判定への入力を担っていた部分を切り離して、住人の暮らしの数値を計算する関数に置き換えました。新指標『住人の健全性』は、収入の分布、商業流通の活発さ、住人どうしの取引の頻度、この三つの加重平均で計算します」
「指標の選び方は」
「住人が『この世界で暮らしていける』と感じられているかを、外から測れるよう選びました。完全には測れません。でも、近づけます」
俺は式を眺めた。
完璧な式ではなかった。でも、誠実な式だった。「住人の健全性」という測れないものを、測れる三つの数値で囲い込もうとしている。直接観測できないものに、観測可能な代理指標を置いて近似する——前の世界では、こうした指標をSLIと呼んでいた。なんでもかんでも厳密に測ろうとせず、「これくらい捕まえられれば十分」という割り切りが、実は一番難しい。
「カルク、これ、何度も書き直したな」
「えっ、わかりますか?」
「式の端に、消した跡がある」
「えーと、はい……最初は17個の指標を組み合わせていたんですが、それだと計算負荷が大きすぎて、最終的に三つに絞りました。本当はもっと精密にしたかったんですけど……」
「三つで足りる。指標が多すぎる方が、たいてい何も測れない」
カルクの目が、メガネ越しに輝いた。
「合います、絶対に!」
今回ばかりは、彼に「合わないんです」と言われる心配はなさそうだった。
* * *
「ふん、ようやく見せられる形になったわ」
夕方、ダンジが渋い顔で骨子を持ってきた。
彼の設計図は、ダンジョンの全体構造を、根本から組み直したものだった。今までは「最深部の境界点」が世界の終了判定にぶら下がっていて、境界点を経由するたびに判定処理が走る構造だった。新しい設計では、境界点は判定から完全に切り離され、純粋な「地上と管理層の接続点」として機能する。
しかも、境界点の数が増えていた。
「あんた、境界点を増やしたな」
「ふん。一つしかないと、管理層の人間が地上に降りるのに毎回ダンジョンを通らねばならんかった。不便じゃろう。新しい設計では、各地に境界点を配置する。神殿、ギルド、王城——重要な拠点に直接降りられる」
「悠真の都合だな」
「ふん」
ダンジはそっぽを向いた。
たぶん照れている。
「ダンジ」
「なんじゃ」
「あんたの設計、美しい」
「……どこがじゃ」
「境界点を増やしても、全体の対称性が崩れていない。重要拠点の配置に意図がある。便利さのための増設に見せて、内部の通り道が整理されてる」
ダンジが俺をにらんだ。それから、深く息を吐いた。
「……まあ、悪くないとは思っとる」
いつもの「ワシのダンジョンは完璧じゃ」が出なかった。たぶん、本当にいい設計だからだ。職人は、本当にいいものを作ったときほど、控えめになる。
* * *
「えーと……記録の方ですが」
夜、ノードが声を抑えてやってきた。
「並行運用中の二重記録について、設計してみました。新世界と現世界の両方の出来事を、同時に取り続けて、両者の差分を毎時集計します。差分が一定以上になったら、すぐに警告を上げます」
「それは、新世界の試験稼働中、ふたつの世界がずれていないかを監視するためか」
「はい。住人がふたつの世界で別の振る舞いをし始めたら、それは新世界の設計のどこかに問題がある証拠です。早く気づきたいので」
「いい着眼点だ」
ノードがほっとした顔をした。差分の連続監視——前の世界では、新旧システムの整合を保つために、本番系と並行に新系統を流して結果を突き合わせる手法があった。シャドートラフィックと呼んでいた。ノードのやろうとしていることは、本質的にそれだった。教えたわけでもないのに、彼女は自力でその発想にたどり着いていた。
「えーと……それと、二重記録のリソースが、けっこう重くて……でも、これは、削れません」
「削らなくていい。連続性は世界の根本だ。お前の判断は正しい」
ノードが小さくうなずいた。それから、何かを思い出したように顔を上げた。
「悠真さん」
「なんだ」
「えーと……前に、ダンジさんが、設計図完成のときに、すごく嬉しそうだった、って、わたし、お話ししたこと、ありましたよね」
「ああ、たしかに」
「今日のダンジさんも、ちょっとだけ、その日と似た顔をしていらっしゃいました」
俺はホワイトボードに目を戻した。
たぶん、いつかノードがダンジ本人に、その記憶を伝える日が来るだろう。今夜じゃない。たぶん、世界が無事に作り直されたあとだ。
「そうか」
「……はい」
* * *
四つの骨子が出揃った。
俺は、それぞれの設計図を並べて見た。
セレスの天候、カルクの経済、ダンジの地形、ノードの記録。四つは独立しているように見えて、深いところで噛み合っていた。セレスの天候は農作物の育成に影響し、カルクの経済は流通を支え、ダンジの地形は冒険者の活動範囲を決め、ノードの記録は全部の歴史を残す。
別々に作ったはずなのに、組み合わせると一枚絵になる。
俺はホワイトボードの隅に、リソースの見積もりを書き加えた。セレス60%。カルク骨格30%減、ブレあり。ダンジ移行中2倍。ノード並行運用中ずっと2倍。合算すると、昨日見積もった180前後と、ほぼ一致した。
ぎりぎりは、ぎりぎりのままだ。
でも、四人それぞれが、自分の領域で削れるところはちゃんと削ってきていた。誠実な見積もりだ。誠実な見積もりに、無理を足すのは俺の仕事だ。
いいチームだ、と思った。
俺がこの世界に来た日、管理層には俺とノードしかいなかった。ノードは半壊して、データの70%が抜けていた。そこから、ひとりずつ協力者が増えて——気がついたら、世界を作り直す会議に、四人の設計者がいた。
「ノード」
「はい」
「明日、地上の準備を始める」
「えーと……地上、というと」
「ガルドだ。冒険者ギルドの長。住人側の動きは、彼の手を借りないとどうにもならない」
「ガルドさん、説明、難しそうですね」
「難しいよ。世界を作り直す、と言って素直に納得する地上の人間は、たぶんいない」
俺は新世界の設計図を、全体表示で開いた。
まだ骨組みだが、見えてきた。
次の復活まで、あと4日。
明日、地上の協力者に会いに行く。
お読みいただきありがとうございます。
【今回のIT用語】
領域ごとの詳細設計:大規模な再設計を進めるとき、領域ごとに専門家に詳細設計を任せ、全体は調整役が見るのが基本です。「全部をひとりで設計する」は、規模が大きくなると必ず破綻します。本作の悠真もそれを学んでおり、サブプロセスたちに領域を任せて、自分は全体の整合性を見る役に回りました。
権限委譲:細部まで指示せず、相手に任せて結果を尊重する運用手法です。任せる側にとっては不安が伴いますが、専門家の力を引き出すには欠かせません。悠真がダンジの設計を「美しい」と評価したのは、相手の専門性を尊重した結果でした。
次話「地上の協力者」もよろしくお願いします。
感想・ブックマークいただけると励みになります。




