Pull Requestとは
Pull Request(PR)は、コード変更をレビュー・議論してからメインブランチに統合する仕組みです。
Pull Requestの目的
- 🔍 コードレビューで品質向上
- 💬 変更内容の共有と議論
- ✅ 自動テストの実行
- 📚 変更履歴の記録
- 🎓 チームメンバーの学習
良いPRの作り方
1. 適切なサイズ
- ✅ 小さく、レビューしやすいPR(推奨: 200-400行)
- ✅ 1つの機能・修正に集中
- ⚠️ 大きすぎるPRは分割
2. わかりやすいタイトル
❌ 悪い例:
- Update code
- Fix
- WIP
✅ 良い例:
- feat: Add user authentication with JWT
- fix: Resolve null pointer in login handler
- refactor: Extract database logic to repository3. 詳細な説明
## 変更内容
ユーザー認証機能を実装しました。
## 変更詳細
- JWT トークンベースの認証
- ログイン・ログアウトAPI
- ミドルウェアで認証チェック
## テスト方法
1. POST /api/login でログイン
2. トークンを取得
3. GET /api/profile にトークン付きでアクセス
## スクリーンショット

## チェックリスト
- [x] テストを追加
- [x] ドキュメント更新
- [x] エラーハンドリング実装
- [ ] パフォーマンステスト(TODO)PRの作成手順
ステップ1: ブランチで開発
# 最新のmainから開始
git checkout main
git pull origin main
# フィーチャーブランチ作成
git checkout -b feature/user-auth
# 開発・コミット
git add .
git commit -m "feat: Add JWT authentication"
# プッシュ
git push origin feature/user-authステップ2: GitHub でPR作成
1. リポジトリページを開く
2. 「Compare & pull request」ボタンをクリック
3. base: main ← compare: feature/user-auth を確認
4. タイトルと説明を記入
5. Reviewers を指定
6. Assignees を設定(自分)
7. Labels を追加(enhancement, bug, documentationなど)
8. Projects / Milestone を設定(任意)
9. 「Create pull request」をクリックステップ3: Draft PRの活用
まだレビュー不要な場合:
「Create draft pull request」を選択
- 途中経過の共有
- CI/CDテストの実行確認
- 早期フィードバックの獲得
準備ができたら「Ready for review」に変更コードレビューの受け方
レビューコメントへの対応
レビュアーからコメントが来たら:
1. コメントを読んで理解
2. 必要に応じて議論
3. コードを修正
4. コミット・プッシュ
git add .
git commit -m "fix: Handle edge case in auth"
git push origin feature/user-auth
# PRに自動的に反映される建設的なレスポンス
✅ 良い返答:
「ご指摘ありがとうございます。確かにエッジケースの
考慮が漏れていました。修正しました。」
「なるほど、その方法の方が読みやすいですね。
変更します。」
❌ 避けるべき返答:
「これで動くので問題ないです」
「時間がないので後で」Suggestion機能の活用
レビュアーが提案したコードを直接適用可能:
1. Suggestionコメントを確認
2. 「Commit suggestion」をクリック
3. そのままコミットされるレビュアーとして
効果的なレビュー観点
- 機能性: 要件を満たしているか
- バグ: エラーハンドリング、エッジケース
- 可読性: 理解しやすいか
- パフォーマンス: ボトルネックはないか
- セキュリティ: 脆弱性はないか
- テスト: 適切なテストがあるか
コメントの書き方
✅ 建設的なコメント:
「この部分、null チェックがないとエラーになりそうです。
`if (user) { ... }` を追加してはどうでしょうか?」
「ループの中で毎回DB接続しているので、
事前に接続を確立しては?」
❌ 避けるべきコメント:
「これはダメです」
「なぜこんなコードを書いたの?」レビューステータス
Comment: コメントのみ(承認なし)
Approve: 承認(マージ可能)
Request changes: 修正が必要自動化機能
GitHub Actions でCI/CD
# .github/workflows/pr-check.yml
name: PR Checks
on:
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- run: npm install
- run: npm test
- run: npm run lintStatus Checksの必須化
Settings > Branches > Branch protection rules
✅ Require status checks to pass before merging
- CI/CD Tests
- Lint
- Security Scan自動コードフォーマット
# .github/workflows/format.yml
name: Auto Format
on:
pull_request:
branches: [main]
jobs:
format:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: npm run format
- uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: "style: Auto format code"マージ方法
1. Create a merge commit
git merge --no-ff feature/user-auth
特徴:
- すべてのコミット履歴を保持
- マージコミットが作成される
- 誰が何をマージしたか明確
向いている:
- 履歴を完全に保持したい
- フィーチャーブランチの流れを残したい2. Squash and merge(推奨)
複数のコミットを1つにまとめる
特徴:
- mainブランチがクリーン
- 小さいコミットを集約
- レビュー履歴は保持
向いている:
- クリーンな履歴が好み
- 開発中の細かいコミットを隠したい3. Rebase and merge
コミットをmainの先頭に追加
特徴:
- 一直線の履歴
- マージコミット不要
- コミット順序が時系列
向いている:
- リニアな履歴が好み
- マージコミットを避けたいPRテンプレートの設定
テンプレートファイルの作成
# .github/pull_request_template.md
## 📝 変更内容
## 🎯 目的
## 📋 変更詳細
-
-
## 🧪 テスト方法
1.
2.
## 📸 スクリーンショット
## ✅ チェックリスト
- [ ] テストを追加した
- [ ] ドキュメントを更新した
- [ ] エラーハンドリングを実装した
- [ ] パフォーマンスを考慮した
- [ ] セキュリティを考慮した
## 🔗 関連Issue
Closes #
## 💭 その他
便利な機能
ドラフトPR
用途:
- WIP(Work In Progress)の共有
- 早期フィードバック
- CI/CDテストの確認
作成方法:
「Create draft pull request」を選択PR へのコメント記法
# コードブロック
```javascript
const user = getUser();
```
# リンク
See #123
Closes #456
Fixes #789
# メンション
@username レビューお願いします
# タスクリスト
- [x] 実装完了
- [ ] テスト追加Co-authored-by
ペアプログラミング時:
git commit -m "feat: Add feature
Co-authored-by: Partner Name " トラブルシューティング
コンフリクト発生時
1. ローカルで最新のmainをマージ
git checkout feature/my-feature
git fetch origin
git merge origin/main
2. コンフリクト解決
# ファイルを編集
git add .
git commit -m "Resolve merge conflicts"
3. プッシュ
git push origin feature/my-featurePR が大きすぎる場合
1. 複数のPRに分割
- PR1: データモデル
- PR2: API実装
- PR3: UI実装
2. または「stacked PR」
base: main ← feature/step1
base: feature/step1 ← feature/step2CI/CD が失敗
1. Actions タブでログ確認
2. ローカルで同じコマンド実行
3. 修正してプッシュ
4. 自動的に再実行されるベストプラクティス
1. 早めにPRを出す
- Draft PR で早期フィードバック
- 大きな手戻りを防ぐ
2. セルフレビューをする
PR作成後、自分で一度レビュー:
- Files changed タブで確認
- 不要なコメント削除
- デバッグコード削除3. レビュアーの負担を減らす
- 適切なサイズ
- 詳細な説明
- テスト済み
4. レビューは24時間以内
- 迅速なフィードバック
- 開発速度の維持
まとめ
効果的なPull Requestでコード品質とチームの生産性が向上します。
重要ポイント
- 小さく、レビューしやすいPR
- 詳細な説明とコンテキスト
- 建設的なコードレビュー
- 自動化でチェック
- 迅速なフィードバック
次のステップ
- GitHub Actions で高度な自動化
- セマンティックバージョニング
- リリースノート自動生成