最良のライブ更新は、ユーザーがほとんど気づかないものです。
通常、3 つのことが必要です:
- ダウンロードサイズが小さい
- ロールアウトが制御されている
- エラーが発生した場合のリカバリが即時
The same “keep OTA lean” advice that works in React Native land also applies to Capgo. The difference is that Capgo gives Capacitor teams a few extra levers: デルタ更新, チャンネル, 自動ロールバック, バージョン対象、およびオプション 端末間暗号化.
Capgoを使用する場合、パフォーマンスが向上し、インストールが速くなり、運用上の混乱が少なくなります。
MAUが同じままでも、スリム化は重要です。
Capgoの特徴的な1つの便利な詳細: Capgo MAUは、過去30日間にアップデートサービスに接続した月間有効なデバイスの数です。
バンドルをスリム化することは主にMAUのカウントを減らすためのトリックではありません。実際にユーザーとチームが感じる部分を改善するため、重要です。
- セルラーまたは弱いWi-Fiでダウンロードが速くなります。
- 直接アップデート 失敗したまたはロールバックされたリリースで浪費された帯域幅が少なくなります。
- テストまたはステージングリリースの爆発半径が小さくなります。
- スリムなアップデートは実際にスピード、セーフティ、運用上の規律についてです。
1. デルタアップデートをデフォルトに設定する
あなたが一つだけ行うことができるなら、これを行ってください。
__CAPGO_KEEP_0__と__CAPGO_KEEP_1__は元のテキストから保持された値です。
Capgoの デルタアップデート ファイルの変更点のみを送信し、フルウェブパッケージを再ダウンロードするのではなく。 これは、定期的な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 プロダクションの艦隊がデルタアップデートをサポートしている場合にのみ使用してください。 混合プラグインバージョンの場合、古いデバイスがマニフェストベースのデルタ配信をサポートしていない場合、更新をダウンロードできません。
このことは、更新が見つかったときからアプリが再読み込まれるまでの時間がユーザーに視覚化される場合にさらに重要です。 directUpdate2. アセットをアセットとして扱い、JavaScriptの荷物として扱わない
大きいアセットは、OTAバンドルが静かに膨張する場所です。
__CAPGO_KEEP_0__’s
実践的なルール:
- JavaScript内に大きな画像やメディアをインライン化しないでください。通常のアセットファイルが代わりに使用できる場合です。
- APIに頻繁に変更されるコンテンツを、自身のCDNまたはAPIに保管してください。アプリケーションバンドル内に配置する必要がない場合です。
- マーケティング画像、オンボーディングビデオ、1回限りのキャンペーンアセットは、毎回のリリースで置き換えられます。注意してください。
- 安定したアセットは安定させてください。デルタアップデートでは、変更されていないファイルは再ダウンロードされるのではなく、再利用されます。
Capgoをアプリケーションが成長するにつれて、高速に保つ最も簡単な方法の1つです。最悪のパターンは、UIの小さな修正が、無関係なメディアの大量ダウンロードを強制することです。
3. 本物のネイティブ変更用にネイティブリリースを維持してください
Capgoはウェブ層を更新します: HTML、CSS、JavaScript、実行時ロードされたアセット。
__CAPGO_KEEP_0__は次のものではありません:
- 新しいネイティブプラグイン
- 許可の変更
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の チャンネルシステム それは、以下の制御の最も綺麗な方法です:
stagingQA用beta招待されたテスター用production全員用hotfix緊急回復用
シンプルなフローは以下のようになります:
- アップロードする
staging. - 実機で検証する。
- 制御チャンネルまたはパーセンテージベースのロールアウトを通じて、徐々に展開する。
- 健康が低下すると、すぐにロールバックする。
あなたのアプリが複数のネイティブベースラインを持っている場合、チャンネルをペアする バージョン対象. これにより、古いバイナリから不相応または不必要に重いパッケージが排除されます。
レビューループがさらに厳密にしたいチームにとって、Capgoも適しています。 PRプレビュー. これにより、JSのみの変更をテストするために、製品、QA、ステークホルダーは新しいTestFlightまたはPlayの内部ビルドを待つ必要がなくなります。
5. 直接更新を有効にすると、起動ハードを最適化する必要があります
更新を適用する速度が速くしたいほど、起動パスがより規則正しくなければなりません。
Capgoの 更新動作 ドキュメントは明示的に、Delta更新と組み合わせることを推奨しています。 これは正しいデフォルトです。 directUpdate 2番目のガードレールは
__CAPGO_KEEP_0__ notifyAppReady().
import { CapacitorUpdater } from '@capgo/capacitor-updater'
CapacitorUpdater.notifyAppReady()
アプリがデフォルトの10秒以内にReadyを報告しない場合、またはあなたが設定した__CAPGO_KEEP_0__の設定値以内にReadyを報告しない場合、__CAPGO_KEEP_1__はそのバンドルを無効にし、前のバージョンに戻します。このロールバックの動作は、実稼働環境では望ましいですが、起動時間をクリーンに保つには、注意が必要です。 notifyAppReady() アプリがデフォルトの10秒以内にReadyを報告しない場合、またはあなたが設定した__CAPGO_KEEP_0__の設定値以内にReadyを報告しない場合、__CAPGO_KEEP_1__はそのバンドルを無効にし、前のバージョンに戻します。このロールバックの動作は、実稼働環境では望ましいですが、起動時間をクリーンに保つには、注意が必要です。 appReadyTimeout アプリがデフォルトの10秒以内にReadyを報告しない場合、またはあなたが設定したCapacitorの設定値以内にReadyを報告しない場合、Capgoはそのバンドルを無効にし、前のバージョンに戻します。このロールバックの動作は、実稼働環境では望ましいですが、起動時間をクリーンに保つには、注意が必要です。
- Capgo
notifyAppReady()正しい場所で呼び出します。 - 起動時間の重要なパスで遅い起動時間の作業を避けます。
- アプリの状態を保存して復元する際は、即座にリロードする場合は注意が必要です。
- 悪いネットワークや低エンドデバイスのシナリオをテストする前に、広範なロールアウトを避けます。
あなたが最近レビューしなかった場合は、notifyAppReadyのガイドを再度読む価値があります。 6. 内部の更新チャネルを使用するのではなく、不要なネイティブのビルドを避けます。 notifyAppReadyのガイドはあなたが最近レビューしなかった場合は再度読む価値があります。
内部の更新チャネルを使用するのではなく、不要なネイティブのビルドを避けます。
A lot of mobile teams waste time building binaries for changes that are clearly web-only.
変更がWebのみの場合、ビルド時間が浪費されることが多い。
- copy、
- UIの改善、
- onboardingフローの改善、
- 価格表示画面のロジックの改善、
- 分析の設定、
- 機能フラグの設定、
- ポップアップやAPIのレスポンスの表示、
これらの変更の場合、Capgoのアップデートは迅速なレビュー用のアーティファクトになることが多い。
つまり、ネイティブのビルドが減り、TestFlightの変更が減り、チームのフィードバックループが短くなります。これはCapgoの最も利用されていない利点の1つです: ネイティブ/ウェブの境界を破ることなく、OTAのレーンにレビューとQAの作業を移すことができます。
Capgoのガイドについては ステージング用のモバイルアプリIDが1つあります。 この方法は実践的なもので、長期的にも維持しやすいようにする方法を説明しています。
7. すり減りを秘密と分ける
小さなパッケージと安全なパッケージは異なる問題を解決するものです。
チャンネルは有効性を制御しますが、単独ではパッケージを機密情報にしないので、機密情報にはなりません。
より強い配信保証が必要な場合:
- 有効にする ライブアップデートの暗号化,
- 使用する カスタムストレージまたは自社ホストの配信,
- CIまたはセキュアなオペレーターのワークフローでのみプライベートキーを保持する
targetLanguage
- スピード向上のための "軽量化"
- 配信制御のための暗号化
- ロールアウト制御のためのチャンネル
- 復旧のためのロールバック
実践的な「軽量化 Capgo」ワークフロー
簡単なデフォルトの運用モデルが必要な場合は、以下を使用してください。
- ネイティブとOTAリリースのレーンを分離してください。
- JSの変更をアップロードするには
--deltaデフォルトでは - チャンネルを使用して
stagingとbetaチャンネルを事前にproduction. - 動画を視聴する ロールアウト後ではなく、ロールアウト前に更新統計とログを表示する ロールアウト後ではなく、ロールアウト前に更新統計とログを表示する
- PRをインストール可能なプレビューに変換する。ネイティブビルドが不要な場合。
- 可能な限り、頻繁に変更される大きなメディアをバンドルから除外する。
- 主なアセットの成長やネイティブの変更の後、ネイティブの基準を更新する。
- Treat
notifyAppReady()ロールバックの
とロールバックの動作は、リリースエンジニアリングの部分であり、セットアップのトリビアではありません。
その組み合わせは、一般的な「変更したものだけをアップロードする」アプローチよりも、長く速いままになります。
For Capgo teams, “lean and fast” is not just a bundle-size problem.
__CAPGO_KEEP_0__ チームにとって、「スリムで速い」は、単にバンドルサイズの問題ではありません。
Delta更新のペイロードサイズ、チャンネルの展開サイズ、ロールバックの失敗サイズを使用してください。OTAをそのように考えると、更新はアプリ、チーム、ユーザーが大きくなることもありますが、速いままです。
Capgoの更新をCapgoで速く保つ方法の続き
Capgoを使用している場合 Capgoの更新をCapgoで速く保つ方法 チャンネルルーティングとステージドロールアウトを計画するには、Capgoのチャンネルを使用してください。 チャンネル Capgoのリリースチャンネルフーチャー名。ページ/エリア: Capgoのソリューションマーケティングページ。役割: 短いUIラベルまたはナビゲーションアイテム。見られる場所: page solutions/white-label.astro。メッセージキー `solutions_white_label_visual_cell2_value` (ソリューション・ホワイト・ラベル・ビジュアル・セル2値)。 チャンネル Capgoのリリースチャンネルフーチャー名。ページ/エリア: Capgoのソリューションマーケティングページ。役割: 短いUIラベルまたはナビゲーションアイテム。見られる場所: page solutions/white-label.astro。メッセージキー `solutions_white_label_visual_cell2_value` (ソリューション・ホワイト・ラベル・ビジュアル・セル2値)。 チャンネル Capgoのリリースチャンネルフーチャー名。ページ/エリア: Capgoのソリューションマーケティングページ。役割: 短いUIラベルまたはナビゲーションアイテム。見られる場所: page solutions/white-label.astro。メッセージキー `solutions_white_label_visual_cell2_value` (ソリューション・ホワイト・ラベル・ビジュアル・セル2値)。 チャンネルルーティングとステージドロールアウトを計画するには、Capgoのチャンネルを使用してください。 ベータテストソリューションにおける製品ワークフローについて バージョン目標ソリューション バージョン目標ソリューションにおける製品ワークフローについて