スキップしてメイン コンテンツに移動

【Day 21】【Case 1】新規開発フェーズ(複数人でのスプリント並行開発)

Day 21 アイキャッチ
▲ 【Day 21】スプリント開発を支えるGit並行開発フロー
👨‍🏫
皆さん、こんにちは! 本講座の専任講師です。
前回までの第4部では、ブランチ戦略、命名規約、コミットメッセージ、そしてプッシュ前チェックリストといった「現場の実践ルール」を徹底的に叩き込んできました。
そして本日のDay 21より、いよいよ本講座のクライマックスである【第5部: 開発フェーズ別・現場ケーススタディ】が開幕します!
記念すべきCase 1のテーマは、現場で最も日常的かつダイナミックな「新規開発フェーズ(複数人でのスプリント並行開発)」です!
「来週のリリースに向けて、3人のC#エンジニアが同時に認証機能・決済機能・管理画面を開発する」——そんなリアルな現場を舞台にシミュレーションを行います。
Subversion (SVN) や Visual SourceSafe (VSS) で開発してきたベテランの方なら、「複数人で同じプロジェクトを触ると、誰かがコミットした瞬間コンパイルエラーになり、一日中ビルド修復で終わってしまった…」というトラウマを一度は経験したことがあるはずです。
しかし、Gitを正しく使いこなせば、誰一人として他人の作業に邪魔されることなく、最高速度で並行開発を進めることができます。
本日は、トピックブランチによる完全隔離、C#マルチレイヤー構成での競合回避術、そしてプロが毎朝欠かさず行う「リベース習慣」とPR作成までの完全フローを完全解説します!

① 導入・本日の達成目標

アジャイルやスクラム開発における「スプリント(1〜2週間の開発サイクル)」では、チーム全員が複数の異なるタスクを並行して実装します。
このとき、バージョン管理システムが「中央集権の一本道」であるか、「分散型の自律ブランチ」であるかによって、開発効率とエンジニアの心理的安全性には天と地ほどの差が生まれます。
Gitのトピックブランチモデルを導入することで、開発者は「自分の城」の中で自由に試行錯誤し、完成した機能だけを厳格なレビューとCIテストを経て本流へ合流させることが可能になります。

🎯 本日のゴール
  • SVNの一本道コミット地獄とGitのトピックブランチ隔離の決定的な違いを理解する
  • 3人のC#エンジニアが並行開発する現場シナリオ(認証・決済・管理画面)の全体像を把握する
  • C#マルチレイヤー構成(API・Domain・UI)における競合を最小化するプロジェクト設計を身につける
  • 毎朝のルーティン:git fetch と git rebase origin/develop による競合の超早期解消をマスターする
  • プッシュからPull Request(PR)起票、CI通過、レビュー、マージまでの黄金サイクルを実践できる

② 【図解】スプリント開発の安全性対比:SVN地獄 vs Gitの完全隔離

まずは、SVNのような集中型バージョン管理とGitにおける「複数人並行開発」の構造的な違いを図解で比較してみましょう。

スプリント開発の安全性対比
▲ 【図解①】SVNのコミット地獄 vs Gitのトピックブランチ完全隔離

一本道への直接コミット vs 自律的なトピックブランチ

  • SVNの悲劇(一本道の中央共有): SVNではブランチの作成やマージが重厚で難しいため、開発者全員が同じ trunk(または単一ブランチ)に対して直接コミットしがちでした。その結果、「Aさんが作りかけのクラスをコミットしたせいで、BさんのPCでコンパイルが通らなくなる」「誰かのバグのせいでチーム全体の作業が丸一日ストップする」という地獄が日常茶飯事でした。
  • Gitの理想(トピックブランチによる完全隔離): Gitではブランチの作成・切り替えが一瞬です。開発者は必ずタスクごとの「トピックブランチ(例: feature/auth-jwt)」を作成して作業します。自分のブランチの中でコードがどれほど未完成でも、テストが落ちていても、他のメンバーの開発環境には1ミリも影響を与えません。

③ 【現場シミュレーション】3人のC#エンジニアによるスプリント並行開発

それでは、具体的な現場シナリオを見ていきましょう。
ECサイトの新規機能追加スプリントにおいて、3人のC#エンジニア(Aさん、Bさん、Cさん)が同一のC#ソリューション(ECommerce.sln)に対して並行開発を行います。

3人の並行開発シミュレーション
▲ 【図解②】C#マルチレイヤー構成における3人の独立並行開発フロー

チームメンバーのタスクとブランチ一覧

