メインコンテンツにスキップ
チュートリアル

Capgoを軽量かつ高速に更新する方法

Capgoの実用ガイド: デルタ バンドル、チャネル ベースのロールアウト、ネイティブ ベースライン リフレッシュ、PR プレビュー、直接の更新ガードレール

マーティン・ドナディュー

マーティン・ドナディュー

コンテンツマーケター

 Capgo の更新を軽量かつ高速に保つ方法

__CAPGO_KEEP_0__ のライブ更新の最良の方法は、ユーザーがほとんど気づかないものです。

通常、3 つのことが必要です:

  1. __CAPGO_KEEP_0__ のダウンロードサイズが小さい
  2. __CAPGO_KEEP_0__ のロールアウトが制御されている
  3. 何かが間違っているときでも、 __CAPGO_KEEP_0__ の復元が即座に実行される

Capgo の「OTAを軽量に保つ」アドバイスは、React Native の世界でも有効ですが、 Capgo は Capacitor チームにいくつかの追加のレバーを提供します。 デルタ更新, チャンネル, 自動ロールバック, バージョン対象, そしてオプション エンドツーエンド暗号化.

あなたがそれらを一緒に使用すると、パッケージサイズが小さくなり、インストールが速くなり、運用上の混乱が少なくなります。

MAUが同じままでも、Leanは重要です。

CapgoのCapgo-固有の詳細の1つ: Capgo MAUは、更新サービスに接続した月に30日以内にアクティブだったデバイスの数です。

バンドルをスリムにすることは、主にMAUのカウントを減らすためのトリックではありません。重要なのは、ユーザーとチームが実際に感じる部分を改善することです:

Leanの更新は、速さ、安全性、運用の規律についてです。

1. デルタ更新をデフォルトにする

1つのことをするなら、これをしましょう。

Capgo’s デルタ更新 バージョン間の変更されたファイルのみを送信するので、フルウェブパッケージを再ダウンロードするのではなく、OTAの定期パフォーマンスの最大の単一の勝ちです。

bun run build
bunx @capgo/cli@latest bundle upload --channel staging --delta

QAパスが終了したとき:

bunx @capgo/cli@latest bundle upload --channel production --delta

CIが厳密に残す場合に使用する場合は --delta-only 混在したプラグインバージョンの場合、デルタ更新をサポートしていない古いデバイスがマニフェストベースのデルタ配信をダウンロードできないため、フルパッケージアップロードに戻るのを防ぐために

bunx @capgo/cli@latest bundle upload --channel production --delta-only

デルタ更新をサポートしているプロダクションフリートのみで使用する --delta-only when your production fleet supports Delta updates. On mixed plugin versions, older devices that do not support manifest-based delta delivery will not be able to download that update.

This matters even more if you use directUpdate, because the time between “update found” and “app reloaded” becomes visible to the user.

2. AssetsをJavaScriptの荷物として扱わない

Large assetsは、OTA bundlesが静かに膨張する場所です。

Some practical rules:

  • 大きい画像やメディアをJavaScript内にインライン化しないでください。代わりに、通常のアセットファイルが使用できる場合には。
  • 頻繁に変更されるコンテンツは、APIまたはCDNに保管してください。アプリの配布パッケージ内に必要ない場合。
  • マーケティング画像、オンボーディングビデオ、1回限りのキャンペーンアセットは、毎回のリリースで置き換えられます。
  • 安定したアセットは安定させてください。Delta更新では、変更されていないファイルは再ダウンロードされるのではなく、再利用されます。

これは、Capgoをアプリが成長するにつれて速く保つ最も簡単な方法の1つです。最悪のパターンは、UIの小さな修正が、ユーザーに大量の無関係なメディアをダウンロードさせることです。

3. 本物のネイティブ変更用にネイティブリリースを維持してください

Capgoは、実行時ロードされるHTML、CSS、JavaScript、そしてアセットを更新します。

It is not the right channel for:

  • 新しいネイティブ プラグイン
  • 権限の変更
  • capacitor.config.ts 変更
  • iOS または Android のネイティブ プロジェクトの状態を変更するもの

