C
コラボレーション & Git/コラボレーション/Lesson 04

コラボレーション — GitHub Flow · PR · コードレビュー · コミット規約

45分·theory

コラボレーション — GitHub Flow · PR · コードレビュー · コミット規約

🎯 この lesson を読み終えたら

この lesson を読み終えると、以下の 3 つを自信を持って実践できるようになります。

  • ✅ Pull Request / コードレビューの標準フロー
  • ✅ PR テンプレート + テストプランの作成
  • ✅ フィーチャーフラグ + 段階的デプロイ

学習目標をチェックリストとして持ち、すべてに答えられるようになったら lesson を閉じてください。

GitHub Flow — 最もシンプルなコラボレーションパターン

1. main からブランチを切るgit checkout -b feature/awesome
2. 作業 + 頻繁に push — コミット + 即 push(バックアップ + CI トリガー)
3. 早めに PR を作成Draft PR — 作業を続けながら並行してレビュー可能
4. 議論・修正 — コメント → 追加コミット → CI 再実行
5. 承認 + マージ — レビュー OK + CI グリーン → main にマージ
6. 自動デプロイ — CD が main を本番に自動デプロイ(通常 5 分以内)

> 💡 Git Flow との違い: develop/release ブランチなし。main の 1 本 + フィーチャーブランチのみ。SaaS に最適。

Pull Request 6 ステップサイクル

1. ブランチ + コミット — feature ブランチで作業 + コミット + push
2. PR 作成 — GitHub の Compare & pull request → タイトル・説明を記入
3. CI 自動実行 — GitHub Actions がビルド・テスト・リントを自動実行
4. レビュー依頼 — Reviewers を指定。Slack・メールでも通知
5. 議論・修正 — コメント → 追加コミット → 自動更新。承認まで繰り返す
6. マージ — 承認 + CI 通過 → main にマージ。ブランチは自動削除

良い PR タイトル:

  • fix bug
  • fix(auth): JWT 有効期限処理 — 401 レスポンス + リフレッシュトークン再発行

良い PR 説明(テンプレート):

markdown
## 変更点
- 何を変更したか

## 理由
- なぜ必要だったか

## テスト
- どのように確認したか (スクリーンショット・テスト結果)

## 関連イシュー
Closes #123

コードレビュー 6 原則

1. コードを見る、人を見ない — 「この部分がダメ」ではなく「こうしたらどうでしょう?」。人格攻撃は NG
2. 質問形式で — 「なぜこうした?」✅ / 「これは間違い」❌。議論を促す
3. 理由 + 提案 — 「NPE の可能性があります。null チェックはどうでしょう?」— 問題と解決策をセットで
4. 優先度を示す[Blocking]·[Suggestion]·[Nit] 重要度を明示
5. 良い点も褒める — 「この部分、スッキリしていますね!」— ポジティブなフィードバックで励ます
6. 学習資料を添付 — 関連ドキュメント・ブログのリンク — 共に成長する

レビュアーチェックリスト:

  • [ ] コードが PR の説明と一致しているか
  • [ ] テストは十分か
  • [ ] 命名は明確か
  • [ ] エラー処理・エッジケース
  • [ ] セキュリティ(シークレット・SQL インジェクション・XSS)
  • [ ] パフォーマンス(N+1・不要な計算)

コミット規約 — Conventional Commits

フォーマット: <type>(<scope>): <description>

type 一覧:

type意味
feat新機能feat(auth): JWT 発行を追加
fixバグ修正fix(api): null レスポンス処理
refactorリファクタリングrefactor(db): Repository を分離
docsドキュメントdocs: README の API セクションを更新
testテストtest(auth): 有効期限切れケースを追加
choreビルド・設定chore: pnpm 9 にアップグレード

自動化のメリット:

  • git log --grep "^feat" — feat コミットだけ表示
  • CHANGELOG の自動生成(semantic-release
  • SemVer の自動化: feat=minor / fix=patch / BREAKING CHANGE=major
  • commitlint で規約違反の PR を CI でブロック

> 💡 日本語メッセージも OK。肝心なのは type プレフィックス理由の明示 です。

💻 📌 コラボレーションワークフロー コマンドリファレンス
# === GitHub Flow 一サイクル ===
# 1. main を最新に同期
git checkout main
git pull origin main

# 2. feature ブランチを分岐
git checkout -b feature/awesome

# 3. 作業 + 頻繁に commit + push
git add .
git commit -m "feat(awesome): コアロジック追加"
git push -u origin feature/awesome

# 4. PR 作成 (GitHub CLI)
gh pr create --title "feat: awesome 機能" \
             --body "## 変更\n..." \
             --reviewer @teammate

# 5. PR ステータス確認
gh pr status
gh pr checks                  # CI 結果
gh pr view                    # レビューコメントを見る

# 6. レビュー反映後、追加コミット
git add .
git commit -m "refactor(awesome): レビュー反映 - null チェック追加"
git push                      # PR 自動更新

# 7. マージ (承認 + CI green 後)
gh pr merge --squash --delete-branch
# または GitHub UI の 'Squash and merge' ボタン

# === 良いコミットメッセージの例 ===
git commit -m "feat(auth): JWT 発行 + refresh トークン

- POST /api/auth/login → access·refresh トークン発行
- access 15 分 / refresh 7 日
- httpOnly cookie で refresh 保存 (XSS 防御)

Closes #42"

# === 変更統計 ===
git shortlog -sn --since="1 month ago"   # 個人別コミット数
git log --author="山田太郎" --oneline       # 特定の人のコミット
gh pr list --author "@me" --state merged  # 自分がマージしたPR

🤖 AI にこう頼んでみましょう

この lesson の概念を理解していれば、AI に具体的に指示できます。漠然とした「直して」ではなく、語彙を持ったリクエスト — それがトークン節約の出発点です。

  • 「この PR 本文を '## Summary / ## Test plan / ## Risks' テンプレートで書き直して」
  • 「このコードレビューに効果的なコメント(質問形式 + 代替案提示)の例を 3 つ教えて」

なぜこれがトークンを減らすのか

概念を知らないと、AI の回答を受け取っても「それって何ですか?」とまた聞き返す必要があります。その「聞き返し」がトークンを消費します。概念を一度覚えてしまえば、会話が 1 回でゴール します。

コラボレーション — GitHub Flow · PR · コードレビュー · コミット規約 - コラボレーション & Git