github-research-tool/FLOW.md
marketing-shibata50 fc1a75eec1 docs: MEMO.mdにConventional Commitsの詳細を追加
- コミットメッセージの標準化に関する概要を記載
- 基本構造と主要なtypeの説明を追加
- 実例を通じて具体的な使用方法を示す
- GitHub CopilotやCI/CDとの統合についても言及
2025-07-31 21:59:10 +09:00

8.2 KiB
Raw Blame History

GitHub Development Flow Guide

このガイドは、Git worktreeを活用した効率的な開発フローをまとめたものです。

📋 基本的な開発フロー

1. 新規開発の流れ

計画フェーズ

  1. リポジトリの作成: GitHub上でプロジェクト用のリポジトリを作成
  2. ブランチ戦略の決定:
    • main: リリース可能な安定版
    • develop: 開発統合用ブランチ
  3. 仕様書の作成: README.mdに「何を」「なぜ」「誰のために」を記載
  4. タスクの洗い出しと分解: 数時間〜1日で完了できるレベルまで細分化
  5. 全タスクのIssue化: GitHub Issuesに登録し、Projectsボードで管理

開発フェーズ

# 1. Issueの選択
# GitHub ProjectsでIssueを「進行中」に移動

# 2. worktreeでブランチ作成
git worktree add -b feature/11-login-ui ../login-ui-work develop
cd ../login-ui-work

# 3. 開発作業
# コーディング作業

# 4. コミット (Conventional Commits形式)
git add .
git commit -m "feat: ログインフォームのUIコンポーネントを作成 #11"

# 5. プッシュ
git push origin feature/11-login-ui

レビュー&統合フェーズ

  1. プルリクエストの作成: GitHub上でPRを作成Closes #11を含める)
  2. 自動テストの実行: GitHub Actionsが自動でテストを実行
  3. コードレビュー: レビュアーがコードを確認
  4. マージ: テストとレビューが完了したらマージ
  5. 後片付け:
    cd ../my-project
    git worktree remove ../login-ui-work
    git branch -d feature/11-login-ui
    git push origin --delete feature/11-login-ui
    

2. 機能追加の流れ

計画フェーズ

  1. 機能要件の明確化: What何を、Whyなぜ、Howどのようにを定義
  2. Issueの作成: 要件、技術的検討事項、受け入れ条件を記載
  3. ラベルとプロジェクトボードへの追加: featureラベル、優先度設定
  4. タスクの分解: 大きな機能はサブタスクに分割

開発フェーズ

# 1. 最新のdevelopを取得
cd ../my-project
git checkout develop
git pull origin develop

# 2. 機能用の作業場を作成
git worktree add -b feature/24-comment ../comment-work develop
cd ../comment-work

# 3. 開発(小さなコミットを重ねる)
git commit -m "feat: コメント投稿フォームのUIを作成 #24"
git commit -m "test: コメント投稿APIのテストを追加 #24"

# 4. 定期的なプッシュ
git push origin feature/24-comment

レビュー&テストフェーズ

  1. セルフレビュー: 不要なコードの削除、フォーマット確認
  2. プルリクエストの作成: 変更内容、テスト方法、スクリーンショットを含める
  3. 自動テストとCI/CD: GitHub Actionsによる自動検証
  4. コードレビュー: 設計、可読性、テスト、パフォーマンス、セキュリティ
  5. フィードバック対応: レビューコメントに基づく修正

3. バグ修正の流れ

バグの分類

  • Critical緊急: サービス停止、データ損失の危険 → mainからhotfix
  • High: 主要機能の不具合 → developからbugfix
  • Medium/Low: 限定的な影響 → developからbugfix

修正フロー

# 1. バグ報告のIssue作成詳細な再現手順、期待動作、実際の動作、エラーログ

# 2. 緊急度に応じたブランチ作成
# 緊急の場合
git worktree add -b hotfix/28-critical-auth ../hotfix-auth main

# 通常の場合
git worktree add -b bugfix/27-login-validation ../bugfix-login develop

# 3. バグの再現とテスト作成
cd ../bugfix-login
# まず失敗するテストを書く
npm test -- --grep "email with plus sign"  # 失敗を確認