その行はパフォーマンスにも関係している。OTA ラインに大きな構造的変更を繰り返し追加すると、更新戦略は時間の経過とともに重くなり、リスクが高まる。

2 つのリリース ラインを意図的に使用する:

ネイティブ ライン

プラグインの変更、権限の変更、ネイティブの構成:

bun run build
bunx cap sync

次に、通常のストア リリースを出します。

Capgo ライン

安全なウェブ層のイテレーション:

bun run build
bunx @capgo/cli@latest bundle upload --channel production --delta

最近に多くの長期的な資産を追加した場合は、常に本来の基準を更新してください。新しいストアのビルドでは、最新の基準を埋め込みます。これにより、将来のCapgoの差分が小さくなります。

4. チャンネルを使用してロールアウトのサイズを小さくします

「軽量」な更新は、単にメガバイトだけではありません。多くのデバイスが更新を受け取る前に、更新が良好であることを確認するまでの時間も含まれます。

Capgoの チャンネルシステム は、以下の点で最も綺麗な方法です:

  • staging QA用
  • beta 招待されたテスター用
  • production 全員用
  • hotfix 緊急回復用

シンプルなフローは以下のようになります:

  1. アップロード staging.
  2. 実機で検証する。
  3. 健康が低下した場合に直ちにロールバックする。
  4. バージョン対象設定とチャンネルを組み合わせることで、古いバイナリに不必要なバンドルや互換性のないバンドルを避けることができます。

PR プレビューの場合も、__CAPGO_KEEP_0__が機能します。 内部ビルドを待たずに、JS のみの変更をテストできるようになります。直接更新を有効にすると、起動が速くなるように、起動パスを厳格にする必要があります。

Capgo’s ロールアウトは、制御されたチャンネルまたはパーセンテージベースのロールアウトを通じて、徐々に進めます。起動が速くなるように、起動パスを厳格にする必要があります。

バージョン対象設定とチャンネルを組み合わせることで、古いバイナリに不必要なバンドルや互換性のないバンドルを避けることができます。

チームがより厳密なレビュー ループを望む場合、__CAPGO_KEEP_0__もPR プレビューに適しています。

Capgo’s 動作の更新 ドキュメントでは明示的に、Deltaのアップデートと組み合わせることを推奨しています。それが正しいデフォルトです。 directUpdate 2 番目のガードレールは

アプリが 10 秒以内に、またはあなたが __CAPGO_KEEP_0__ の設定で指定した時間以内に、準備完了を報告しない場合、またはあなたが __CAPGO_KEEP_1__ で指定した時間以内に、__CAPGO_KEEP_1__ はそのバンドルを無効にし、前のバージョンに戻します。 そのロールバックの動作は、生産環境では望ましいですが、同時に起動時にはクリーンな状態を維持する必要があります。 notifyAppReady().

import { CapacitorUpdater } from '@capgo/capacitor-updater'

CapacitorUpdater.notifyAppReady()

Call notifyAppReady() 正しい場所で呼び出す appReadyTimeout you set in your Capacitor config, Capgo can mark that bundle invalid and restore the previous good version. That rollback behavior is what you want in production, but it also means you should keep startup clean:

  • 即座に再読み込みすると、アプリの状態を慎重に保存して復元する notifyAppReady() 悪いネットワークや低エンド デバイスのシナリオをテストする前に、広範なロールアウトを行う
  • docs explicitly recommend pairing with Delta updates. That is the right default.
  • The second guardrail is
  • If your app does not report ready within the default 10-second window, or within whatever you set in your __CAPGO_KEEP_0__ config, __CAPGO_KEEP_1__ can mark that bundle invalid and restore the previous good version. That rollback behavior is what you want in production, but it also means you should keep startup clean:

あなたが最近確認していない場合は、 notifyAppReady ガイド を再度読む価値があります。

6. 内部の更新チャネルを使用するのではなく、不要なネイティブのビルドを避ける

多くのモバイルチームは、明らかにウェブのみの変更に対してビニールを構築するのに時間を浪費しています。

