蝋燭の炎が、三度目の交換を迎えていた。
リオンは工房の作業机に向かい、通信魔法陣の負荷分散設計図を睨んでいた。昼間のロードバランシング実装は成功した。各村の通信遅延は劇的に改善され、エルナには「IT用語が漏れてます」と突っ込まれ、ドルクには「何語だそれは」と呆れられた。
だが、問題はそこじゃない。
「……ここのフェイルオーバー、手動切替になってるんだよな」
負荷分散は実装できた。しかし、中継ノードが一つ落ちた場合の経路切り替えが自動化されていない。今の設計だと、障害が起きたら誰かが現場に行って手動で切り替える必要がある。
前世のリオン、九条諒なら、こう言っただろう。
「自動フェイルオーバーのない冗長構成に意味はない」。
だから今夜中に設計を詰めておきたかった。明日の朝、エルナとドルクに説明するために。
窓の外はとっくに暗い。虫の声だけが聞こえる。
「あと少しだけ……」
その呟きが、何回目なのか。リオン自身にもわからなくなっていた。
最初に「あと少し」と思ったのは、夕食の後だった。ミーナが「今日はもう終わりにしましょう」と声をかけ、ドルクも道具を片付けて帰った。エルナは最後まで残っていたが、リオンが「先に上がって」と言うと、不満そうな顔で出ていった。
そのとき、まだ日没直後。あと少しだけ。
蝋燭を三本消費したということは、少なくとも九時間以上。深夜を通り越して未明だ。
「……前世と同じことしてる」
自覚はあった。でも手が止まらない。この設計ができるのは自分だけだ。エルナは魔力操作の天才だが経路設計はまだ教えきれていない。ドルクもミーナも専門外。
結局、自分がやるしかない。
「……SPOFだな、僕が」
呟いて、苦笑した。
Single Point of Failure。単一障害点。そこが壊れるとシステム全体が止まる、たった一つの弱点。
冗長化の大切さを誰よりも知っているくせに、自分自身を冗長化できていない。
四本目の蝋燭に火を移したとき、工房の扉が開いた。
「——やっぱり」
振り返ると、エルナが立っていた。
作業着ではなく、寝巻きの上に上着を羽織った姿。亜麻色の髪は普段のように束ねておらず、肩に流れている。手には小さなランタンを持っていた。
「エルナ? どうしたの、こんな時間に」
「こんな時間に、はこっちの台詞です」
エルナの声は、静かだった。怒っているのではなく、怒りを通り越した声だった。前世の上司が本当にキレたときの声に似ている。怒鳴るより怖いやつだ。
「工房の灯りが見えたんです。私の部屋の窓から」
「ああ、ごめん。光が漏れてた?」
「漏れてたも何も、煌々と」
エルナはランタンを机の端に置いた。そしてリオンの手元を覗き込む。
「……これ、通信魔法陣の設計ですか。昼間のロードバランシングの続き?」
「うん。フェイルオーバーの自動化を」
「リオンさん」
エルナが遮った。
「今、何刻だと思ってるんですか」
「……えーと」
リオンは窓の外を見た。空は真っ暗で、星の位置からして。
「深夜二刻……くらい?」
「三刻です。朝まであと二刻もありません」
三刻。前世の時間で午前三時半。
リオンは、さすがに顔をしかめた。
「……そんなに経ってたか」
「経ってました」
エルナは作業机の向かい側に回り込み、リオンと正面から向き合った。
ランタンと蝋燭の灯りが、彼女の緑色の瞳を揺らしている。
「リオンさん。この工房を作ったとき、最初に掲げたルール、覚えてますか」
「……依頼は日中のみ。夜間対応はしない」
「そうです。リオンさん自身が決めたルールです」
リオンは目を逸らした。反論できない。
「これは依頼じゃなくて、設計作業だから」
「同じです」
エルナの声が、少し強くなった。
「依頼だろうが設計だろうが、夜中に一人で作業してたら同じことじゃないですか。定時で帰るって」
エルナは一拍、間を置いた。
「定時で帰るって言ったのは嘘ですか!」
その声が、静かな工房に響いた。
リオンは言葉を失った。
嘘じゃない。嘘をつくつもりはなかった。本気で定時退勤を目指していた。前世の二の舞はごめんだと、心の底から思っていた。
でも。
「あと少しだけ、って思ったんだ」
「その『あと少し』が九刻です」
エルナの指摘は正確だった。夕食後から数えて九刻。前世の尺度で十三時間以上。
「前の世界でもそうだったんですか?」
リオンは黙った。エルナはリオンの「前の世界」について詳しくは知らない。ただ、時々口にする断片から、何かを察しているようだった。
「……そうだね。よくこうなった」
「終電、っていうのがあったんですよね。夜中の最後の乗り物。『逃すと会社に泊まる』って、笑いながら言ってましたけど、全然面白くなかったです」
「休日出勤、っていうのも」
エルナの声が、少し震えた。
「それで最後は倒れたんですよね。前の世界で」
工房が、静まり返った。
「……うん。倒れた」
今夜の静けさの中では、嘘をつく気になれなかった。
「働きすぎて、倒れた。それでこの世界に来た」
エルナは、しばらく何も言わなかった。
ランタンの炎がちりちりと音を立てている。
やがて、エルナは口を開いた。
「リオンさん。私、怒ってるんです」
「……うん、わかってる」
「わかってないです」
エルナの声は、怒りだけじゃなかった。もっと複雑な何かが混じっていた。
「リオンさんがいなくなったら、この工房はどうなるんですか」
「……」
「通信魔法陣の設計ができるのは、リオンさんだけです。負荷分散の考え方も、フェイルオーバーの理論も、私はまだ全然わかってません。ドルクさんも、ミーナちゃんも、技術の根幹はリオンさんに頼ってます」
エルナの言葉は、一つ一つが正確にリオンの急所を突いていた。
「あなたが倒れたら——誰がインフラを守るんですか」
リオンは、息を呑んだ。
それはまさに、さっき自分が思っていたことだった。
自分がSPOFだということ。単一障害点だということ。自分が落ちたら、チーム全体が止まるということ。
でも、エルナの言葉には、技術的な指摘以上の重みがあった。
「私たちが——いるじゃないですか」
エルナの声が、かすかに震えた。
「私はまだ未熟です。設計はできません。でも、できるようになりたいと思ってます。リオンさんが教えてくれたから。手順書を書いて、原因を切り分けて、一つずつ確認する方法を」
エルナは机の上の設計図を指差した。
「この設計、明日教えてください。私にも理解できるように、手順書にして。そうすれば、リオンさんが一人で夜中にやる必要なくなるじゃないですか」
リオンはぐうの音も出なかった。
冗長化。
その言葉が、リオンの頭の中でぐるぐると回っていた。
システムの冗長化は散々やってきた。シングル構成の危険性は誰よりも理解している。防壁魔法陣の冗長化を領主に進言して却下されたこともある。
なのに自分自身の冗長化は、まったくできていなかった。
「……僕が一人で抱え込んでたら、前世と同じだ」
「そうです」
「チームを作ったのに、チームに任せてなかった」
「そうです」
「結局、『自分がやったほうが早い』って思ってた」
「そう」エルナは言いかけて、止まった。「……リオンさん、それ前の世界でも同じこと言ってたんですか?」
「まったく同じことを」
リオンは、自嘲するように笑った。
九条諒は、チームリーダーだった。部下がいた。でも「自分がやったほうが早い」と仕事を抱え込んだ。ナレッジを共有しなかった。手順書を書く暇がないと言い訳した。
そして過労で死んだ。
リオンになって、「今度こそチームを作る」と誓った。工房を建て、仲間を集め、役割を分担した。
でも肝心の自分が、同じ轍を踏んでいる。
「エルナ」
「はい」
「僕はバカだな」
「はい」
即答だった。リオンは思わず目を丸くした。
「……否定してくれてもいいんだけど」
「しません。本当にバカだと思ってるので」
エルナの口元が、ほんの少しだけ緩んだ。怒りが溶け始めている。
「インフラの冗長化が大事だって、毎日のように言ってるのに。自分自身は冗長化しないなんて、バカ以外の何だっていうんですか」
「……返す言葉もない」
エルナは立ち上がり、リオンの隣に回った。
そして設計図の上に広がった巻物を、丁寧に巻き始めた。
「何して」
「片付けてるんです。今日はもう終わりです」
「でも、フェイルオーバーの」
「明日やりましょう。チームで」
リオンは口を閉じた。
エルナの手が、リオンの手元にあったペンを取り上げた。インク壺に蓋をして、道具を棚に戻していく。
その動作が、あまりにも自然で、リオンはぼんやりとそれを眺めていた。
「……エルナ」
「はい」
「僕がSPOFにならないためには、どうすればいいと思う?」
エルナは手を止めた。
「……SPOF、って何ですか?」
「Single Point of Failure。単一障害点。そこが落ちるとシステム全体が止まる、一つだけの弱点のこと」
「リオンさんが、それだって言いたいんですか」
「今の工房では、そうだと思う。技術の根幹を僕一人が握ってる。僕が倒れたら」
「倒れないでください」
エルナの声は、今度は怒りではなかった。
「倒れないように、私が監視します」
「……監視?」
「リオンさんが夜中に作業してたら、見つけて止めます。無理してたら、休ませます。それが私の仕事です」
リオンは目を瞬いた。
「それ、死活監視じゃないか」
「何ですかそれ」
「システムが生きてるか死んでるか、定期的にチェックする仕組み。前の世界では、サーバーが動いてるかどうかを監視するツールがあって」
「リオンさん」
「はい」
「また変な言葉が漏れてます」
リオンは口を噤んだ。そしてふと、笑いが込み上げてきた。
「……ありがとう、エルナ」
「え?」
「監視してくれるの、助かる。僕は自分では止まれないタイプだから。前世でも、誰かに止めてもらえてたら」
リオンは言葉を飲み込んだ。言わなくていいことだ。
「とにかく、ありがとう」
エルナの頬が、ランタンの灯り以上に赤く染まっていた。
「べ、別に……リオンさんのためじゃないですよ。インフラのためです。リオンさんが倒れたらインフラが落ちるから」
「うん。インフラのためだね」
「そうです。インフラのためです」
「わかった」
「……本当にわかってますか?」
エルナの視線が、ちらりとリオンの顔を窺った。
リオンは気づかなかった。いや、気づかないふりをしたのかもしれない。前世の九条諒は、恋愛の優先度を意図的に下げていた。大切な人より仕事を優先して、結局フラれた。それ以来、誰かに踏み込むことを避けている。
この世界でもまだ、その癖が抜けていない。
蝋燭を消した。
ランタンの灯りだけが、工房を薄く照らしている。
「帰りましょう、リオンさん」
「うん」
リオンは立ち上がり、腰を伸ばした。背中がばきばきと鳴る。体は正直だ。
工房の扉を開けると、夜風が頬を撫でた。冷たくて、気持ちがいい。見上げれば、星が降るようだった。
「……綺麗だな」
「はい。綺麗です」
二人並んで、夜道を歩く。
村は静まり返っている。犬の遠吠えと、虫の声だけが聞こえる。
「リオンさん」
「ん?」
「明日から、ルールを追加してもいいですか」
「どんなルール?」
「最後に工房を出るのは私にしてください。リオンさんが残ってたら、私が追い出します」
リオンは苦笑した。
「それ、監視ツールの自動アラートみたいだな。閾値を超えたら通知が飛んでくる」
「また変な言葉です」
「ごめんごめん」
「で、いいですか?」
「……いいよ。そうしよう」
エルナが小さく頷いた。その横顔を、星明かりが照らしている。
リオンは思った。
冗長化の第一歩は、一人で抱え込まないことだ。
前世では、それができなかった。「自分がやったほうが早い」と思い込んで、全部一人で背負って、最後には潰れた。
でも今は、隣に止めてくれる人がいる。
「エルナ」
「はい」
「明日、フェイルオーバーの設計、一緒にやろう。僕が全部説明する。手順書も書く。エルナが一人でもできるように」
「……本当ですか?」
「本当。僕がSPOFである限り、このチームは脆弱だ。僕の知識を共有して、誰でも対応できる体制を」
「リオンさん」
「はい」
「嬉しいですけど、今は寝てください」
「……はい」
エルナの宿舎の前で立ち止まった。
「じゃあ、おやすみ。エルナ」
「おやすみなさい、リオンさん」
エルナは扉に手をかけて、振り返った。
「あの」
「ん?」
「私、リオンさんの監視ツール……じゃなかった」
エルナは少し恥ずかしそうに言い直した。
「私はリオンさんがちゃんと休めるように、見ててあげます。だから」
彼女は、まっすぐにリオンの目を見た。
「もう二度と、前の世界みたいにならないでください」
その言葉が、夜の空気に溶けていった。
リオンは少しだけ、胸が痛んだ。
「……ならないよ」
「約束ですよ」
「約束する」
エルナは、ふわりと笑った。
その笑顔が、ランタンの灯りに照らされて、リオンは一瞬、目を奪われた。
だがすぐに視線を逸らす。前世の癖だ。近づきすぎるな。大切な人を、また仕事で失うことになる。
「おやすみ、エルナ」
「おやすみなさい」
扉が閉まった。
一人になった夜道を歩く。
前世には、深夜に本気で怒りに来てくれる人はいなかった。彼女は「仕事が忙しすぎる」と言って去り、友人には「お前、死ぬぞ」と笑われ、上司には「もうちょっと頑張れ」と言われた。
誰も本気で止めてくれなかった。いや。止めようとしてくれた人は、いたのかもしれない。僕が、聞く耳を持たなかっただけで。
自宅に戻り、布団に潜り込む。机の上の設計メモに手が伸びかけて、止めた。
エルナの声が、耳に残っている。
「定時で帰るって言ったのは嘘ですか!」
嘘じゃない。嘘にしたくない。
目を閉じると、仕事じゃないことが頭に浮かんでいた。
ランタンに照らされた緑色の瞳。「私たちが、いるじゃないですか」という声。星明かりの下の横顔。
リオンはその考えを、頭の隅に追いやった。まだ早い。今はチームを守ることが最優先だ。
でも、ほんの少しだけ、前世の九条諒が知らなかった温かさが胸の奥にあった。
最後に思ったのは——「明日こそ定時で帰ろう」。
それは前世の最期にも思ったことだった。でも今度は、隣にそれを見届けてくれる人がいる。
【あとがき】
自分自身がSPOF(単一障害点)だと気づく夜。インフラの冗長化を語りながら自分は冗長化できていない矛盾を、エルナが突きます。