【元記事をASCII.jpで読む】

 Windows Updateは、1998年リリースのWindows 98に最初に搭載された。つまり、今年で27年目になる。

 Windows Updateは、Windows 11 Ver.24H2で「CheckPoint累積アップデート」という技術を採用する予定だ。実際、今年1月に配布されたWindows Insider ProgramのDev/Betaチャンネルで配布されているプレビュー版で搭載が始まった。

 今回は、ここまでのWindows Updateの歩みを振り返ってみることにする。以下の表は、その経過をまとめたものだ。

Windows VistaWindows Updateは大きく変化した

 Windows 98Windows Updateは、アップデートを通知して、ダウンロードするためのInternet Explorer上のプログラム(Webアプリケーション)だった。その後Windows Me(2000年)で「Automatic Update」が搭載され、1日1回アップデートをチェックし、必要なら自動でダウンロードとインストールをするようになった。Windows XPでは、さらにWindowsの機能だけでなく、Officeなどもアップデートの対象となった。

 大きく変化したのはWindows Vista(2006年)からで、Windows Updateは、Windowsの標準機能「Windows Update Agent」となった。これによりWindows Updateは、コントロールパネルから起動するアプリケーションに変わった。

 VistaWindows Updateは、「コンポーネントベースサービス(CBS)」と呼ばれる。コンポーネントとは、独立したWindowsの機能を実現するもので、インストールや有効化の単位として扱えるものだ。実際には、ファイルやメタデータ、各種のリソース、レジストリ情報などから構成される。CBSは、コンポーネントを単位としてアップデートをする仕組みだ。

 2014年には、Windows UpdateからWindows自体のアップデートが可能になり、Windows 8.1からWindows 8.1 Update版へのアップデートを実施した。

Windows 10では1回のアップデートで最新版にできるように
そこで導入されたのが「Unified Update Platform(UUP)」

 さらに大きく変化したのは2015年のWindows 10からだ。

 というのもWindows 10は、頻繁な機能更新(年2回)、毎月の品質アップデートを想定していた。さらに、自動ダウンロード・自動インストールとすることで、オプションのアップデート以外はユーザーには選択肢が無くなった(のちにインストールを一時停止させることが可能になる)。

 毎月のアップデートは「累積アップデート」となり、過去のアップデートを含むことで、1回のアップデートで、最新版にするために必要なアップデート操作が完了した(Windows 7の頃は、Windowsのインストール直後に大量のアップデートが発生するのを記憶している人もいるだろう)。

 過去のWindowsのサービスパックでは、複数のパッケージを順番にインストールする必要があった。累積アップデートとすることで、長時間インターネット接続できなかったマシンでも、短時間で最新版にアップデートすることが可能になった。

 ただしこの方法は、配布パッケージサイズを増大させることになる。そこで2016年には、「Unified Update Platform(UUP)」が導入され、差分のみを配布する「デルタアップデート」が可能になった。「Unified」という表記があるのは、当時Windows 10 MobileXboxも対象だったためだ。

 2018年にはさらなる高速化のため、「エクスプレスアップデート」が導入される。エクスプレスアップデートでは、これまでのアップデート履歴に対してファイルごとの差分を用意し、エクスプレスアップデートに対応したクライアントは、必要な差分のみをダウンロードする。これにより、デルタアップデートよりも少ない転送量でアップデートを完了できるようになった。

 エクスプレスアップデートは、ファイル単位にWindowsの初期バージョン(RTM)時の状態に戻す「逆方向差分(Δn ⇒ RTM)」と、RTM版を最新版に更新する「順方向差分(ΔRTM ⇒ n)」から構成される。

 アップデートは、前回の累積アップデートに含まれていた逆方向差分(Δ(n-1) ⇒ RTM)を使い、対象ファイルを一旦RTMの状態に戻し、次に順方向差分(ΔRTM ⇒ n)を使って更新をする。配布された逆方向差分(Δn ⇒ RTM)は、次回の累積アップデートのために保存しておく。

 なお、新規にファイルが追加された場合、RTMを内容が存在しないヌルファイルとし、その差分を計算する。

 Windows 10 Ver.1903では、さらに改良され、コンポーネント内のバイナリファイルのうち、変更のないものは、検証のためのハッシュ値のみを送信し、ファイル自体を含めないようになった。

Windows 11Windows Updateは差分の生成をさらに改良

 Windows 11 Ver.21H2では、ここからさらに改良が進む。差分に適切な表現形式を使うことで、順方向差分から逆方向差分を生成できるようにした。

 差分をデータの削除と挿入という操作の組合せとして表現すると、これを逆順にすることで逆方向差分となる。これにより、逆方向差分の配布を省略できる。

 また、差分計算をするとき、バイナリ実行ファイル内の関数開始アドレスを調べ、関数単位での差分を計算することにした。これにより、1バイトの挿入で、後続するバイナリがすべて変更と判断されることがなくなった。また、累積アップデートのファイル構造も改良された。これにより配布ファイルサイズを40%削減したという。

 Ver.22H2では、差分から更新されたファイルを生成する処理をマルチスレッド化により高速化した。また、大量にあったメタデータファイルなどを1つの大きなファイルにまとめることで転送効率を上げることができた。さらに、Windowsに含まれるLXP(ローカルエクスペリエンスパック、従来の言語パック)を減らすなどして、Windowsのインストールイメージ自体を縮小した。

 また、標準添付アプリケーションの一部(メールやカレンダー、メモ帳など)は、Microsoftストアからのインストールとすることで、Windows Updateの対象外とした。

 そのほかには、.NET Frameworkを機能更新プログラムに含めるようにした。それまでは、個別のアップデートとして配布されており、Windowsがアップデートされて再起動すると、OSの更新が検出されて、対応した.NET Frameworkインストールが開始され、最後に再起動がなされる。このため2回の再起動が必要だった。しかし、単一のアップデートとすることで、1回の再起動で済むようになった。

24H2で導入されたCheckPoint累積アップデート

 これまでの累積アップデートでは、差分の起点を初期状態(RTM)としていた。しかし、Windows 11 Ver.24H2以降では、新しい「CheckPoint累積アップデート」が導入され、差分の起点を前回のCheckPoint累積アップデートとする。このため、変化量が少なく、差分情報が小さくなる。

 2025年1月末に配布された、Windows Insider ProgramのDev/Betaチャンネルプレビュー版OSビルド26120.3073は、CheckPoint累積アップデートとして配布された。

 Windows 10/11での改良で、Windows Updateによる再起動の数は減り、再起動に要する時間も短くはなった。ダウンロードやファイルのアップデートなどをWindowsを動かしたまま、バックグラウンド処理でできようにしたからだ。

 ただし、大規模なアップデートでは、Windowsを終了させてからのインストール処理が長く、再起動が完了するまでの時間が長い。1つには、デバイスを検出してデバイスドライバレイヤーを構築するのに時間が掛かっているようだ。今後、改良されるとしたら、このあたりだろうか?

Windows Updateの27年 悪役だった頃から改良が進んで、徐々に目立たない存在に