0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitHubで学ぶ効率的なプルリクエストの作り方とレビューの受け方

Posted at

皆さんこんにちは!ソフトウェア開発において、プルリクエスト(PR)は単なるコード統合の手段ではなく、知識共有やコード品質向上のための重要なプロセスです。しかし、効果的なPRの作成方法やレビューの受け方を体系的に学ぶ機会は意外と少ないものです。

本記事では、PRを通じたスムーズなコラボレーションを実現するためのテクニックを紹介します。新人エンジニアの方はもちろん、チームのPRプロセスを改善したいリーダーの方にも役立つ内容になっています。

目次

  1. 効果的なPRの作り方
  2. PRの内容整理のテクニック
  3. レビューを受ける際のポイント
  4. 実践例:良いPR vs 悪いPR
  5. PRレビューツールとその活用法
  6. チーム全体でのPR文化の育て方
  7. まとめ:PRベストプラクティスチェックリスト

効果的なPRの作り方

PRは単にコードを提出するだけのものではありません。効果的なPRは、レビュアーの時間を尊重し、スムーズなレビュープロセスを促進します。

PRを出す前の準備

PRを作成する前に、以下のことを確認しましょう:

  • ✅ ローカルでテストが通ることを確認(単体テスト、結合テストなど)
  • ✅ コードスタイルが規約に準拠していることを確認
  • ✅ 不要なコメントアウトやデバッグコードの削除
  • ✅ ブランチが最新のmain/masterブランチと同期されている

適切なPRサイズ

大きすぎるPRはレビューが難しく、小さすぎるPRはコンテキスト把握が難しくなります。

  • 🎯 理想的なPR規模: 変更行数200〜400行程度
  • 📊 変更が大きくなる場合は、複数のPRに分割することを検討
  • 🧩 機能単位で独立しており、テストが可能な単位でPRを作成

わかりやすいタイトルと説明文

良いPRタイトルと説明文は、レビュアーがコンテキストを素早く理解するのに役立ちます。

PRタイトルの例

❌ 悪い例: バグ修正
✅ 良い例: ユーザー登録時のメールアドレスバリデーションバグを修正

PR説明文のテンプレート

## 概要
<!-- 変更の概要を簡潔に説明 -->
ユーザー登録フォームでメールアドレスのバリデーションが正しく機能していなかった問題を修正。

## 修正内容
<!-- 主な変更点をリストアップ -->
- 正規表現パターンを更新してRFC5322に準拠
- バリデーションロジックを共通化
- エラーメッセージをより具体的に改善

## テスト方法
<!-- 動作確認方法を記載 -->
1. `/register` にアクセス
2. 無効なメールアドレスでフォーム送信
3. 適切なエラーメッセージが表示されることを確認