# 4. 修正の実装(最小限の変更)
git commit -m "test: メールアドレスに+記号を含む場合のテストを追加 #27"
git commit -m "fix: メールアドレスの+記号を正しく処理するように修正 #27"

# 5. 検証
npm test  # すべてのテストがパス
npm run dev  # 手動確認

# 6. プッシュとPR
git push origin bugfix/27-login-validation

🔄 並列開発のパターン

複数機能の同時開発

# 3つの機能を並行開発
../feature-login/     # ログイン機能localhost:3000
../feature-profile/   # プロフィール機能localhost:3001
../feature-dashboard/ # ダッシュボードlocalhost:3002

# 各ディレクトリで独立して開発サーバーを起動
cd ../feature-login && npm run dev
cd ../feature-profile && npm run dev -- --port 3001
cd ../feature-dashboard && npm run dev -- --port 3002

レビュー対応中の新規開発

# PR待ちの間に別の作業を開始
../feature-A/  # レビュー待ち
../feature-B/  # 新規開発中
../bugfix-C/   # 緊急修正

# レビューコメントが来たらすぐに切り替え
cd ../feature-A
# 修正対応
git add .
git commit -m "fix: レビュー指摘事項を修正"
git push

🛠️ 便利なコマンド集

worktree管理

# worktree一覧表示
git worktree list

# 不要なworktreeの削除
git worktree prune

# 特定のコミットからworktree作成
git worktree add -b feature/test ../test-feature abc123def

ブランチ管理

# リモートブランチの最新化
git fetch --all --prune

# マージ済みブランチの削除
git branch --merged | grep -v "\*\|main\|develop" | xargs -n 1 git branch -d

📝 コミットメッセージ規約

Conventional Commits形式

<type>(<scope>): <subject>

<body>

<footer>

Type一覧

  • feat: 新機能
  • fix: バグ修正
  • docs: ドキュメントのみの変更
  • style: コードの意味に影響しない変更
  • refactor: バグ修正や機能追加を伴わないコード変更
  • perf: パフォーマンス改善
  • test: テストの追加・修正
  • chore: ビルドプロセスやツールの変更

git commit -m "feat(auth): JWT認証を実装"
git commit -m "fix: メモリリークを修正"
git commit -m "docs: READMEにインストール手順を追加"

🤖 GitHub連携機能

GitHub Actions自動化

.github/workflows/ci.yml:

name: CI
on:
  pull_request:
    branches: [main, develop]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
      - run: npm ci
      - run: npm test
      - run: npm run lint

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

## 変更内容
- [ ] 機能の説明を記載
- [ ] テストを追加/更新
- [ ] ドキュメントを更新

## テスト
- [ ] ローカルでテスト実行
- [ ] 手動での動作確認

## レビュー依頼事項
- 特に確認してほしい箇所を記載

💡 Tips & Best Practices

1. worktreeの命名規則

# 推奨される命名パターン
../feature-login       # 機能開発
../bugfix-auth        # バグ修正
../hotfix-critical    # 緊急修正
../experiment-new-ui  # 実験的変更

2. 並列開発の注意点

  • 各worktreeで異なるポートを使用
  • node_modulesは各worktreeで独立管理
  • 環境変数は各worktreeで設定

3. クリーンアップの習慣

# 週次でのクリーンアップ
git worktree prune
git remote prune origin
git branch --merged | grep -v "\*\|main\|develop" | xargs -n 1 git branch -d

4. トラブルシューティング

worktreeが削除できない場合:

# 強制削除
git worktree remove --force ../feature-xxx

# 手動削除後のクリーンアップ
rm -rf ../feature-xxx
git worktree prune

ブランチの切り替えができない場合:

# 未コミットの変更を一時保存
git stash
# または
git commit -m "WIP: 作業中の変更"

🎯 まとめ

Git worktreeを活用することで

  • 複数の作業を物理的に分離して管理
  • コンテキストスイッチのコストを最小化
  • 並列開発による生産性向上
  • レビュー対応と新規開発の両立

このフローに従うことで、効率的で整理された開発環境を維持できます。