# CCD でのアプリケーションサイズ削減

> Reduce your initial application size by delivering game content through Cloud Content Delivery after players install the app.

プレイヤーにゲームのダウンロードを促すには、アプリケーションの初期サイズを小さくしておき、後で必要に応じて新しいレベルやアセットのファイルをダウンロードしてもらうことをお勧めします。

このセクションでは、CCD と Addressables を併用してアプリケーションのサイズを削減するプロセスを、サンプルプロジェクトを通じて説明します。

## アプリケーションサイズの削減のサマリー##reduce-application-size-summary

以下に、アプリケーション削減プロセスのサマリーを示します。各ステップについては、ドキュメントの後半で詳しく説明します。

1. Addressables パッケージと CCD Management パッケージをインストールします。
2. CCD でバケットを設定します。
3. CCD 経由で送信するための新しいシーンをゲーム用に作成するか、既存のレベルを使用します。
4. Unity エディターでアセットを設定します。
5. Addressables を通じてコンテンツを呼び出すスクリプトを設定します。
6. 新しいアセットを CCD ダッシュボードにリリースします。

これらのステップを完了するには、以下のものが必要です。

* Unity エディター 2019.4 以降
* Addressables (最新バージョン、この例ではバージョン 1.19.15 を使用)
* CCD Management (最新バージョン、この例ではバージョン 2.0.1 を使用)

## 必要なパッケージをインストールする##install-required-packages

最初に、必要な Addressables パッケージと CCD Management パッケージがインストールされていることを確認します。

1. Unity エディターで、**Window** (ウィンドウ) > **Package Manager** (パッケージマネージャー) を選択します。
2. Addressables を検索し、バージョン 1.19.15 以上を選択して **Install** (インストール) を選択します。
3. CCD Management を検索し、バージョン 2.0.1 以上を選択して **Install** (インストール) を選択します。

## CCD でバケットを設定する##configure-a-bucket-in-ccd

以下のステップは、Unity Gaming Services ダッシュボードでバケットを作成して設定する方法を示しています。

1. [CCD ダッシュボード](./dashboard.md) の手順を実行して、CCD 内でバケットにアクセスします。

