第十七話 根本原因
時間を、二日戻す。
202X年九月二十四日、水曜日。十四時。
「差分は」
「四十七万八千円。入金が一件、消えてます」
悠人は自席から立ち上がって、テスト担当者の後ろに立った。画面を見た。
最初は、テストデータの作り方の問題だと思った。二時間後、そうではないとわかった。四時間後、同じ現象が他の口座でも三件見つかった。
条件はすべて同じだった。給与振込の一括処理が走っている最中に、窓口からの入金が同じ口座に来る。二つの処理が同時に残高を読んで、それぞれ自分の計算結果を書き込む。後から書いたほうが勝つ。先に書かれた入金は、記録上、存在しなかったことになる。
悠人は、そのデータがどこから来たのかを確かめた。
前夜のバッチで流れた検証パターンの、十四番だった。三隅が「時間が余ったので」と言って回した、優先度の低いパターン。
起きない想定のものが、起きていた。
その日、悠人は帰らなかった。
二十三時、三隅が横に立った。
「相葉さん。これ、テストデータの不備じゃないですよね」
「違う」
「じゃあ」
「設計だ」悠人は画面から目を離さずに言った。「どこかは、まだわからない」
三隅はしばらく黙っていた。それから、自分の席に戻って、椅子を引きずってきて、悠人の隣に座った。
「僕も見ます」
「帰れと言ったはずだ」
「この前、命令は聞きました。今日はまだ聞いてません」
二人は朝までログを見た。
◆
202X年九月二十六日、金曜日。十七時。
オフィスの空気が淀んでいた。誰かが朝に淹れて放置したコーヒーの、酸っぱくなったにおいがする。エアコンが効きすぎていて、悠人の指先は冷たかった。
彼は四十八時間、家に帰っていなかった。
モニタには、六百行のログが表示されていた。悠人はそれを、上から下まで、四回読んだ。
そして、五回目の途中で、見つけた。
処理が残高を読む瞬間と、書き込む瞬間の間に、〇・〇三秒の隙間がある。その隙間に、もう一つの処理が入ってくる。版番号を確認する仕組みは入っている。だがその確認自体が、隙間の外側で行われていた。
悠人は椅子の背にもたれた。
周りの音が遠くなった。フロアの誰かが電話をしている声、キーボードの音、空調の唸り。それらが薄い膜の向こうに行った。頭の中には、六百行のログと、設計書のページと、〇・〇三秒だけがあった。
久しぶりの感覚だった。二十四歳のころ、彼はよくこの状態になった。世界がコードだけになって、余計なものが全部落ちる。この状態のとき、彼はいつもより速く、正確だった。
彼は設計書を開いた。該当箇所を探した。
三ページ目にあった。
「同一口座への同時更新は業務時間帯に発生しないものとする」
その一行の横に、彼自身の判子が押してあった。日付は八月二十六日。
悠人は、その一行から目を離せなかった。
膜が破れた。音が戻ってきた。
八月二十六日、大手町の会議室。ホワイトボードに四角を二つ描いて、二週間を五日に縮める代替案を説明した。柏木遥が手を挙げた。「その前提、確認取れてますか」。彼は「今週中に照会票を出します」と言った。
出さなかった。
三行の下書きが、まだテキストエディタの中に残っている。四行目を書こうとした夜、赤いアラートが出て、彼はエディタを閉じた。
悠人は両手で顔を覆った。
誰のせいでもなかった。スケジュールのせいでも、仕様変更二十七件のせいでも、稼働日を先に決めた役員会のせいでもなかった。彼は自分で前提を置き、自分で確認すると言い、自分で確認しなかった。
彼はゆっくり手を下ろして、内線を取った。
「課長。相葉です。原因が出ました。設計に起因します。私の判断です」
◆
十九時二十分。会議室。
沢渡課長は、悠人の書いた一枚の紙を三分かけて読んだ。読み終わってから、天井を見上げた。
「客先には、俺が説明する」
「私も出ます」
「出なくていい」
「出ます」
沢渡は視線を戻した。
「相葉。これは、本番稼働したら客の預金残高が壊れる事故だ。壊れたあとに気づくパターンだ。テストで出たのは幸運だが、幸運だったで済ませてもらえる話でもない」
「はい」
「稼働は延びる。最短で二ヶ月。それでも先方が納得するかはわからん」
「はい」
沢渡は紙を机に置いた。
「フェーズ2のリーダーは、今日付けで外す。来週から俺が直接見る。おまえは、この修正だけをやれ」
悠人は膝の上で手を握った。
「わかりました」
「不服か」
「いえ」悠人は顔を上げた。「妥当です」
沢渡は少し黙ってから、椅子を引いて立ち上がった。
「相葉。一つだけ言っておく。おまえがやったのは、設計判断のミスじゃない。判断はしていい。判断したあとで、確認しなかったのがミスだ。そこは分けて覚えとけ」
沢渡は会議室を出ていった。
悠人は、すぐには椅子から立てなかった。
紙が一枚、机の上にあった。彼は自分の名前が印刷された欄を見ていた。
修正案はもう頭の中にできていた。実装は五日、テストを含めて三週間。技術的には、これは解ける問題だった。彼は解き方を知っていた。
解けなかったものが、もう一つある。
◆
フロアに戻ると、柏木遥がコートを着ているところだった。
「相葉さん」
「柏木さん。ご迷惑をおかけしました」
「聞きました」柏木は鞄を肩にかけた。「あの日、私、もっとしつこく言えばよかったです」
「いえ。あなたは言いました。二回」
柏木は少し黙った。それから、思い出したように言った。
「そういえば、先週の火曜、ロビーに女性の方が来てましたよ」
悠人は動きを止めた。
「私に?」
「相葉さんに、個人的な用事だと。紙袋を持ってらっしゃいました。うちの受付、無人だから、たまたま私が下りてきて」
「……いつですか」
「十六日の、十八時半くらい」
悠人は自分のスマートフォンを取り出した。九月十六日。十七時四十分に、彼は葵に『今日、少しだけ声が聞きたい。時間あるか』と送っていた。
既読は、翌日の朝についていた。返事は来なかった。
そのあと十日間、彼は葵に三通しか送っていない。すべて『遅くなる』だった。
「相葉さん」柏木が言った。「私、余計なことを言ったかもしれません。あの方に、あなたが無理してるって」
「……それは」
「言うべきだったのは、私じゃなかったですね」
柏木はエレベーターのほうへ歩いていった。
悠人はスマートフォンを見た。時刻は二十時四十六分。
彼は葵に電話をかけた。
六コール。七コール。
繋がった。
「もしもし」
背景に、水の音がした。強い雨の音だった。
「藤井。今、どこにいる」
間があった。
「……汐留です」
悠人は歩き出していた。
「そこにいてくれ。今から行く」
「先輩、私」
「頼む」
電話を切って、彼は自分の椅子の背からコートを掴んだ。
エレベーターを待つ時間が惜しかった。彼は非常階段の扉を開けて、九階から一階まで駆け下りた。
外に出た瞬間、雨が全身を叩いた。
九月の終わりの、季節外れの豪雨だった。歩道に落ちた水が跳ね返って、膝から下がすぐに濡れた。悠人は大通りでタクシーを止めた。
車は二百メートル進んで、止まった。前方の交差点まで、テールランプが赤く連なっていた。
「お客さん、この雨だと十五分は動かないかも」
悠人は財布から千円札を出して、助手席の後ろに置いた。
「ここで降ります」
扉が開いた。彼は雨の中に出た。
アスファルトが濡れて、信号とヘッドライトの光を跳ね返していた。街全体が水の膜をかぶって、輪郭を失っていた。空気は、乾いた土が急に濡れたときのにおいで満ちていた。
悠人は走った。
二十八年生きてきて、彼が何かに向かって走ったのは、これが二度目か三度目だった。前の二回は、電車と、締切だった。




