Windows 秘話最終チェックインの我慢比べ

Raymond Chen

プロジェクトが終盤に近づくと、チームではよく最終チェックインの我慢比べと呼ばれる非公式な競技が行われます。この競技では、最終段階で製品に変更を加えることのないようにするのが "競争" の目的です。というのも、原則的に、もし自分のバグがなければプロジェクトが 1 日早く出荷される可能性があるからです (現実にそうなることはまれですが、それでもなお、この事実が競技を盛り上げます)。この競技は形としては残らず、実際に得点を付ける人はいません。そして、"勝者" はすぐに忘れ去られてしまいます。

自分が勝者である場合を除いて。

Windows チームの上級開発者の 1 人は、初期の Windows の開発時に 2 回連続で競技に勝利してしまったことを告白しました。特に 2 回目の勝利は注目に値するものでした。なぜなら、製造が始まった後に変更が加えられたからです。このときは、製造プロセス全体をいったん中止し、再開する必要がありました。

ただし、3 回連続で勝利しようという試みは阻止されました。3 回目の試みでは、最後ではなく、最後から 2 番目にチェックインを行いました。最後にチェックインを行ったのは別の同僚でした。その同僚は、Windows 2000 の最終チェックインを行っただけでなく、Windows XP の最終チェックインも行い、新しい時代を切り開きました。

最終チェックインの我慢比べにおける皮肉の 1 つは、上級開発者 (したがって予想もしていないような開発者) が最終的に勝利する場合が多いことです。念のために言っておきますが、彼らのコードの質が低いわけではありません。上級であるがゆえに、最終チェックインを行いやすい立場になってしまうのです。ただしそれは、通常その開発者が担当していないコンポーネントのチェックインです。

終盤でのチェックインは、通常のように間接的なチェックインを行う機会が提供されないので、重要な作業になります。通常の状況では、次のようにチェックインを行います。

  • サブプロジェクトへのチェックインを行います。
  • サブプロジェクトのビルド環境で一晩かけてその変更を実装し、翌朝にビルドを完成させます。
  • サブプロジェクトのテスト チームが 1 週間以上かけてコードをじっくり調べ、それをプロジェクトに組み込むことを承認します。

このようにチェックインを行うと、失敗を犯した場合に、その失敗がプロジェクトの正式な一部分として組み込まれる前に発見される確率が高くなります。一部のサブプロジェクトは非常に大きいので、この原則が繰り返し適用され、サブサブプロジェクト (サブプロジェクトのサブプロジェクト) が作成されます。このプロジェクトでは、従属しているさらに大きなサブプロジェクトに組み込まれる前に、変更が個別に確認されます。

ただし、プロジェクトの最終段階でリリース管理チームが修正の実装を決定した場合は、時間があまりないので、のんびりと数週間の変更確認プロセスを行っている暇はありません。(自分のサブプロジェクトだけでなく) プロジェクト全体を定期的にビルドする開発者は、プロジェクトのさまざまな部分にかかわっています。彼らは、余分なコードを削除したり、専用のリリース サーバー上でディスク イメージを作成したり、ビルドの制限が満たされているかどうかを確認したり (CD イメージの大きさを調整して CD 内に収まるようにするなど) します。

チームが最後のチェックインを行う段階になったら、通常は、上級開発者にその作業が割り当てられます。そのような開発者がいない場合は、近くのチームの上級開発者に協力を求めます。

すると、シラノを思わせるようなちょっとした駆け引きが行われます。チームはその上級開発者に変更を提示します。上級開発者はディスク イメージを作成し、ビルドの制約を満たしていることを確認して、テスト チームに専用のリリース サーバーでのテストを依頼します。テスト チームが問題を発見した場合、開発チームが新しい修正案を考え出し、上級開発者にその修正案を渡します。上級開発者は、再度同じ作業を行います。

つまり、この上級開発者は、単独でそのチームの仮想ビルド環境としての役割を果たします。問題が解決したら、上級開発者はチェックインを行います。これが、上級開発者が最終チェックインの我慢比べで勝利する理由です。つまり、問題に巻き込まれずに、問題に巻き込まれている人を助けることができるからです。

Raymond Chen は自分の Web サイト「The Old New Thing」および同じタイトルの書籍 (Addison-Wesley、2007 年) の両方で、Windows の歴史、Win32 プログラミング、およびコーヒー メーカーの爆発について扱っています。