ポムニを愛したい男 作:ポムニに脳を壊された男
映画とゲームで遊び倒した賑やかな午後から、数日が過ぎていた。
地下工作室には、作業用AIのアームが稼働する低い駆動音と、規則的な冷却ファンの回転音だけが満ちている。
エイドリアン・レン・ウォーカーは、体に馴染んだ黒いゲーミングチェアに深く腰を沈め、手元のメカニカルキーボードを一定のリズムで叩いていた。
正面に並んだ大型モニターには、いくつものウィンドウが開かれている。
そのうちの一つには、現在のデジタル・サーカスが収められている古いC&A筐体と、新しく組み上がった新サーバーとの接続状態を示す模式図が表示されていた。
【電源出力:安定】
【冷却系統:正常】
【記憶領域:異常なし】
【旧筐体との試験用通信経路を維持しています】
作業用AIから送られてくる数値を確認し、エイドリアンは別のウィンドウへ視線を移した。
「電源と冷却は問題なし。記憶領域へのアクセス速度も、旧筐体側よりかなり上がってるな。そっちはどうだ、ケイン」
モニターの隅に開かれた通信画面の中で、ケインが表示を見渡すように両目を動かした。
『こちらからも異常は見当たらない。新しい領域はまだ空っぽだけど、管理信号は正常に届いているね』
以前のような、こちらの鼓膜を試すような声量ではない。
ステッキを指先で軽く回す仕草や、どこか芝居がかった振る舞いは残っているが、口調そのものは落ち着いていた。
新サーバーの筐体は既に組み上がり、古いC&A筐体の隣で静かに稼働している。
これは、現在のサーカスとは別に新しい遊び場を増やすための機械ではない。
老朽化したC&A筐体を、いずれ完全に置き換えるための後継機だった。
旧筐体に保存されている住人たちの人格と記憶。
ケインを含む管理機能。
サーカスの環境を構成する膨大なデータ。
地下へ隔離されている抽象化した住人たちの情報。
最終的には、そのすべてを新サーバーへ移さなければならない。
今すぐ旧筐体が停止するほど切迫しているわけではない。
だが、長期間放置され、一度は電源系統そのものが故障していた機械を、この先も永遠に使い続けられるとは考えられなかった。
今日は全面移行へ進む前段階として、ケインの管理機能の一部と、人格を持たないテストアバターを使い、基本的な接続やデータ移動、障害発生時の復旧処理を確認する予定だった。
『それにしても、この前の映画とゲームは興味深かったよ』
ケインはステッキを肩へ乗せ、少し楽しそうに話し始めた。
『ズーブルは、あの一対一の格闘ゲームがかなり気に入ったみたいだね。次は別のキャラクターを試すと言って、空いた時間に技の動きを真似していたよ』
「あの負けず嫌いなら、次までにきっちり対策してくるだろうな。俺も少しくらい練習しておかないと、本当に何もさせてもらえなくなりそうだ」
エイドリアンはわずかに口元を緩め、手元のマグカップから冷めかけたコーヒーを口に含んだ。
『ガングルは、次に見る映画の候補をいくつも書き出していたね。音楽が多いものにするか、風景が綺麗なものにするか、まだ決めきれていないようだけど』
「楽しみにしてるなら何よりだ。キンガーはどうしてる? レースゲームで、誰も見つけていなかった隠し通路を平然と走ってただろ」
『今朝も、あのコースがどんな構造になっていたのか考えていたよ。もう一度走れば、別の道も見つけられるかもしれないと言っていたね』
「皆が楽しんでくれたなら、用意した甲斐はあったな」
マグカップを机へ戻し、再びキーボードへ両手を乗せる。
「雑談しながらでも検査はできるが、ひとまず接続を始めよう。新サーバー内に簡単なテスト用空間を作ってくれ。管理機能の一部だけを向こうへ繋いで、旧側と正常に情報をやり取りできるか確認する」
『分かった。真っ白なグリッド空間で構わないかな?』
「ああ。それで十分だ」
【空間生成プロトコルを開始】
【新サーバー内領域:テストエリア01】
【割り当て完了】
通知と同時に、モニターの一つへ真っ白な空間が表示された。
床と壁には、距離を測るための薄いグリッド線だけが引かれている。
ケインの管理機能の一部が接続されると、画面の片隅に小さな管理用アイコンが現れた。
『問題なく入れたよ。とはいえ、何もない空間というのは少し落ち着かないね』
「検査用なんだから我慢しろ。床だけ出してくれ」
『もう出ているけれど』
「少し傾いてないか?」
エイドリアンは画面へ表示された座標を拡大した。
グリッドそのものは水平に見えるが、端へ行くほど高さに僅かなずれが出ている。
『見た目だけだと思うけれど……いや、少し傾いてしまってる』
「修正できるか?」
『もちろん。これならどうかな?』
床が一度消え、再生成される。
エイドリアンは座標を確認し、小さく頷いた。
「今度は問題なし」
続けて、人格も記憶も持たないテスト用アバターを投入する。
画面の中央に、無地の人型モデルが一体現れた。
高度な判断機能はなく、指定した方向へ歩く、停止する、姿勢を変えるといった単純な命令だけに従う。
「まずは通常の往復からだ。旧側から新側へ移動。その後、旧側へ帰還」
エイドリアンがコマンドを送る。
旧筐体側の待機領域にいたテストアバターが消え、数秒もかからず新サーバー側へ現れた。
そのまま歩行、旋回、停止の命令を実行させる。
各関節の動作や入力遅延にも問題は見られない。
帰還コマンドを送ると、再び旧筐体側へ戻った。
『こちらから見ても移動は滑らかだったよ。管理情報にも欠損は見当たらないね』
「ログも一致してる。次は通信を途中で切る」
アバターを新サーバーへ移動させた状態で、エイドリアンはソフトウェア上の通信経路を遮断した。
新サーバー側の映像が停止する。
数秒後、保護処理が作動し、アバターが旧側の待機領域へ戻ったことを示す通知が表示された。
【通信断を検出】
【接続対象を旧筐体側の保存状態へ復帰】
【帰還処理:完了】
「自動復旧と帰還処理は正常。次は新サーバー側だけを停止させる。旧サーカスへ影響が出ないか確認してくれ」
『準備できているよ』
エイドリアンが停止コマンドを送る。
テストエリアの映像が消え、ケインの管理用アイコンも接続を失った。
それでもケイン本人との通信は途切れず、旧筐体側の状態表示にも変化はない。
『こちら側は問題ないよ。新しい領域との接続だけが閉じられたようだね』
「分離は正常。ログ保存もできてるな……メモリの解放だけ少し遅い」
エイドリアンは数行のコードを書き換え、処理を再実行した。
二度目は規定時間内に解放が完了する。
重大な異常とは無縁の、小さな不具合だった。
『エイドリアン、一つ聞いてもいいかな?』
「何だ?」
『現実の景色を映している観測画面だけど、以前より選べる視点が増えているね』
「ああ、気づいたか」
エイドリアンはゲーミングチェアの背もたれへ寄りかかり、別の画面を拡大した。
庭を反対方向から映した映像。
軒下から空と庭を広く捉えた映像。
以前から使っている正面側のカメラを含め、複数の視点が並んでいた。
「庭の反対側と、軒下に二台追加した」
『皆が色々な角度から外を見られるように、増やしたのかい?』
「それもあるが、実用上の問題があった」
エイドリアンはあくまで作業の一環として答えた。
「前の一台だけだと、時間帯によっては逆光でほとんど見えない。木の葉が茂って、空が隠れる時間も長い。それに雨が降るとレンズへ水滴がつく。軒下から見られる視点は必要だった」
『なるほど。現実側の環境に合わせて調整したわけだね』
「同じ場所しか映らないのも、そのうち飽きるだろ」
『皆にも伝えておくよ。きっと喜ぶと思う』
ケインはそれ以上追及せず、柔らかく笑った。
その時、通信画面の端へ不揃いな部品で構成された手が伸びた。
『ちょっといい?』
ズーブルが画面を覗き込むように現れる。
気怠そうな態度はいつも通りだが、その視線はモニターに表示された接続図へ向けられていた。
「やあ、ズーブル。格闘ゲームの再戦なら、まだ対策が終わってないぞ」
『ゲームの話じゃないわよ』
ズーブルは軽く鼻を鳴らし、新サーバーの模式図を指差した。
『新しいサーバーの検査をしてるんでしょ。実際に移される側としては、安全かどうか確認しておきたいの』
「もっともだ。何が気になる?」
『まず、試験で私たちが向こうへ入ったとして、危ないと思ったら自分の意思ですぐ戻ってこられるの?』
ズーブルは画面へ顔を寄せる。
『試験だからって、本人が嫌だと言っているのに勝手に接続されたりしないわよね。あんたかケインのどちらか一人だけで、私たちを強制的に移動させることもできないようになってる?』
エイドリアンはアクセス権限の表示を開き、通信画面側からも見える位置へ移動させた。
「試験については、その通りだ。一つずつ答える。帰還は、住人側の操作だけで実行できる。通常の帰還とは別に、即時切断用の操作も用意してある」
権限一覧を切り替える。
「人格を使った試験へ参加するかどうかは本人が決める。俺だけでも、ケインだけでも、同意していない住人を試験用の接続へ送ることはできない」
『試験へ参加しなくても、後で不利になったりはしない?』
「ならない。試験参加者だけが使える機能を与えるつもりもない」
エイドリアンはそこで一度、画面からズーブルへ視線を移した。
「ただし、最終的な本移行は別だ」
ズーブルの表情が僅かに変わる。
『別って?』
「この新サーバーは、旧筐体の代わりとして作っている。古い方を使い続けられる間は急がないが、いずれ限界は来る」
エイドリアンは旧筐体の診断情報を画面へ表示した。
「本移行の段階では、住人だけじゃない。ケイン、サーカスの環境、保存されている記憶、抽象化した住人を含めて、旧筐体にある全データを新サーバーへ移す必要がある」
『じゃあ、最終的には全員が向こうへ行くのね』
「ああ。古い方へ残り続けるという選択肢を、恒久的に維持することはできない」
曖昧に安心させるための言葉は使わなかった。
「だからこそ、誰かをいきなり移すつもりはない。今はテストアバターとケインの一部機能で、データが欠けずに移せるかを調べている。本移行を始める前には、手順も危険性も全員へ説明する」
『移行の途中で嫌になったら?』
「開始前なら延期できる。途中で問題が出れば、旧側の状態へ戻す。全員分の移行と確認が終わるまで、旧筐体のデータは消さない」
ズーブルはしばらく画面を見ていた。
『……その辺も、最初の説明に入れておいて』
「そうする」
『接続中に異常が起きたら、誰に通知が来るの?』
「俺とケイン、それから試験へ接続している本人へ同時に出す。検査ログもサーカス側から閲覧できるようにする」
『できるようにする、ってことは、今はまだ見られないの?』
「表示自体は出せる。ただ、今のままだと専門用語ばかりで分かりにくい。住人向けの表示を別に作る予定だ」
『なら、次からは最初からそう言って』
「悪かった」
エイドリアンはテストアバターを使い、同意情報を持たない状態で接続コマンドを実行する。
【接続要求を拒否】
【対象からの同意情報を確認できません】
続けて新サーバーへ移した後、住人側に相当する帰還操作を実行させる。
アバターは問題なく旧側へ戻った。
ズーブルは表示されたログを見つめ、腕を組む。
『……今のところ、露骨におかしいところはなさそうね』
「褒め言葉として受け取っておく」
『褒めてはいないけど』
『私も、いくつか確認していいかな?』
ズーブルの後ろから、金属製のバケツを斜めに被ったキンガーが姿を見せた。
縁の下から片目だけを覗かせ、表示されている接続図を静かに見ている。
「キンガーか。構わない。何が気になる?」
『新サーバーと古いサーカスの分離についてだね』
キンガーは旧筐体と新サーバーを繋ぐ線へ視線を向けた。
『新しい方で致命的な障害が起きた時、古い方まで停止する設計にはなっていないのかな。それから、通信だけが切れた場合、向こうへ接続していた者の状態はどうなる?』
「試験中は、処理系と電源を物理的に分離してある。新サーバー側の障害が旧側へ波及しない設計だ。さっき単独停止も試したが、旧サーカスには影響が出ていない」
エイドリアンは試験結果を画面へ表示した。
「通信が切れた場合は、旧側へ保存してある直前の状態から復帰する。ただし、現時点で確認できたのはテストアバターだけだ。人格を持つ住人で同じように動くと断言する段階ではない」
キンガーが小さくバケツを傾ける。
『ケインの管理機能そのものへ異常が出た場合は?』
「新サーバー側へ接続するのは、制限した管理プロセスだけだ。異常を検出した場合、外部端末から切り離せるようにしてある」
『本移行の後は、新サーバーが新しい本体になるんだろう? その時には、古い方へ戻れなくなるのではないかな』
エイドリアンは頷いた。
「最終的にはそうなる」
今行っている試験では、旧筐体が本体であり、新サーバーは接続先だ。
だが、全面移行が完了すれば立場は逆転する。
新サーバーが本体となり、旧筐体は非常用の保存先として一定期間維持される。
それも、永久ではない。
「本移行直後は、旧筐体を読み取り専用のバックアップとして残す。新サーバー側で全員の人格、記憶、環境、管理機能が正常に動いていることを確認してから、旧側を停止する」
『停止した後も、旧側の記録は残すのかい?』
「可能な限り残す。だが、故障した部品を永遠に通電させておくつもりはない。最終的には、安全な媒体へ全データの保全用コピーを作る必要がある」
『新しい方と古い方へ、別々の保存状態が残ってしまったら? どちらを正しいものとして扱うんだい?』
エイドリアンは答える前に、画面へ並んだ検査項目へ目を戻した。
保存状態が競合した場合の処理は設計に含めている。
だが、複数の異常が同時に起きた状況までは、まだ独立した試験として切り分けていなかった。
「接続時に片方だけを書き換え可能にして、もう片方を保護するロックは入れてある。競合を検出した場合は、どちらも自動では確定させずに停止する設計だ」
エイドリアンは新しいテスト項目を追加した。
「ただ、想定通りに止まるかは実際に試す。新旧の両方へ異なる状態を作って、競合させてみよう」
『何も起きない仕組みだけでは足りない』
キンガーは画面を見たまま、静かに続けた。
『何かが起きても、確実に戻れる仕組みが必要だ。通信の切断とサーバーの停止が同時に起きた場合や、複数の異常が重なった場合も確認してほしい』
「……確かに、その通りだな」
エイドリアンは検査項目へ、複合障害時の帰還処理と保存状態の競合試験を追加した。
「それと、全面移行を途中まで進めた状態から、旧筐体へ全体を戻す試験も必要だな」
個別のテストアバターが帰還できるだけでは足りない。
ケインの管理機能。
環境データ。
複数の人格データ。
それらが相互に関係した状態で移行を中断しても、旧筐体側の整合性を失わずに戻せなければならない。
「ケイン、少し項目が増えた。付き合ってくれるか?」
『もちろん。帰る道が不確かなままでは、皆を新しい場所へ移せないからね』
ケインも、いつもの軽い調子で済ませることなく頷いた。
真面目な確認が一段落すると、作業を続けたまま会話の空気も少し緩んだ。
『そういえば、ガングルが次は少し怖い映画も見てみたいと言っていたわよ』
ズーブルが思い出したように口を開く。
「ホラーか。ケイン、上映中にサーカス側へ怪物を追加するのはやめてくれよ」
『分かっているよ。驚くのは、画面の中だけで十分だろうからね』
ケインはステッキの先に、いくつか簡単なイメージを浮かべた。
『映画だけではなく、新しいゲームの形式も考えているんだ。キンガーが言っていた、皆で揃ってゴールするレースも作れるかもしれない』
「それ、競争する意味がなくならないか?」
『速さ以外の目的を用意すればいいんじゃないかな。全員で荷物を運ぶとか、途中で役割を交代するとか』
『普通のレースと別にするなら、まあいいんじゃない』
ズーブルが言う。
『私も、また四角いブロックを消すゲームがやりたいな。今度は決定ボタンと取り消しボタンを間違えないようにするよ』
「いつでも用意しておく」
エイドリアンは笑いながら答えた。
『新しい催しについては、皆にも聞いてみようと思うよ。私だけで決めるより、最初から希望を聞いた方が作りやすいからね』
以前なら、思いついた時点で次の催しとして作り始めていたかもしれない。
今のケインは、あくまで候補の一つとして話している。
複合障害を想定した試験が自動で進む中、エイドリアンは画面の端へ自宅の間取り図を開いた。
「検査が順調に進んでるから、少し先の話もしておきたい」
間取り図の一階と二階にある空き部屋を、それぞれ色分けして表示する。
「今は製造と検査の都合で新サーバーを地下へ置いているが、完成後は一階か二階へ移すつもりだ」
『地下のままでは駄目なのかい?』
ケインが首を傾げた。
「毎回ここまで降りてくるのが面倒なのが一つ。生活空間に近い方が、普段の通信にも使いやすい」
エイドリアンは一階の空き部屋を拡大した。
「搬入や部品交換だけ考えるなら、一階が一番楽だ。玄関やガレージから近いし、観測用カメラや外出用端末との配線も通しやすい」
次に二階の北側にある部屋を表示する。
「二階は空き部屋が広い。通信や管理専用の部屋にするなら、こっちの方が余裕がある。ただし、新サーバーの重量に床が耐えられるか確認する必要があるし、冷却設備を上まで通すのも手間がかかる」
『一階の方が現実的なんじゃない?』
ズーブルが言う。
「現時点ではな。ただ、二階には別の利点もある」
『二階の窓から見える景色も、観測画面へ追加できる?』
「カメラを置けばできる。庭とは違う方向が見えるはずだ」
『なら、私は二階に一票』
「景色だけで決めるな」
『聞いたのはそっちでしょ』
『二階へ置くなら、床が抜けないことを最初に確認してほしいね』
キンガーが真面目に付け加えた。
「もちろんだ。耐荷重、配線、冷却、騒音を確認してから決める」
新サーバーは、いずれサーカス全体が移る本体になる。
単にエイドリアンが通信しやすいだけの部屋ではなく、現実側における住人たちの生活基盤を収める場所になる。
火災。
浸水。
侵入。
停電。
温度変化。
そうした現実側の危険からも守れる場所でなければならない。
「設置場所には、非常用電源と消火設備も追加する。窓があるなら、サーバー本体へ直射日光が当たらないように区画を分ける必要もあるな」
『皆にも聞いてみた方がいいんじゃないかな』
ケインが間取り図を眺めながら言った。
『これから自分たちの世界が収められる場所になるんだ。どんな設備が必要か、どんな景色が見たいかは、彼らにも関係すると思うよ』
「置き場所まで聞く必要があるか?」
『意見を聞いたからといって、そのまま多数決で決める必要はないさ。技術的に可能な範囲を説明して、その中で希望を聞けばいい』
「……それもそうだな」
エイドリアンは間取り図を保存し、次回の通信で住人たちへ確認する項目として追加した。
同時に、複合障害を想定した検査結果が表示される。
【通信断と新サーバー停止を同時に検出】
【旧筐体側の保護状態を維持】
【保存状態の競合を検出】
【自動確定を停止】
【復旧処理:正常終了】
「よし。複合障害時の停止と復旧も問題なし」
続けて詳細ログを確認する。
重大な異常はない。
ただし、帰還時の座標が数センチずれている。
異常通知が一度だけ重複している。
サーカス側へ送られるログ表示も、専門用語が多すぎて一般の住人には読みにくい。
「細かい修正は残ったが、基本的な接続と復旧処理は通ったな」
『こちらからも、今のところ大きな問題は見当たらないよ』
「今日はここまでにしよう。住人本人を使った移行試験へ進む前に、今回の検査内容と残っている問題、それから最終的には全データを移す必要があることを全員へ説明する」
『私からも、今日確認できた内容を分かりやすく整理しておくよ』
『次は最初から私も呼んで』
ズーブルが画面から離れる前に言った。
『どうせ後で説明されるなら、その場で見てた方が早いわ』
「分かった。次の検査からは最初に連絡する」
『ならいいわ』
『成功した記録だけではなく、意図的に失敗させた試験の記録も残しておいてほしい』
キンガーも続ける。
『何が起きた時に、どう止まったのかが分かる方が、次に同じことが起きた時も安心できるからね』
「それも整理して残す」
ズーブルとキンガーは、それぞれ短く返事をして画面の端へ去っていった。
通信画面には、再びエイドリアンとケインだけが残される。
「……優秀な監査役がいて助かるよ」
エイドリアンはゲーミングチェアへ深く背中を預け、大きく伸びをした。
完全に冷めたコーヒーを一口飲み、僅かに顔をしかめる。
『彼らにとっても、自分たちの世界のことだからね。真剣になるのは当然だと思うよ』
大型モニターには、一階と二階の間取り図。
増設した観測用カメラの映像一覧。
今日実行した新サーバーの検査結果。
そして、次回までに修正する項目が並んでいた。
「次は、全員へ結果の説明と、置き場所の相談だな」
『そうだね。新しい場所へ入る方法だけではなく、全員のデータをどう移して、どう確認して、問題があればどう戻すのかも説明しておこう』
「ああ」
エイドリアンはゲーミングチェアを机へ寄せ、再びキーボードへ手を置いた。
旧筐体から新サーバーへ。
誰か一人を試しに送り込むだけではない。
サーカスという世界そのものを、そこに暮らす者たちごと移す。
そのための準備は、まだ始まったばかりだった。
冷却ファンの音が静かに続く中、エイドリアンは次回の通信で使うための検査結果を整理し始めた。