第21話「凪の夜、レビューを書く」(インタールード③)
この物語はフィクションであり、登場する人物、団体、地名、企業名等はすべて架空のものです。実在のいかなる存在とも関係ありません。
※ この話は白瀬凪の視点で描かれています。第9話の蒼太のPRに、20件以上のレビューを書いた夜の話です。
五月の下旬、水曜日の夜八時前。
フロアの灯りは、半分くらいに落とされていた。窓際の島と、入り口付近の島は無人。電源を切られたディスプレイが、街の灯りの薄い光を反射していた。
残っているのは、私と、組込みチームの林さんと、受託の別チームの誰か一人。それだけだった。
……静かだ。
胸の内で、つぶやいた。
ヨキエルは原則として、二十二時以降の残業を禁じている。緊急の障害対応や、納期が現実化したリリースのリカバリでなければ、部長承認なしには夜十時を過ぎて残れない。村瀬社長と遠野CTOが、繰り返し全社会議で言ってきた方針。私はこの方針を、ありがたく思っていた。
私の今夜の残業は、九時すぎまで。それは事前に諏訪マネージャーにも伝えてある。「桐谷くんの初めての本格的なPRを、今夜のうちに、ちゃんと見たい」と言ったら、諏訪さんは「うん、十時までに終わらせて、明日に持ち越さないでね」と頷いてくれた。
その範囲で、私は仕事を仕上げる。
……桐谷くんのPR、今夜、見る。
もう一度、そう決めた。
桐谷蒼太、入社二ヶ月目の新卒エンジニア。
今朝、彼が初めて私に出してきたレビュー依頼のPR。コードの差分、八十行ほど。テストケース、六本。
今日午前中、業務の合間に私はその差分をざっと開いてみた。最初の数行を読み、すぐにこれは丁寧に見るべきものだと判断した。
桐谷くんのコードは悪くなかった。むしろ新卒二ヶ月目としては、十分書けているレベルだった。
でも、悪くないと見過ごすことが、私のレビューの目的ではなかった。
彼がこれから三年、五年、十年、エンジニアとしてコードを書き続けていくとしたら、最初の本格的なPRで何を伝えるか。
それを考えると、ざっと見て、LGTM、というわけにはいかなかった。
業務の合間に断片的に読むのもよくない。集中できる時間にちゃんと見たかった。
だから今日、業務時間中は会議、別の案件のレビュー、自分のコードの作成、ドキュメントの更新、それらを順番に片付けてきた。十八時の定時のあとも、別件の仕上げが続いた。それも終えた今からの一時間あまりが、桐谷くんのPRを集中して見るための時間。
私は席を立った。
給湯室まで歩く。
給湯室の棚の隅に、私の名前のシールを貼った小さなジャスミンティーの袋が置いてある。地元の母が送ってくれた、お茶の葉のひとつ。会社で集中したい時、私はこれを淹れる。
マグカップにティーバッグを入れて、お湯を注いだ。立ちのぼる湯気にジャスミンの香りが乗った。
自席に戻った。
マグカップを机の端、MacBook Proのキーボードから少しだけ離した位置に置いた。
MacBook Proの画面。
桐谷くんのPRのページを開く。
最初に説明文を読む。
……桐谷くん、説明文、丁寧に書いている。
胸の内で、軽く頷く。
「何を変えたか」「なぜそうしたか」「テストはどう書いたか」。
書き方の形式が、私のConfluenceドキュメントの説明文の書き方と似ている。たぶん桐谷くんは、私の書いたドキュメントを参考にしている。
……良い、習慣。
そう、口の中でつぶやく。
次にコードの差分を開く。
ファイルが四つ。それぞれ変更行数は二十行ほど。合計八十行ほどの変更。
最初のファイルから一行ずつ読む。
二行目で私はペンを取った。
いや、ペンはいらない。代わりにレビュー画面のコメント機能を開く。
最初のコメント。
「`tmp` という変数名は、何を一時保存しているのか読む人に伝わらないと思います。例えば `pendingOrders` や `unprocessedItems` のように内容を示す名前にした方が、後から読み返した時に分かりやすいです」
書いて保存。
……変数名。
桐谷くんに「悪い」と言いたいわけではない。彼の `tmp` という選び方はたぶん、コードの中で一時的に何かを保持する、という意図を表していた。それは分かる。
でも、半年後、桐谷くん自身が自分のコードを見返した時、`tmp` の中身をすぐに思い出せるか。
たぶん、思い出せない。
だから、今変える。
次のコメント。
メソッドの分割について。
「このメソッド、八十行近くあります。読みやすさのために三つくらいに分割できると思います。例えば、入力検証、ビジネスロジック、結果出力、で分けるとそれぞれの責務が明確になります」
書いて保存。
……単一責任の原則、という言葉は敢えて使わなかった。
桐谷くんはたぶんその用語を知っている。けれど用語でぱっと分かった気になるよりは、具体的な分割の例を見せた方が身につく。
次のコメント。
異常系のテストについて。
「テストケース、正常系は六本あって十分です。ただ異常系のテストがありません。例えば、入力が空の時、入力が極端に長い時、入力に不正な文字が含まれている時、それぞれのテストを書いておくと後の保守性が、ぐっと上がります」
書いて保存。
……保守性。
この言葉が桐谷くんに響くかどうかは、分からない。新卒二ヶ月目で保守性と言われても、まだ実感はたぶん薄い。
でも、書く。
いつか桐谷くんが五年目、十年目になった時、この一行を思い出してくれるかもしれないから。
ジャスミンティーをひと口、飲む。
画面の時計を見る。
夜の八時十五分。
まだ四件目。
……まだ、たくさん、書くことがある。
胸の内でつぶやいて、私は続ける。
五件目、エラーハンドリングについて。
六件目、命名規則。
七件目、ログの出力方法。
八件目、設定ファイルの扱い。
九件目、コメントの書き方。
十件目、データの永続化のタイミング。
十一件目、トランザクションの扱い。
見る観点は、決めている。
命名。テスト。エラー処理。構造。ログ。設定。書く順番は、コードの上から下へ。読む人がコードと突き合わせやすいのは、その順だから。ただ、見落としがないかどうかは、最後に観点の側から数え直す。気分で見ると、気分の分だけ、穴があく。
社内の誰かが、私のレビューは観点で照らしてくる、と噂しているのを知っている。いい噂だと思う。観点が知られれば、出す側は二周目から、先回りができる。先回りされるために、私は観点を変えない。
書きながら私は、自分の新人時代を思い出していた。
……六年前。
私がヨキエルに新卒で入った頃。
配属されたのは別のチーム。今はもう組織再編でなくなった、自社サービスの別のチーム。
マネージャーは当時四十代の男性だった。
その人は優しい人と、社内で思われていた。声がいつも穏やかで、新人にも丁寧に接してくれた。
でも、コードレビューはしなかった。
私が入社して最初の三ヶ月、私の出したぜんぶのPRが「LGTM」のたった一行だけで承認されていた。
時々、絵文字がついていた。
……あの絵文字、誰が見ても、笑顔の絵文字だった。
その絵文字を思い出して、私は軽く目を伏せる。
三ヶ月、誰も私のコードをちゃんと見ていなかった。
私は自分のコードが正しいのか、間違っているのか、分からなかった。
でも、皆、笑顔で「白瀬さん、いいコード書くね!」と言ってくれた。
……私は信じてしまった。
半年後、本番で小さな障害が起きた。
私のコードが原因だった。
幸い被害は小さかった。けれどその時初めて私は、自分のコードがちゃんと見られていなかった、ということを知った。
マネージャーに聞いた。
「私のコード、ちゃんと、レビュー、されてました?」
マネージャーは笑顔のまま、こう言った。
「白瀬さんのコード、信頼してたから」
……信頼。
その言葉の本当の意味を、私はその時初めて理解した。
「LGTM!」の絵文字二つというのは、「あなたを見ていません」という意味だった。
だから私は、書く側に回った日から、一つだけ決めている。見たなら、見た分だけ、跡を残す。見ていないなら、承認のボタンを押さない。LGTMという四文字を使う日は、四文字の後ろに、ちゃんと中身がある日だけ。
優しさと見過ごしは、似ていてまったく違う。
六年前の自分が、今の桐谷くんとほぼ同じ立場だった。
桐谷くんはたぶん、もう気づいている。
社員食堂の給湯室の前で、別のチームの先輩二人が私の話をしているのを桐谷くんが聞いているのを、私は廊下でたまたま見た。
桐谷くんはたぶんその日から、「LGTM!」と、私の二十二件を対比し始めている。
……だから、私は書く。
そう胸で念じて、私は続ける。
十二件目、十三件目、十四件目。
書きながら私はもう一つ、思い出していた。
半年後の本番障害の後、別のシニアエンジニアの先輩が、私の席に来てくれた。
その先輩はもうヨキエルを退職している。今は東京の別の会社でテックリードをしていると聞く。
その人が私にこう、言ってくれた。
「白瀬さん、これからは私がレビューする。一行ずつ見る。たくさんコメント書く。それは白瀬さんを責めるためじゃない。白瀬さんが五年後、十年後、もっといいエンジニアになるため」
……一行ずつ、見る。
その言葉を、胸の内でなぞる。
その人の最初のレビューはPR一件あたり、三十件以上のコメントだった。最初は辛かった。自分のコードがこんなにも未熟なのかと、毎日、軽くショックを受けていた。
でも、半年続けて、私のコードは変わった。一年続けて、私の書き方は根本から変わった。
その先輩が退職する時、私にこう言った。
「白瀬さん、君がこれから書くドキュメントが、誰かを助けると思う」
……誰かを、助ける。
その言葉が、私のヨキエルでの軸になった。
今、私のConfluenceのドキュメントの作者欄、ランキング、一位。
書くたびに私は、その先輩のことを思い出している。
画面の時計を見る。
夜の八時五十二分。
もう二十件目。
……もう少し、ある。
そうつぶやいて、私は続ける。
二十一件目、二十二件目。書き終わって画面の時計を見る。
夜の九時、二十分。
二十二件、合計。
最後のサマリ、コメントを書く。
「桐谷くん、初めての本格的なPR、おつかれさまでした。コメント、たくさん書きました。一気に対応するのは大変だと思うので、優先度の高いものからゆっくり対応してください。分からないことがあれば、いつでも聞いてください」
書いて保存。
MacBook Proの作業を終えて、画面を閉じる前に、私はもうひとつだけ確認した。Confluenceの私の個人スペースに、今夜のレビューで気づいた共通点をひとことだけ追記した。「変数名・分割・異常系・エラーハンドリング、この四つは新卒の初回PRで毎回出る」と、一行だけ。これは社内のシステム、社内のネットワーク。家からは触れない場所。だから書くなら、今、ここで。
書き終えて、MacBook Proを閉じた。
マグカップの中のジャスミンティーは、最後のひと口分だけ残っていた。冷めていた。それを飲み干した。
……桐谷くん、明日、これを見て、何を思うんだろう。
ぼんやりと、そう思った。
ショックを受けるかもしれない。落ち込むかもしれない。
でも、桐谷くんはたぶん、ちゃんと対応してくれる。
なぜそう思ったのかは、自分でも分からない。けれど彼のPRの説明文の書き方を見て、私はそう感じていた。
桐谷くんは観察する人だ。
観察する人はレビューに、ちゃんと向き合える。
……次のPRも、書く。
そう、決めた。
これは私の選択。
六年前、私の先輩が、私に書いてくれた。
今度は私が書く。
その先輩がもうヨキエルにいなくても。
マグカップを給湯室で洗って、棚に戻した。
MacBook Proをロッカーに入れて、鍵をかけた。
退社時刻、夜の九時三十五分。深夜残業のラインの、二十五分前。私はそれを確認して、フロアの自分の席の灯りを落とした。
受付のセンサーライトが、私の通過を感知して、ぱっと点いて消えた。
外に出ると、五月下旬の夜の空気が、ふわっと私を包んだ。
バス停まで歩く五分。バスに揺られる二十分。降りた停留所から自宅のマンションまで、徒歩で五分。
マンションは川沿いの静かな通りにある、古い建物。私の部屋は三階、東向きの1LDK。
部屋の鍵を開けて中に入った。
玄関で靴を脱ぐ。
廊下に置いた段ボールの隅に、母から先週送られてきた小さな箱が、まだそのまま積んであった。中身は、地元の岩のりとお茶の葉。岩のり、私が小さい頃からお雑煮に必ず入っていた、実家の味だった。
箱の上に貼られたメモを、私はもう一度読んだ。
「凪、お正月、帰ってこなくていいの?」
母の字、だった。
……今年も、たぶん帰らない。
胸の内で、そうつぶやいた。新人時代の最初の三ヶ月、私が地元を離れてこの街にひとりで来て、誰にも見られないままコードを書いていた頃、母には何も言えなかった。あの頃から私は、年末年始は母の前ではなくこの部屋で過ごすようになっていた。母はそれを、たぶん察している。それでも毎年、岩のりを送ってくる。
あとでLINEで一行返そうと、胸の内で決めた。
いつもの順番で部屋着に着替えた。シャワーは寝る前。
机の上、紙のノートを開いた。これは私の個人のノート。会社のシステムにも、業務PCにも触れない、紙だけの場所。
ペンを取って一行、書いた。
今夜、桐谷くんに二十二件、書いた。
書いてから、その一行をしばらく見ていた。
もう一つ、思っていることがあった。
Confluenceの私の個人スペースには「失敗記録」というページの束を、私は今も書き続けている。最初のページは六年前、あの本番障害の翌日に書いた。以来、何かを学んだ夜、何かを間違えた朝、何かを後悔した昼休みのたびに、私は薄い記録を一行ずつ、重ねてきた。六年で、四百ページを少し超えた。誰にも見せていない。書く場所は社内のシステム。書くのは社内にいる時だけ。明日の昼休み、忘れずに今夜の一行を、あちらにも残しておこう。
書く場所は、私の中で三つに分けている。
チームAのConfluenceには、本番障害が起きるたびに「振り返り」ページを置く。これはチーム全員のためのページ。原因と対策を一行ずつ並べる場所。三年分以上、ぽつ、ぽつ、ぽつ、と並んでいる。
Confluenceの個人スペースの「失敗記録」は、誰にも見せないページ。書くのは、その夜の私自身の手の温度や、迷った半秒や、後悔の輪郭。これは私のためのページ。社内のシステムだから、社内でしか書けない。
そして家のこの紙のノート。これは更にもう一段、外には出ない場所。私の中の、いちばん奥の場所。
三つは別の場所にあるけれど、書く理由はたぶん同じ場所から出ている。
桐谷くんに渡した二十二件も、たぶん、その四百ページの延長線上にある。
紙のノートを閉じた。
シャワーを浴びて、寝る支度をした。
明日、桐谷くんは私のコメントを読んで、修正版を出してくる。
その時、私はまた画面を開いて彼の修正版を見る。
そしてたぶん、こう書く。
「修正、良いと思います」
「ありがとうございます」
二行、書く。
短い二行で十分。
桐谷くんがそれを読んだ時、何かを感じてくれたら、それで私の役割は、ひとつ果たされる。
部屋の灯りを消した。
窓の外、五月下旬の夜が静かに深まっていった。




