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

【Day 02】VSS / SVNエンジニアのための「分散型」パラダイムシフト

Day 02: 分散型パラダイムシフト
👨‍🏫
皆さん、こんにちは! 本日の講座へようこそ。
第1回ではGitとGitHubの役割分担を学びました。本日は第2回として、VSS/SVN経験者が最もカルチャーショックを受ける「排他ロックの撤廃(楽観的並行制御)」「オフラインコミットの圧倒的自由度」をC#現場の視点で徹底解説します!

① 導入・本日の達成目標

Visual SourceSafe (VSS) や Subversion (SVN) の時代、チーム開発の鉄則は「編集前にファイルをチェックアウトしてロックする」「他の人が編集中のファイルは触らない」でした。

しかし、Gitには**ファイルロック機能が基本的に存在しません**。全員が同じファイルを同時に編集します。
「それって事故が起きないの?」「どうやって整合性を保つの?」という疑問を、本講義で完全に解消します!

  • 「悲観的ロック」から「楽観的並行制御」へのメンタルモデル転換。
  • なぜ複数人で同じC#コード(.cs)を編集しても安全にマージできるのかを理解する。
  • ネットワーク不要で何十回も手元で試行錯誤できる「オフラインコミット」の快適さを体験する。

② 排他ロック vs 楽観的並行制御

VSSの設計思想は「悲観的ロック(Pessimistic Locking)」でした。「衝突が起きると困るから、最初から1人しか触らせない」というアプローチです。

排他ロック vs 楽観的並行制御
▲ 【図解①】悲観的排他ロック(順番待ち)と楽観的並行制御(Gitの同時編集)

これに対し、Gitは「楽観的並行制御(Optimistic Concurrency)」を採用しています。
「人間が同時にコードを書いても、行単位で賢く合体(マージ)すればほとんど衝突しない」という思想です。

比較項目 旧来(VSS/SVN 排他ロック) 現代(Git 楽観的並行制御)
作業の開始 ロック取得が必要(待ち時間あり) いつでも即座に編集開始可能
同時編集の範囲 ファイル単位で1人のみ 複数人が行単位で同時編集可能
衝突時の対応 発生しない(他者を排除するため) 同一行の衝突時のみ人間が選択(マージ)

③ C#開発現場での具体例(.csファイルの自動マージ)

例えば、Visual Studioでひとつの UserService.cs というクラスファイルがあるとします。
Aさんがファイルの先頭に「ログイン機能」を追加し、Bさんがファイルの末尾に「パスワード変更機能」を追加した場合:

  • VSSの場合: Aさんが編集し終わるまで、Bさんは作業を開始できません。
  • Gitの場合: 2人が同時に作業を終えてコミットしても、Gitが「変更された行が離れている」ことを自動判定し、1秒で綺麗にマージします。

④ オフラインコミットの快適さ

SVNのコミットは「サーバーへの即時反映」だったため、中途半端な動かないコードをコミットすることはタブーでした。

オフラインコミット
▲ 【図解②】オフラインでの試行錯誤とローカルコミットの流れ

しかしGitなら、手元のPC(ローカルリポジトリ)に保存するだけなので、どれだけ細かくコミットしても誰にも迷惑をかけません
「新幹線の中でネットが繋がらなくても、10行書くごとにコミットして安心を得る」という開発スタイルが可能です。

⑤ 実践! 3大アプローチでの操作

[A] CLI / PowerShell

# 1. 現在の変更状況を確認
git status

# 2. 手元で細かいスナップショットを記録(オフラインOK)
git add Services/UserService.cs
git commit -m "feat: ログイン処理のバリデーション追加"

# 3. 過去の履歴を一覧表示(手元に全履歴があるため一瞬で表示)
git log --oneline -n 5

[B] TortoiseGit(Windows エクスプローラー右クリック)

TortoiseSVNユーザーならおなじみの右クリックメニューから 「Git コミット(C)...」 を選択します。
SVNと違い、ダイアログ下部に「コミット&プッシュ」ボタンが用意されており、「手元に保存するだけ(コミット)」「サーバーへも送る(コミット&プッシュ)」かを直感的に選べます。

[C] 4大AIエージェントへの指示プロンプト

AIエージェント(Antigravity / Claude Code / ChatGPT / Copilot)にオフライン作業やコミットを依頼する際の黄金プロンプトです:

「UserService.cs にパスワードハッシュ化処理を追加してください。完了後、Conventional Commits規約に従ってローカルコミットを作成してください(プッシュはまだ行わないでください)。」
⚠️ 30年選手がハマりやすい落とし穴!

「同じファイルを触るから、声をかけ合って順番に編集しよう」と手動ロック運用をしてしまうチームがあります。
Gitの真価は「同時に書いて、Gitにマージさせる」ことにあります。衝突を過度に恐れず、安心して同時編集を試してみましょう!

📌 本日のまとめ&宿題

第2回の講義、お疲れ様でした!
「ロックは不要、Gitがマージしてくれる」「コミットは手元保存だから何回やっても安全」という感覚が掴めれば、Gitの楽しさが一気に加速します!

次回【Day 03】は、「C#開発環境構築(Git for Windows / TortoiseGit / VS Code設定)」を解説します。お楽しみに!

コメント

このブログの人気の投稿

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時間弱”級のボリューム ながら“過去一...

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

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

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

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