On this page

For AI agents: a documentation index is available at /docs/llms.txt. Append .md to any page URL for markdown, or send Accept: text/markdown.

Experiment JVM SDK

Amplitude ExperimentのサーバーサイドJVM SDK実装に関する公式ドキュメントです。 このSDKは、JavaまたはKotlinのサーバー側実装のいずれかで使用できます。

このドキュメントでは、リモート評価とローカル評価について別々のセクションで説明しています。

リモート評価

リモート評価を使用してユーザーのバリアントを取得する機能を実装しています。

インストール

Gradle を使用して JVM Server SDK をインストールします。

implementation "com.amplitude:experiment-jvm-server:<VERSION>"

リモートの初期化

スタートアップ時にサーバーでSDKクライアントを初期化します。apiKeyパラメーターに渡すデプロイメントキー引数は、アナリティクスイベントの送信先となるプロジェクトと同じプロジェクト内に存在する必要があります。

fun initializeRemote(
    apiKey: String,
    config: RemoteEvaluationConfig = RemoteEvaluationConfig()
): RemoteEvaluationClient
val experiment = Experiment.initializeRemote("<DEPLOYMENT_KEY>")

設定

初期化時にSDKクライアントを設定します。

EUデータセンター

AmplitudeのEUデータセンターを使用する場合は、初期化時にserverZoneオプションを設定してください。

CohortSyncConfig

取得

ユーザーのバリアントを取得し、結果を返します。 この関数は、SDKクライアントの初期化に使用されたデプロイメントに関連付けられているフラグについて、ユーザーを リモートで評価します

fun fetch(user: ExperimentUser, fetchOptions: FetchOptions? = null): CompletableFuture<Map<String, Variant>>

FetchOptions

val user = ExperimentUser.builder()
    .userId("user@company.com")
    .deviceId("abcdefg")
    .userProperty("premium", true)
    .build()
val variants = try {
    experiment.fetch(user).get()
} catch (e: Exception) {
    e.printStackTrace()
    return
}

ユーザーのバリアントを取得した後、特定のフラグのバリアントにアクセスできます。

val variant = variants["<FLAG_KEY>"]
if (variant?.value == "on") {
    // Flag is on
} else {
    // Flag is off
}

ローカル評価

ローカル評価を使用して、ユーザーのバリアント評価を実装します。 ローカル評価を使用する予定がある場合は、そのトレードオフを理解してください

インストール

MavenまたはGradleを使用してJVM Server SDKをインストールします。

implementation "com.amplitude:experiment-jvm-server:<VERSION>"

クイックスタート

  1. ローカル評価クライアントを初期化します。
  2. ローカル評価クライアントを起動します。
  3. ユーザーを評価します。
// (1) Initialize the local evaluation client with a server deployment key.
val experiment = Experiment.initializeLocal(
    "<DEPLOYMENT_KEY>",
    // (Recommended) Enable local evaluation cohort targeting.
    LocalEvaluationConfig.builder()
        .cohortSyncConfig(CohortSyncConfig("<API_KEY>", "<SECRET_KEY>"))
        .build()
)
// (2) Start the local evaluation client.
experiment.start()
// (3) Evaluate a user.
val user = ExperimentUser.builder()
    .userId("user@company.com")
    .deviceId("abcdefg")
    .userProperty("premium", true)
    .build()
val variants = experiment.evaluate(user)

ローカルを初期化する

ローカル評価クライアントを初期化します。

サーバーデプロイメントキー

ローカル評価フラグ設定にアクセスするには、サーバーデプロイメントキーを使用してローカル評価クライアントを初期化する必要があります。

fun initializeLocal(
    apiKey: String,
    config: LocalEvaluationConfig = LocalEvaluationConfig(),
): LocalEvaluationClient

フラグストリーミング

streamUpdates設定を使用すると、flagConfigPollingIntervalMillisミリ秒ごとにポーリングするのではなく、フラグ設定の更新をSDKにプッシュできます(デフォルトはfalse)。保存後にSDKが更新を受信するまでの時間は、通常1秒未満です。ストリーミングに失敗した場合、SDKはポーリングに戻ります。フラグ設定の変更が反映されるまでの時間(デフォルトは30秒)とフォールバックの動作を指定するには、flagConfigPollingIntervalMillis設定を構成します。

