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

ベータテスト

TestFlightの新しいビルドなしで、Webの変更をベータテスターに配信

テスターは一度アプリをインストールするだけ。その後、JavaScript、HTML、CSSの変更は、アプリから参加したベータチャネルへ配信され、次回のアップデート確認時に適用されます。ネイティブな code の変更は、引き続きTestFlightやPlay testing trackを経由する必要があります。

アプリからテスターが参加

--self-assign を使用して、チャンネルでのセルフアサインを許可します。アプリ側で listChannels() を使ってチャンネルを表示し、setChannel() でデバイスを切り替えることで、テスターは設定画面から簡単にベータ版に参加できます。

setChannel() リファレンス

コンソールからデバイスを固定

Capgo コンソールでデバイスのオーバーライドを設定すれば、アプリを書き換えることなく特定のテスターの端末をチャンネルに割り当てられます。オーバーライドは最後に設定されてから90日後に自動的に解除されます。

デバイスオーバーライド

QR code でビルドを共有

一度アプリでプレビューを有効にすれば、get-qr や upload 時の --qr-preview によって、QR code とプレビューリンクが生成されます。これらを QA スレッドに投稿して簡単に共有できます。

get-qrのリファレンス

ネイティブ変更にはTestFlightが必要

Live UpdateはJavaScript、HTML、CSS、アセットを変更します。プラグインを追加したり、ネイティブのcodeに触れたりする場合は、新しいTestFlightまたはPlayのテスト用ビルドを送信し、その後はチャンネルでイテレーションを続けます。

ネイティブビルドが必要なケース

TestFlightとCapgoチャンネルの役割の違い

  • テスターに新しいビルドを届ける

    TestFlight / Playでのテスト
    ビルド、署名、アップロード、ストアの処理待ち
    Capgo ベータチャンネル
    CLIでbundleをアップロード。テスターは次回のアップデートチェックで受け取ります
  • テスターの追加

    TestFlight / Playでのテスト
    App Store Connect または Play Console から招待する
    Capgo ベータチャンネル
    アプリからチャンネルに参加するか、デバイスの上書き設定を行います
  • テスターを別のビルドへ移動する

    TestFlight / Playでのテスト
    別のビルドをインストールする
    Capgo ベータチャンネル
    setChannel() でアプリ内のチャンネルを切り替える
  • Native code とプラグインの変更

    TestFlight / Playでのテスト
    はい
    Capgo ベータチャンネル
    いいえ、新しいバイナリを配布する必要があります

テスターは最初に TestFlight、Play testing track、またはストアからアプリをインストールします。それ以降の Web レイヤーの変更は、チャンネルが管理します。 ネイティブビルドが必要なケース

仕組み

Capgo を使った QA チームによるベータ運用の方法

インストール済みのビルド、テスターが参加できるチャンネル、そして変更ごとの CLI アップロード。以下のコマンドはすべて Capgo のドキュメントに基づいています。

  1. テスターが参加できるベータチャンネルを作成する

    Self-assignment を有効にすると、アプリがデバイスをそのチャンネルへ移行できます。本番用チャンネルではオフのままにしておいてください。

    npx @capgo/cli@latest channel add beta com.example.app --self-assign
    Channels ドキュメント
  2. アプリにベータ版参加スイッチを追加

    setChannel() で Capgo にセルフアサインの可否を確認し、デバイスに保存します。triggerAutoUpdate を使うと、即座にアップデートのチェックを開始できます。

    import { CapacitorUpdater } from '@capgo/capacitor-updater'
    
    // Join beta and check for its bundle now
    await CapacitorUpdater.setChannel({ channel: 'beta', triggerAutoUpdate: true })
    
    // Leave beta and go back to the default channel
    await CapacitorUpdater.unsetChannel({ triggerAutoUpdate: true })
    setChannel() リファレンス
  3. 変更内容をベータ版へアップロード

    一度プレビューを有効にすれば、あとはアップロードのたびに QR code を出力するだけ。テスターやレビュアーはすぐに新しい bundle を開けます。

    # once
    npx @capgo/cli@latest app set com.example.app --preview
    # every change
    npx @capgo/cli@latest bundle upload --channel beta --qr-preview
    get-qrのリファレンス
  4. QA合格分を本番へ昇格

    テスト済みの bundle を本番環境へ反映するか、まずは一部のデバイスにのみロールアウトします。テスターは自身で解除しない限り、ベータ版を維持します。

    npx @capgo/cli@latest channel set production com.example.app \
      --bundle 1.4.2
    # or roll it out to 10% of production first
    npx @capgo/cli@latest channel set production com.example.app \
      --rollout-bundle 1.4.2 --rollout-percentage 10 --rollout-enable
    段階的ロールアウト ドキュメント

ベータチャネルの活用シーン

