すぐにapproveがもらえるプルリクエストを作るコツ3選!これで開発生産性爆上がりです
はじめに
どうも、まめ太郎です!
日々の開発現場において、プルリクエスト(PR)が思うようにマージされず、レビューコメントのラリーが続くという経験は、多くのエンジニアが抱える共通の悩みですよね。
もちろん、レビューによる指摘は品質向上に大いに役立ちますが、指摘内容があまりに多い場合、精神的な負荷がかかることもあることでしょう。また、PRがマージされるまでの時間が延びることも、開発生産性に影響を及ぼします。
この記事では、「頑張って実装しているのにPRが全然マージされない」「いつもレビューコメントが多すぎて辛い」と感じている方に向けて、PRのマージを早めるための具体的なポイント紹介します!
1. PRが大きすぎる
マージまでに時間がかかる原因の8割くらいは、PRの規模が大きすぎることに起因しているのではないかと思います。
レビュワーにとって、大きな差分が含まれるPRはレビューを始めるまでの精神的なハードルが高いものです。結果として、依頼を受けた際に「diffが多すぎる」と判断し、レビューを後回しにしてしまうこともあります。
このような状況を避けるためには、意識的に差分を小さくする工夫が必要です。
差分を小さくするための対策
タスクの事前分解
新機能を実装する場合、最初に大きなタスクをいくつかの小さなチケットに分解しておくことを推奨します。
例えば、フロントエンドの新機能実装では、以下のようなタスクに分けるとよいでしょう。
- 型定義の追加
- API呼び出し処理の実装
- UIの実装
それぞれのチケットに対して個別のPRを作成することで、変更点が限定され、レビュワーも迅速に確認しやすくなります。また、タスク分解により各チケットの工数の見通しも立てやすくなります。
変更ファイル数の目安
僕の経験では、変更されるファイル数が5個以内程度であれば、「diffが少ない」と感じやすく、レビューが進みやすいと考えています。
チーム内で適切な基準を共有することも、効率的なレビューの促進に寄与するでしょう。
2. 事前に実装方針の合意が取れていない
ある程度実装に時間をかけ、「これが自信作だ!」と考えた結果、PRを提出したものの、レビューで多くの指摘を受けるという経験は、どのエンジニアも一度は経験しているのではないでしょうか。
こうした事態の多くは、実装前にレビュワーやチームメンバーと十分な方針のすり合わせが行われなかったことに起因していると思われます。
実装前の方針確認の重要性
例えば要件に対して2つの実装方法が考えられる場合、実装に取りかかる前に「方法A」と「方法B」のそれぞれのメリット・デメリットを整理し、どちらを採用するかについて関係者と相談することが重要です。
これを示した上で、「こういう理由で方法Aの方がいいと思うからAで進めたい」といった形で事前に合意が取れていれば、実装後のレビューがスムーズに進みます。
特に経験が浅いジュニアなエンジニアは、自分だけの判断で実装を進めるのではなく、実装前の方針確認の習慣をつけることをお勧めします。これを徹底できれば、手戻りを防いで効率的なレビューを実現できます。
3. リファクタリングと機能追加を同時に行ってしまう
新機能を実装する際に、つい「ここも気になったから、ついでにリファクタリングしてしまう」というケースが少なくありません。
しかし、このように機能追加とリファクタリングを一度に実施すると、レビュワーは両方の変更点を確認する必要が生じ、レビュー作業が複雑かつ負担の大きいものになってしまいます。
リファクタリングと機能追加は分ける
リファクタリングが必要な場合は、まずリファクタリング専用のPRを作成し、改善を先に完了させる方法が効果的です。
その際に、「新機能実装に備えて、コードベースのリファクタリングを実施しました」といった一言を添えておくと、レビュワーも意図を把握しやすくなります。
その後、新機能の実装PRを出すことで、各変更点が明確となり、レビューの効率が向上します。
まとめ
以上のように、プルリクエストが迅速にマージされない主な原因として、以下の3点が挙げられます。
PRが大きすぎる
大きな差分はレビュワーの負担を増大させるため、タスクを細分化し、変更ファイル数を可能な限り5個以内に抑える工夫が必要です。
事前に実装方針の合意が取れていない
実装前に複数の実装方法について検討し、関係者と十分な相談・合意を行うことで、レビュー時の指摘を最小限に抑えることが可能です。
リファクタリングと機能追加を同時に行っている
リファクタリングと機能追加を分割し、リファクタリングのみのPRを先行して提出することで、各変更点が明確になり、レビューがスムーズに進みます。
これらの改善策を実践することにより、PRが迅速にマージされ、結果としてチーム全体の開発生産性向上に寄与するでしょう。今後も、より効率的な開発プロセスを実現するために、各自の実務に取り入れていただければ幸いです。
告知
この記事は以下の動画の要約です。
テキストで読みたい方向けに書きました。興味持ってくれた方はぜひ動画も見ていただけると嬉しいです!
『日本のソフトウェアエンジニアのマインドセットを強化する』をミッションとして、YouTubeで様々なコンテンツを発信していきます。
活動の励みになりますので、興味を持っていただけた方はぜひチャンネル登録&いいねよろしくお願いします!
以上、まめ太郎でした。
強くてかっこいいエンジニア目指して一緒に頑張りましょう!
Discussion