チャンネルを使用した機能フラグとA/Bテストの方法
CapGoのチャンネルシステムは、ユーザーのセグメント化と機能アクセスの制御に柔軟な方法を提供します。CapGoには組み込みのプラン管理やA/Bテスト機能はありませんが、チャンネル割り当てを自身で管理することでこれらの機能を実装できます。
チャンネルについて
CapGoのチャンネルでは以下が可能です:
- 異なる機能を特定のユーザーグループに提供
- ユーザーを異なるチャンネルに割り当ててA/Bテストを実行
- 新機能の段階的なロールアウト
- ベータテストプログラムの作成
チャンネル割り当ての方法
1. バックエンド割り当て(推奨)
これはより安全な方法です。以下を含みます:
- アップデーターからデバイスIDを取得
- バックエンドに送信
- バックエンドがCapGo APIを呼び出してデバイスを割り当て
実装方法は以下の通りです:
import { CapacitorUpdater } from '@capgo/capacitor-updater'
// Get device IDconst getDeviceId = async () => { const { deviceId } = await CapacitorUpdater.getDeviceId() return deviceId}
// Send device ID to your backendconst assignToChannel = async (channel: string) => { const deviceId = await getDeviceId() // Your backend will call CapGo API to assign the device await yourBackend.assignDeviceToChannel(deviceId, channel)}
バックエンドの実装
バックエンドで必要な作業:
- CapGoダッシュボードからAPIキーを取得
- CapGo APIを呼び出してデバイスをチャンネルに割り当て
APIキーの取得方法:
- CapGoダッシュボードにログイン
- 設定 > APIキーに移動
- 「新規キーを生成」をクリック
- デバイスとチャンネルを管理するため
all
モードを選択 - 生成されたキーをコピーし、バックエンドの環境変数に安全に保存
- キーは32文字の16進数文字列
- クライアントサイドのコードに決して公開してはいけない秘密キー
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 channelconst assignToChannel = async (channel: string) => { await CapacitorUpdater.setChannel(channel)}
// Get current channelconst getCurrentChannel = async () => { const { channel } = await CapacitorUpdater.getChannel() return channel}
ユーザーがチャンネルに自己割り当てできるようにする前に、CapGoダッシュボードでこの機能を有効にする必要があります:
- CapGoダッシュボードのチャンネルセクションに移動
- 管理したいチャンネル名をクリック
- チャンネル設定で「デバイスの自己関連付けを許可」を有効化
- 変更を保存
この設定が無効の場合、このチャンネルに対するsetChannel
の呼び出しは失敗します。
機能フラグの実装
チャンネルを使用して機能アクセスを制御:
const isFeatureEnabled = async (feature: string) => { // Example: Check if user is in beta channel const channel = await getCurrentChannel() return channel === 'beta'}
A/Bテストの実装
ユーザーを異なるチャンネルに割り当てて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テストを実行できます。本番環境では、よりよいセキュリティと制御のために、常にバックエンド割り当て方式を優先してください。
チャンネル管理の詳細については、チャンネルのドキュメントをご確認ください。