なんかABテストとか最近ますます重要じゃないすか。Kaizen Platformとか話題だし、日本以外にもスタートアップたくさんできてるし。
ただKaizen Platformはネイティブアプリにまだ対応してないんですよね。残念。
iOSで簡単にABテストするやり方はいろいろあるかもですが、我らが mattt 先生が素敵なライブラリを作ってくれてるので紹介です。
#SkyLabとは
すごくシンプルなABテスト向けライブラリです。ABだけでなく複数のパターンにも対応してます。使い方みれば一目瞭然です。
#使い方
2パターンの場合
AとBブロックのどちらかが50%の割合で実行されます。
[SkyLab abTestWithName:@"Title" A:^{
self.titleLabel.text = NSLocalizedString(@"Hello, World!", nil);
} B:^{
self.titleLabel.text = NSLocalizedString(@"Greetings, Planet!", nil);
}];
複数パターンの場合
指定した重みづけの割合で、選択された値がブロックの実行結果として実行されます。
[SkyLab splitTestWithName:@"Subtitle" choices:@{
@"Red" : @(0.15),
@"Green" : @(0.10),
@"Blue" : @(0.50),
@"Purple" : @(0.25)
} block:^(id choice) {
self.subtitleLabel.text = NSLocalizedString(@"Please Enjoy This Colorful Message", nil);
if ([choice isEqualToString:@"Red"]) {
self.subtitleLabel.textColor = [UIColor redColor];
} else if ([choice isEqualToString:@"Green"]) {
self.subtitleLabel.textColor = [UIColor greenColor];
} else if ([choice isEqualToString:@"Blue"]) {
self.subtitleLabel.textColor = [UIColor blueColor];
} else if ([choice isEqualToString:@"Purple"]) {
self.subtitleLabel.textColor = [UIColor purpleColor];
}
}];
これ便利なのが、WithNameに指定した名前で一旦実行すると、その後同じ名前を実行すれば同じ結果が帰ってきます。結構ABテストのパターンが増えると、表示ロジックもそうだし、ロギングするロジックとかも増えると難しくなりがち(僕だけかも)なんすけど、これだと箇所箇所でこのブロック実行してロジックかけばいいから楽っす。
また、ABテスト結果は、サーバ側にログ送らないと集計できませんが、その部分はこのライブラリでは面倒見てくれません。そこはGoogle AnalyticsとかFlurryとかに上手くログを送って簡単に集計するのがよさそうです。
海外のABテスト関連のスタートアップ
Apptimize
http://apptimize.com/
Leanplum
https://www.leanplum.com/
clutch.io
https://github.com/clutchio
一番下のclutch.io は、Twitterに買収される前まではサービスとして存在してたようですが、いまはサービスは停止されてオープンソース化されてます。
一番上のApptimizeだけ少し使ってみましたが、リアルタイムに結果がわかって、かつサーバサイドでABテストの実行をON/OFFできたりすごく便利なんですが、価格が多少高いのと、重み付けの設定方法がいまいちだったので継続利用はやめました。