メインコンテンツへスキップ

Capgo Delta Updates: --delta で変更ファイルのみを配信

CapgoのLive Updateシステムは、JSバンドル全体ではなく変更されたファイルのみを送信することで、より高速かつ効率的にアップデートを配信できます。

低速または従量制のネットワーク接続のユーザーにとって特に有効で、ダウンロードするデータ量を最小限に抑えます。

もう一つの利点は、画像や動画など変更の少ない大きなアセットの場合、zip 圧縮された JS ファイルと違い一度しかダウンロードされないことです。

Capgo の Delta アップデートは、アプリにインストールされている Capgo プラグインによって処理されます。アプリの新しいバージョンを以下の --delta フラグを使用してアップロードすると、Capgo は次の処理を行います:

  1. ビルド内の各ファイルが、Delta ファイルとして個別にアップロードされます
  2. 各 Delta ファイルのチェックサムが生成されます
  3. パスとチェックサムを含む Delta ファイルのリストが、Capgo のデータベースに保存されます

アプリを実行しているデバイスがアップデートを確認すると、Capgo プラグインは新しい bundle の Delta ファイルのリストを受信します。プラグインはそのリストを既に持っているファイルと比較し、チェックサムとファイルパスに基づいて変更されたファイルを特定します。

その後、プラグインは JS bundle 全体ではなく、変更されたファイルのみをダウンロードします。ダウンロードしたファイルと、既に保持している変更されていないファイルを組み合わせることで、アプリの新しいバージョンを再構築します。

Delta を受け取るデバイスとフル zip を受け取るデバイス

セクション「Delta を受け取るデバイスとフル zip を受け取るデバイス」

でアップロードされたバンドルには --delta フル zip と delta ファイルの両方が含まれます。デフォルトの Zip + delta ダウンロード形式のチャンネルでは、各デバイスがサポートする最適なパッケージが配信されます:

  • Delta 対応のプラグインバージョン(5.10.0+, 6.25.0+, 7.0.35+、または 8+)のデバイスは、変更された delta ファイルのみをダウンロードします。
  • Delta 非対応の古いプラグインバージョンのデバイスは、フル zip をダウンロードします。
  • アップロードされたバンドルに --delta 差分ファイルがないため、すべてのデバイスが完全な zip をダウンロードします。

Deltaを有効にした後でも、フルzipのダウンロードが一部発生するのは想定内です。これは、古いpluginバージョンの古いNative Buildを実行しているデバイスから発生します。ユーザーがストアからアプリを更新すると解消します。

これはチャンネルごとに次の ダウンロード形式 設定で変更できます。

Deltaアップデートを利用すると、Capgoの帯域幅使用量も削減できます。帯域幅はデバイスが実際にダウンロードしたファイルだけをカウントするため、Deltaではバンドル全体ではなく変更されたファイルだけがカウントされます。エッジでキャッシュ済みのファイルやフルzipはカウントされず、中断したダウンロードはダウンロード済み部分を二重にカウントせずに途中から再開します。詳細は 帯域幅のカウント方法.

CapgoアプリでDeltaアップデートを有効にするには、新しいバージョンをアップロードする際に次の --delta フラグを使用するだけです:

ターミナル
npx @capgo/cli@latest bundle upload --delta

もし autoUpdate が即時適用モード("atInstall", "onLaunch"、または "always")に設定されている場合、 capacitor.config、お使いの CLI がそれを検出します。非対話型環境では Delta updates を自動送信し、対話型環境ではアップロード前に確認を求めます。従来の directUpdate 設定も引き続き検出されます。フルバンドルを強制的にアップロードするには --no-delta を使用してください。

  • 空のファイル: CLI のログ Ignoring empty file... また、deltaファイルから0バイトファイルを除外します。アップロードは失敗しないため、空ファイルを追加するとデプロイを止めずに最終的なbundleが変わり得ます。Delta bundleのパスに0バイトファイルを含めないでください。
  • パス内のスペース: bundleのパスにスペースが含まれている場合、ファイルのアップロード前にDeltaアップロードが失敗します。Deltaアップデートをアップロードする前に、ファイルまたはディレクトリ名を変更してスペースを削除してください。

すべてのアップロードをDeltaアップデートに限定し、誤ってフルbundleをアップロードしてしまうのを防ぎたい場合は、以下の --delta-only フラグ:

ターミナル
npx @capgo/cli@latest bundle upload --delta-only

次の場合: --delta-only が使用されると、Capgo はフルzipではなくdeltaファイルのみをアップロードします。Deltaをサポートしていないプラグインバージョンのデバイスでは、このアップデートをダウンロードできなくなります。

以下を使用することもできます: --delta-only if:

  • 常に Delta アップデートを使用し、フルバンドルのアップロードを許可したくない場合
  • CI/CD パイプラインを設定しており、すべての自動アップロードが Delta であることを確認したい場合
  • アプリが大きく帯域幅が制限されているため、アップロード/ダウンロードサイズを最小限に抑えたい場合

が設定されている状態でフルバンドルのアップロードを行う必要がある場合 --delta-only は指定せずにアップロードコマンドを実行するだけです --delta-only。これにより、その 1 回のアップロードについて設定が上書きされ、必要に応じて完全なバンドルをプッシュできます。

Delta アップデートが動作していないように見える場合(つまり、小さな変更でもデバイスが常にフル JS バンドルをダウンロードしている場合)、以下を確認してください:

  • 新しいバージョンをアップロードするたびに --delta フラグを使用しています
  • 使用する場合、 --delta-only、誤って以下を省略していないか確認してください: --delta フラグ
  • デバイスでDeltaをサポートするプラグインバージョンが実行されています(5.10.0+, 6.25.0+, 7.0.35+、または 8+)
  • チャンネルのダウンロード形式が一致しません Full zipのみ対応
  • デバイスのネットワーク接続が安定しており、Capgo サーバーにアクセス可能です

Capgo webapp を使用して、前回のアップロードの詳細を確認することもできます:

  1. 以下にアクセスしてください: ウェブアプリ
  2. アプリをクリックしてください
  3. 統計バーの bundles の数をクリックします。
  4. 最後の bundle
  5. チェック: Delta files 行を選択します。そこには 差分ファイルなし と表示されます。これは、bundle がフル zip としてのみアップロードされた場合です。 bundle タイプ

問題が解決しない場合は、Capgo サポートまでお問い合わせください。サーバーログを確認し、Delta アップロードが正しく処理されているか、デバイスが delta ファイルを受信できているかを調査します。

これで完了です! --delta このフラグにより、Capgo は Delta アップデートに必要な個別の delta ファイルをアップロードします。

注意:Delta アップデートとして配信したい新しいバージョンをアップロードする際は、毎回 --delta を使用する必要があります。このフラグを省略すると、Capgo は JS bundle 全体を単一のファイルとしてアップロードするため、一部のみが変更された場合でもデバイスは bundle 全体をダウンロードすることになります。

使用している場合 差分アップデート live update の配信を計画するには、以下と連携させます: Capgo Live Update Capgo Live Updates のプロダクトワークフロー向けに、 概要 実装の詳細は Overview を 機能 実装の詳細は Features を アップデートの動作 実装の詳細はアップデートの動作を、および アップデートの種類 実装の詳細はアップデートの種類を。