How to Use Channels for Feature Flags and A/B Testing
Capgo’s channel system provides a flexible way to segment users and control feature access. While Capgo doesn’t have built-in plan management or A/B testing, you can implement these features by managing channel assignments yourself.
Understanding Channels
Channels in Capgo allow you to:
- 特定ユーザーグループに異なる機能を提供する
- A/Bテストを実行するためにユーザーを異なるチャネルに割り当てる
- 新機能を段階的にロールアウトする
- ベータテストプログラムを作成する
Channel Assignment Methods
1. バックエンド割り当て(推奨)
この方法はより安全です。次の手順が含まれます。
- デバイスIDをアップデーターから取得する
- バックエンドに送信します
- バックエンドはCapgo APIを呼び出して、デバイスを割り当てます
実装方法はこちらです
import { CapacitorUpdater } from '@capgo/capacitor-updater'
// Get device ID
const getDeviceId = async () => {
const { deviceId } = await CapacitorUpdater.getDeviceId()
return deviceId
}
// Send device ID to your backend
const assignToChannel = async (channel: string) => {
const deviceId = await getDeviceId()
// Your backend will call Capgo API to assign the device
await yourBackend.assignDeviceToChannel(deviceId, channel)
}
バックエンド実装
バックエンドには次のことが必要です
- API キーを取得するには、Capgo ダッシュボードにログインしてください
- Capgo APIを呼び出して、デバイスをチャンネルに割り当てます
API キーを取得するには
- Capgo ダッシュボードにログインしてください
- 設定>API キーに移動してください
- 「新しいキーを生成」ボタンをクリックしてください
- 「__CAPGO_KEEP_0__」を選択してください
allデバイスとチャンネルの管理モード - __CAPGO_KEEP_0__で生成されたキーを安全にバックエンド環境変数に保存してください
- キーは32桁の16進数の文字列になります
- It’s a secret key that should never be exposed in client-side code
Node.jsの例:
import axios from 'axios'
const CAPGO_API_KEY = 'your_api_key'
const CAPGO_API_URL = 'https://api.capgo.app'
async function assignDeviceToChannel(deviceId: string, channel: string) {
try {
const response = await axios.post(
`${CAPGO_API_URL}/device`,
{
app_id: 'YOUR_APP_ID',
device_id: deviceId,
channel: channel
},
{
headers: {
'authorization': CAPGO_API_KEY,
'Content-Type': 'application/json'
}
}
)
return response.data
} catch (error) {
console.error('Failed to assign device to channel:', error)
throw error
}
}
バックエンドも以下を実装する必要があります
- ユーザーの権限を検証する
- すべてのチャンネル割り当てをログする
- リクエスト制限を実装する
- 失敗した割り当てに対してリトライロジックを実装する
2. 自己割り当て(セキュリティが低い)
この方法では、デバイスは直接チャンネルに割り当てられます。テストに便利ですが、生産環境ではセキュリティが低いです
import { CapacitorUpdater } from '@capgo/capacitor-updater'
// Assign device to channel
const assignToChannel = async (channel: string) => {
await CapacitorUpdater.setChannel(channel)
}
// Get current channel
const getCurrentChannel = async () => {
const { channel } = await CapacitorUpdater.getChannel()
return channel
}
ユーザーがチャネルに自分で割り当てることができるようになる前に、この機能を Capgo ダッシュボードで有効にする必要があります。
- Capgo ダッシュボードのチャネルセクションに移動してください。
- 管理したいチャネル名をクリックしてください。
- チャネル設定で、「デバイスが自分で関連付けられることを許可する」にチェックを入れてください。
- 変更を保存してください。
この設定がfalseの場合、チャネル名を指定して呼び出そうとすると失敗します。 setChannel 機能フラグの実装
機能へのアクセスを制御するためにチャネルを使用してください。
A/Bテストの実装
const isFeatureEnabled = async (feature: string) => {
// Example: Check if user is in beta channel
const channel = await getCurrentChannel()
return channel === 'beta'
}
異なるチャネルにユーザーを割り当ててA/Bテストを実行してください。
ベストプラクティス
const assignToABTest = async (userId: string) => {
// Use consistent hashing to assign users
const hash = await hashUserId(userId)
const variant = hash % 2 === 0 ? 'variant-a' : 'variant-b'
await assignToChannel(variant)
return variant
}
機能フラグの実装
- バックエンド割り当ての使用: 製品用途では、常にバックエンド割り当て方法を使用する
- 一貫した割り当て: 一貫したチャネル割り当てのためにユーザーIDや他の安定した識別子を使用する
- 監視: 各チャネルごとに機能の使用状況とパフォーマンスメトリクスを追跡する
- 段階的なロールアウト: 小さなユーザーセグメントから始めて段階的に拡大する
- 明確なドキュメント: チャネル戦略と目的をドキュメント化する
まとめ
: Capgoのチャネルシステムを利用することで、より個別のアプリエクスペリエンスを作成し、A/Bテストを実行することができます。製品用途では、常にバックエンド割り当て方法を使用することで、より良いセキュリティとコントロールを実現することができます。
__CAPGO_KEEP_0__の詳細については、 __CAPGO_KEEP_1__ドキュメント.
__CAPGO_KEEP_0__から続けて
__CAPGO_KEEP_2__が使用している場合 __CAPGO_KEEP_3__ __CAPGO_KEEP_2__と __CAPGO_KEEP_4__ __CAPGO_KEEP_4__の実装詳細については、 __CAPGO_KEEP_4__ __CAPGO_KEEP_4__の実装詳細については、 __CAPGO_KEEP_4__の実装詳細については、 __CAPGO_KEEP_4__ Beta Testing Solution Beta Testingソリューションにおける製品ワークフローについて、 Version Targeting Solution Version Targetingソリューションにおける製品ワークフローについて、