九章 神
その日の朝、下山拓馬はモニターの片隅に表示された見慣れないエラーに気づいた。キーボードを叩いていた手を止め、すぐにログを開いたが、そのときには処理はすでに正常へ戻っていた。念のため直前の処理を遡ってみたものの、一見しただけでは原因らしいものは見つからなかった。
下山が仕事をしているのは、SAコーポレーション14階にある《セカンド・ライフ》の開発エリアだった。このフロアには、一般向けの仮想空間型SNS《Second Life Connect》を扱う開発部門もあり、二つのシステムはそれぞれ別のエリアで開発・運用されている。下山は両方のシステムに携わっていたが、現在は主に厚生衛生省との共同事業である《セカンド・ライフ》の開発と保守を担当していた。
下山はもう一度ログへ目を落とした。エラーは消えている。処理も正常に動いている。それでも何かが引っかかった。正常に戻ったことではなく、なぜ異常が発生し、なぜ何もしないうちに正常へ戻ったのかが分からない。そのことの方が気になった。
それから数時間が経ち、昼休みを告げる時刻を過ぎても、下山はモニターから目を離さなかった。画面には《セカンド・ライフ》のシステムログと、午前中から追っている認証処理の実行結果が並んでいる。エラーそのものはすでに解消していたが、原因が気に入らなかった。動いているから問題ない、という考え方が下山には理解できない。正常に動いたのなら、なぜ正常に動いたのか。異常が起きたのなら、なぜ異常が起きたのか。そこまで分からなければ、終わったことにはならない。
「拓馬。昼飯」
肩を叩かれて、ようやく下山は振り返った。村越が呆れた顔で立っている。見せられたスマートフォンには12時28分と表示されていた。
「もうそんな時間か」
「だからさっきから言ってんだろ。行くぞ」
村越良太は、同じ14階にある《Second Life Connect》の運用担当だった。普段は別の開発エリアで仕事をしているが、昼になると下山を誘いに来ることが多かった。
下山は一度モニターへ目を戻したが、村越はその場を動こうとしなかった。放っておけば昼食を取らずに作業を続けることを知っているのだろう。仕方なく作業状態を保存し、PCをロックした。
会社の近くには昼食を取れる店がいくつもあったが、12時台はどこも混んでいる。並ぶことが嫌いな下山は、コンビニで適当に買い、社内の休憩室で済ませることが多かった。いつからか村越もそれに付き合うようになっていた。
「そういや拓馬、お前のこと社長に話しといたぞ」
ベンチに腰を下ろすなり、村越が言った。
「社長って、戸神社長か?」
「他に誰がいるんだよ」
「何で俺の話になったんだ?」
下山は弁当を開ける手を止め、村越へ顔を向けた。
「この前、戸神社長が14階に来たんだよ。《Second Life Connect》の運用について聞かれてさ」
「社長が14階に? 長期療養から戻ったばかりだろ?」
「そうなんだけどな。社内を見て回ってるみたいだぞ」
「それで、何を話したんだ?」
「今の運用状況とか開発体制とか、その辺だよ。昔のコードの保守が大変だって話をしたら、詳しい奴はいないかって聞かれてさ。それでお前の名前を出した」
「……そうか」
下山は弁当へ視線を落とした。箸を取ろうとして、少しだけ手が止まる。
戸神尚人が、自分の名前を聞いた。
それだけのことなのに、胸の奥に小さな高揚感が生まれていた。
「何だよ。反応薄いな」
「別に」
「まあいいけどさ。でも、社長も少し変わった気がするんだよな」
「どういうことだ?」
「前より話しやすくなったっていうかさ。冗談まで言うんだぜ」
「社長が?」
「ああ。長いこと休んでたから、少し丸くなったんじゃね?」
村越は笑いながらサンドイッチにかじりついた。
下山は何も答えなかった。ただ、以前に戸神と交わした短い会話を思い出していた。
戸神尚人。その名前を、下山はSAに入るより前から知っていた。SAコーポレーションの創設者であり、《Second Life Connect》をはじめ、現在のSAを支える複数の技術に関わってきた人物。表に出ることは多くないが、社内の古い技術資料や設計記録を辿れば、いたるところでその名前に行き当たる。
下山にとって、戸神は単なる会社の社長ではなかった。
「社長、お前のところに来るかもしれないぞ」
村越の声で、下山は思考を戻した。
「……どうだろうな」
「古いシステムに詳しい奴を探してたんだし、可能性はあるだろ」
下山はそれ以上答えなかった。戸神とは、これまでにも数回だけ顔を合わせたことがある。社員と社長として親しく話したわけではない。開発上の確認で呼ばれ、短いやり取りをした程度だった。向こうが自分のことを覚えているかどうかも分からない。それでも、その数回は妙に鮮明に残っている。
最初に呼ばれたとき、下山は必要以上の資料を用意していた。質問される前に答えを出そうとし、説明の途中で何度も先回りした。そのとき、戸神に言われた言葉を今でも覚えている。
――君は答えを急ぎすぎる。
叱責ではなかった。それだけ言って、戸神は下山が持ってきた資料へ視線を戻した。どうしてその一言がこれほど長く残っているのか、下山自身にも上手く説明できなかった。
昼食を終えると、下山は村越より先に立ち上がった。まだ休憩時間は残っていたが、朝から追っている不整合の方が気になっていた。
午後、《セカンド・ライフ》の開発エリアへ戻った下山は、すぐに作業を再開した。現在のシステムには、開発初期から受け継がれてきた処理がいくつも残っている。機能は追加され、基盤は更新されてきたが、古い構造の一部は今もシステムの奥深くに組み込まれていた。
下山は古いコードを読むことが嫌いではなかった。何度も改修され、書いた人間すら会社からいなくなっているのに、その考え方だけが残っている。コードには癖がある。何を嫌い、何を優先したのか。どこまで先を見て設計したのか。長く読んでいれば、名前が書かれていなくても同じ人間が設計したものだと分かることさえあった。
その中でも、戸神尚人が関わった古い設計には独特のものがあった。目の前の問題だけを解決するのではなく、その先で何が起こるのかを考えている。最初に読んだときには無駄に見えた余地が、何年も後の仕様変更によって意味を持つこともあった。偶然なのかもしれない。それでも下山には、そうは思えなかった。
画面の中に残されたものを辿るほど、その設計をした人間が何を考えていたのか知りたくなる。だからこそ、3か月ぶりに戻ってきた本人が、今のシステムを見たら何を思うのかが気になった。
「ちょっといいか」
背後から声がして、下山は反射的に振り向いた。そして、椅子に座ったまま動きを止めた。昼休みに村越から聞いたばかりの男が、数歩離れたところに立っている。
戸神尚人。
その隣には、戸神付きの秘書になったという井川沙織の姿もあった。慌てて椅子を引いたせいで、キャスターが床を擦って大きな音を立てた。
「お、お疲れ様です」
「仕事中に悪いな」
「いえ」
立ち上がったものの、次に何を言えばいいのか分からない。以前にも戸神とは数回話したことがある。それなのに、こうして目の前に立たれると、当時とは違う緊張があった。長期療養を終えた社長が職場へ戻ってきただけだと頭では分かっているのに、下山には、画面の中でしか触れられなかった存在が突然現実へ出てきたように思えた。
「下山拓馬君だな」
「はい」
「村越君から聞いた。初期のシステムに詳しいそうだな」
「詳しいというほどでは……古いものを調べることが多いだけです」
「《Second Life Connect》だけじゃなく、こっちの開発にも関わってるそうだな」
「はい。今は主にこちらを担当しています」
戸神は小さく頷き、下山の背後にあるモニターへ視線を向けた。
モニターの脇には、二人の人影が重なった小さなフィギュアが飾られていた。片方は半透明で、もう片方は銀色をしている。
「それも古いシステムか?」
下山も振り返る。画面には、朝から追い続けている認証処理のログが表示されていた。
「はい。正確には、今のシステムの中に残っている古い処理です」
「何かあったのか?」
「今朝、一部で不整合が出ました。処理自体はすぐ正常に戻ったんですけど、原因が分からなくて」
「復旧したならいいんじゃないのか?」
下山は一瞬、返答に迷った。上司から同じことを言われたことは何度もある。利用者に影響がなく、現在正常に動いているのなら、優先度を下げろという意味だ。
「原因が分からないままなのは、嫌なんです」
戸神は何も言わなかった。画面に並んだログへ目を向ける。下山はその横顔を見ながら、少しだけ落ち着かない気分になった。相手がどこまで内容を理解しているのか分からない。それでも、説明を省くことはできなかった。
「ここで一度だけ異常な値が出ています。ただ、その直後には正常値へ戻っていて、同じ現象も再現できてません。だから今は、この周辺から原因を絞ってます」
戸神はしばらく画面を眺めていた。
「その値は、どこから来た?」
「え?」
「ここに入る前だよ」
戸神が画面の一か所を指した。
「……その前の処理からです」
「そっちは見たのか?」
「少しは。でもログが多すぎるんです。異常が出た場所から絞った方が早いと思って」
戸神は画面から下山へ視線を移した。
「なら、まだ原因を探してるんじゃなくて、原因だと思った場所を調べてるだけじゃないのか?」
下山は答えられなかった。言われてみれば、その通りだった。異常値が出た場所を起点に、その周辺へ原因があると決めて調べていた。効率を考えれば当然のやり方だと思っていたし、今でも間違っているとは思わない。それでも戸神の言葉には、何か引っかかるものがあった。
「前から追えばいい」
「全部ですか?」
「必要なら」
「かなりありますよ」
「だから?」
下山は戸神を見た。責めているわけでも、試しているわけでもない。本当にそれの何が問題なのか分からないという顔だった。
「……時間がかかります」
「結果、間違えるよりはいいだろ」
その言葉を聞いた瞬間、下山は以前にも似た感覚を味わったことを思い出した。説明を急ぎ、自分が用意した答えを先に示そうとしていたとき、戸神は資料を見たまま言った。
――君は答えを急ぎすぎる。
下山が黙っていると、戸神がわずかに眉を寄せた。
「どうした?」
「……前にも、同じようなことを言われました」
「俺に?」
「はい。最初に社長と話したときです。『君は答えを急ぎすぎる』って」
「そうだったか」
戸神はそれ以上思い出そうとする様子もなかった。下山にとっては何年も残っている一言だったが、相手にとっては数ある仕事上のやり取りの一つなのだろう。それでも、再び同じことを指摘されたのが不思議だった。
「なら、君は変わってないってことだな」
何でもないことのように言った。下山はその言葉を聞いて、なぜか少し嬉しくなった。
「変わらないことが大切な場合もある」
戸神はそう言うと、パソコンの画面から目を離した。
「邪魔したな。続けてくれ」
「はい」
戸神は井川とともに開発エリアの奥へ歩いていった。下山はその場に立ったまま、二人の背中を見送った。戸神の姿が角の向こうへ消えてから、ようやく椅子へ腰を下ろす。キーボードへ手を置いたものの、すぐには指が動かなかった。
以前と同じように、自分の仕事を見て、同じことを言った。
――君は答えを急ぎすぎる。
そこに特別な意味などないのかもしれない。戸神にとっては、その場で目についた下山の性格を口にしただけなのだろう。だが下山には、それで十分だった。
画面へ視線を戻した。戸神が指摘した通り、異常値が現れた箇所ではなく、その値がどこから来たのかを辿っていく。一つ前。そのさらに前。処理を遡るにつれ、現在のシステムの下から古い構造が現れ始めた。
夕方になる頃には、午前中から追っていた不整合の原因はほぼ特定できていた。古い処理の一部が、後から追加された認証機構との間で一時的に値を取り違えていた。表面に出た異常だけを追っていれば、もう少し時間がかかっていただろう。
「まだやってんの?」
声に顔を上げると、帰り支度をした村越がデスクの横に立っていた。
「もう終わる」
「原因分かった?」
「だいたい。古い処理と今の認証の受け渡し」
「じゃあ明日直せばいいだろ。帰れよ」
「ああ」
そう答えながらも、下山は画面から目を離さなかった。村越は何か言いたそうにしていたが、結局「お疲れ」とだけ残して立ち去った。
しばらくすると、開発エリアから人の姿が少しずつ減っていった。話し声が消え、キーボードを叩く音もまばらになっていく。窓の外はすでに暗く、室内の照明がガラスに反射していた。
下山は修正箇所をまとめ、作業内容を保存した。原因は分かった。少なくとも、そう思った。画面を閉じようとして、指が止まった。さきほど処理を遡った際、さらに前に別の処理があったことを思い出した。今回の不整合とは直接関係がないように見えたため、そのまま飛ばした箇所だった。
下山はもう一度ログを開き、そこまで戻った。かなり古い処理だった。現在の認証機構とは直接つながっていない。今回の異常値を発生させた形跡もない。それなのに、なぜか目に留まった。しばらく眺めたが、おかしなところは見つからなかった。
「……何だ、これ」
小さく呟いたものの、答える者はいない。さらに追おうとして、下山は手を止めた。今回の原因はすでに分かっている。この処理まで調べ始めれば、いつ終わるか分からない。明日に回せばいい。そもそも、調べる必要があるのかさえ分からなかった。
下山はログを閉じた。そのときは、本当にそう思っていた。
背もたれへ身体を預けると、暗くなったモニターに自分の顔が映った。静かになったフロアで、午後の戸神とのやり取りがまた頭に浮かぶ。
下山にとって戸神尚人は、長い間、現実の人間というより画面の向こうにいる存在だった。古い設計資料、残されたコード、技術文書。そこに残されたものを辿ることでしか、その人間を知ることができなかった。だからこそ、今日のことが頭から離れなかった。
長い療養を経ても、同じものを見る。同じところに疑問を持つ。そして、以前と同じ下山を見て、以前と同じことを言う。
変わらないことが大切な場合もある。
戸神が何を思ってそう言ったのか、下山には分からない。ただ、画面の中に残されていた戸神尚人と、今日、自分の前に立っていた男が、初めて一つにつながったように感じた。
下山は暗いモニターに映る自分を見つめた。やがて、その口元にゆっくりと笑みが浮かんだ。
「神は戻ってきたんだ」




