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

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

開発環境で重複したアプリIDと脆弱な実行時フラグを回避するために、Capgo チャンネルを使用してステージング、QA、生産環境をCapacitor アプリで管理するための実用的なガイドです。

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

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

コンテンツマーケター

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

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

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

Capgo チャネルモデルは、実際のチームでは通常、最も綺麗なものです。

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

「使用」、「と」、「」は単純に思えるかもしれませんが、すぐに複製が発生します。 com.myapp 2つのリリースパイプライン com.myapp.beta 2つのプッシュID、ディープリンク、エンタイトルメントマッピング

  • 2つの分析とクラッシュID
  • 最初の2つは機能しますが、長期的な摩擦を生み出します。
  • 実際のチームでは、__CAPGO_KEEP_0__ チャネルモデルが通常、最も綺麗なものです。
  • 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の状態が古くなります。
  • someoneがプロダクションで間違ったエンドポイントを使用する
  • 環境の変化が再現性の低いバグを引き起こします。
  • ユーザー端末で「このバイナリが使用しているconfigのバージョンは何ですか?」というデバッグが必要になります。

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

The Capgo way: one app ID, many channels

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

  • __CAPGO_KEEP_0__をApp Store / Playに保管する必要のある1つの製品アプリIDを維持します。
  • 「シェル」のための1つのネイティブバイナリを配信します。(ネイティブの変更が真の再構築を必要とするまで)。
  • チャンネルごとに動作をルーティングするのではなく、重複したアプリのIDを使用しないようにします。

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

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

TestFlight / Playの内部テストアプリは staging forever. Capgoを使用して、JS / CSS / アセットの更新を繰り返すことができます。新しいネイティブアプリを公開することなく、そこで何度も行うことができます。

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

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) チャネル スイッチングは制御されたワークフローでのみ使用する

For advanced teams, expose controlled channel switches for QA/admin users:

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

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

This is optional. Most teams use channel assignments from the dashboard and only switch channel for internal users, not all customers.

運用チェックリスト

  • One app ID only (no duplicate production/staging IDs)
  • One baseline native build pipeline
  • チャネルマッピングドキュメント(staging, beta, production, hotfix)
  • Promotion path enforced in CI/CD
  • Native rebuild only on true native changes
  • Rollback tested regularly

実用的な利点

This approach removes environment drift, reduces build churn, and speeds fixes:

  • QA gets realistic binaries (no fake “staging app” identity),
  • あなたのTestFlightパスは安定します。
  • あなたのチームは「2つのアプリIDの負債」を避けます。
  • Capgoで多くのJSのみの修正を迅速にプッシュできます。

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

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

__CAPGO_KEEP_0__を使用している場合 Capgo環境ベストプラクティス: 1つのモバイルアプリIDでステージング チャネルルーティングとステージドロールを計画するには、Cloudflareと接続します。 チャネル チャネル チャネル __CAPGO_KEEP_0__ チャンネル チャンネルの実装詳細について ベータテスト ソリューション ベータテスト ソリューションの製品ワークフローについて バージョン ターゲット ソリューション バージョン ターゲット ソリューションの製品ワークフローについて

Capacitor アプリのライブ更新

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

Get Started Now

Latest from our Blog

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