メインコンテンツへスキップ
チュートリアル

チャンネルを活用したフィーチャーフラグとA/Bテストの実装方法

ユーザーへのセルフアサインやバックエンドの活用により、Capgo のチャンネルを使って機能フラグやA/Bテストを実現する方法を学びましょう

Channelを活用したフィーチャーフラグとA/Bテストの手法 Capgo blog illustration

チャンネルを活用したフィーチャーフラグとA/Bテストの実装方法

Capgoのチャンネルシステムは、ユーザーをセグメント化し、機能へのアクセスを制御する柔軟な方法を提供します。Capgoにはプラン管理やA/Bテストが組み込まれていませんが、チャンネルの割り当てを自分で管理することで、これらの機能を実装できます。

チャンネルの仕組み

Capgoのチャンネルでは、次のことができます:

  • 特定のユーザーグループを異なる機能でターゲットにする
  • ユーザーを異なるチャンネルに割り当ててA/Bテストを実行する
  • 新機能を段階的にロールアウトする
  • ベータテストプログラムの作成

チャンネル割り当ての方法

よりセキュアな方法です。手順は以下の通りです:

  1. updaterからデバイスIDを取得する
  2. デバイスIDをバックエンドに送信する
  3. バックエンドから 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)
}

バックエンドの実装

バックエンドで行う必要があること:

  1. Capgo ダッシュボードから API キーを取得する
  2. Capgo API を呼び出して、デバイスをチャンネルに割り当てる

API キーの取得方法:

  1. Capgo ダッシュボードにログインします
  2. Settings > API Keys に移動します
  3. “Generate New Key” をクリックします
  4. 選択します all デバイスとチャンネルを管理するモード
  5. 生成されたキーをコピーし、バックエンドの環境変数に安全に保存してください
    • キーは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 ダッシュボードでこの機能を有効にする必要があります:

  1. Capgo ダッシュボードの Channels セクションに移動します
  2. 管理したいチャンネル名をクリックします
  3. チャンネル設定で「Allow devices to self associate」を有効にします
  4. 変更を保存

この設定が false の場合、この channel での呼び出しは setChannel すべて失敗します。

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
}

ベストプラクティス

  1. Backend Assignment を使う: 本番環境では、常に backend assignment メソッドを使用してください
  2. 一貫した割り当て: 一貫した channel 割り当てには、user ID などの安定した識別子を使用してください
  3. モニタリング・各チャネルごとの機能利用状況やパフォーマンス指標を追跡する
  4. 段階的なロールアウト・スモールスタートでユーザーセグメントを分け、徐々に拡大していく
  5. 充実したドキュメント・チャネル戦略とその目的をドキュメント化しておく

まとめ

Capgo のチャネルシステムを活用することで、よりパーソナライズされたアプリ体験の提供やA/Bテストが可能になります。本番環境では、セキュリティと制御性を高めるため、常にバックエンドでの割り当て方法を推奨します。

チャネル管理の詳細については、こちらの チャネルに関するドキュメント.

「機能フラグとA/Bテストのためのチャネル活用方法」の続きはこちら

使用している場合 チャンネルを活用したフィーチャーフラグとA/Bテストの実装方法 チャンネルルーティングと段階的ロールアウトを計画するには、次と組み合わせてください: チャンネル Channelsの実装の詳細については、 チャンネル Channelsの実装の詳細については、 チャンネル Channelsの実装の詳細については、 ベータテストソリューション ベータテストソリューションのプロダクトワークフロー向け、および バージョンターゲティングソリューション バージョンターゲティングソリューションのプロダクトワークフロー向け。

Capacitor アプリ向けの Live Updates

Web レイヤーのバグが本番で発生したら、App Store の審査を何日も待たずに Capgo で修正を配信しましょう。ネイティブの変更は通常の審査フローに残したまま、ユーザーはバックグラウンドでアップデートを受け取れます。

最新のブログ記事

Capgoは、真にプロフェッショナルなモバイルアプリを作るために必要な最高のインサイトを提供します。