設定

SDKクライアントは初期化時に設定できます。

EUデータセンター

AmplitudeのEUデータセンターを使用する場合は、初期化時にserverZoneオプションを設定してください。

LocalEvaluationConfig

割り当て設定

ExposureConfiguration

CohortSyncConfig

スタート

ローカル評価クライアントを起動し、評価用のローカル評価モードのフラグ設定を事前に取得し、設定された間隔でフラグ設定ポーラーを開始します。

fun start()

evaluate()を呼び出す前にstart()が戻るまで待機し、フラグ設定を評価時に確実に使用できるようにします。

停止

ローカル評価クライアントをシャットダウンし、フラグ設定とコホートを更新するためのバックグラウンドプロセスを停止します。

fun stop()

評価する

start()で事前に取得されたフラグを使用して、評価ロジックを実行します。ユーザーオブジェクト引数にevaluateを指定する必要があります。フラグバリアントの特定のサブセットのみが必要な場合は、オプションでフラグキーの配列を渡すことができます。

露出の追跡

露出の追跡を有効にするためにexposureConfigurationを設定します。次に、evaluate()を呼び出す際に、EvaluateOptionsの内のtracksExposuretrueに設定します。

fun evaluate(user: ExperimentUser, flagKeys: List<String> = listOf(), evaluateOptions: EvaluateOptions? = null): Map<String, Variant>
// The user to evaluate
val user = ExperimentUser.builder()
    .userId("user@company.com")
    .deviceId("abcdefg")
    .userProperty("premium", true)
    .build()
// Evaluate all flag variants
val allVariants = experiment.evaluate(user)
// Evaluate a specific subset of flag variants
val specificVariants = experiment.evaluate(user, listOf(
    "<FLAG_KEY_1>",
    "<FLAG_KEY_2>",
))
// Access a variant
val variant = allVariants["<FLAG_KEY>"]
if (variant?.value == "on") {
    // Flag is on
} else {
    // Flag is off
}

EvaluateOptions

ローカル評価コホートターゲティング

1.4.0バージョン以降、ローカル評価SDKクライアントは、ローカル評価ターゲット設定用のコホートのダウンロードをサポートしています。このサポートを有効にするには、初期化時にアナリティクスapiKeysecretKeyを指定したcohortSyncConfigを使用してSDKを設定します。

val experiment = Experiment.initializeLocal(
    "<DEPLOYMENT_KEY>",
    // (Recommended) Enable local evaluation cohort targeting.
    LocalEvaluationConfig.builder()
        .cohortSyncConfig(CohortSyncConfig("<API_KEY>", "<SECRET_KEY>"))
        .build()
)

カスタムログ記録

ログの冗長性を調整するようにlogLevel設定を設定するか、独自のロガーを使用するようにLoggerProviderインターフェースを実装します。

ログレベル

  • VERBOSE: 詳細なデバッグログ
  • DEBUG:開発およびトラブルシューティング用ログ
  • INFO:一般情報
  • WARN:警告
  • ERROR: エラーのみ (デフォルト)
  • DISABLE:ログなし

カスタムロガー

独自のロギングソリューションを使用できるように、LoggerProviderインターフェースを実装します。

import com.amplitude.experiment.util.LogLevel
import com.amplitude.experiment.util.LoggerProvider
class MyCustomLogger : LoggerProvider {
    override fun verbose(msg: String) {
        // Implement verbose logging
    }
    override fun debug(msg: String) {
        // Implement debug logging
    }
    override fun info(msg: String) {
        // Implement info logging
    }
    override fun warn(msg: String) {
        // Implement warn logging
    }
    override fun error(msg: String) {
        // Implement error logging
    }
}
// Initialize with custom logger
val experiment = Experiment.initializeLocal(
    "<DEPLOYMENT_KEY>",
    LocalEvaluationConfig.builder()
        .logLevel(LogLevel.DEBUG)
        .loggerProvider(MyCustomLogger())
        .build()
)

下位互換性

debug設定フィールドは引き続きサポートされています。trueに設定されている場合、logLevelDEBUGに上書きされます。

Was this helpful?