破壊的変更
このプラグインのインストール手順と完全なMarkdownガイドを含むセットアッププロンプトをコピー
このドキュメントでは、バージョン管理されたチャンネルを使用して、アプリの破壊的変更(breaking changes)をどのように扱うかを説明します。この手法により、ユーザーに互換性のあるアップデートを確実に届けつつ、アプリの異なるバージョンを並行して維持できます。
シナリオ例
「シナリオ例」というタイトルのセクション例えば、以下のような状況を想定します:
- アプリバージョン 1.2.3(旧バージョン)- production チャンネルを使用
- アプリバージョン 2.0.0(破壊的変更を含む新バージョン)- v2 チャンネルを使用
- Live update 1.2.4(1.2.3 と互換性あり)
- Live update 2.0.1(2.0.0 と互換性あり)
戦略: メジャーバージョンでは常に defaultChannel を使う
「戦略:メジャーバージョンには常に defaultChannel を使用する」セクション推奨されるアプローチ: メジャーバージョンごとに defaultChannel を設定してください。これにより、動的なチャンネル割り当てに頼ることなく、特定のユーザーグループに対して常にアップデートを配信できるようになります。
// Version 1.x releasesdefaultChannel: 'v1'
// Version 2.x releasesdefaultChannel: 'v2'
// Version 3.x releases (future)defaultChannel: 'v3'1. 新しいバージョン用の Channel を作成する
「1. 新しいバージョンのためのチャンネル作成」セクション# Create channel for version 2.xnpx @capgo/cli channel add v22. バージョン 2.0.0 用の Capacitor 設定を更新
「2. バージョン 2.0.0 用の Capacitor 設定の更新」セクションApp Store向けにバージョン2.0.0をビルドする前に、Capacitor の設定を更新してください:
import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = { appId: 'com.example.app', appName: 'Example App', plugins: { CapacitorUpdater: { // ... other options defaultChannel: 'v2' // All 2.0.0 users will use v2 channel } }};
export default config;3. Code ブランチを個別に管理
「3. 別の Code ブランチを管理する」アプリのバージョン間の互換性を維持するために、Gitのブランチを分けて管理してください:
# Create and maintain a branch for version 1.x updatesgit checkout -b v1-maintenancegit push origin v1-maintenance
# Your main branch continues with version 2.x developmentgit checkout main重要: ネイティブの code/API を期待しているが、それを持たない古いアプリに JavaScript bundle をプッシュしないでください。アップデートは必ず適切なブランチからビルドしてください:
- v1-maintenance ブランチ: 1.x アプリのアップデート用 (production チャネル)
- main ブランチ: 2.x アプリのアップデート用 (v2 チャネル)
4. 各チャネルへの Bundle アップロード
「4. 各チャネルへの Bundle アップロード」というタイトルのセクション# For 1.x updates: Build from v1-maintenance branchgit checkout v1-maintenance# Make your 1.x compatible changes herenpx @capgo/cli bundle upload --channel production
# For 2.x updates: Build from main branchgit checkout main# Make your 2.x changes herenpx @capgo/cli bundle upload --channel v25. セルフアサインを有効化
「5. セルフアサインメントの有効化」セクション# Allow apps to self-assign to v2 channelnpx @capgo/cli channel set v2 --self-assign6. App Store へのデプロイ
「6. App Storeへのデプロイ」セクションバージョン2.0.0をビルドしてApp Storeにデプロイします。このバージョンをダウンロードしたすべてのユーザー(新規ユーザーおよびアップグレードする既存ユーザーの両方)は、アプリのバンドル内で設定されているため、自動的にv2チャンネルを使用します。
将来のバージョンへのスケーリング
「将来のバージョンへのスケーリング」セクションさらに破壊的変更を含むバージョン3.0.0をリリースする場合:
# Create channel for version 3.xnpx @capgo/cli channel add v3// capacitor.config.ts for version 3.0.0const config: CapacitorConfig = { // ... plugins: { CapacitorUpdater: { defaultChannel: 'v3' // Version 3.x users } }};任意のバージョンに対してアップデートをプッシュできるようになります:
productionchannel → バージョン1.xのユーザーv2channel → バージョン2.xのユーザーv3channel → バージョン3.xのユーザー
7. クリーンアップ(移行後)
「7. クリーンアップ(移行後)」セクションすべてのユーザーがバージョン2.xへ移行完了した後(目安:3〜4ヶ月後):
- 削除
defaultChannelCapacitor の設定から - v2 チャンネルを削除します:
npx @capgo/cli channel delete v2- v1-maintenance ブランチを削除します:
git branch -d v1-maintenancegit push origin --delete v1-maintenanceデプロイ前に、必ず各チャンネルでアップデートを十分にテストしてください
バージョン 1.x のアップデートを維持
「Version 1.x のアップデートの維持」セクションVersion 1.x と互換性のあるアップデートを配信するには:
- v1-maintenance ブランチに切り替えます:
git checkout v1-maintenance- 変更を加えてコミットします:
# Make 1.x compatible changesgit add .git commit -m "Fix for v1.x"git push origin v1-maintenance- プロダクションチャンネルへビルドしてアップロード:
npx @capgo/cli bundle upload --channel productionBreaking Changes から続ける
「Breaking Changesからの続行」セクション以下を使用している場合: 破壊的変更 チャネルのルーティングと段階的ロールアウトを計画するには、それを次と接続します チャネル Channelsの実装の詳細については、 チャネル Channelsの実装の詳細については、 チャネル Channelsの実装の詳細については、 ベータテスト・ソリューション Beta Testing Solutionのプロダクトワークフロー向けに、また バージョン指定ソリューション Version Targeting Solutionのプロダクトワークフロー向けに。