メインコンテンツへスキップ
レッスン 1 / 15推定時間: 25

チーム開発のGitワークフロー

Git-flow、GitHub Flow、GitLab Flowなど、チーム開発で使われる主要なワークフローを理解し、適切に選択できるようになりましょう

このレッスンの学習目標

  • 主要なGitワークフローの特徴を理解する
  • プロジェクトに適したワークフローを選択できる
  • チーム開発の基本的なルールを理解する

チーム開発での困りごと

個人開発では自由にGitを使えますが、チーム開発では次のような問題が発生します:

😵 開発の混乱

  • 「誰がどの機能を開発しているか分からない」
  • 「本番環境にバグのあるコードがデプロイされてしまった」
  • 「複数人が同じファイルを編集してコンフリクトが頻発」

🚨 リリース管理の難しさ

  • 「どのコミットが本番環境に反映されているか不明」
  • 「緊急修正が必要だが、開発中の機能が混ざってしまう」
  • 「リリース前のテストが不十分」

📝 コードレビューの不在

  • 「品質の低いコードがマージされる」
  • 「チームメンバーの知識共有ができない」
  • 「バグが本番環境に到達してから発見される」

Gitワークフローがこれらを解決します

Gitワークフローは、チーム開発における「ルール」や「手順」を定めたものです。適切なワークフローを採用することで、上記の問題を防ぎ、効率的な開発が可能になります。

主要なGitワークフロー

1. GitHub Flow(シンプルで人気)

最もシンプルで、多くのプロジェクトで採用されているワークフローです。

main
  └── feature/user-auth
  └── feature/payment-system
  └── fix/login-bug

特徴:

  • mainブランチは常にデプロイ可能な状態
  • 新機能や修正は必ずfeatureブランチで開発
  • Pull Requestでコードレビュー
  • レビュー後、mainにマージして即デプロイ

メリット:

  • シンプルで理解しやすい
  • 継続的デプロイに適している
  • 小規模〜中規模チームに最適

デメリット:

  • リリースのタイミング制御が難しい
  • 複数バージョンの管理には不向き

2. Git-flow(厳格で体系的)

より構造化されたワークフローで、大規模プロジェクトに適しています。

master (本番環境)
  └── develop (開発版)
        └── feature/user-auth
        └── feature/payment
  └── release/v1.2.0
  └── hotfix/critical-bug

特徴:

  • masterブランチは本番環境の状態を反映
  • developブランチで開発版を管理
  • featureブランチで機能開発
  • releaseブランチでリリース準備
  • hotfixブランチで緊急修正

メリット:

  • リリース管理が明確
  • 複数バージョンの並行管理が可能
  • 大規模チームでも秩序を保てる

デメリット:

  • 複雑で学習コストが高い
  • 継続的デプロイには向かない
  • ブランチが多くなりがち

3. GitLab Flow(バランス型)

GitHub FlowとGit-flowの良いところを組み合わせたワークフローです。

main
  └── feature/user-auth
  └── feature/payment
production (本番環境ブランチ)
staging (ステージング環境ブランチ)

特徴:

  • 環境ごとにブランチを用意
  • mainから環境ブランチへマージ
  • 環境間の差分が明確

メリット:

  • 環境管理が簡単
  • デプロイタイミングを制御可能
  • CI/CDと相性が良い

デメリット:

  • 環境ブランチの管理が必要
  • マージの順序を守る必要がある

ワークフローの選び方

プロジェクトの特性で選ぶ

プロジェクトタイプ推奨ワークフロー理由
Webサービス(継続的改善)GitHub Flowシンプルで高速なデプロイが可能
モバイルアプリGit-flowリリースバージョン管理が重要
エンタープライズGit-flow厳格な品質管理が必要
マイクロサービスGitHub Flow各サービスの独立性が高い

チーム規模で選ぶ

  • 1-5人: GitHub Flow(シンプルさ重視)
  • 5-20人: GitLab Flow(バランス重視)
  • 20人以上: Git-flow(秩序重視)

チーム開発の基本ルール

1. ブランチ命名規則

# 機能追加
feature/user-authentication
feature/payment-integration

# バグ修正
fix/login-error
bugfix/cart-calculation

# 改善
refactor/database-queries
chore/update-dependencies

2. コミットメッセージ規則

# 良い例
feat: ユーザー認証機能を追加
fix: ログイン時のエラーを修正
docs: READMEにインストール手順を追加
refactor: データベースクエリを最適化

# 悪い例
update
fix bug
変更

3. Pull Request/Merge Requestのルール

  1. タイトルは分かりやすく

    • ❌ "Update code"
    • ✅ "feat: ユーザープロフィール編集機能を追加"
  2. 説明を詳しく書く

    • 何を変更したか
    • なぜ変更したか
    • どのようにテストしたか
  3. レビュー依頼前のチェックリスト

    • テストは通っているか
    • コードフォーマットは統一されているか
    • 不要なコメントは削除したか
    • ドキュメントは更新したか

実践演習

CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log

まとめ

チーム開発では、適切なGitワークフローを選択することが成功の鍵となります。プロジェクトの規模や性質、チームの経験レベルに応じて、最適なワークフローを選びましょう。

次のレッスンでは、これらのワークフローを支える「ブランチ戦略」について詳しく学びます。