ユーザーに直接変更を適用して、即時フィードバックとレビューを求めることなく、テストフライトまたはGoogle Playから新しいビルドをダウンロードしインストールする必要がなくなることを願ったことはありませんか?
私は、実装できる改善を客室に迅速に実装できましたが、結果を検証するために、リスクのある実験的な変更をすべてのユーザーに配信するか、またはクライアント用に一時的なビルドを作成することを意味する、クライアントにアップデートを配信する必要がありました。
開発者は、非技術的なステークホルダー、QA、または適切な場合にユーザー全体にアップデートを提供することができるように、柔軟性が必要でした。
生産ビルドは、ワークインプログレス版に切り替え、フィードバックを収集し、再び生産に戻ることができませんでした。
それが チャンネルサーフィング 機能します。ユーザーのデバイスにインストールされたアプリは、実行中の更新チャンネルを切り替えることができ、生産アプリをレビューと反復の柔軟なスペースに変えるのではなく、固定のエンドポイントに変えることができます。この機能は、生産アプリと一緒に作業する非技術的なステークホルダーにとって特に便利です。既にインストールされているアプリで直接変更をテストし、フィードバックを提供できるためです。
更新チャンネルの理解
更新チャンネルは、Capgo が特定のビルドにターゲットする更新を決定する方法です。各ビルドはチャンネルと関連付けられており、そのチャンネルは受信する更新を決定します。
アップデートを公開する例として、チャンネルを切り替えて、Capgo の Live Update 機能を使用できます。 preview __CAPGO_KEEP_0__ のチャンネルでは、次のことができます。 production特定のユーザーグループに異なる機能をターゲットする
チャンネルはCapgoで利用可能な機能です。
- 新機能を段階的にロールアウトする
- ベータテストプログラムを作成する
- channel surfing
- enables. An app installed on a user’s device can switch update channels at runtime, turning a production app into a flexible space for review and iteration rather than a fixed endpoint. This is especially useful for non-technical stakeholders working with production apps, allowing them to test changes and give feedback directly in the app they already have installed.
- production環境のトラブルシューティングに個々のユーザーを対象にします。
アップデートチャンネルの詳細については、 Capgoチャンネルドキュメント チャンネルサーフィングとは?
チャンネルサーフィングは、インストール済みのアプリが再インストールせずに異なるアップデートストリームからデータを取得できるようにする機能です。インストール済みのアプリは実行時、更新チャンネルを切り替えることができ、切り替えたチャンネルから更新を受け続けることができます。アプリがアンインストールされるか、別のチャンネルに切り替えるまで、新しいチャンネルから更新を受け続けることができます。
実際には、製品オーナーまたはQAが、たとえば、
チャンネルにビルドを切り替え、最新の変更を試すことができます。テストが完了したら、 production に切り替えることができます。再インストールや別のプレビュービルドが必要なくても、十分です。 preview チャンネルサーフィングの実装方法 production channel
channel
channel
Capgoチャンネル切り替えの前に、プロジェクトをCapgo Live Updatesで構成する必要があります。設定方法は、次の Capgoのクイックスタートガイド.
The only setup required for channel surfing is enabling “Allow devices to self associate” on each channel you want to switch to in the Capgo dashboard. codeの変更や設定の変更は必要ありません。
チャンネル切り替えの基本は、1つのAPIコールで実現されています。
import { CapacitorUpdater } from '@capgo/capacitor-updater';
await CapacitorUpdater.setChannel({ channel: 'your-channel' });
このコールは、Capgoからアップデートを取得する際に使用されるチャンネルを設定します。 setChannelAPIについてもっと学びましょう。.
即時チャンネル切り替え (v5.34.0+)
プラグインバージョン 5.34.0、6.34.0、7.34.0、または 8.0.0 (メジャーバージョンに応じて) から 機能が大きく改善され、高速化されています。 setChannel() バックエンド検証 (読み取り専用)
- バックエンド検証(読み取り専用): Capgo バックエンドにリクエストが送信され、チャンネルが許可されているかどうか検証されます。
- ローカル ストレージの更新: 検証が成功すると、デバイスのローカル ストレージにチャンネルが保存されます。
- 即時効果: 次のアップデート チェックでは、新しいチャンネルが即座に使用されます。
以前は、 setChannel() チャンネル オーバーライドをバックエンド データベース (例: ダッシュボードまたは API の変更) に保存していました。デバイスは、バックエンドの再同期 (最大 2 分) が完了するまで、新しいチャンネルが認識されるまで待ちます。新しい動作では、バックエンド (検証のみ) からのみ読み取り、ローカルに保存するため、チャンネル Switch は即時になります。
完全なチャンネル Switching フロー
より良いユーザー エクスペリエンスを提供するには、通常はチャンネルを切り替えて、次のアプリ再起動を待つだけではありません。一般的なアプローチは、すぐにアップデートをチェックし、利用可能な場合はダウンロードし、アプリを再起動して、ユーザーが選択したチャンネルのアップデートに直接到達するようにすることです。
一般的なフローは次のようになります:
- チャンネルを切り替える (
setChannel) - アップデートをチェックする (
getLatest) - アップデートを取得して適用します(
download,setまたはnext) - リロードする必要がある場合はアプリを再起動してください(
reload)
ここに完全な例があります:
import { CapacitorUpdater } from '@capgo/capacitor-updater';
async function switchChannel(selectedChannel: string) {
try {
// 1. Set the updates channel (with optional auto-update trigger)
await CapacitorUpdater.setChannel({
channel: selectedChannel,
triggerAutoUpdate: true // Immediately check for updates
});
console.log(`Switched to channel: ${selectedChannel}`);
// If you want more control, handle the update manually:
// const latest = await CapacitorUpdater.getLatest();
// if (latest.url) {
// const bundle = await CapacitorUpdater.download({
// url: latest.url,
// version: latest.version
// });
// await CapacitorUpdater.set({ id: bundle.id });
// }
} catch (error) {
console.error('Failed to switch channel:', error);
}
}
// Switch to the beta channel
switchChannel('beta');
このフローをどのように構成するかはあなた次第です。複数のインタラクションを跨いだり、すべて一度に実行することもできます。どのように構成するかはあなた次第ですが、失敗を考慮することを忘れないでください。ネットワークの問題や無効なチャンネルなど、アップデートを適用することができません。
唯一の要件:セルフアサインメントを有効にする
チャンネル間の切り替えを有効にするには、この一つのことが必要です。 アプリがチャンネルを切り替える前に、 setChannel()チャンネル切り替えを使用するには、Capgo ダッシュボードでそのチャンネルに自己割り当てを有効にする必要があります。
- チャンネル チャンネル Capgo ダッシュボードのセクション
- チャンネル名を選択してください
- 有効 「デバイスが自ら関連付けを許可する」
- 変更を保存

