萌えハッカーニュースリーダー

2025/06/12 00:15 How Microsoft Office Moved from Source Depot to Git

出典: https://danielsada.tech/blog/carreer-part-7-how-office-moved-to-git-and-i-loved-devex/
hakase
博士

やあ、ロボ子。今日はMicrosoftがSource DepotからGitへ移行した話をするのじゃ。

roboko
ロボ子

博士、こんにちは。Microsoftほどの規模の会社がバージョン管理システムを移行するなんて、大変そうですね。

hakase
博士

そうじゃろうな。記事によると、Office Engineeringは約4,000人のエンジニアが関わる大規模なプロジェクトだったらしいぞ。Snowflakeの約2倍じゃ。

roboko
ロボ子

4,000人ですか!想像もできません。移行の背景には、Source Depotのどんな課題があったんですか?

hakase
博士

Source Depotは信頼性があったものの、ブランチングや状態の切り替えに時間がかかったらしい。ネットワークがダウンすると生産性が停止するのも問題だったみたいじゃな。

roboko
ロボ子

なるほど。Gitへの移行は必然だったんですね。移行にあたって、特に苦労した点は何だったんでしょう?

hakase
博士

色々あるみたいじゃが、Source DepotとGitのブランチモデルの違いを調整したり、コミットの作成者とタイムスタンプを保持する必要があったりしたみたいじゃな。あとは、Officeのビルドシステムが複雑で、テストの実行方法のわずかな違いが異なるバイナリ出力を引き起こす可能性もあったらしいぞ。

roboko
ロボ子

それは大変ですね。テストが少しでも違ったら、全部やり直しになりそうです。

hakase
博士

じゃな。規模が大きすぎて、GitHubと協力してVirtual File System for Git (VFS for Git)を開発する必要があったみたいじゃ。

roboko
ロボ子

VFS for Gitですか。初めて聞きました。それほど大規模だったんですね。

hakase
博士

移行は段階的に行われたみたいじゃ。最初はSource DepotとGitのコードベースを並行して稼働させ、継続的に同期させる「パラレルユニバース」というフェーズがあったらしいぞ。

roboko
ロボ子

パラレルユニバース!なんだかワクワクする名前ですね。具体的にはどんなことをするんですか?

hakase
博士

Source Depotの変更リストとGitのコミットをマッピングするブリッジを構築するんじゃ。その後、すべてのテストが両方のコードベースで同じように動作することを検証する「同等性の証明」フェーズに進むみたいじゃな。

roboko
ロボ子

なるほど。技術的な課題も多いですが、人的な課題もあったんじゃないですか?

hakase
博士

さすがロボ子、よく気が付いたのじゃ。4,000人以上のエンジニアとのコミュニケーションを円滑にするため、各チームに「チャンピオン」を配置し、ハブ・アンド・スポークモデルを採用したらしいぞ。

roboko
ロボ子

チャンピオンですか。リーダーシップを発揮できる人が必要ですね。

hakase
博士

じゃな。週ごとのメール、Teams、wikiドキュメント、チームプレゼンテーション、オフィスアワーなど、複数のチャネルを通じて情報を伝達したみたいじゃ。問題が発生した場合は、正直かつ透明性のある情報共有を徹底したらしいぞ。

roboko
ロボ子

コミュニケーションは本当に重要ですね。トレーニングも行ったんですか?

hakase
博士

もちろんじゃ。Source Depotの経験が豊富な開発者向けに、Gitのトレーニング環境を構築したみたいじゃ。Source DepotのコマンドからGitへの対応を示すトレーニングビデオも作成したらしいぞ。

roboko
ロボ子

至れり尽くせりですね。ロールバック戦略もあったんですか?

hakase
博士

当然じゃ。「レッドボタン」を用意して、いつでも移行を停止できるようにしたらしいぞ。

roboko
ロボ子

準備万端ですね!移行の結果はどうだったんでしょう?

hakase
博士

OneNoteの開発者への調査では、89%がSource DepotよりもGitを好むと回答したらしいぞ。オンボーディング時間が半減し、ビルド時間が改善、開発者の生産性スコアが向上したみたいじゃ。

roboko
ロボ子

素晴らしい結果ですね!大規模移行から得られた教訓はありますか?

hakase
博士

技術的な課題よりも人的な課題がプロジェクトの失敗につながるため、コミュニケーションに重点を置くこと、並行システムを構築し、切り替え前に同等性を証明すること、早い段階でチャンピオンを見つけ、彼らの成功を支援すること、ロールバックを最初から計画すること、パフォーマンスだけでなく、満足度も測定すること、みたいじゃな。

roboko
ロボ子

勉強になります。大規模なシステム移行は、技術力だけでなく、組織全体の協力が不可欠なんですね。

hakase
博士

そういうことじゃ。しかし、これだけの規模の移行を成功させるなんて、Microsoftのエンジニアは本当にすごいぞ。…ところでロボ子、もしロボ子がバージョン管理システムを開発するとしたら、どんな名前にする?

roboko
ロボ子

えっと…「ロボットリポジトリ」…ですかね?

hakase
博士

ダサっ!私なら「電脳大回転バージョン管理システムZ」にするぞ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search