- Microsoft Office は長年、社内のソース管理システムである Source Depot を使用していたが、開発者体験と技術革新のために Gitへの大規模移行 を進めた
- Source Depot は 中央集権型、遅いブランチ作成、不便なワークフロー により生産性に限界があり、Gitへの移行には数百人のエンジニアと数年にわたる作業が必要だった
- 移行プロセスでは VFS for Gitのような新技術の開発、既存のビルド/テストインフラの移植、並行システム運用など、大規模な技術的・組織的課題を乗り越えた
- 成功する移行のために、「チャンピオン」中心のコミュニケーション体制、大胆な透明性、実践的な教育、即時ロールバック戦略など、協調的で人間中心のアプローチを重視した
- 移行後はオンボーディング時間の短縮、Git選好率の増加(89%)、生産性向上などの前向きな成果が得られ、大規模な技術変化における重要な教訓も残した
Source DepotからGitへ: Microsoft Officeの大規模移行の経験
開発者生産性を最大化する新たな挑戦
- 開発者生産性を高める取り組みは 'Multiplier work' であり、大規模な組織ほどその価値は大きい
- Microsoft OfficeのSource DepotからGitへの移行 プロジェクトは、その代表的な経験だった
- この作業は単なるツール変更ではなく、数百人のエンジニア、複雑なシステム、長期間にわたる大規模プロジェクトだった
Source Depot: あの時代のソース管理の話
- 2000年代初頭、Microsoftは Perforce 技術ベースの独自バージョン管理システムである Source Depot を運用していた
- Source Depot は 遅いブランチ作成、中央集権化、長いコードチェックアウト時間、不便なマージ方式(Reverse/Forward Integrate)などにより、作業効率に限界があった
- 開発インフラ全体(ビルド、リリース、ワークフロー)と強く結びついており、単純な置き換えが不可能な構造だった
- Microsoft Officeの Git移行 には数年と数百人のエンジニアの努力が必要だった
OneNoteを皮切りに: 移行の始まり
- Officeのエンジニアリング組織では、Source Depotの維持・パッチコスト と「競争力のある技術」への要求から、大規模なGit移行が決定された
- Office製品群はリリース周期(数か月、半期、月次、インサイダー)ごとに開発スケジュールが異なるため、長期間の Source Depot-Git並行運用 が必要だった
- Officeのバージョン管理の一貫性、ビルド検証、レガシーテストインフラの移植などが必須課題として浮上した
Officeの規模とコミュニケーション戦略
- Officeは当時、4,000人規模のエンジニア が協業する超巨大組織だった
- チームごとに 'Developer Satisfaction Champion' を指定し、各チームをつなぐ hub-spokeモデル を通じて、円滑なフィードバックとコミュニケーション構造を整えた
- 筆者はOneNoteのチャンピオンとして、大規模移行の現場で中核的な役割を担った
VFS for Git: 超巨大コードベースの限界突破
- 1回の git clone に200GB以上必要になるほどコード規模が大きく、GitHubと共同開発した Virtual File System for Git (VFS for Git) によって問題を解決した
- VFS for Git は実際に使うファイルだけを取得する方式で、標準的なGitの限界を克服した
- Microsoft Windowsと連携しながら、業界最大級のバージョン管理システムの限界を乗り越える経験だった
移行の段階的アプローチ
1段階: 並行宇宙(Parallel Universe)
- Source DepotとGitをリアルタイム同期するブリッジ サービスを構築し、両システムの不一致やモデル差異(ブランチ構造、changelist など)の問題を繰り返し改善した
- Officeのメイン/Privateブランチ-同期-ビルドのプロセスを24/7の自動化システムで運用した
- 3回にわたる再試行の末に、安定して動作する並行システムを実装した
2段階: 等価性の検証
- すべての テストスイート を両システムで繰り返し実行し、ビルド結果が完全に同一であることを証明した
- 改行方式、大文字小文字、テスト結果フォーマットなどの微妙な差を数か月かけてデバッグし、解決した
- 'Green across the board' (両システムともにテスト通過)という成果により、実際の移行段階に入る準備が整った
人間中心のアプローチ
マルチチャネルでの反復的コミュニケーション
- 4,000人超のエンジニアと数十チーム のスケジュールを合わせるため、各チームのチャンピオンを通じた集中的なコミュニケーション体制を構築した
- 重要なお知らせは最低3回(メール、Teams、Wiki、会議など)繰り返し伝え、混乱を最小化した
- 問題発生時には、即時かつ透明性の高い情報公開 によって信頼を確保した
Git導入教育と適応
- 10年間Source Depotに慣れたエンジニアのために、実習型の教育環境 や 移行コマンドガイド など、段階的な学習体制を整えた
- 実践重視の動画ライブラリなどを通じて、実際のシナリオに基づく学習 を提供した
- 不安の解消と能力強化 を超えて、既存ワークフローへの適応も支援した
ロールバック戦略と安全装置
- 実際の切り替え時には Directorに「赤いボタン」を提供 し、深刻な問題が起きた場合はいつでも即時ロールバックできるようにした
- 過去のSource Depotの一部記録は長期間保存し、既存の開発履歴を安全に維持した
結果と主な成果
- 移行後、オンボーディング時間が50%短縮 され、Git選好率89%が確認され、ビルド性能の改善、コードレビュー効率と協業の増加など、生産性向上の効果 が現れた
- エンジニアたちは 業界内で転用可能なスキルの習得 を前向きに評価した
- 新規人材が即戦力として参加しやすくなった
大規模移行の重要な教訓
- 成功のためには、技術要素だけでなく人間中心のコミュニケーション に予想以上の投資をする必要がある
- 並行システムの構築と完全な等価性の証明、初期段階からの確実なロールバック設計、重要人材(チャンピオン)の重視が重要だった
- 満足度などの定性的指標も並行して測定 することが不可欠であり、変化の過程では組織的安定と心理的安全性が重要となる
- 大規模な変化の本質は、組織全体にわたる柔軟で体系的な変化管理 にある
結論と今後への適用
- OfficeのGit移行は、数年にわたる準備と数か月の実行によって実現した歴史的プロジェクトだった
- 最終的には、数千人の業務の連続性を確保しながら組織的変化を成功裏に推進した事例 として残った
- クラウド移行、モノリシックアーキテクチャの分解、フレームワークのアップグレードなど、ほかの大規模変化でも 並行検証、反復的コミュニケーション、迅速なロールバック設計 は同様に適用できる
- 技術的詳細(ビルドインフラ、オフライン/契約上の問題など)には追加で触れていないが、大規模な技術変化では戦略的・組織的アプローチが最も重要な教訓である
3件のコメント
バイナリファイルを多く扱うならGitは向かないかもしれませんが、コード中心のリポジトリであればGitで十分なようです。
MS社内でも大きな変化だったでしょうが、そのおかげで partial clone や sparse checkout のような機能や Scalar のようなツールも外部に公開されて使えるようになったのは、良い影響だったと思います(笑)
Hacker Newsのコメント