社内QA

QAチームは、JavaScriptの変更ごとに再インストールするのではなく、1つのビルドを保持したままqa、beta、featureの各チャネルを切り替えてテストできます。

ベータ版参加ユーザー

setChannel()を呼び出す「ベータに参加」スイッチを追加します。離脱時にはunsetChannel()を呼び出し、デフォルトのチャネルに戻します。

ステークホルダーによるレビュー

get-qr から QR code を送信して、プロダクトオーナーが特定の bundle や channel のプレビューを簡単に開けるようにします。

Capacitor で構築されたアプリ

コミュニティアプリには慎重な機能公開が必要

利用者の多いコンシューマーアプリでは、全ユーザーに新機能を展開する前に、クローズドなテスターグループでゲーム、学習、予測フローなどの検証が可能です。

lichess • 無料のオンラインチェスアプリのアイコン ゲームボード

lichess • 無料のオンラインチェス

トーナメント、分析、ソーシャル機能の慎重な検証が求められる大規模コミュニティアプリ。

Google Play インストール数
11.3M
ストア評価
4.3
StudySmarter - 学校・大学向けアプリのアイコン 教育

StudySmarter - 学校・大学

オンボーディングや練習用設定の変更を、リリース前にレビューする必要がある教育ワークフロー。

Google Play インストール数
650万
ストア評価
4.8
Windy.com - 天気予報アプリのアイコン 天気

Windy.com - 天気予報

製品の変更を拡大する前に、確信を得るためのインタラクションを予測・マッピングします。

Google Play インストール数
32.9M
ストア評価
4.7

導入実績

Capgo でリリースするチームの声

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

Nate van Jole

CTO、プライベート向け

「セットアップは1日もかかりませんでした。チャンネルベースのロールアウトのおかげで、本番ユーザーに届く前に自分のデバイスでテストできます。」

no-tone @ Webincode

Webincode 開発者

「デバイスIDを特定のグループに追加して、そのグループだけに変更をプッシュできるのは本当に助かります。」

Michael Haberlerのポートレート

Michael Haberler

nethead emeritors

「アップデータープラグインは素晴らしいですね。完璧に動作しています。Live Updateのおかげで、テストのサイクルを大幅に高速化できました。」

よくある質問

QAおよびプロダクトチームからのよくある質問

テスター、ビルド、およびTestFlightが必要なケースについての回答です。

CapgoはTestFlightやGoogle Playの内部テストの代わりになりますか?

Webレイヤーの変更のみ可能です。テスターはまずTestFlight、Playのテストトラック、またはストアからアプリを一度インストールします。その後は、JavaScript、HTML、CSS、およびアセットの変更をチャンネル経由で配信できます。プラグインの追加、Capacitorのアップグレード、またはネイティブのcodeやCapacitorの設定変更には、新しいバイナリが必要です。

ネイティブビルドが必要なケース

テスターはどのようにベータ版に参加、または退出しますか?

ベータチャンネルのセルフアサインメントを有効にし、アプリ内の画面から `setChannel({ channel: 'beta' })` を呼び出します。Capgoがチャンネルの許可を確認し、デバイスに設定が保存されます。`unsetChannel()` を実行すると、デバイスはデフォルトのチャンネルに戻ります。なお、デフォルトのチャンネル自体には `setChannel()` で参加することはできません。

setChannel() リファレンス

アプリを変更せずに、特定のテスターの端末だけを切り替えられますか?

Capgo コンソールでデバイスを開き、チャンネルの上書き(channel override)を設定するだけで可能です。設定がすべてのエッジサーバーに反映されるまで最大2分かかる場合があります。また、設定は最後に適用されてから90日後に削除されます。なお、アプリ内で setChannel() を使用して選択されたチャンネルは、このリストには表示されません。

デバイスオーバーライド

古い live update が残っている状態で、新しい Native Build をテストするにはどうすればよいですか?

Native Build ごとに CapacitorUpdater.version を上げてください。デフォルト設定では、新しいビルドがインストールされると、古いビルド用にダウンロードされた bundle は削除されます。また、チャンネル設定により、開発用ビルドやエミュレータでのアップデートをオフにすることも可能です。

Live Update なしで Native Build をテストする

ベータ版の bundle が起動時にクラッシュした場合はどうなりますか?

アプリのロードが完了したら notifyAppReady() を呼び出してください。新しい bundle が10秒以内にこれを呼び出さなかった場合、デバイスはその bundle を失敗と判断し、以前動作していた bundle に自動的にロールバックします。

notifyAppReady() と自動ロールバック

自身のアプリにベータチャンネルをセットアップする

テスターが参加できるチャンネルを作成し、スイッチを追加して、14日間の無料トライアル中に最初の bundle を送信しましょう。クレジットカードの登録は不要です。