2. [バケット](./dashboard.md#buckets) の手順を実行してバケットを作成します。

   1. 必ず **Bucket write conditions** (バケットの書き込み条件) を **Open to all** (全員に公開) に設定してください。
   2. **Environment** (環境) を選択する際には **production** (本番) に設定します。

3. **Create** (作成) を選択してバケットを作成します。

4. バケットのリストからバケットを選択します。

5. **Upload Content** (コンテンツをアップロード) を選択し、コンピューターから任意のファイルをアップロードします。

   > **Note:**
   >
   > このステップは、バケットの URL を作成して取得するためだけのものです。最初のリリースを作成したら、このファイルは削除してかまいません。

6. ページを更新し、[リリースを作成](./dashboard.md#releases) します。

7. Releases (リリース) タブからリリースを選択します。

8. Addressable Remote Path URLs (アドレス指定可能リモートパス URL) タブを選択します。

9. Badge: Latest (バッジ: 最新) の URL を、後で Unity エディターで使用するためにコピーします。\\


   **Frame:**
   ![](/api/media?file=/ccd/media/images/ccd-app-size-configure-bucket.png)

## Unity エディターを設定する##configure-the-unity-editor

Unity エディターで以下の設定を行い、アプリケーションのサイズ削減プロセスを続行します。

1. **Window** (ウィンドウ) > **Asset Management** (アセット管理) > **Addressables** > **Groups** (グループ) に移動します。
2. Addressable アセットを使用したことがない場合は、**Create Addressables Settings** (Addressables 設定を作成) を選択する必要があります。\\


   **Frame:**
   ![](/api/media?file=/ccd/media/images/ccd-app-size-configure-editor-1.png)
3. Addressables Groups (Addressables グループ) ウィンドウで、**Profile** (プロファイル) > **Manage Profiles** (プロファイルの管理) を選択します。
4. Default (デフォルト) プロファイルを選択します。
5. **Remote** (リモート) を **Custom** (カスタム) に設定します。
6. Remote (リモート) フィールドを展開し、**Remote.LoadPath** を先ほど保存した URL に設定します。\\


   **Frame:**
   ![](/api/media?file=/ccd/media/images/ccd-app-size-configure-editor-2.png)
7. Unity エディターのメインウィンドウから、**Window** (ウィンドウ) > **Asset Management** (アセット管理) > **Addressables** > **Settings** (設定) を選択します。
8. **Build Remote Catalog** (リモートカタログをビルド) を有効にします。
9. **Build & Load Paths** (ビルドパスとロードパス) を **Remote** (リモート) に設定します。\\


   **Frame:**
   ![](/api/media?file=/ccd/media/images/ccd-app-size-configure-editor-3.png)

## シーンを準備する##prepare-the-scenes

次に、CCD を通じてロードするシーン (1 つまたは複数) を準備します。初期レベルとは異なるシーンを少なくとも 1 つ用意してください。

> **Note:**
>
> シーンの作成はこのユースケースの範囲外です。詳細については、Unity マニュアルの [シーン](https://docs.unity3d.com/Manual/CreatingScenes.html) ドキュメントを参照してください。

1. Unity エディターの Project (プロジェクト) タブにあるアセットの中からシーンを見つけます。

2. Inspector タブで、**Addressable** を有効にします。\\


   **Frame:**
   ![](/api/media?file=/ccd/media/images/ccd-app-size-prepare-1.png)

\
または、Project (プロジェクト) タブから Addressables Groups (Addressables グループ) タブの Default Local Group (デフォルトローカルグループ) にシーンをドラッグします。\\


**Frame:**
![](/api/media?file=/ccd/media/images/ccd-app-size-prepare-2.png)

3. Addressables Groups (Addressables グループ) タブ内でアセットを右クリックし、わかりやすくするために **Simplify Addressable Names** (Addressable の名前を単純化) を選択します。

4. Default Local Group (デフォルトローカルグループ) を選択します。

5. Inspector で、以下を行います。

   1. **Build & Load Paths** (ビルドパスとロードパス) を **\<custom>** (\<カスタム>) に設定します。
   2. **Build Path** (ビルドパス) を **RemoteBuildPath** に設定します。
   3. **Load Path** (ロードパス) を **RemoteLoadPath** に設定します。

6. Addressables Groups (Addressables グループ) ウィンドウに戻り、**Build** (ビルド) > **New Build** (新しいビルド) > **Default Build Script** (デフォルトビルドスクリプト) を選択します。

   > **Note:**
   >
   > すでにビルドを実行している場合は、**Build** (ビルド) > **Update a Previous Build** (以前のビルドを更新) を選択し、ビルドの .bin ファイルを選択することでそのビルドを更新できます。

## ビルドを比較する (任意)##compare-builds-optional

この任意のステップでは、シーンを含むアプリケーションを 1 回、シーンを含まないアプリケーションを 1 回ビルドして、ビルドサイズを比較します。このテストアプリケーションでは、およそ 30 MB の差があります。より多くのレベルやアセットを含む大規模なアプリケーションでは、サイズの差はさらに大きくなります。

| ![](/api/media?file=/ccd/media/images/ccd-app-size-compare-1.png) | ![](/api/media?file=/ccd/media/images/ccd-app-size-compare-2.png) |
| ----------------------------------------------------------------- | ----------------------------------------------------------------- |
| シーンとアセットを含むリリースのサイズ (左) と、シーンを含まないリリースのサイズ (右)。                   |                                                                   |

## スクリプトを設定する##configure-your-script

メインシーン (プロジェクトと共にビルドされるシーン) で、次のレベルをロードするボタンまたはイベントを必ずゲーム内に追加してください。

> **Note:**
>
> 競合を避けるために、CCD を通じて送信するシーンはすべてビルドから除外してください。

以下のサンプルスクリプトをゲーム内のボタンにアタッチできます。Addressable の名前 (この例では sceneName) を必ず Inspector に入力してください。

*C#*

```cs
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.SceneManagement;
using UnityEngine.AddressableAssets;
 
public class LoadSceneCCD : MonoBehaviour
{
    public string sceneName = "";
 
    public void LoadTargetScene()
    {
        Addressables.LoadSceneAsync(sceneName, UnityEngine.SceneManagement.LoadSceneMode.Single, true);
    }
}
```

## ダッシュボードにアップロードするためのアセットバンドルを準備する##prepare-assetbundle-for-dashboard-upload

以下のステップを実行して、ダッシュボードにアップロードするシーンアセットを準備します。

1. Unity エディターで、**Window** (ウィンドウ) > **Asset Management** (アセット管理) > **Addressables** > **Groups** (グループ) を選択します。
2. **Build** (ビルド) > **New Build** (新しいビルド) > **Default Build Script** (デフォルトビルドスクリプト) を選択します。
3. ビルドが完了したら、ローカルドライブで、プロジェクトフォルダーに移動し、次に `ServerData\StandaloneWindows64` に移動します。このフォルダーは、ビルド対象のプラットフォームによって異なる場合があります。
4. 末尾が .hash と .bundle のファイルをメモします。

## ダッシュボードにアップロードする##upload-to-the-dashboard

前のステップで生成した、最近ビルドされた .hash ファイルと .bundle ファイルをアップロードします。これが初めてのアップロードである場合は、すべてのファイルを選択してアップロードします。

1. [CCD ダッシュボード](./dashboard.md) のバケットページに戻ります。
2. 作成したバケットを選択します。
3. Latest (最新) タブの Entries (エントリー) で、Upload Content (コンテンツをアップロード) タブを選択します。\\


   **Frame:**
   ![](/api/media?file=/ccd/media/images/ccd-app-size-upload.png)
4. 前のステップでビルドしたファイルを参照して選択します。
5. **Upload Files** (ファイルをアップロード) を選択します。
6. アップロードが完了したら、**Refresh Page** (ページを更新) を選択します。
7. **Create Release** (リリースを作成) を選択し、新しいコンテンツに Latest (最新) バッジを適用します。

## ビルドをテストする##test-your-build

CCD シーンのロードをトリガーするボタンまたはアクションをクリックして、ビルドをテストできます。すべてがうまくいけば、少し遅れて CCD シーンがロードされるはずです。ビルドにはメインシーンのみが含まれ、CCD を通じてロードしたいレベルは含まれないようにする必要があります。そうしないと、アプリケーションのサイズが小さくなりません。
