Home

マージされるプルリクエスト(PR)の書き方:8万件のデータから導く効果的な説明の要素

公開日

img of マージされるプルリクエスト(PR)の書き方:8万件のデータから導く効果的な説明の要素
•••

日々のソフトウェア開発において、プルリクエスト(PR)の説明文にどこまで詳細な情報を書くべきか、迷うことはありませんか?簡潔すぎるとレビュアーに意図が伝わらず、逆に長すぎると書く側も読む側も負担が大きくなってしまいます。

本記事では、チューリッヒ大学などの研究チームが発表した論文「The Value of Effective Pull Request Description」に基づき、データが示す本当に意味のあるPRの書き方について解説します。

推奨されるPR説明文の「8つの要素」

本研究は、156のGitHubプロジェクトから収集した8万件のPRデータと、64名の開発者へのアンケートを基に分析を行っています。対象プロジェクトは「外部コントリビューターによるPRが33%以上」「テストファイルが存在する」「PR総数が200件以上」といった条件を満たす活発なリポジトリから厳選されています。

研究チームはまず、業界のベストプラクティスやコミュニティのガイドラインを調査し、良いPRの説明文に含まれるべき要素を8つに分類しました。それが以下の表にまとめたものです。

図表1:PR説明文の分類

要素定義
PRの目的 (Purpose)変更の最終的な目標を説明する
PRの理由 (Reason)なぜその変更が必要なのかを説明する
コード変更の説明 (Cod Exp)変更されたコードの詳細を説明する
関連Issueへのリンク (Link)関連する課題とリンクさせて追跡可能性を提供する
必要なフィードバックの種類 (Feedback Type)作成者がレビュアーに期待するフィードバックの種類を指定する
ファイル確認順序の案内 (Order)変更されたファイルを確認する順序を提案する
テストの説明 (Test Exp)変更がどのようにテストされたかを説明する、または関連テストに言及する
スクリーンショット (Screenshots)視覚的な証拠を提供する

これらの要素は、PRをレビューする際の文脈を理解しやすくするために推奨されています。なお、スクリーンショットはUI変更などの特定の文脈にのみ依存するため、以降のデータ分析からは除外されています。また、これらすべての要素を毎回書く必要があるわけではありません。次のセクションからは、どの要素がどのような効果をもたらすのかを紐解いていきます。

マージ率を高める「インタラクション指向」の要素

PRの説明に特定の要素を含めることで、実際のコードレビューの成果にどのような違いが生まれるのでしょうか? 8万件のPRデータを分析した結果、マージ率を劇的に引き上げる「特定の要素」 が存在することが明らかになりました。

データから判明した重要な事実は以下の2点です。

  • 「コード変更の詳細な説明(Cod Exp)」を入れるとマージ確率が12〜20%UP コードの仕組みを適切にテキストで補足することは、レビュアーの理解を助け、承認を得るために確実に有効に働きます。
  • 「必要なフィードバックの種類(Feedback Type)」を指定するとマージ確率が64〜72%UP 作成者がレビュアーに対して「どのような視点で見てほしいか」を明記する要素です。驚くべきことに、この要素が含まれているPRは 全体のわずか16.2% に過ぎませんでしたが、マージ率への影響は絶大でした。

この「必要なフィードバックの種類」のように、単なるコード内容の説明にとどまらず、レビュアーとのやり取りを円滑にする要素を、本研究では 「インタラクション指向の要素」 と呼んでいます。

「セキュリティの観点から見てほしい」「ここから先はUIの確認をお願いしたい」など、レビュアーの注意を適切な箇所に向けさせることで、結果的に有意義な議論が促され、極めてスムーズなマージへと繋がっているのです。

レビュアーが主観的に重視する「記述的」な要素

データ上は「フィードバックの種類を指定すること(Feedback Type)」がマージ率向上に直結していましたが、実際の現場でコードをレビューする開発者たちは、別の情報をより頻繁に求めているという興味深いギャップも浮き彫りになりました。

以下の図表は、開発者が「レビュー業務において、どの要素が重要だと感じているか」を示したものです。

図表2:開発者が各要素を重要だと感じるPRの割合 図表2:開発者が各要素を重要だと感じるPRの割合

アンケート結果によると、現場の開発者が圧倒的に高く評価しているのは以下の3つです。

  1. PRの目的 (Purpose)
  2. PRの理由 (Reason)
  3. 関連Issueへのリンク (Link)

これらは変更の背景や事実を説明する 「記述的な要素」 です。多くの回答者が「これらの要素はほぼすべてのPRにおいて重要である」と答えています。

現場がこれらの「記述的な要素」を重視する理由は、レビュー時の理解を助けるためだけではありません。将来的にコードの変更履歴をたどる際や、バグの原因を調査する際の 「貴重なドキュメント(記録)」として機能するから です。

一方で、先ほど「マージ率に最も貢献する」と紹介した「必要なフィードバックの種類」などのインタラクション指向の要素は、現場の感覚としては「一部の複雑なPRにおいてのみ重要視される」という結果にとどまりました。

PRの説明が自発的に書かれる要因

優れたPRの説明が常に書かれるわけではありません。研究チームは、どのような状況で開発者が自発的に詳しい説明を書くのかについても調査しています。

分析の結果、設立から時間が経っている成熟したプロジェクトや、認知的複雑さが高い(理解が難しい)コードの変更、そしてテストコードが含まれるPRにおいて、説明文が詳細に書かれやすいことが分かりました。これは、開発者が「自分のコードを理解してもらうのが難しそうだ」と感じた際に、相手の負担を減らすための認知的な補償行動として説明を充実させていることを示唆しています。

逆に、多くのファイルを削除するだけのPRや、すでに多数のPRを提出している経験豊富なコントリビューターによる変更では、説明が省略されやすいことも確認されました。チーム内での信頼関係や暗黙の了解が形成されている場合、文章での説明は簡略化される傾向にあります。

まとめ:状況に応じた効果的なPR作成のために

これまでの分析から、効果的なPRの説明とは、単なるコードの解説ではなく、文脈に応じたコミュニケーションツールであることが分かります。

日々の業務に活かすためのポイントは以下の2点です。

  1. 基本となる背景を必ず残す: PRの「目的」や「関連Issueへのリンク」などの記述的な要素は、後から参加するメンバーや将来の自分のために、可能な限り記載するようにします。
  2. 複雑な変更にはレビューの方向性を示す: 変更規模が大きい場合や複雑なロジックを含む場合は、「必要なフィードバックの種類(例:セキュリティの観点から見てほしい等)」といったインタラクション指向の要素を必ず添えます。

これらを意識してPRを作成することで、レビュアーの負担を大きく減らし、より生産的なチーム開発を実現できるはずです。

Author: vonxai編集部

Google Scholarで開発生産性やチーム開発に関する論文を読むことが趣味の中の人が、面白かった論文やレポートを記事として紹介しています。