LeanplumでスマホアプリのA/Bテストをする。ゲームバランスも調整できる。

スマホアプリのA/Bテストって結構難しいですが、サービスはかなり乱立しています。

以前に紹介したApptimizeもそうです。

Webからビジュアルに操作可能なアプリ向けA/BテストツールApptimize

今日は、別のアプリ向けA/Bテストツールです。

LeanplumはスマホアプリのA/Bテストツール

Leanplumは、スマホのネイティブアプリ向けのA/Bテストツールです。

スクリーンショット 2014-05-04 23.07.30

Mobile A/B Testing for Native iOS and Android Apps by Leanplum

ランディングページにデモがあるんですが、重力やゲーム時間の調整のような例が出ています。単にボタンの色を変えるとかだけでなく、ゲームバランスなども調整できるようです。

登録してみる

さっそく登録してみます。

スクリーンショット 2014-05-04 23.09.47

登録は、名前とメールアドレス、パスワードだけです。

チュートリアルを見る

登録が完了するとチュートリアルが表示されるのですが、かなり作りこまれています。

まず動画が流れて、全体の説明を見ます。

スクリーンショット 2014-05-04 23.10.19

その後に、サンプルアプリをダウンロードするという指示が出ます。

スクリーンショット 2014-05-04 23.13.02

落として開くとこんな感じです。

写真 2014-05-04 23 25 11

このアプリで実際にA/Bテストが体験できます。実際に、PCのブラウザから文字を入力してみます。

スクリーンショット 2014-05-04 23.25.07

試しに「This is how you play」となっているところを「— How to Play —」にしてみました。すると、アプリの方も画面が変わります。

写真 2014-05-04 23 25 50

こうして画面を動的に書き換えて、効果の計測をするわけですね!

SDKを導入する

サンプルで動作を体験したら、実際にアプリにSDKを導入してみます。

スクリーンショット 2014-05-04 23.26.54

SDKは、スタティックライブラリで提供されています。実体は、libLeanplum.aで、ヘッダLeanplum.hとセットで導入します。

libLeanplum.a
Leanplum.h

いくつかのライブラリに依存しているので、まだプロジェクトにリンクされていない場合は、これらもリンクします。

CFNetwork.framework
SystemConfiguration.framework
Security.framework
AdSupport.framework

最後にリンカーフラグに、下記を追加します。

-force_load ${SRCROOT}/libLeanplum.a -fobjc-arc

SDKが導入できたら、あとはSDKを使ってプログラムをするだけです。

まずは起動時に初期化処理を行います。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
#ifdef DEBUG
    [Leanplum setAppId:@"uk4C35gD5EmuOM3xCRfYNucv8Rh9CWDZefetxG74lrY" withDevelopmentKey:@"b90c742487f7f6eb625361d56b15f7b959440823c4b"];
#else
    [Leanplum setAppId:@"uk4C35gD5EmuOM3xCRfYNucv8Rh9CWDZefetxG74lrY" withProductionKey:@"b2278eeb754f9926e235f692d4649508a31aaf8a8ca"];
#endif
    [Leanplum syncResources];
    [Leanplum start];
    return YES;
}

デバッグビルドで起動すると、開発モードでSDKが初期化されるようです。

スクリーンショット 2014-05-04 23.53.38

サーバから設定変数の取得

まずは、A/Bテストの前段階として、サーバで管理している変数を取得してアプリに反映します。

DEFINE_VAR_STRINGマクロで、変数とその初期値を宣言しておきます。

DEFINE_VAR_STRING(welcomeMessage, @"Welcome to Leanplum!");

この変数はそのままでも使うことができますが、サーバから最新の値を取得することもできます。その場合は値の取得時に、非同期的に通知がなされます。この非同期の通知を受けて、コンテンツを書き換えたり、ゲームバランスを変更したりすることができます。

[Leanplum onVariablesChanged:^{
    NSLog(@"%@", welcomeMessage.stringValue);
}];

コンテンツを書き換えるのは面倒なので、試しに出力だけしてみます。

Welcome to Leanplum!
Leanplum: Connected to development server

まずは、単に表示されます。

次に、管理画面から、このwelcomeMessageという変数を書き換えます。

スクリーンショット 2014-05-04 23.57.48

すると、書き換わった値が通知されます。

This text is Overrided!

こうやってあらゆる変数をサーバで管理すれば、アプリ内に埋め込む値を、いつでも調整ができるようになります。

イベントの計測

こうしてコンテンツの書き換えや、ゲームバランスの調整をおこなって、計測した効果の比較をするのがA/Bテストです。

イベントの計測は簡単で、trackメソッド名を呼び出すだけです。

[Leanplum track:@"Launch"];

これで送信されたイベントデータは、管理画面で可視化されます。

スクリーンショット 2014-05-05 0.01.30

ここまできたらあとは、コンテンツの書き換えやゲームバランスの調整と、計測結果の紐付け、つまりA/Bテストです。

A/Bテスト

A/Bテストには専用の画面が用意されています。

変数を複数のパターンでふりわけて、それぞれの値を設定できます。

スクリーンショット 2014-05-05 0.05.02

試しに先ほどのwelcomeMessageという変数を、「Pattern A」「Pattern B」「Pattern C」と振り分けて起動してみます。

Pattern A
Leanplum: Connected to development server

今回は、「Pattern A」に当たったようです!

ユーザー端末ごとにUUIDがふられているようで、それぞれにどのパターンが適用されているかが個別に見えるようになっている。

スクリーンショット 2014-05-05 0.08.18

余談ですが、UUIDってこういうところで使うんですね。

UUIDはなぜ、分散環境で好き勝手に生成しても衝突しないのか。RFC4122規格とUUIDの性質。

価格はDAUに応じたプラン制

価格はDAUに応じたプラン制となっています。上位プランではサポートのオプションが追加されます。

プラン DAU 価格
Seed 500DAUまで 無料
Blossom 1,500DAUまで $79/月
Prune 10,000DAUまで $399/月
Plum それ以上

500DAUまでは無料なので、個人開発のアプリくらいだったら無料で使えそうです。

まとめ

スマホアプリのA/Bテストツールは、軽く探しただけで10サービスくらいあるのですが、まだどこもナンバーワンという状況ではなさそうです。

WebサイトのA/Bテストツールほど単純ではないので、サービスごとの改善したいポイントに応じて使い分けることが必要になります。

Apptimizeとの違いが気になりますが、Apptimizeはどちらかというとビューの書き換えにフォーカスしていて、リリース後でも新規のA/Bテストを開始できるのが特徴的です。

Leanplumは、A/Bテストの対象はリリース前に決定していなければならないですが、そのかわりにゲームバランスのような広い意味でのA/Bテストがシンプルなコーディングで実装できます。

About katty0324

Scroll To Top