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

差分アップデート

CapgoのLive Updateシステムは、JS bundle全体ではなく変更されたファイルのみを送信するため、より高速かつ効率的なアップデートが可能です。

これにより、ダウンロードが必要なデータ量が最小限に抑えられるため、低速な回線や従量制のネットワークを利用しているユーザーにとって特に大きなメリットとなります。

もう一つの利点は、画像や動画など、めったに変更されない大容量のアセットが含まれるアプリにおいて、それらがJSファイルのzip圧縮分と一緒に何度もダウンロードされるのを防げる点です。

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

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

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

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

Delta を取得するデバイスと、フル zip を取得するデバイスの違い

「Deltaとフルzip、どちらのデバイスがダウンロードするか」セクション

でアップロードされたbundleには、 --delta フルzipとdeltaファイルの両方が含まれています。デフォルトの Zip + 差分データ ダウンロード形式を使用している場合、各デバイスはサポートされている最適なパッケージを取得します:

  • Deltaをサポートするプラグインバージョンのデバイス(5.10.0+, 6.25.0+, 7.0.35+、または 8+)は、変更されたdeltaファイルのみをダウンロードします。
  • Deltaをサポートしていない古いプラグインバージョンのデバイスは、フルzipをダウンロードします。
  • なしでアップロードされたbundleには、 --delta deltaファイルが含まれていないため、すべてのデバイスがフルzipをダウンロードします。

そのため、Deltaを有効にした後でもフルzipのダウンロードが発生することがありますが、これは想定内の挙動です。これらは、古いプラグインバージョンを含む古いNative Buildを実行しているデバイスからのものです。ユーザーがストアからアプリをアップデートすることで、これらは解消されます。

これは、以下の ダウンロード形式 setting.

Delta updatesを使用すると、Capgoの帯域幅使用量も削減できます。帯域幅はデバイスが実際にダウンロードしたファイルのみをカウントするため、Deltaを使用すればバンドル全体ではなく、変更されたファイルのみがカウント対象となります。エッジにキャッシュ済みのファイルやフルzipはカウントされず、中断されたダウンロードも、ダウンロード済みの部分を二重にカウントすることなく再開されます。詳細は 帯域幅はどのようにカウントされますか?.

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

ターミナルウィンドウ
npx @capgo/cli@latest bundle upload --delta

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

  • 空のファイル: CLI はログに記録し、 Ignoring empty file... ゼロバイトのファイルを delta ファイルから除外します。upload 自体は失敗しないため、空のファイルを追加すると、デプロイを止めることなく生成される bundle が変わる可能性があります。Delta bundle のパスにゼロバイトのファイルを含めないでください。
  • パス内のスペースについて: bundleのパスにスペースが含まれている場合、Delta uploadはファイルのアップロード前に失敗します。Delta updateをアップロードする前に、ファイル名やディレクトリ名からスペースを削除してください。

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

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

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

以下のような場合に、 --delta-only if:

  • 常にDeltaアップデートを使用し、フルバンドルのアップロードは避けたい場合
  • CI/CDパイプラインを構築中で、自動アップロードをすべてDeltaにしたい場合
  • アプリのサイズが大きく帯域幅が限られているため、アップロード/ダウンロードサイズを最小限に抑えたい場合

もし、その間にフルバンドルのアップロードを行う必要がある場合は --delta-only が設定されている場合は、単に upload コマンドを実行してください --delta-onlyこれにより、そのアップロード時のみ設定が上書きされ、必要な時に完全なバンドルをプッシュできます。

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

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

Capgo webapp を使用して、前回の upload の詳細を確認することもできます:

  1. こちらから webapp
  2. アプリをクリックします
  3. 統計バーの bundles の数値をクリックしてください。
  4. 最後のbundleを選択してください
  5. 以下の Delta files 行を確認してください。ここには、 Deltaファイルなし そのbundleがフルzipとしてのみアップロードされたかどうかが表示されます。 bundleタイプ

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

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

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

以下を使用している場合: 差分アップデート live updateの配信を計画し、それを以下と連携させるために Capgo Live Updates Capgo Live Updates のプロダクトワークフロー向けに、 概要 概要のインプリメンテーション詳細として、 機能 機能の詳細として、 Updateの挙動 Update Behavior の実装詳細については、 アップデートの種類 Update Types の実装詳細については、