新卒エンジニアがGitHubのp-rを整理した話

みなさんはじめまして!
あしたのチーム 新卒エンジニアの中山です。
リモートワークのおかげで家から出ることがめっきりと減り、体重がこの1年で20キロほど増えてしまいました・・・。
明日こそは運動しよう!と寝る前に考えつつも、朝起きるとそんなことすっかり忘れていてる・・・
そんな毎日を送っています。

さて、今回は「GitHubにあるApprove待ちのPullRequest(以降p-r)たちをどうにかしよう」という内容でお話させていただきます!

みなさんの開発現場ではしっかりとp-rのreview・mergeがされているでしょうか?
p-rはたくさん投げられるけどレビューがされない、それがどんどん溜まっていきどれからレビューしていいのかわからない!!!
こんな経験ないですか?
もしあったら「わかるわかる大変だよね〜」なければ「こんなことあるのか大変だね」くらいの軽めのスタンスでみていただけると幸いです笑

中山が参加したプロダクトでは、この問題が発生していて混乱を招いていました。
なので、この問題を解決するために中山が実際に行動した軌跡をお話していきます!

はじめに

ある日、ぽけーっと仕事をしていた中山と、真面目に仕事をしていた新卒同期のもとにマネージャからお話がありました。
現状p-rがたくさんありどれから手を付けていいのかわかりづらくなっていたため、レビュー待ちのp-rをリスト化して部内に公開している。しかし、他に抱えているタスクの方が優先度高めなので、新卒メンバーにこのリスト作成をやってほしいとのことでした。

  • マネージャ「今Approve待ちのp-rをリスト化しているんだけど代わってくれないかな?」
  • 中山「りょーかいっす!やっときます!」
  • マネージャ「作り方に困ったらいつでも聞いてください」
  • 中山「りょーかいっす!すぐ聞きます!」
  • マネージャ「じゃ、おねがいします」
  • 中山「りょーかいっす!」
  • 新卒Mくん「じゃ、おねがいします」
  • 新卒Yくん「じゃ、おねがいします」
  • 中山「???」

中山がこのタスクを引き継ぎ、リストを作成することになりました。

そもそもなぜこんなことが?

そもそも論、なぜp-rのレビューがされずどんどん数が溜まっていくという事象が発生してしまうのか中山は疑問に思っていました。なので中山なりにその原因を調べてみました!

考えられる原因リスト

  • p-rのサイズが巨大
  • レビューする箇所のプロダクトの仕様がわからない
  • testが通っていない
  • ひっそりと作られたp-rが気付かれない
  • レビュアーの設定が曖昧
  • レビュアーが忙しい
  • レビュアーがいない
  • p-rの書き方の自由度が高め
  • issueとp-rがリンクしていない 等々・・・

こんな感じで色々な原因があり、それが混在することでp-rがどんどん溜まっていっちゃうよ・・・
という流れですね。もちろん他にも様々な原因はあります。
うちのプロダクトも全てに当てはまるわけではないですが、色々な問題が絡み合ってp-rが溜まっていました。

実際に行ったこと

中山はこの問題の闇の深さを垣間見たところで実際の作業に入りました。
p-rといっても内容によって様々なものがあります。
mergeされるブランチはどこなのか、Approveはきちんとされているのか、指摘された内容を修正してあるかどうか、testは通っているか等の条件も存在します。
なのでp-rをまとめるために以下のような分け方でリストを作成しました。

  • リリース可能
  • コンフリクト解消すればリリース可能
  • testが通ればリリース可能
  • merge可能
  • Approveが必要
  • SRE/DX改善系
  • URL統一系
  • Coffeescript置き換え系

作成したリストは月曜日の朝には確認できるように毎週金曜日に公開したり、
リスト内のp-rで、mergeされたものがあれば毎日業務終わりに更新したりと、手動でやる作業が多かったため割と時間がかかってましたね。それでもないよりあったほうが周りの助けになると考えれば全然苦ではなかったです。
(さも中山が全部一人でやってるみたいな言い方ですが、マネージャと新卒メンバーの手助けがあったり、そもそもマネージャが作成したものを参考にして作っているので中山自身が新しいものを生み出した、みたいなことはほぼありません。笑)

効果

中山の感覚だと、少なからず効果はあったのではないかと感じています。
作成したリストのかわいそうなp-rたちはみんな巣立って(merge)いきましたし、全体のp-rの数もだんだんと減っていったので作ってよかったなと思いました。
あとは巣立っていくp-rたちを見て、嬉しいがなぜか悲しい、子を送り出す親のような気持ちになりながら作業していました。

学んだこと

  • 他のエンジニアの方々がどのような作業をしているのかをよく見ることができた
  • どんなp-rが見やすいのか、レビューされやすいのか知った
  • プロのエンジニアの働き方を見せつけられた
  • 開発って大変だなと改めて認識した

初学者ならではの学びではありますが、今回の経験なしにはなかなか得られない知識があってやってよかったと思いました。それと、つよつよなエンジニアの方々でも頭を悩ませながら開発をしていて、やっぱり開発ってレベル高いんだな大変だなと思いました。
ただ、これから勉強頑張って一人前のエンジニアになるぞー!っていうやる気も出ましたね。笑

最後に

1ヶ月ほどp-rリストを作成していましたが、マネージャがGitHubのラベル機能を整理してくださったのでこのリストもお役御免となりました。わかりやすいは正義!
作業はどんどん自動化 & 簡略化していきましょう!効率上げていきましょう!