メインコンテンツへスキップ
PRプレビュー

すべてのプルリクエストを実機でレビュー

CIが各プルリクエストのWebビルドをそれぞれ専用のCapgoチャンネルにアップロードします。レビュアーはQR code をスキャンするか、アプリ内でチャンネルを切り替えて実機で試せます。PRがクローズされるとチャンネルは削除されます。ネイティブ側のcodeの変更には、引き続き新しいビルドが必要です。

  • プルリクエストごとに1チャンネル
  • QR code プレビュー
  • PRクローズ時にクリーンアップ

課題

Webの変更に、新しいバイナリのレビューは不要なはずです

ストアのテスト用ビルドでPRをレビューする従来の手法

  1. 開発者がPRを作成

    変更はレビュー可能な状態ですが、まだ実機で試すことができません。

  2. ビルド、署名、アップロード

    ブランチ用のNative Buildを作成し、署名してTestFlightやPlayストアのテストトラックにアップロードし、処理完了を待ちます。

  3. 招待とインストール

    レビュアーをテスターとして追加し、その特定のビルドをインストールする必要があります。

  4. 修正のたびに繰り返し

    code を変更するレビューコメントが届くたびに、ビルド、アップロード、インストールの工程が繰り返されます。

JavaScriptの変更だけでも、レビューのたびにNative Buildを待つことになります。

チームが支払うコスト

すべてのbuild

ストアの処理待ち

TestFlightやPlayのテストトラックにアップロードしたbuildは、テスターがインストールできるようになる前に処理されます。これはすべてのbuildで発生します。

すべてのPR

テストには専用のネイティブビルドが必要

Live Updatesがない場合、Webのみの変更でも、誰かが新しいバイナリをbuild・署名・アップロードするまでレビュアーはブランチを試せません。

フィードバックの遅れ

レビューは作成者が別の作業に移った後

レビューがbuild待ちになると、フィードバックは遅れて届き、作成者は別のタスクに移り、ブランチはmainから乖離します。

仕組み

チームがCapgoでPRをプレビューする方法

4つのCIステップ:スコープ付きキーを一度設定、pushごとにアップロード、プレビューを共有、クローズ時にクリーンアップ。以下のコマンドはすべてCapgoのドキュメントからです。

  1. App Previewキーを作成してプレビューを有効化する

    管理者がCI用にApp Preview API キーを作成します。このキーはプレビューチャネルを作成し、bundleをアップロードできますが、デフォルトまたは本番チャネルは変更できません。プレビューの有効化はアプリごとに1回だけです。

    # once, run by an admin (not the preview key)
    npx @capgo/cli@latest app set com.example.app --preview
    App Preview API キー
  2. PRビルドを専用チャネルにアップロードする

    pushのたびに、CIがWebアプリをビルドし、一意のbundleバージョンでアップロードします。bundle upload --channel は、pr-<number> チャネルが存在しなければ作成し、bundleを紐付けます。

    npx @capgo/cli@latest bundle upload com.example.app \
      --apikey "$CAPGO_PREVIEW_KEY" \
      --path ./dist \
      --channel "pr-$PR_NUMBER" \
      --bundle "1.2.3-pr.$PR_NUMBER.$GITHUB_RUN_NUMBER"
    チャネルドキュメントのPRプレビュー
  3. PRにプレビューを投稿する

    get-qrはチャネル用のQR code、または --url を付けるとプレビューURLを出力するので、CIがPRコメントに追加できます。

    npx @capgo/cli@latest get-qr com.example.app \
      --channel "pr-$PR_NUMBER" \
      --apikey "$CAPGO_PREVIEW_KEY" \
      --url
    get-qrのリファレンス
  4. PRクローズ時にチャネルを削除する

    プルリクエストのクローズイベントでこれを実行します。App Preview キーを使えば、そのキーが作成したチャネルと、それに紐付けられたbundleだけを削除します。

    npx @capgo/cli@latest channel delete \
      "pr-$PR_NUMBER" com.example.app \
      --apikey "$CAPGO_PREVIEW_KEY" \
      --delete-bundle \
      --success-if-not-found
    channel CLI リファレンス

レビュアーが PR チャネルに切り替える他の方法

どちらもセルフアサインを許可するチャネルが必要です。App Preview キーではこれが設定されないため、そのキーを使う場合は QR プレビューを共有するか、コンソールでデバイスオーバーライドを設定してください。

シェイクメニュー

内部ビルドでシェイクメニューを有効にします。テスターがデバイスを振ると Capgo のテストメニューが開き、シェイクによるチャンネル選択で任意のチャンネルを選べます。

// capacitor.config.ts (internal builds)
CapacitorUpdater: {
  shakeMenu: true,
}

アプリ内スイッチャー

開発者設定画面にチャンネルフィールドを追加し、PRのチャンネル名を setChannel() で呼び出すだけです。

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

await CapacitorUpdater.setChannel({
  channel: 'pr-123',
  triggerAutoUpdate: true,
})
setChannel() リファレンス

PRプレビューの活用シーン

作成者だけでなく、プルリクエストを確認する全員が実機でチェックできます。

