メインコンテンツへスキップ
ダイレクトアップデート

アプリ起動時に最新バージョンを表示

通常、live update はダウンロード後に1セッション実行されます。Direct update モードでは、代わりに起動時にスプラッシュ画面の裏側で適用されるため、ユーザーが最初に目にする画面がすでに最新バージョンになります。

autoUpdate: atInstall、onLaunch、または always
アップデートの準備ができるまでスプラッシュ画面を維持
Deltaダウンロードで待ち時間を短縮

課題

バックグラウンド更新は1セッション遅れて適用される

デフォルトモードでは何が起きるのか

1

ユーザーがアプリを起動

アプリは既存のbundleで起動します。updaterは新しいbundleを確認し、バックグラウンドでダウンロードします。

2

現在のセッションは現行バージョンで動作

そのセッションの残りの間、ユーザーは修正前にインストールされた code を使い続けます。

3

次回の復帰時にアップデートを適用

ユーザーがアプリを終了すると、updaterが新しいbundleをインストールします。次回アプリを開いたときに反映されます。

ほとんどのリリースでは、これが適切なトレードオフです。upload後に開始するセッションで新しい code を実行する必要がある場合は、direct updateモードを使用してください。

最初のセッションが重要な場合

決済やログインフローの不具合

修正が適用される前に、アプリを開いたユーザーがもう一度不具合のある画面を目にすることは避けるべきです。

Webレイヤーのセキュリティ修正

修正済みJavaScriptを、次のセッションではなく起動時から実行したい。

日付が重要な変更

ユーザーが最初に目にする画面で、最新である必要がある規約、通知、またはイベントコンテンツ。

ソリューション

Direct Updateモードで変わること

起動時にアップデーターが確認し、その間スプラッシュ画面は表示されたままです。新しいbundleがあれば、スプラッシュ画面が消える前にダウンロードして適用します。

デフォルトモード(atBackground)

1
ユーザーがアプリを起動
2
アプリが現在のバージョンを表示
3
バックグラウンドでアップデートをダウンロード
4
次回の復帰時にアップデートを適用

起動時の待ち時間なし。ユーザーは1セッション後にアップデートを目にします。

Directモード (onLaunch)

1
ユーザーがアプリを起動すると、スプラッシュ画面が表示されたままになります
2
アップデーターが変更されたファイルをチェックしてダウンロードします
3
アップデートが適用され、スプラッシュ画面が消えて新バージョンが表示されます

ユーザーは最初の画面で新バージョンを目にします。ダウンロード中はスプラッシュ画面で待機します。

アップデート動作のドキュメント

仕組み

Direct Updatesの設定方法

Directモードはネイティブ設定なので、最初はストアビルドで配信します。その後は、すべての live update がこの設定に従います。コマンドは Capgo のドキュメントに記載されています。

  1. スプラッシュ画面プラグインを追加してモードを選択

    @capacitor/splash-screen をインストールし、capacitor.config.ts で autoUpdate、autoSplashscreen、launchAutoHide を設定します。

    npm install @capacitor/splash-screen
    npx cap sync
    
    // capacitor.config.ts
    plugins: {
      CapacitorUpdater: {
        autoUpdate: 'onLaunch', // or 'atInstall' / 'always'
        autoSplashscreen: true,
        keepUrlPathAfterReload: true,
      },
      SplashScreen: { launchAutoHide: false },
    }
    スプラッシュ画面の制御
  2. ストアビルドに設定を組み込む

    capacitor.config はネイティブアプリにコンパイルされるため、新しいモードは次回のストアリリースでユーザーに届きます。Capgo Build ならクラウドでビルドできます。

    npx @capgo/cli@latest build request --platform ios
    npx @capgo/cli@latest build request --platform android
    Capgo Buildドキュメント
  3. 差分としてbundleをアップロード

    起動時にユーザーはダウンロードを待つため、変更されたファイルだけを送信します。CLI が即時適用モードを検知し、差分アップロードを促します。

    npx @capgo/cli@latest bundle upload --channel production --delta
    差分アップデートのドキュメント
  4. 自動ロールバックを有効に

    アプリが起動したら notifyAppReady() を呼び出します。新しいbundleの起動に失敗した場合、デバイスは最後に正常に動作したbundleに戻ります。

    import { CapacitorUpdater } from '@capgo/capacitor-updater'
    
    await CapacitorUpdater.notifyAppReady()
    notifyAppReady() のドキュメント

