> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# コンテンツ更新の作成、検査、およびテスト

> コンテンツ更新の作成、検査、およびテスト

<Tip>
  **MSIXVC2 を使用していますか?** MSIXVC と MSIXVC2 の間で更新サイズを比較するには、両方のビルドを `makepkg` を使用してパッケージ化します。詳細については、[MSIXVC2 によるコンテンツ更新](/build/core-features/common/packaging/packaging-updates-msixvc2) および [PC 向け MSIXVC2 のはじめに](/build/core-features/common/packaging/overviews/packaging-getting-started-for-PC-msixvc2#comparing-update-sizes) を参照してください。
</Tip>

## 概要

この記事では、コンテンツ更新の配信方法、更新の生成と測定に使用するツール、そして予期される最適な動作を確保するために主要な更新シナリオをテストする方法について説明します。

## コンテンツ更新の仕組み

ゲーミング サービスは、ゲーム パッケージへの更新を提供する際に転送する必要のあるバイト数を常に最小化します。この最適化は、ゲーム デバイス上の顧客と、パッケージをアップロードする開発者の両方に適用されます。システムは、高レベルでは 2 つのパッケージ間の 4-KiB セグメントの一致を最大化しようとするアルゴリズムを使用して、この差分 (*delta*) を計算します。

システムは、この差分を `.xsp` (更新ストリーミング プラン) ファイルの一部としてエンコードします。これらのファイルを使用することで、システムはネットワークからどのバイトをダウンロードすればよいか、そしてそれらをどのように既存のパッケージ バージョンに適用すればよいかを正確に把握できます。

開発中に正確な差分更新の動作をシミュレートしてテストするには、パッケージを作成するときに適切な `makepkg` オプションを使用します。また、パッケージのインストールと更新には適切なコマンドを使用します。

## 以前のパッケージ バージョンに基づいて更新を作成する

[`makepkg`](/build/core-features/common/packaging/deployment/makepkg) pack を使用してパッケージを作成します。以前のパッケージを使用するパッケージを作成するには、`/priorpackage` パラメーターを使用します。

```cmd theme={null}
makepkg pack /f chunks_layout.xml /d [build directory] /pd .\output /priorpackage [previous version].xvc
```

以前のパッケージは、microsoftgame.config で定義されているとおり、作成しているパッケージと同じパッケージ ID を持つ必要があります。

このコマンドは、`[new package name]_update-[old version number].[guid].xsp` という名前の .xsp ファイルを作成します。たとえば、41336MicrosoftATG.ATGGameHubRequiredGame\_200.0.0.0\_neutral\_\_dspnxghe87tn0\_xs\_update-100.0.0.0.5890f4a0-b449-4c5d-80ff-b78b19ed3439.xsp。

このファイルは、旧パッケージから新パッケージへの更新時に何を変更する必要があるかをエンコードした **ストリーミング プラン** です。[更新のテスト](#testing-updates) セクションでは、このプランの使用方法を示します。

## 更新サイズの検査

前述のコマンドを実行すると、同じファイル名の追加ファイルが 2 つ生成されます。.html ファイルと .json ファイルです。

両方のファイルには次の情報が含まれます。

1. 更新がダウンロードするバイト数の要約
2. 特定のタグ、言語、またはデバイス タイプに対して更新がインストールするデータ量を要約した表
3. 更新が変更するバイト数と、この変更がファイル全体のサイズに対する割合を示す、ソート可能なファイル表
4. 100% 更新されない各ファイルについて、更新が変更する各ファイル内のデータ範囲を示す個別の表へのリンク

この情報を使用して、更新で最も変更されているファイルを特定します。個々のファイルを見て、変更の割合と場所が予期されるとおりかどうかを確認します。通常よりも大きな更新をもたらすファイルが見られる場合は、[更新を効率的に作成する](/build/core-features/common/packaging/packaging-updates#author-packages-efficiently) セクションのガイドラインを確認してください。

2 つの .xvc ファイルに対する `packageutil compare` も、これらと同じファイルを生成し、パッケージの違いのサマリー出力を提供します。このコマンドは .xsp ファイルも生成します。

## 差分アップロード

Partner Center へのアップロードは、差分計算アルゴリズムを自動的に活用します。最後にアップロードしたパッケージ (そのブランチの) とアップロード中のパッケージとの差分は、開始時に計算されるため、変更されたデータのみがアップロード マシンから取り込みサービスに転送されます。

## 更新のテスト

システム UI に表示される更新サイズを検証するには、次の手順を実行します。

1. `xbapp install` \[old version.xvc]
2. `xbapp update` \[new version.xvc] (`/plan=`\[.xsp file])

更新時、更新中のバイト数のわかりやすい表示を確認するには、システム UI の Queue に移動します。

.xsp ファイルが以前に他のコマンドによって生成されており、.xvc ファイルと同じ場所にある場合、/plan パラメーターは省略可能です。

PC の場合は、代わりに `wdapp` コマンドを使用します。パッケージ ファイルは .msixvc ファイル拡張子を持ち、インストールと更新の進行状況は、XBOX アプリと Microsoft Store アプリの両方のダウンロード キュー セクションで確認できます。`wdapp update` は /plan パラメーターをサポートしません。作成されている場合は、対象バージョン向けに生成された .xsp ファイルを使用します。

## 更新の告知

更新の告知は、他の更新方法とは少し異なります。更新を告知すると、ゲームに更新を **利用可能** にすることになり、特定のシステム動作をもたらします。

利用可能な更新を告知するには、`xbapp` または `wdapp` update に `/m` または `/a` フラグを適用します。この操作の結果、ゲームが起動されるまで更新は適用されません。この条件が発生すると、次の動作になります。

* コンソール: 更新が必要であることを示すシステム ダイアログが表示されます。
* PC: dev ビルドの場合、システム プロンプトは表示されず、`wdapp install` またはブートストラッパーを使用してビルドがインストールされていない限り、ビルドを自由に起動できます。この場合、ゲームを起動すると PC ブートストラッパーが呼び出され、更新をチェックしてインストールを求められます。

更新の告知は、特定の `XStore` API が反応する結果ももたらし、これによりゲームは利用可能な更新を検出できます。この動作は DLC パッケージに最も関連します。詳細については、[更新の確認](https://learn.microsoft.com/build/store/commerce/fundamentals/xstore-checking-for-updates) を参照してください。

## ストア パッケージの更新

前述の例では、ローカル パッケージを使用したインストールと更新について説明しています。一部のシナリオでは、Partner Center にアップロードし、ストア CDN からダウンロードしたパッケージを使用して更新をテストしたい場合があります。このプロセスは、ストアからの更新時のパフォーマンスと、取り込みプロセスの一環として生成されたストリーミング プランの活用の 2 つを検証します。

残念ながら、署名の違いにより、ローカル パッケージからストア パッケージへの更新はできません。他の支援なしにできることは、Partner Center に単一バージョンをアップロードし、そのバージョンを 1 台以上のデブキットのストア アプリからインストールすることです。次に、新しいバージョンをアップロードします。新しいバージョンが公開されたら、古いバージョンがインストールされているデブキットで、新しいバージョンが検出され、予期される差分サイズを使用して更新できることを検証します。

このテストを繰り返すには、更新前に古いバージョンのインストールを外部ドライブにコピーして、後で新しいバージョンの上に戻せるようにします。このバージョンを保存していない場合は、`xbapp install` または `wdapp install` を使用して古いバージョンをインストールできる CDN URL を要求できます。古いバージョンをインストールした後、更新テストを繰り返すことができます。

## ハイブリッド ディスクと CDN の更新

更新は光ディスクによるインストールにも適用されます。ディスクからインストールする場合、インストール プロセスは、ディスクから利用可能な最新のデジタル パッケージに対して変更のないディスク コンテンツをインストールします。インストール プロセスは同時に残りのコンテンツをストア CDN からインストールします。このプロセスは自動的に行われます。

このプロセスをシミュレートするには、次のコマンドを使用します。

```cmd theme={null}
xbapp update http://server/[latest version].xvc /p:[disc package].xvc`
```

HTTP サーバーを経由して更新パッケージを提供することは、インストールが開発 PC のローカル ストレージから 1 つのソースしか持てないという事実に対する回避策です。

ディスクの .xvc パッケージを使用してテスト ディスクを焼く場合、ディスク パッケージは光ディスクのパスを指すことができます。

### 関連項目

[コンテンツ更新のベスト プラクティス](/build/core-features/common/packaging/packaging-updates)

[更新の確認](https://learn.microsoft.com/build/store/commerce/fundamentals/xstore-checking-for-updates)


## Related topics

- [コンテンツ更新のベスト プラクティス](/ja-jp/build/core-features/common/packaging/packaging-updates.md)
- [ストリーミング インストールと Intelligent Delivery: 概要](/ja-jp/build/core-features/common/packaging/overviews/streaming_install-intelligent_delivery.md)
- [タイトル パッケージング、更新、およびストリーミング インストールのテスト](/ja-jp/build/core-features/common/packaging/title-packaging-streaming-install-testing.md)
- [更新プログラムの確認](/ja-jp/publishing/xstore-commerce/xstore-checking-updates.md)
- [MSIXVC2 によるコンテンツ更新](/ja-jp/build/core-features/common/packaging/packaging-updates-msixvc2.md)