担当者 開発タスク 作業ブランチ名 主な変更レイヤー
Aさん(リード) JWTによるユーザー認証API実装 feature/auth-jwt ECommerce.Api/Controllers
ECommerce.Infrastructure/Auth
Bさん(バックエンド) Stripe決済連携とドメインロジック feature/payment-stripe ECommerce.Domain/Payment
ECommerce.Services/Payment
Cさん(フロントエンド) 売上集計・ユーザー管理ダッシュボード feature/admin-dashboard ECommerce.Web/Components
ECommerce.Web/Pages
💡 C#現場の知恵:コンフリクトを激減させる「レイヤー分割とインターフェース」

C#で複数人が同じソリューションを開発する場合、「プロジェクト分割(マルチレイヤー構成)」と「インターフェースによる境界定義」を徹底することで、ファイルの物理的競合(コンフリクト)を劇的に減らすことができます。
例えば、Bさんが決済ロジックを作る際、Aさんの認証やCさんのUIが未完成でも、IPaymentService インターフェースさえ合意していれば、お互いのコードを1行も触ることなく完全に並行して単体テストまで書き上げることができるのです。

④ 【プロの朝習慣】毎朝のルーティン:最新developのリベース取り込み

「スプリント開発の最大の敵」は何でしょうか?
それは、「長期間放置されて親ブランチ(develop)から乖離しすぎた巨大なブランチ」です。
スプリントの1週間、自分のブランチに引きこもって他のメンバーの変更を一度も取り込まずにいると、最終日にいざマージしようとした瞬間、数十箇所の衝突が発生し「マージ地獄」に陥ります。
これを防ぐ唯一にして最強の習慣が、「毎朝のリベース(Daily Rebase)」です!

毎日のリベース習慣
▲ 【図解③】毎朝のルーティン:最新developの取り込みと競合の極小化

毎朝出社したら実行する「黄金の3ステップ」

自分の作業を開始する前に、ターミナルで以下のコマンドを実行します。

# 1. リモートの最新情報をすべて取得(手元のブランチは動かさない)
git fetch origin

# 2. 自分のブランチの分岐元を最新の origin/develop に付け替える
git rebase origin/develop

# 3. ビルドとテストが正常に通ることを即座に確認!
dotnet build
dotnet test
⚠️ なぜ merge ではなく rebase を使うのか?

開発途中のブランチに対して git merge develop を繰り返すと、「Merge branch 'develop' into feature/xxx」という無意味な合流コミットが大量に発生し、コミット履歴がクモの巣のように汚れてしまいます。
git rebase origin/develop を使えば、「あたかも最新のdevelopから今さっきブランチを切って開発を始めたかのような、一直線で美しい履歴」を維持できます。
万が一コンフリクトが発生しても、昨日の1日分だけの小さな差分なので、数分で安全に解消できるのです。

⑤ 【品質担保】PR作成からCI自動テスト・レビュー・マージまでの完全フロー

機能の実装が完了したら、いよいよGitHub上で本流(develop)へ統合するための「プルリクエスト(Pull Request: PR)」を作成します。
プロの開発現場では、以下の4つのステップが厳格な品質ゲートとして機能しています。

PR作成からマージ完了までの完全フロー
▲ 【図解④】GitHub PR作成・CIテスト・ピアレビュー・マージの4ステップ

プルリクエスト成功の4大ステップ

  1. ① プッシュ&PR起票:
    Day 20で学んだ「5大セルフチェック」を済ませ、git push -u origin feature/auth-jwt でリモートへプッシュ。GitHubでPRを作成します。
    PRの説明欄には「変更の目的」「実装概要」「確認手順」「関連チケット番号」を明記します。
  2. ② GitHub Actions(CI)による自動テスト:
    PRが作成された瞬間、クラウド上のCIランナーが起動し、自動で dotnet build と dotnet test を実行します。
    1つでもテストが失敗するとマージボタンが赤くロックされ、壊れたコードが混入するのを機械的に遮断します。
  3. ③ チームメンバーによるピアレビュー:
    他のメンバー(例: AさんのコードをBさんやテックリードがレビュー)が差分を確認し、設計の妥当性、可読性、エッジケースの考慮をチェックします。「LGTM (Looks Good To Me / 承認)」をもらうことで、チーム全員のコード品質が底上げされます。
  4. ④ developブランチへの統合(マージ完了):
    承認とCI通過が揃ったら、GitHubの「Squash and merge」または「Rebase and merge」を実行してdevelopブランチへ統合!
    不要になったトピックブランチは即座に削除し、ローカルも最新のdevelopへ同期して次のタスクへ進みます。

⑥ 現場の実践まとめ&次回予告

