第41話「分からないので、教えてください」
木曜の朝、田中はいつも通りに出社した。
空は薄い晴れ。地下鉄の改札を出てから、会社まで歩く五分の道で、田中は一度だけ、頭の中で言ってみた。
分からないので、教えてください。
声には出さなかった。心の中で、語感を確かめた。
駅から会社までの五分、街路樹の葉が、夏の朝の風に揺れていた。先週まで、この景色を意識して見ていなかった。今朝、わずかに違う光が、葉に当たっているように、田中には感じられた。
会社のエレベーターで、フロアに上がる。バックエンドチームのフロアには、すでに半分のメンバーが座っていた。先日のリリース後の新機能準備で、朝早くから手を動かしている人が、いつもより多いせいだろう。
田中は自分のデスクに着いて、メモ帳を開いた。
昨夜書いた一行——「先輩、すごいですね」を、明日から、言わない。
その下に、もう一行、追加した。
『分からない』を、まず先に言う。
短い、自分宛の指針だった。
九時の朝会、いつも通りに始まった。
円形に並ぶ椅子。中央に立つ酒井。プロジェクター画面に、新機能の進捗状況が映る。右側の進捗バーは、ほぼ全て緑色になっていた。先週の検索機能改修も、無事に運用に乗った。
酒井は、先週末のリリース後の様子と、今週の予定を共有した。
途中、酒井が見積もり作業の方針について新しいアイデアを話したとき、田中は思わず「酒井さん、本当に——」と口を開きかけた。
次の一語が出る前に、田中はノートに視線を落とした。
代わりに、酒井の話の要点を、ノートに書き取った。
途中で、酒井が田中のほうを、ちらりと見た。視線は、すぐに次の話題に戻った。
朝会は、九時十五分に終わった。
朝会のあとの数十秒、田中は自分の心臓が早くなっているのに気づいた。普段なら、朝会の終わりは、コーヒーを淹れに立つタイミングだった。今日は、そうしなかった。
メンバーが解散して、各自のデスクに戻っていく。
田中はノートを抱えて、酒井のデスクの前に立った。
「酒井さん」
「うん」
「先週のレビューの指摘、何点か、分からないところがあります。十五分、お時間いただけますか」
酒井は、少しだけ、表情を変えた。
驚いた、というほどではない。むしろ、待っていた、という顔のように、田中には見えた。
「いいよ。今、行こうか」
「お願いします」
*
会議室Bは、空いていた。
田中はノートと、ノートパソコンを持って入った。酒井はコーヒーを片手に来た。
田中はノートパソコンを開いて、先週のレビューの指摘を、画面に並べた。
命名規則、テストの粒度、エラーハンドリングの方針、ログ出力のフォーマット。
「これ、毎回、レビューで指摘されてます」
「うん、知ってる」
「でも、私、指摘の意味を、自分で説明できないんです」
酒井は頷いて、コーヒーを一口飲んだ。
「具体的に、どこから分からない?」
「命名規則です。社内のドキュメントには、camelCaseで関数名って書いてあります。でも、その理由が、書いてない」
「うん、書いてない」
酒井は、ノートパソコンの画面を、田中のほうに向けてもらった。
「じゃあ、説明する」
酒井の説明は、十二分だった。
camelCaseはJavaScriptの伝統で、PythonのPEP8ではsnake_caseが標準だ。社内のコードベースでは、過去にこの両方が混在して、自動補完で関数名がうまく検索できなくなった。だから、社内ルールで揃えた。テストの粒度をどう決めるか、その判断基準も、社内固有の理由がある。
田中はノートに手書きで書き取った。途中で何度か、「すみません、もう一度お願いします」と聞いた。
聞きながら、田中は気づいた。三年間、自分は同じ指摘を見ても、毎回新しい指摘として処理していた。だから、毎回ゼロからやり直していた。今日、ようやく、指摘の根を理解しようとしている。
十五分が経って、酒井が立ち上がった。
「今日のは、よかった」
「え」
「『すごいですね』じゃなくて、『分からない』から入った。それで、一歩、踏み出した」
田中はノートを抱えたまま、何も言えなかった。
「よかった」と言われたのは、入社三年目で、初めてだった。これまで、酒井から「お疲れ」「ありがとう」は何度も言われていたが、「よかった」はなかった。
「来週、また聞きに来て」
「はい。お願いします」
酒井は会議室を出ていった。
田中は一人、テーブルに座ったまま、自分の手元のノートを見つめた。
手書きの字が、いつもより、丁寧に書かれていた。
*
昼休み、社員食堂で、田中は同期の小林を見つけた。
小林は、いつも通り、奥の席で、ひとりで食べていた。
「拓海」
田中は近づいて、声をかけた。
「あ、美咲。何?」
「ちょっと、いい?」
「いいよ、座って」
田中は、小林の向かいの席に座って、定食のトレイを置いた。
小林は、唐揚げを箸でつまみながら、こちらを見ていた。
「拓海が最近やってる新機能、ちょっと、教えてほしい」
小林が、箸を止めた。
「え」
「データベース設計、二週間悩んでるって、先週言ってたよね。私、その話を、ちゃんと聞きたい」
小林は唐揚げを口に運んでから、しばらく田中の顔を見ていた。
「いいけど、どうした?」
「ちょっと、踏み出してみようかと」
小林はちょっと笑って、頷いた。
「うん、いいよ。お昼の時間、二十分でよければ、話す」
田中はノートを開いた。
小林の話は、田中が想像していたよりも、ずっと具体的だった。テーブル設計の選択肢が三つあって、それぞれのメリット・デメリットを、データの読み書きパターンで判断する。
小林は、ナプキンに簡単な図を描いた。三つの選択肢、それぞれに対応するクエリパターン、ボトルネックの位置。田中は、ナプキンの図を、自分のノートに写し取った。
今、小林が悩んでいるのは、二週間後のリリースに間に合わせるための妥協点だった。
田中は、すべてが理解できたわけではなかった。でも、初めて、同期の業務が、自分の業務よりずっと深いところで動いていることが、分かった。
昼休みが終わって、田中はトレイを片付けながら、小林に言った。
「ありがとう。また聞かせて」
「うん、いつでも」
エレベーターのボタンを押すとき、小林が一度だけ、田中のほうを見た。何も言わなかった。
*
午後の仕事は、いつも通りだった。
商品マスタ取り込みバッチの月次更新、外部APIのレートリミット対応、それから新機能のサブリード打診のメールが、酒井から届いていた。
来期の正式アサインの確認、ということだった。田中はすぐに「お引き受けします」と返信した。
返信を打つあいだ、田中は、自分の手のひらを、もう一度見た。
震えていなかった。
夕方、田中は商品マスタ取り込みバッチのコードに、新しいテストを書いてみた。三年間、自分から進んでテストを書いたことはなかった。最初の一行は、酒井のレビュー指摘から、自分のノートに写しておいた書き方をなぞった。
動いた。
画面の中で、緑色のチェックマークが、ひとつ灯った。
プルリクエストは、まだ作らなかった。明日のレビューで、酒井に直接見せようと思った。
帰り道、田中はスマホを開いた。
藤本翔のトークルームを開く。一週間、何も打てなかったメッセージ欄に、田中はようやく、こう書いた。
『藤本、ありがとう。あの言葉、刺さった』
送信。
既読が、すぐについた。
返信は、十秒後に来た。
『うん』
短い、翔らしい返信だった。
田中はスマホを閉じて、地下鉄のホームへ降りた。
電車の中、田中はスマホで自分のGitリポジトリを開いた。
今日のコミットは、まだ一行もない。
でも、明日から、変わっていく予定だった。三年後、自分のコミット履歴が、新しい線を描いているはずだった。それが、サブリードを通じて積み上げる、田中自身の、次の三年だった。
窓の外、トンネルの暗い壁が、すごい速度で流れていく。三年前、入社したときに毎朝この電車に乗った。あのときは、車窓の景色を眺める余裕もなかった。今夜、田中は暗い壁の向こうに、わずかな光の点がいくつか流れていることに気づいた。
トンネルの中の駅に、人がぱらぱらと立っている。誰かの背中、誰かのスマホの光。それぞれが、自分の毎日を持っている、と田中は思った。
「先輩、すごいですね」を、田中はもう、言わなかった。
——「誰でもできるレベルの仕事しかしていない」。その言葉を、田中はようやく、自分の言葉にしようとしていた。