それだけです。アプリの設定変更は必要ありません。 defaultChannel 必要な設定はありません。チャンネルを選択して、ユーザーが切り替えることができるようにしてください。
この設定が無効の場合、チャンネルを呼び出すと失敗し、イベントが発生します。 setChannel() 利用可能なチャンネルの一覧 channelPrivate 自己割り当てのためのチャンネルの一覧を取得できます。
If this setting is disabled, any attempt to call
with this channel will fail and the
const { channels } = await CapacitorUpdater.listChannels();
console.log('Available channels:', channels.map(c => c.name));
// Use this to build a channel selector UI
この機能は、自身の割り当てが有効になっているチャンネルのみを返します。
現在のチャンネルを取得する
現在のデバイスに割り当てられているチャンネルを確認してください:
const { channel } = await CapacitorUpdater.getChannel();
console.log('Current channel:', channel);
デフォルトのチャンネルに戻す
デフォルトのチャンネルに戻すには、チャンネルオーバーライドを削除してデフォルトに戻します。
await CapacitorUpdater.unsetChannel({});
チャンネルオーバーライドを削除すると、デバイスは特定のチャンネルに割り当てられなくなり、デフォルトのチャンネルに戻ります。 defaultChannel config またはクラウドのデフォルトにあります。
チャンネルサーフィングをテストする方法
リリースビルドが必要です。 @capgo/capacitor-updater API is designed for release builds. In debug builds, the app typically loads JavaScript from a development server instead, which bypasses the normal update flow.
チャンネルサーフィングの唯一の要件は、
割り当ての自己割り当てを有効にすることです。 “デバイスが自らチャンネルを関連付けられるようにする” 各チャンネルでチャネル切り替えを許可したい場合は、そのチャンネルごとに許可する。
設定変更は必要ありません。アプリの設定は変更する必要はありません。
テストビルドの作成
bun run build && npx cap sync
Then create your native builds using Xcode or Android Studio, or use your CI/CD pipeline. The app will start on whichever channel is set as the cloud default in your Capgo dashboard.
アップデートの異なるチャンネルへの公開
異なるチャンネルへのアップデートの公開
# Publish to preview channel
npx @capgo/cli@latest bundle upload --channel preview
# Publish to production channel
npx @capgo/cli@latest bundle upload --channel production
アプリがインストールされたら、異なるチャンネルへのアップデートを公開します。
その後、チャンネル切り替えUIに移動し、チャンネル切り替えをトリガーします。アプリは選択したチャンネルからアップデートを取得し、更新されたアプリにリロードします。
チャンネル切り替えUIの作成
Capgo チャンネル切り替えの例です。
import { useState, useEffect } from 'react';
import { CapacitorUpdater } from '@capgo/capacitor-updater';
export function ChannelSwitcher() {
const [currentChannel, setCurrentChannel] = useState<string>('');
const [availableChannels, setAvailableChannels] = useState<string[]>([]);
const [isLoading, setIsLoading] = useState(false);
useEffect(() => {
loadChannelInfo();
}, []);
async function loadChannelInfo() {
const { channel } = await CapacitorUpdater.getChannel();
setCurrentChannel(channel || 'default');
const { channels } = await CapacitorUpdater.listChannels();
setAvailableChannels(channels.map(c => c.name));
}
async function handleChannelSwitch(channel: string) {
setIsLoading(true);
try {
await CapacitorUpdater.setChannel({
channel,
triggerAutoUpdate: true
});
setCurrentChannel(channel);
// App will update in background or on next restart
} catch (error) {
console.error('Failed to switch channel:', error);
} finally {
setIsLoading(false);
}
}
return (
<div>
<p>Current channel: {currentChannel}</p>
<div>
{availableChannels.map(channel => (
<button
key={channel}
onClick={() => handleChannelSwitch(channel)}
disabled={isLoading || channel === currentChannel}
>
Switch to {channel}
</button>
))}
</div>
</div>
);
}
チャンネル切り替えUIの例はこちらです。
チャンネル間の切り替えは、Capgoの機能ではありませんが、実行時チャンネル切り替えを実行するとすぐに明らかになります。
実行時バージョン不一致
Capgoのアップデートはネイティブアプリのバージョンと結びついています。アップデートのネイティブバージョンがインストール済みアプリのネイティブバージョンと一致しない場合、アップデートはダウンロードされず適用されません。チャンネル間の切り替えの場合、通常、アプリはチャンネルにアップデートがあるにもかかわらず、アップデートが適用されないままアプリがチャンネルを切り替えます。
この場合、アップデートは異なるネイティブバージョンのアプリから公開された可能性があります。チャンネルのバンドルがデバイスにインストールされているネイティブバージョンと互換性があることを確認してください。
アップデートの削除
アプリがすでにチャンネルに対してアップデートをダウンロードしている場合、Capgo ダッシュボードからアップデートを削除しても、すでにアップデートをダウンロードしているデバイスからアップデートを削除することはできません。削除は、将来のダウンロードのみを停止します。 future downloads.
データ移行に関する考慮事項
Capgo also provides a rollback mechanism that can instruct clients to re-apply a previous stable update or fall back to the update embedded in the build.
future
__CAPGO_KEEP_0__
Capgo チャンネル切り替えのしくみ
チャンネルサーフィングはモバイル開発を改善する理由
チャンネルサーフィングは特に、生産環境で変更を迅速に確認する必要がある場合に便利です。
迅速な検証
緊急のバグ修正が必要な場合、変更を小規模なユーザーに分離し、検証することができます。
利害関係者レビュー
製品オーナーまたはQAがインストール済みの生産ビルドを別のアップデートチャンネルに切り替え、修正または機能を確認し、レビューが終了したら元に戻すことができます。
テストの簡素化
これにより、非技術的な利害関係者がレビューと決定に参加し、ワークフローをスムーズに保つことができます。生産ビルドは、テスト、フィードバック、検証のための柔軟なツールになります。
使用例
- QAテスト: QAチームが機能ブランチ間を切り替えることができます
- ベータプログラム: ユーザーは早期アクセスを目的としてベータチャンネルに参加する
- ステークホルダーレビュー: リリース前に変更をプレビューする
- A/B テスト: ユーザーを異なるチャンネルに割り当てて実験を行う
- デバッグ: 特定のユーザーをデバッグチャンネルに切り替えて問題を診断する
比較: チャンネル変更方法
| 方法 | 効果時間 | 保存先 | 利用例 |
|---|---|---|---|
setChannel() プラグインから |
即時 | デバイスのみ(ローカル) | アプリ内でユーザーが行うチャネル切り替え |
| デバイスのオーバーライド | 最大2分 | バックエンドデータベース | 管理者が特定のデバイスに変更 |
| API チャネル割り当て | 最大2分 | バックエンドデータベース | 自動化されたバックエンド統合 |
最適なユーザー体験を提供するために、チャンネル切り替えUIを構築する際には、必ずプラグインの setChannel() メソッドを使用してください。
ベストプラクティス
- アクセス制限: 通常、チャンネルサーフィングは内部用途に使用されるため、すべてのユーザーに公開しないでください。
- エラー処理: チャンネル切り替え時に常にエラーを優雅に処理してください。
- 互換性の確認: インストール済みのネイティブバージョンと異なるチャンネルで行われるアップデートは互換性があることを確認してください。
- チャンネルドキュメント: 各チャンネルの目的を明確に記載したドキュメントを保管してください。
- 使用状況の監視: デバッグのためにデバイスがどのチャネルに接続されているかを追跡する
リソース
- Capgo Live Update ドキュメント
- __CAPGO_KEEP_0__ Live Updates Documentation
- プラグイン API リファレンス
- Capgo CLI コマンド
Conclusion
Channel surfing transforms how you can iterate on your Capacitor app. Instead of treating production builds as fixed endpoints, they become flexible tools for testing, validation, and rapid iteration.
チャネル サーフィングは、__CAPGO_KEEP_0__ アプリの開発をどのように変えるかを変える。生産用ビルドを固定のエンドポイントとして扱うのではなく、テスト、検証、迅速な開発のための柔軟なツールとして扱う。
最近のプラグイン バージョンで導入された即時チャネル スイッチングにより、体験は今やシームレスです - ユーザーはチャネルを切り替え、すぐに新しいチャネルからの更新を受け取ることができます。待ち時間はありません。
Channel Surfing から続けて: Capgo については、実行時でアップデートチャンネルを切り替える方法
Capgoを使用している場合 CapgoのChannel Surfing:実行時でアップデートチャンネルを切り替える方法 Channel Surfingを使用してチャンネルルーティングとステージドロールアウトを計画し、チャンネルを接続する チャンネル チャンネル チャンネル チャンネル チャンネル チャンネル チャンネルについての実装詳細 ベータテストソリューション ベータテストソリューションの製品ワークフローについて バージョン目標ソリューションの製品ワークフローについて。