QAエンジニア

  • PRのWebビルドを自分のデバイスでテスト
  • アプリを再インストールせずにPRチャンネルを切り替え
  • チャンネル名がPR番号と一致するため、実行中の code が即座に判別できます

プロジェクトマネージャー

  • マージ前にスマホで新機能を試す
  • PRに投稿されたQR code をスキャンする
  • PR上で直接フィードバックを残す

開発者

  • PRがオープンなうちに実機からフィードバックを得る
  • プッシュするたびにPRチャンネルが更新される
  • JSのみの変更ならNative Buildは不要

ストアのテストビルド vs Capgo PRチャンネル

  • PRを実機で確認するまで

    TestFlight / Playでのテスト
    Native Build、署名、ストアの処理
    Capgo PRチャンネル
    WebビルドとCIからのbundleアップロード
  • PR間の切り替え

    TestFlight / Playでのテスト
    別のビルドをインストール
    Capgo PRチャンネル
    別のQR code をスキャンするか、チャンネルを切り替え
  • レビュアーのセットアップ

    TestFlight / Playでのテスト
    テスターを招待し、各ビルドをインストール
    Capgo PRチャンネル
    アプリを一度インストール
  • Native code とプラグインの変更

    TestFlight / Playでのテスト
    はい
    Capgo PRチャンネル
    いいえ、ネイティブビルドが必要です

Capacitor で構築されたアプリ

プロダクトアプリには、レビュー可能なモバイルの変更が必要です

学習、イベント、コミュニティアプリにおいて、オンボーディング、練習、ライブセッション、サブスクリプションの変更を同時にレビューできます。PR previewsを使えば、マージ前にプロダクト、QA、サポートチームがモバイル対応済みのビルドを検証できます。

StudySmarter - 学校・大学向けアプリのアイコン 教育

StudySmarter - 学校・大学向け

レッスン、コース、サブスクリプションの変更にステークホルダーの確認が必要な教育アプリ。

Google Play インストール数
650万
ストア評価
4.8
Poll Everywhere のアプリアイコン ビジネス

Poll Everywhere

マージ前にイベントフローのテストが必要な、ライブエンゲージメントアプリ。

Google Play インストール数
110万
ストア評価
3.2
lichess • 無料のオンラインチェスアプリのアイコン ゲームボード

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

トーナメントや解析画面のデバイスプレビューが役立つコミュニティアプリ。

Google Play インストール数
1130万
ストア評価
4.3

導入実績

Capgo を活用するチームの声

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

Nate van Jole

CTO, プライベート

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

Michael Haberlerのポートレート

Michael Haberler

nethead emeritors

“Updater pluginは素晴らしい出来です。完璧に動作していますし、Live Updatesはテストのサイクルを劇的に速めてくれます。”

no-tone @ Webincode

Webincode 開発者

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

よくある質問

PR previewに関するよくある質問

CI担当者とレビュアー、双方の疑問に直接お答えします。

PRごとに新しいビルドが必要ですか?

PRがWebレイヤーのみの変更であれば不要です。レビュアーは一度アプリをインストールするだけで、各PRのJavaScript、HTML、CSS、アセットはそれぞれの専用チャネルに配信されます。もしPRでプラグインの追加やネイティブのcodeの変更が行われた場合は、ネイティブビルドが必要です。CIでビルドの要否を検知するように設定してください。

Native Build が必要なケース

CI用のキーで本番用チャネルを操作されることはありませんか?

App Preview API キーを使用していれば安全です。このキーはプレビューチャネルの作成、bundleのupload、および自身が作成したチャネルとbundleの削除のみが可能です。デフォルトチャネルやメインチャネルを変更することはできません。GitHub Actionsでは、ジョブをpull_requestで実行し(pull_request_targetではなく)、同一リポジトリからのPRのみに制限してください。

App Preview API キー

レビュアーはどうやってプレビューを開きますか?

管理者が一度 `app set --preview` を実行してプレビューを有効にします。その後、`get-qr` でPRチャネル用のQR code を出力したり、`--url` でWebプレビューURLとディープリンクを出力したりできます。これらをPRのコメントに投稿してください。

get-qrのリファレンス

古いPRのチャネルやbundleはどうなりますか?

pull request closed イベントで、`--delete-bundle` と `--success-if-not-found` を指定して `channel delete` を実行するジョブを追加してください。App Previewキーを使用していれば、そのチャネルと紐付いたbundleが削除されます。以前のプッシュによるbundleは、削除権限を持つキーを使用してbundle cleanupで削除できます。

channel CLI リファレンス

GitLab、Bitbucket、Azure DevOpsでも利用できますか?

はい。Capgo CLI コマンドによる手順のため、あらゆるCIで動作します。ドキュメントには GitHub Actions、GitLab CI、Bitbucket Pipelines、Azure DevOps向けの統合ガイドが用意されています。

CI/CD 連携

次のプルリクエストを実機でプレビュー

CIにupload、QR、cleanupのステップを追加して、無料トライアル中に自身のアプリで試してみましょう。

14日間の無料トライアル(クレジットカード不要)。Native Buildには別途ビルドが必要です。