第六話 閉じない括弧
その週の金曜日、オフィスには雨の匂いが満ちていた。
朝から降り続く細かい雨で、窓ガラスは白く曇り、蛍光灯の光がいつもより平たく見える。人の出勤も少しだけ重く、傘を畳む音や濡れた靴底が床に残す跡が、朝の静けさを細かく乱していた。
翔太は出社してすぐ、自分の席で共有リポジトリを更新した。
昨日までの修正分。レビューの差分。自分が触っていないファイルの更新もいくつか入っている。
差分一覧を眺めていると、その中に見慣れたファイル名が混ざっていた。
夜間バッチ関連の、あの古い共通モジュールだ。
木村も田中もまだ朝の打ち合わせに入っている。
ほんの少しだけなら、と自分に言い訳して翔太はその差分を開いた。
追加や削除はない。
行末の空白修正と、コメント位置の調整だけ。誰かが体裁を整えたらしい。
だが、その確認の最中に、翔太は別の場所へ飛んでしまった。
ファイル末尾近く。ほとんど触られていない古い処理のあたり。
昨日まで見えていなかったコメントが、そこにあった。
// 括弧が閉じれば、門は開く
翔太は息を止めた。
意味がわからない。
なのに、なぜか以前から知っていた文章のように見えた。
門。
またその単語だ。
しかも今度は明らかに冗談では済まない位置に書かれている。分岐条件の終端近く、括弧の対応関係が異様に複雑な場所。コード上の“閉じる”と、文の意味が不気味なほど重なっている。
「何見てるの」
背後から木村の声がして、翔太は肩を震わせた。
振り向くと、木村は紙コップを片手に立っていた。いつの間に戻ってきたのかわからなかった。
「すみません、差分見てて……」
木村は画面を覗き込み、コメントを目にした瞬間、ごくわずかに表情を変えた。
ほんのわずか。
けれど、もう翔太は見逃さなかった。
「そのファイル、勝手に追わなくていい」
声は静かだったが、拒絶に近かった。
「前にも言ったよね。古いコードは今の仕事に関係ないところまで見ない」
「でも、これ……」
「佐藤君」
名前を呼ばれただけで、それ以上は言えなかった。
木村は数秒沈黙してから、声の硬さを少しだけ戻した。
「今日は研修タスクを先に終わらせて。午後、別件レビュー入るから」
翔太は「はい」とだけ答えた。
だが胸の内側では、納得より反発のほうが大きくなっていた。
関係ないはずがない。
夜間バッチの不具合。消えるログ。見慣れない文字列。門。括弧。
線がまだ見えないだけで、点は確かに同じ方向を向いている。
午前中、翔太は研修タスクに集中しようとした。
入力チェックの改善。簡易テストの追加。レビューコメントへの対応。
手は動く。頭も使っている。
それなのに、意識のどこかがずっと別の場所に引かれている。
人は目の前の仕事に集中しているふりをしながら、別の問題を抱えていられるのだと初めて知った。
昼休み、雨はさらに強くなっていた。
休憩スペースの窓を打つ雨粒の音が絶え間なく続く。
翔太はコンビニのサンドイッチを開きながら、スマホのメモ帳を見た。
Boundary Layer mismatch
座標再解釈に失敗しました
ここでは門を開かないこと
括弧が閉じれば、門は開く
並べると、もう冗談では済まない。
少なくとも自分のなかではそうだった。
「ほんとに気になるんだね」
声に顔を上げると、田中が向かいに腰を下ろしていた。
缶コーヒーを片手に、眠そうな目でこちらを見ている。
「顔に出てた?」
「出てる。木村さんも困ってた」
困っていた。
その言い方は少し意外だった。怒っていた、ではない。
「田中さん、何か知ってるんですか」
田中は缶を指先で回した。
「知らない。正確には、“知らされてないことがある”のは知ってる」
「……どういう意味ですか」
「この会社、昔から妙な癖あるんだよ。古い共通部品に誰も触りたがらないとか、夜だけ再現する不具合を“たまにある”で済ませるとか。木村さんはたぶん何か知ってる。でも言わない」
「なんで」
「言えないのか、言いたくないのかは知らない」
田中はそこで缶コーヒーを一口飲んだ。
「ただまあ、仕事として言うなら、深入りしないほうが楽だよ」
楽。
その言葉に、翔太はかすかな反発を覚えた。
楽なほうを選べば、きっと日々は回るのだろう。給料も出る。仕事も進む。
でもそれでは、自分の目で見てしまったものをどう扱えばいいのかわからない。
午後、レビュー見学の途中で、翔太は奇妙な違和感に襲われた。
モニターに表示されたコードの括弧が、一瞬だけ多く見えたのだ。
if ( の先、メソッド呼び出し、ネスト、閉じ括弧。
目を擦ると普通に戻る。
疲れのせいだと思いたかった。
だが、画面の文字列を追うほど、翔太の頭のどこかでは、括弧の対応関係がただの記号以上のものとして感じられていた。開けば、閉じなければならない。閉じなければ、処理は終わらない。世界も同じなのだろうか、と、そんな馬鹿げたことまで考えてしまう。
定時後、木村が席を立った隙に、翔太はもう一度あのファイルを開いた。
コメントの前後を丁寧に読む。
条件分岐の終端。ログ出力。例外時のフォールバック。
そしてコメントのすぐ下に、不自然に空いた一行がある。
そこにカーソルを置く。
何も書かれていないはずの余白。
なのに、妙な既視感があった。
ここに何かがあった。消されたのだ、と、理屈ではなくそう思った。
キーボードに指を伸ばしかけたそのとき、背後で木村の声がした。
「佐藤君」
今度は名前だけで、体が強張った。
木村は席に戻ってきていた。
怒っているようには見えない。だが、疲れたようにも見えた。
その疲れが、翔太にはかえってつらかった。
「聞きたいことがあるなら、コードじゃなくてこっち見て聞いて」
翔太はゆっくり振り向いた。
喉の奥が少し痛い。
「じゃあ聞きます」
自分でも驚くほど、声は落ち着いていた。
「このコメント、誰が書いたんですか」
木村はすぐには答えなかった。
窓の外では雨が強くガラスを叩いている。オフィスの人影はもう少なく、遠くでプリンタが一度だけ紙を吐き出す音がした。
「昔いた人」
「もういない人」
「そう」
「どういう人だったんですか」
木村は机の端に手を置き、視線を自分のマグカップへ落とした。
「優秀だったよ。たぶん、俺よりずっと」
「その人が、こういうコメントを書いたんですか」
「……そうだと思う」
“思う”。
断定しないのは、記憶が曖昧だからではない。
断定したくないのだと、翔太にはわかった。
「なんで門なんですか」
木村は顔を上げた。
その視線はまっすぐだった。
「それを今の君が知る必要はない」
「でも、夜の不具合と関係あるんじゃ」
「あるかもしれないし、ないかもしれない」
「じゃあ木村さんもわからないんですか」
その問いに対して、木村は初めて少しだけ感情を見せた。
怒りではない。もっと疲れた種類の、諦めに近いものだった。
「わからないまま動いてるものに、下手に触るなって言ってる」
オフィスの空調音が、急にはっきり聞こえた。
翔太は黙った。
木村も少しのあいだ黙って、それから低い声で続けた。
「この仕事はね、佐藤君。全部を知ってから触れる仕事じゃない。むしろ、知らないまま責任だけ背負うことのほうが多い。だから、せめて今わかってる範囲の地面を固めろ。そうしないと、自分ごと落ちる」
その言葉は脅しではなく、経験から出た忠告だった。
だからこそ、翔太はすぐに反論できなかった。
木村は最後にひとつだけ言った。
「括弧は、閉じるためにある」
それだけ言って、自席へ戻っていく。
意味は当然わからない。
わからないのに、その言葉は不気味なほど強く残った。
帰宅した夜、翔太は雨音の中でひとりノートPCを開いた。
会社のものではない、自分の私物だ。
適当なテキストエディタを立ち上げ、何の意味もなく括弧を打つ。
( )
( ( ) )
( ( ( ) ) )
意味のない遊びだ。
そう思いながら、指は止まらなかった。
開く。閉じる。対応させる。
その単純な規則を見ていると、妙な安心があった。
世界がまだ壊れていないような気がした。
けれど次の瞬間、画面の下端に、テキストエディタの機能ではありえない一行が現れた。
open bracket accepted
翔太は凍りついた。
自分では何もしていない。
ネットにもつないでいない。
テキストエディタにそんな表示機能はない。
そして、一秒もたたないうちに、その一行は消えた。
部屋の中は静まり返っている。
窓の外の雨音だけが続く。
心臓の音がうるさいほど大きい。
翔太は震える指でノートを引き寄せ、殴り書きした。
括弧が開いた。
何が受理された?
門は、コードの中にあるのか。
書いた字はひどく乱れていた。
その乱れが、かえっていま起きたことの現実味を増していた。
雨は夜更けまで止まなかった。
そして翔太は、その夜、自分がもう“ただの新人研修”の場所にはいないのだと、ようやくはっきり感じ始めていた。




