メインコンテンツにジャンプ
チュートリアル

Capgo 環境のベストプラクティス: 1つのモバイルアプリIDでステージング

A practical guide to avoid duplicate app IDs and fragile runtime flags by using Capgo channels for staging, QA, and production in Capacitor apps.

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

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

コンテンツマーケター

Capgo 環境のベストプラクティス: 1つのモバイルアプリIDでステージング

チームは通常、モバイル環境のための3つのアプローチのうちの1つを選択します。

  1. 2つのアプリID(本番用+プレリリース用)
  2. 1つのアプリID + 動的ランタイム環境切り替え
  3. 1つのアプリID + Capgo チャンネル

最初の2つは機能しますが、長期的な摩擦を生みます。実際のチームでは、Capgo チャンネルモデルが通常、最も綺麗です。

重複したアプリIDがノイズになる理由

com.myappcom.myapp.beta

  • 2つのリリースパイプライン
  • 2つのプッシュID、ディープリンク、エンタイトルメントマッピングセット
  • Divergent config and inconsistent behavior between environments

ストアコンソール、チーム、内部のQA指示の間で、2つの製品を管理することになります。

Why runtime-switching config is often messy

「1つのアプリID + ランタイムSwitch」パターンは、起動時に環境変数またはフラグを読み取り、API、キー、更新動作を動的に変更することを意味します。

This works until:

  • QAが意図されたフローを回避するようになり、config stateが古くなります。
  • someoneがプロダクションで間違ったエンドポイントを使用する
  • 環境の変化が再現性の低いバグを引き起こします。
  • ユーザー端末で「このバイナリが使用しているconfigバージョンは何ですか?」というデバッグが必要になります。

複雑さはリリースごとに増加し、チームの速度が低下します。

The Capgo way: one app ID, many channels

Capgoはチャンネルを通じて環境制御を明示的に行います:

  • App Store / Play の 1 つの生産アプリ ID を保持します。
  • 「シェル」のための 1 つのネイティブバイナリを配信します (ネイティブの変更が真の再構築を必要とするまで)。
  • チャンネルによってではなく、重複したアプリ ID によってルーティングされる動作を実現します。

実際には次のようになります:

  • production: 全てのユーザー
  • staging: 内部 QA とリリース候補
  • beta: 招待されたテスター
  • hotfix: 緊急パッチトラック

TestFlight / Play の内部テストアプリは「forever. 」で残すことができます。 JS / CSS / アセットの更新を __CAPGO_KEEP_0__ から繰り返し行うことができますが、ネイティブアプリの新しいバージョンを公開する必要はありません。 staging forever. You do JS/CSS/asset updates there repeatedly through Capgo without publishing a new native app.

__CAPGO_KEEP_0__

JS イテレーションで多くの場合、最後のネイティブ バイナリは同じままです:

bun run build
bunx cap sync
# generate Xcode/Android Studio archives as usual

実際にネイティブ サーフェス エリアが変更された場合にのみ、ネイティブ バイナリを再構築します。

2) 環境ごとに専用のチャネルを使用する

チャネルを使用して更新を公開する:

bun run build
bunx @capgo/cli deploy --channel staging

QA でテスト、問題を修正し、次にプロモートする:

bunx @capgo/cli promote vX.Y.Z --channel production

明示的なバージョニングを好む場合は:

bunx @capgo/cli deploy vX.Y.Z --channel staging
bunx @capgo/cli promote vX.Y.Z --channel production

3) TestFlight “常にプレプロダクション”を維持する

iOS ワークフローでは、これはプレプロダクションの更新と関連付けられたTestFlight ビルドを保持することを意味します。

  • JS 変更ごとに頻繁にネイティブ サブミッションを行わない。
  • QA は常にステージング チャネルを介して近似的なプロダクション code を検証します。
  • プロダクション ユーザーはのみプロモートされたプロダクション チャネル パッケージを受信します。

4) チャネル切り替えは制御されたワークフローでのみ使用する

高度なチーム向けに、制御されたチャネル切り替えをQA/管理ユーザー向けに公開します。

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

await CapacitorUpdater.setChannel({
  channel: 'staging',
  triggerAutoUpdate: true
});

これは任意です。多くのチームは、ダッシュボードからチャネル割り当てを使用し、内部ユーザーのみにチャネルを切り替え、すべての顧客にはなりません。

運用チェックリスト

  • 1 つのアプリ ID (複製の生産/ステージング ID はありません)
  • 1 つのベースラインネイティブビルドパイプライン
  • チャネルマッピングがドキュメントされている (staging, beta, production, hotfix)
  • CI/CD でのプロモーションパスが強制されます
  • ネイティブのビルドは、ネイティブの変更のみに再構築されます
  • ロールバックは定期的にテストされます

実用的な利点

このアプローチは、環境の漂流を排除し、ビルドの混乱を軽減し、修正を高速化します:

  • QAは、偽の「ステージングアプリ」アイデンティティなしで、現実的なバイナリを取得します
  • あなたのTestFlightパスは安定します。
  • あなたのチームは「2つのアプリIDの負債」を避けます。
  • Capgo から多くのJSのみの修正を迅速にプッシュできます。

最終的な結果は、よりシンプルな統治: 少ないアーティファクト、きれいなテレメトリ、リリースオペレーションにおける驚きの減少です。

Capgo 環境ベストプラクティス: ステージング用に1つのモバイルアプリIDを使用する

あなたが「__CAPGO_KEEP_0__ Environment Best Practices: Staging with One Mobile App ID」を使用している場合 Capgo Environment Best Practices: Staging with One Mobile App ID チャネルルーティングとステージドロールアウトを計画するには、Cloudflareの「Channels」に接続する必要があります。 「Channels」についての実装詳細は、Cloudflareの「Channels」で確認できます。 「Channels」についての実装詳細は、Cloudflareの「Channels」で確認できます。 「Channels」についての実装詳細は、Cloudflareの「Channels」で確認できます。 「Channels」についての実装詳細は、Cloudflareの「Channels」で確認できます。 チャンネル チャンネルの実装詳細について ベータテスト ソリューション ベータテスト ソリューションの製品ワークフローについて バージョン ターゲット ソリューション バージョン ターゲット ソリューションの製品ワークフローについて

Capacitor アプリのライブアップデート

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

Get Started Now

Latest from our Blog

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