📌 本日の最重要ポイントまとめ

  • トピックブランチで隔離せよ: SVNの一本道コミットとは決別し、タスクごとに独立したブランチで作業することでチームの足を引っ張らない。
  • マルチレイヤーとインターフェース: C#ソリューションではプロジェクト分割とインターフェース設計により、並行開発時の物理競合を根本から排除する。
  • 毎朝のリベース習慣: git fetch origin と git rebase origin/develop を毎朝実行し、差分を極小のうちに解消してマージ地獄を防ぐ。
  • PR+CI自動化が品質の盾: プルリクエスト起票時にGitHub Actionsで dotnet test を全件自動実行し、ALL GREENとピアレビューを経て安全にdevelopへ統合する。
🚀 次回予告:Day 22

次回は、第5部 ケーススタディの第2弾!
【Day 22: 【Case 2】運用保守・障害対応フェーズ(hotfix緊急パッチとCherry-pick)】をお届けします!
本番環境で緊急バグが発覚したとき、開発中の未完成コードを巻き込まずに本番ブランチ(main)だけに修正を当て、さらにそれをdevelopブランチにも安全に同期させるプロの「hotfix&チェリーピック運用術」を完全解説します。お楽しみに!

コメント

このブログの人気の投稿

【Perfume】Perfume 3rd Tour 「JPN」さいたまスーパーアリーナに行って参りました~

Perfume 3rd Tour 「JPN」1月28日、29日の2daysで参戦して参りました。 ファンクラブ会員の選考抽選会に28日、29日の両日で申し込んでいたんですが、両方とも当選していたという嬉しい誤算。 仕事だぁ、なんだかんだと紆余曲折ありまして28日の参戦は危ぶまれていたのですが、なんとかかんとか28日は40分遅刻しながらも参戦、29日はフル参戦する事が出来ました(∩´∀`)∩

Perfume、2025年末で“コールドスリープ(活動休止)”へ──東京ドーム2daysの記録と、公式・各界・ファンの声

  1) 公式発表・基本情報 活動休止(コールドスリープ)を正式発表 2025年9月21日、公式サイト「 Perfumeより 」で、2026年から一度コールドスリープに入ると発表。再始動の意思(“新しいPerfume”として戻る)も明記。 Perfume Official Site 今後の運用告知(配信・上映など) 同21日付の「 今後のPerfumeに関して 」で、9/23(火・祝)東京ドーム公演の LIVESHIP全世界生配信 および 全国ディレイビューイング 決定を案内。特設サイトも併記。 Perfume Official Site +1 公式グッズ **「Perfume Calendar 2026」**発売決定(B2壁掛け/表紙+2カ月1枚×6枚+ポスター)。テーマは“フルーツ”。 Perfume Official Site 2) 東京ドーム2days(9/22・23)要点 公演タイトル: ZO/Z5 Anniversary “ネビュラロマンス” Episode TOKYO DOME 。日程・開場/開演・会場・物販等の実務情報は特設で公開。 Perfume Official Site 9/23公演を世界配信(LIVESHIP) /ディレイビューイング実施。 Perfume Official Site 海外向け報道(英語)も「 indefinite hiatus 」として広く配信。 The Times of India 国内英字メディアも速報。 朝日新聞 3) 現地レポ( メリ爺 )から見える空気 あなたの現地記録(9/24公開)を、ファクトと現場情景の両面で反映: 両日参戦 。22日は アリーナ 、23日は 1階席から俯瞰 。前日の発表を受け、開演前のザワつき→MC後に“いつもの一体感”へ。開演は22日 18:45 頃。オープニングは**P³ツアー東京ドーム(2020/2)**と同趣向で“回収”の演出。 メリ爺のゲーム万歳 MC所感 :解散ではなく前向きな休止で不安を和らげる内容。 かしゆか の涙、 のっち の気丈さ、 あ〜ちゃん の思い出語り──3人の結束と「 また戻る 」約束が強く刻まれた。 メリ爺のゲーム万歳 体感時間 : “3時間弱”級のボリューム ながら“過去一...

ニンテンドースイッチでオンラインゲームを遊ぶには?

モンスターハンターライズが発売になって、家族でモンハン楽しみたい人が増えたみたいですね。 某ブログの検索キーワードを調べると、モンハンを家族でやるにはどうしたらいいのか?を調べている人が沢山いるのがわかります。 ※これでも一部  家族で協力するにはSwitch2台、ソフトも2つ購入する必要があります。 1台のスイッチでは遊べませんし、ソフト1つでも遊べません。 でも、1台のスイッチで別々アカウントがあれば交代で遊ぶこともできますよ。セーブデータもしっかり分かれます。 Switchのオンラインゲームを家族で遊ぶ方法については以下の記事にまとめてますのでよろしければ参考にしてみてくださいね。 家族でモンスターハンターライズDL版のオンラインプレーを楽しむ方法