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

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.myapp そして com.myapp.beta 簡単に思えるが、すぐに重複が生じます:

  • 2 つのリリース Pipelines
  • 2 つのプッシュ ID、ディープ リンク、エンタイトルメント マッピング
  • 2 つの分析とクラッシュ ID
  • 環境間で構成と動作が一貫しない

最終的には、ストアコンソール、チーム、内部 QA 指示の管理に 2 つの製品を扱うことになります。

なぜランタイム切り替えの構成が混乱しているか

「1 つのアプリ ID + ランタイム切り替え」パターンは、通常、起動時に環境変数またはフラグを読み取り、API、キー、更新動作をダイナミックに再ルーティングすることを意味します。

これは次のまで機能します:

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

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

The Capgo way: one app ID, many channels

Capgo makes environment control explicit through channels:

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

実際には、これは次のことを意味します:

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

Your TestFlight/Play 内部テストアプリは、 staging .forever. あなたはCapgoでJS/CSS/アセットの更新を繰り返して、

推奨される実践構造

1) ネイティブリリースベースライン

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

あなたの最後のネイティブバイナリは、

多くのJSのイテレーションで同じままです:

あなたは実際にネイティブの表面面積を変更した場合にのみ、ネイティブバイナリを再構築します。

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

テスト環境でテスト、問題を修正し、次にプロモート:

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
});

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

運用チェックリスト

  • アプリIDは1つだけ (プロダクション/ステージングのIDは重複しない)
  • Capgoのネイティブビルドパイプラインのベースライン
  • チャンネルマッピングドキュメント(staging, beta, production, hotfix)
  • CI/CDでのプロモーションパスが強制される
  • ネイティブのリビルドは、実際のネイティブの変更のみ
  • 定期的にロールバックがテストされる

実用的な利点

このアプローチは、環境の漂流を排除し、ビルドの混乱を減らし、修正のスピードを向上させる:

  • QAは、実際のバイナリを取得し(「ステージングアプリ」の偽のアイデンティティなし)、
  • テストフライトのパスが安定し、
  • チームは「2つのアプリIDの負債」を避け、
  • JSのみの修正をCapgoで迅速にプッシュできる

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

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

あなたが __CAPGO_KEEP_0__ 環境のベストプラクティス: 1 つのモバイル アプリ ID でステージング を使用している場合 Capgo 環境のベストプラクティス: 1 つのモバイル アプリ ID でステージング __CAPGO_KEEP_0__ 環境のベストプラクティス: 1 つのモバイル アプリ ID でステージング を使用してチャネル ルーティングとステージド ロールアウトを計画するには、 チャンネル チャンネル チャンネル チャンネル ベータ テスト ソリューション ベータ テスト ソリューション の製品ワークフローで __CAPGO_KEEP_0__ __CAPGO_KEEP_0__ バージョン対象ソリューション バージョン対象ソリューション用製品ワークフロー

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

When a web-layer bug is live, ship the fix through Capgo instead of waiting days for app store approval. Users get the update in the background while native changes stay in the normal review path.

ウェブ層のバグがライブの場合、__CAPGO_KEEP_0__を通して修正を配信し、App Storeの承認待ちの日数を待たずに修正を配信してください。ユーザーはバックグラウンドでアップデートを受け取り、ネイティブの変更は通常のレビュー経路を通っています。

コンテキスト: Capgoマーケティングウェブサイト。役割: サポートする説明文またはメタ説明文。見られる場所: コンポーネント GetStarted.astro。Capgo製品/ブランド名と開発者用語を完全に保持してください。メッセージキー `instant_updates_for_capacitor_apps_description` (Capacitorアプリの即時アップデートの説明)

マーティンから人間のサポートを受けられます

Capgo gives you the best insights you need to create a truly professional mobile app.