チームは通常、モバイル環境のために3つのアプローチのうち1つを選択します。
- 2つのアプリID(生産+プレプロダクション)
- 1つのアプリID + 動的実行環境の切り替え
- 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__ バージョン対象ソリューション バージョン対象ソリューション用製品ワークフロー