Channelを活用したフィーチャーフラグとA/Bテストの実装方法
CapgoのChannelシステムを使えば、ユーザーセグメントの作成や機能アクセスの制御を柔軟に行えます.Capgo自体にはプラン管理やA/Bテストの機能は組み込まれていませんが、Channelの割り当てを自身で管理することで、これらの機能を実装可能です。
Channelの仕組みを理解する
CapgoのChannelでできること:
- 特定のユーザーグループを異なる機能でターゲットにする
- ユーザーを異なるチャンネルに割り当ててA/Bテストを実行
- 新機能を段階的にロールアウト
- ベータテストプログラムを作成
チャンネル割り当ての方法
1. バックエンドでの割り当て(推奨)
よりセキュアな方法です。手順は以下の通り:
- updaterからデバイスIDを取得
- デバイス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)
}
バックエンドの実装
バックエンドで行う必要があること:
- Capgo のダッシュボードから API キーを取得します
- Capgo の API を呼び出して、デバイスをチャンネルに割り当てます
API キーを取得するには:
- Capgo ダッシュボードにログインします
- Settings > API Keys に移動します
- “Generate New Key” をクリックします
- 選択
allデバイスとチャンネルを管理するモード - 生成されたキーをコピーし、バックエンドの環境変数に安全に保存してください
- キーは32文字の16進数文字列になります
- クライアント側の 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
}
}
また、バックエンド側で以下の処理も行う必要があります:
- ユーザーの権限検証
- すべてのチャネル割り当てのログ記録
- レート制限(Rate Limiting)の制御
- 割り当て失敗時のリトライロジックの実装
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ダッシュボードの Channels セクションに移動します
- 管理したいチャンネル名をクリックします
- チャネル設定で「Allow devices to self associate」を有効にします
- 変更を保存
この設定がfalseの場合、以下の呼び出しはすべて setChannel このchannelを使用すると失敗します。
Feature Flagsの実装
channelを使用して機能へのアクセスを制御します:
const isFeatureEnabled = async (feature: string) => {
// Example: Check if user is in beta channel
const channel = await getCurrentChannel()
return channel === 'beta'
}
A/Bテストの実装
ユーザーを異なるchannelに割り当てることで、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
}
ベストプラクティス
- Backend Assignmentの使用: 本番環境では、常にbackend assignment方式を使用してください
- 一貫した割り当て: channelの割り当てを一定にするには、user IDやその他の安定した識別子を使用してください
- モニタリング: チャネルごとに機能の利用状況とパフォーマンス指標を追跡
- 段階的ロールアウト: 少人数のユーザーセグメントから始めて、徐々に拡大する
- 明確なドキュメント: チャネル戦略とその目的をドキュメントに残す
まとめ
Capgo のチャネルシステムを活用すれば、よりパーソナライズされたアプリ体験を提供したり、A/B テストを実施したりできます。本番環境では、セキュリティと制御性の観点から、常にバックエンドでの割り当て方法を選んでください。
チャネル管理の詳細は、こちらの チャネルのドキュメント.
「機能フラグと A/B テストにチャネルを使う方法」から続けて読む
以下を使用している場合: Channelsを活用したフィーチャーフラグとA/Bテストの実装方法 チャネルのルーティングと段階的ロールアウトを計画するには、それを次と接続します チャネル Channelsの実装の詳細については、 チャネル Channelsの実装の詳細については、 チャネル Channelsの実装の詳細については、 ベータテスト・ソリューション Beta Testing Solutionのプロダクトワークフロー向けに、また バージョン指定ソリューション Version Targeting Solutionのプロダクトワークフロー向けに。