チーム開発での困りごと
個人開発では自由に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のルール
-
タイトルは分かりやすく
- ❌ "Update code"
- ✅ "feat: ユーザープロフィール編集機能を追加"
-
説明を詳しく書く
- 何を変更したか
- なぜ変更したか
- どのようにテストしたか
-
レビュー依頼前のチェックリスト
- テストは通っているか
- コードフォーマットは統一されているか
- 不要なコメントは削除したか
- ドキュメントは更新したか
実践演習
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ワークフローを選択することが成功の鍵となります。プロジェクトの規模や性質、チームの経験レベルに応じて、最適なワークフローを選びましょう。
次のレッスンでは、これらのワークフローを支える「ブランチ戦略」について詳しく学びます。