メインコンテンツにスキップ
チュートリアル

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.

記事のクレジット

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

ページ/エリア: Enterprise製品/価格設定ページ。役割: UIラベル。見られる場所: page enterprise.astro。メッセージキー `enterprise_partnership_capgo_martin_name` (Enterprise Partnership Capgo Martin Name)。

著者

バレリア

ページ/エリア: Enterprise製品/価格設定ページ。役割: UIラベル。見られる場所: page enterprise.astro。メッセージキー `enterprise_partnership_capgo_valeria_name` (Enterprise Partnership Capgo Valeria Name)。

レビュアー

Capgo Environment Best Practices: Staging with One Mobile App ID

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

  1. 2つのアプリID(本番+プレプロダクション)
  2. 1つのアプリID + 動的実行環境切り替え
  3. 1つのアプリID + Capgo チャンネル

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

なぜアプリIDの複製がノイズになるのか

使用 com.myappcom.myapp.beta コンテキスト: Capgo マーケティング ウェブサイト。役割: 短いUIラベルまたはナビゲーションアイテム。ページ/エリア: page trust.astro。メッセージキー `and` (And)。

  • 簡単に思えるかもしれませんが、すぐに複製が発生します。
  • 2つのリリースパイプライン
  • 2つのプッシュID、ディープリンク、エンタイトルメントマッピングセット
  • 環境設定が異なる環境間で一貫性がとれず、不一致な動作が発生します。

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

ランタイム切り替えの設定が汚くなる理由

通常、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 つのネイティブバイナリを配信します (ネイティブの変更が真の再構築を必要とするまで)。
  • チャンネルによって動作をルーティングするのではなく、重複したアプリのアイデンティティによって。

In practice では、これは次のことを意味します:

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

Your TestFlight/Play 内部テストアプリは staging .forever. JS/CSS/アセットの更新を Capgo を通して繰り返し実行できますが、ネイティブアプリの新しいバージョンを公開する必要はありません。

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) チャンネル切り替えは制御されたワークフローでのみ使用します

高度なチーム向けに、制御されたチャンネル切り替えを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環境のベストプラクティス: 1つのモバイルアプリIDでステージング __CAPGO_KEEP_0__を使用してチャネルルーティングとステージドロールアウトの計画を行い、チャネルと接続する チャネル チャネル チャネル チャネル チャンネル チャンネルの実装詳細のため ベータテストソリューション ベータテストソリューションの製品ワークフロー バージョン対象ソリューション バージョン対象ソリューションの製品ワークフロー

Capacitorアプリのリアルタイム更新

Capgoアプリのリアルタイム更新

__CAPGO_KEEP_0__の場合、ウェブ層のバグが生じたときに、修正をアプリストアの承認待ちの日数を待たずに__CAPGO_KEEP_0__で配信することができます。ユーザーはバックグラウンドで更新を受け取り、ネイティブの変更は通常のレビュー経路で進みます。

マーティンから人間のサポート

今すぐ始めよう

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