アプリに合ったモードを選択

Direct updatesはトレードオフです。起動時に少し待つ代わりに、最初の画面で新しいバージョンを使えます。

3つの即時適用モード

capacitor.config.ts で autoUpdate を設定します。各モードは、ユーザーを待たせている間にアップデートをいつ適用できるかを決めます。

  • atInstall: ネイティブアプリの新規インストール直後、またはストアアップデート直後のみ
  • onLaunch: アプリがキルされた状態から起動したとき(コールドスタート)
  • 常に:アプリを開いている間も、フォアグラウンドチェックのたびに実行
アップデーター設定

3

autoUpdateにおける即時適用モード

スプラッシュ画面の制御

Directモードでは、launchAutoHideをfalse、autoSplashscreenをtrueに設定した@capacitor/splash-screenが必要です。アップデートが適用された時点、またはアップデートが不要と判断された時点で、アップデーターがスプラッシュ画面を非表示にします。

  • 手動でのSplashScreen.hide()呼び出しは不要
  • keepUrlPathAfterReloadは、リロード後もユーザーを同じルートに留めます
  • スプラッシュが非表示になった後に追加処理が必要なら、appReadyをリッスンしてください
スプラッシュ画面の制御

autoSplashscreen

すべてのDirectモードで必須

考慮すべきトレードオフ

ユーザーは起動時にダウンロードを待ち、always なら使用中にアプリをリロードして更新できます。両方に備えましょう。

  • 変更されたファイルだけが download されるように、--delta を付けて upload しましょう
  • アプリの状態を保存・復元して、リロードしてもユーザーの進捗が失われないようにしましょう
  • 1セッション分の遅延で問題なければ、デフォルトモードのままにしてください
差分アップデートのドキュメント

--delta

すべての direct update の upload で推奨されます

direct updates の活用シーン

現在のセッションで新しい code を実行する必要がある場合は direct モードを使用してください。それ以外はデフォルトのままにしてください。

緊急のバグ修正

決済、ログイン、データのバグなど、古い code をあと1セッション動かすのが許容できないケース。

初回起動時の onboarding

atInstallは、新規インストールやストア更新の直後に最新のbundleを適用するので、新規ユーザーは現在のonboardingで開始できます。

鮮度が重要なコンテンツ

ユーザーがアプリを開いた時点で最新である必要があるイベントページ、お知らせ、利用規約。

セキュリティパッチ

起動時から適用されるべきWebレイヤーのセキュリティ修正。native code の修正には引き続きストアリリースが必要です。

定例リリース

スタイルの微調整や小さな機能追加は、起動時に待たせるほどではありません。デフォルトモードでは、1セッション後に適用されます。

何時間も開いたままのアプリ

alwaysモードでは、定期的なチェック(デフォルトは10分ごと)により、アプリを開いたままアップデートを適用できます。これに頼る前に状態を保存してください。

起動時の待ち時間を短く保つ

起動時の待ち時間は、アップデートのチェックとダウンロードの合計です。Delta updatesなら、ダウンロードは変更されたファイルだけに抑えられます。

~50ms

一般的な API レイテンシ

差分

変更されたファイルのみをダウンロード

10億+

月間アップデート配信数

Capacitor で構築されたアプリ

公共情報アプリにはコンテンツの緊急修正が必要