## スクリーンショット
<!-- UI変更がある場合 -->
Before:
![修正前](https://example.com/before.png)

After:
![修正後](https://example.com/after.png)

## 関連Issue
Fixes #123

PRの内容整理のテクニック

コミット粒度の適切な分け方

コミットは論理的な単位で分割することで、変更の意図を明確にし、レビューや将来の変更追跡を容易にします。

✅ 良いコミット分割の例:
- feat: ユーザー登録フォームにメールアドレスバリデーションを追加
- refactor: バリデーションロジックを共通モジュールに抽出
- test: メールアドレスバリデーションのテストケースを追加
- docs: READMEにバリデーションルールの説明を追加

コミットメッセージの書き方

Conventional Commitsの形式を採用すると、変更の種類が一目でわかります:

<type>[optional scope]: <description>

[optional body]

[optional footer(s)]

typeの例:

  • feat: 新機能
  • fix: バグ修正
  • docs: ドキュメントのみの変更
  • style: コードの意味に影響しない変更(スペース、フォーマットなど)
  • refactor: バグ修正や機能追加ではないコード変更
  • test: テストの追加・修正
  • chore: ビルドプロセスやツールの変更

Draft PRの活用方法

作業途中でフィードバックが欲しい場合や、アプローチの方向性を確認したい場合には、Draft PRを活用しましょう。

Draft PRのスクリーンショット

Draft PRのメリット:

  • 早期からレビュアーに方向性を共有できる
  • レビュアーは「まだ作業中」と理解した上でフィードバックできる
  • CI/CDパイプラインのテストは実行されるが、マージはブロックされる

レビューを受ける際のポイント

建設的なフィードバックの受け取り方

レビューは批判ではなく、より良いコードを作るための協力プロセスです。

  • 🧠 フィードバックを個人攻撃と捉えず、コードに対する意見として受け止める
  • 🤔 理解できないコメントには、丁寧に質問し理解を深める
  • 🙏 有益なフィードバックには感謝の意を示す

反論すべき時と受け入れるべき時

すべてのフィードバックに盲目的に従う必要はありません。建設的な議論も重要です。

  • ⚖️ 反論する場合は、技術的な根拠を示す
  • 🔄 代替案を提示すると、より建設的な議論になる
  • 🤝 最終的には妥協点を見つけることも大切

レビューコメントへの返答例

👍 良い返答例:
「ご指摘ありがとうございます。確かにこの部分は冗長ですね。修正します。」

「このアプローチを選んだ理由は、パフォーマンスを考慮したためです。具体的には...という懸念があります。別の解決策として...はいかがでしょうか?」

👎 避けるべき返答例:
「わかりました(だけで終わる)」

「これが正しいやり方です」

修正後のフォローアップ

修正後は、レビュアーが変更を追跡しやすいように配慮しましょう。

  • 🔄 修正完了後に「修正しました」などのコメントを残す
  • 📌 複雑な修正の場合は、どのように対応したかを説明
  • 🔍 レビュアーが見るべき新しいコミットへのリンクを提供

実践例:良いPR vs 悪いPR

悪いPRの特徴

タイトル: 更新

説明:
機能を追加しました。

問題点

  • タイトルが抽象的すぎる
  • 何が変わったのか説明がない
  • レビュアーがコンテキストを理解できない
  • テスト方法が記載されていない

良いPRの特徴

タイトル: feat: ユーザーダッシュボードに月次利用統計グラフを追加

説明:
## 概要
ユーザーが自分の月間アプリ利用状況を可視化できるように、ダッシュボードに折れ線グラフを追加しました。

## 実装詳細
- React ChartJSを使用して折れ線グラフコンポーネントを実装
- APIからデータを取得する非同期処理の追加
- レスポンシブ対応(モバイル/デスクトップ両方で最適表示)
- ダークモード対応

## テスト方法
1. ログイン後、ダッシュボードページに遷移
2. 「利用統計」タブをクリック
3. 月次グラフが表示されることを確認
4. データがない月は0として表示されることを確認

## スクリーンショット
![ダッシュボードグラフ](https://example.com/graph.png)

## 関連Issue
Closes #456

PRレビューツールとその活用法

GitHubには、効率的なレビューをサポートする様々な機能があります。

GitHubの便利な機能

Suggested Changes(変更提案)

レビュアーが直接コード修正を提案できる機能です。

Suggested Changes

提案された変更は「Commit suggestion」ボタンで簡単に適用できます。

File View Options(ファイル表示オプション)

ファイルの差分表示方法をカスタマイズできます:

  • Unified:変更箇所を一つの表示で確認
  • Split:変更前/変更後を左右に分けて表示
  • Hide whitespace changes:空白の変更を無視

File View Options

外部ツールの活用

  • GitHub CLI: コマンドラインからPRの作成・レビューが可能
  • Pull Panda: レビュー分析やリマインダー機能を提供
  • CodeSee: PRの変更が与える影響範囲を可視化

チーム全体でのPR文化の育て方

PRテンプレートの活用

.github/PULL_REQUEST_TEMPLATE.mdファイルを作成することで、PR作成時に自動的にテンプレートが適用されます。

# PR概要
<!-- 変更の概要を記載してください -->

## 変更内容
<!-- 主な変更点を箇条書きで記載してください -->

## 関連Issue
<!-- 関連するIssueがあれば記載してください -->

## テスト方法
<!-- テスト方法を記載してください -->

## スクリーンショット(任意)
<!-- UI変更がある場合はスクリーンショットを添付してください -->

## チェックリスト
- [ ] テストを追加・更新しました
- [ ] ドキュメントを更新しました
- [ ] コードスタイルに準拠しています
- [ ] セルフレビューを実施しました

レビュープロセスの標準化

チーム内でレビュー基準を統一することで、一貫性のあるフィードバックが可能になります。

レビュー時のチェックポイント例:

  • 機能要件を満たしているか
  • テストが十分か
  • セキュリティ上の問題はないか
  • パフォーマンスへの影響は許容範囲内か
  • コーディング規約に準拠しているか

コードオーナーシップの考え方

CODEOWNERSファイルを設定することで、特定のディレクトリやファイルの変更時に自動的にレビュアーを割り当てられます。

# 例: backendディレクトリの変更にはbackendチームを自動アサイン
/backend/ @organization/backend-team

# 例: セキュリティ関連ファイルにはセキュリティチームをアサイン
/security/ @organization/security-team
*.security.js @organization/security-team

# 例: 特定の個人をアサイン
/docs/ @username

まとめ:PRベストプラクティスチェックリスト

PR作成時のチェックリスト:

  • 適切なブランチ名を付けた(例:feature/add-user-stats
  • PR前にローカルでテストを実行した
  • 適切なサイズにPRを分割した
  • わかりやすいPRタイトルを付けた
  • PR説明文に変更内容、テスト方法を記載した
  • コミットを論理的な単位で分けた
  • コミットメッセージは変更の意図を明確に伝えている

レビュー受け方のチェックリスト:

  • レビューコメントに丁寧に返答している
  • 修正後にフォローアップコメントを残している
  • 技術的な議論は根拠を示している
  • レビュー後の修正をわかりやすくしている

おわりに

効果的なPRの作成とレビューのプロセスは、単にコードを統合するだけでなく、チーム全体の知識共有や技術力向上にも大きく貢献します。「PRは面倒な手続き」ではなく、「価値を生み出すコラボレーションの機会」と捉えることで、チーム全体の開発効率と品質向上につながるでしょう。

皆さんのチームではどのようなPRプロセスを実践していますか?良い工夫や課題があれば、コメント欄で共有いただけると嬉しいです!


参考リンク

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?