変更が:

  • コピー
  • UI ポリッシュ
  • オンボーディング フロー
  • 価格画面ロジック
  • 分析ワイヤ
  • 機能フラグ
  • パブリッシュまたは API のレスポンスのレンダリング、

次に、 Capgo のアップデートは、通常、より迅速なレビューのアーティファクトです。

つまり、ネイティブのビルドが少なくなるため、TestFlight の混乱が少なく、チームのフィードバックループがより密になるということです。これは、 Capgo: OTA のレーンにレビューと QA の作業を移すことができるため、ネイティブ/ウェブの境界を破ることなく、最も利用されていない利点の 1 つです。

Capgo のガイド 1 つのモバイル アプリ ID でステージング この方法を長期にわたって維持するための実践的な方法について説明しています。

7. リーンとシークレットを分離する

小さなバンドルと安全なバンドルは、異なる問題を解決します。

チャンネルは、有効性を制御します。チャンネル自体がバンドルを機密情報にしないことになります。

より強力な配信保証が必要な場合:

アップデートサイズは無関係ではありません。ただし、両方の次元を最適化する必要があります:

  • 速度の向上
  • 配信制御のために暗号化
  • ロールアウト制御のためにチャンネル
  • リカバリのためにロールバック

実践的な「Capgo」ワークフロー

シンプルなデフォルトの運用モデルが必要なら、このようにしてください:

  1. ネイティブとOTAリリースレーンを分離してください。
  2. JSの変更をアップロードしてください --delta __CAPGO_KEEP_0__。
  3. __CAPGO_KEEP_1__を使用します。 staging __CAPGO_KEEP_2__と beta __CAPGO_KEEP_3__をチェックする前に production.
  4. __CAPGO_KEEP_4__を表示します。 __CAPGO_KEEP_5__とログを更新し __CAPGO_KEEP_6__後、ロールアウトの前にだけではなくてそれ以降も。
  5. __CAPGO_KEEP_7__の場合、ネイティブのビルドが必要ない場合にインストール可能なプレビューにPRを変換します。
  6. __CAPGO_KEEP_8__を可能な限りバンドルから大きく頻繁に変更されるメディアを除外します。
  7. __CAPGO_KEEP_9__の後、ネイティブの基準を更新します。
  8. __CAPGO_KEEP_10__とロールバックの動作をリリースエンジニアリングの部分として扱い notifyAppReady() __CAPGO_KEEP_11__の設定のトリビアとして扱いません。

その組み合わせは、一般的な「変更したものだけをアップロードする」アプローチよりもずっと長く速い。

最終的な考慮

Capgo チームにとって、「軽量で速い」は単にバンドルサイズの問題ではありません。

それはリリース設計の問題です。

パイロットサイズではデルタ更新を使用し、ロールアウトサイズではチャンネルを使用し、エラーのサイズではロールバックを使用します。OTAについて考えるときにそう考えると、更新はアプリ、チーム、ユーザー ベースが大きくなるにつれても速くなります。

Capgo の更新を軽量で速く維持する方法については、ここから続きます。

__CAPGO_KEEP_0__ を使用している場合 Capgo の更新を軽量で速く維持する方法 __CAPGO_KEEP_0__ の更新を軽量で速く維持する方法 チャンネル ルーティングとステージド ロールアウトを計画するには、__CAPGO_KEEP_0__ を使用して接続します。 チャンネル チャンネル Channelsの実装詳細については Channels Channelsの実装詳細については ベータテスト ソリューション ベータテスト ソリューションの製品ワークフローについて、 バージョン ターゲット ソリューション バージョン ターゲット ソリューションの製品ワークフローについて。

Capacitor アプリのリアルタイム更新

Capgoを使用して、ウェブ層のバグが生じた場合に、修正をアプリストアの承認待ちの日数を待たずに配信することができます。ユーザーはバックグラウンドで更新を受け取り、ネイティブの変更は通常のレビュー経路で残ります。

スタートする

ブログの最新記事

Capgoは、プロフェッショナルなモバイルアプリを作成するために必要な最良の洞察を提供します。