緊急対応、医療、公共サービスなどのアプリでは、チェックリストの誤りやリンク切れ、地域別のお知らせの修正に数日もかけることはできません。Direct updates を使えば、修正が承認され次第、即座にウェブレイヤーを更新できます。

FEMA アプリのアイコン 天気

FEMA

軽微なコンテンツの誤りが緊急事態につながるような、緊急ガイダンスの提供。

Google Play インストール数
160万
ストア評価
4.0
Conecte SUS アプリのアイコン 医療

SUSを接続

承認済みのコピー変更を迅速に配信する必要がある、健康記録やガイダンス画面。

Google Play インストール数
2770万
ストア評価
4.6
e-Título アプリのアイコン ソーシャル

e-Título

デバイスをまたいでバージョンに応じた安全なガイダンスが求められる市民IDワークフロー。

Google Play インストール数
5490万
ストア評価
4.8

導入実績

Capgo を活用するチームの声

5.0/5 開発チームによる評価 9,400+ チーム数 レビューを読む

Kapil

NuTriQ 創業者

「本番環境のOTAアップデートを、App Storeの審査サイクル全体を待たずに即座に配信できることは、運用面で非常に大きな強みです。」

Sergiu Sのポートレート

Sergiu S

リードデベロッパー、drivolino GmbH

“Capgo Capacitor Updater pluginのおかげで、アップデートの配信方法が完全に変わりました。以前は何日もかかっていた作業が、今ではわずか数分で終わります。”

Luis Dominguezのポートレート

Luis Dominguez

お金を払う者が、支配する。

「Capgo を使い始めてからすべてが速くなり、日常生活をおろそかにせずに、ユーザーに本来かけるべき時間を割けるようになりました。」

よくある質問

Direct Updatesのよくある質問

利用タイミング、セットアップ方法、リリース時のコストを解説します。

Direct Updatesとデフォルトのバックグラウンドモード、どちらを使うべき?

ほとんどのリリースではデフォルトを推奨します。起動時の待ち時間がなく、ユーザーは次のセッションでアップデートを受け取れます。一方、アップロード後のセッションで必ず新しいcodeを実行する必要がある場合(例:決済フローの不具合やWebレイヤーのセキュリティ修正)は、Directモードを使用してください。

アップデート動作のドキュメント

atInstall、onLaunch、alwaysの違いは何ですか?

atInstallは、ネイティブアプリの新規インストールまたはストア経由のアップデート直後にのみ即時適用され、その後はデフォルトと同じ動作になります。onLaunchは、アプリが終了状態から起動したときに即時適用されます。alwaysは、フォアグラウンドに移行するたびにチェックし、ユーザーがアプリを使用中でもダウンロード完了後すぐに適用します。

アップデーター設定

なぜSplash Screenプラグインが必要なのですか?

Directモードは、ユーザーが待機している間にアップデートを適用します。@capacitor/splash-screen、autoSplashscreen: true、launchAutoHide: false を設定しないと、リロード前に画面のちらつきや古いUIが見えることがあります。これらを設定すると、アップデートが適用されるか、アップデート不要と判断されるまでスプラッシュ画面が表示され続けます。

スプラッシュ画面の制御

live updateでDirect Updatesを有効にできますか?

いいえ。autoUpdate は capacitor.config にあり、ビルド時にネイティブアプリへ読み込まれます。新しい設定はストアリリースに含めてください。その後は、すべての live update が新しいモードに従います。

ネイティブ互換性ドキュメント

設定でdirectUpdateを使っています。まだサポートされていますか?

directUpdateは非推奨ですが、引き続き検出されます。その値はautoUpdateのatInstall、onLaunch、alwaysモードに対応しています。次回のネイティブリリースで設定をautoUpdateに移してください。

アップデーター設定

次の修正を最初の画面へ

トライアル期間中にテストビルドでdirect updateモードを試し、自分のアプリで起動時の待ち時間を測ってみましょう。

14日間の無料トライアル。クレジットカード登録不要。