Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AB Tests in Mobile App
Search
kichikuchi
August 20, 2016
Technology
1
1.9k
AB Tests in Mobile App
iOSDC Japan 2016 発表資料
kichikuchi
August 20, 2016
Tweet
Share
More Decks by kichikuchi
See All by kichikuchi
swiftにおける遅延評価
kichikuchi
0
2.8k
tableViewとcoolectionviewのパフォーマンスチューニング
kichikuchi
1
570
GameplayKit, GKRandomSource, GKRandomDistribution
kichikuchi
1
280
Other Decks in Technology
See All in Technology
Amazon CloudWatch を使って NW 監視を行うには
o11yfes2023
0
160
AIコーディングの最前線 〜活用のコツと課題〜
pharma_x_tech
3
1.4k
AI AgentOps LT大会(2025/04/16) Algomatic伊藤発表資料
kosukeito
0
140
React ABC Questions
hirotomoyamada
0
170
Terraform Cloudで始めるおひとりさまOrganizationsのすゝめ
handy
2
180
4/17/25 - CIJUG - Java Meets AI: Build LLM-Powered Apps with LangChain4j (part 2)
edeandrea
PRO
0
110
日経電子版 for Android の技術的課題と取り組み(令和最新版)/android-20250423
nikkei_engineer_recruiting
0
340
“パスワードレス認証への道" ユーザー認証の変遷とパスキーの関係
ritou
1
590
Cross Data Platforms Meetup LT 20250422
tarotaro0129
1
590
Amazon S3 Tables + Amazon Athena / Apache Iceberg
okaru
0
270
30代からでも遅くない! 内製開発の世界に飛び込み、最前線で戦うLLMアプリ開発エンジニアになろう
minorun365
PRO
6
600
AIで進化するソフトウェアテスト:mablの最新生成AI機能でQAを加速!
mfunaki
0
140
Featured
See All Featured
StorybookのUI Testing Handbookを読んだ
zakiyama
29
5.6k
Building Applications with DynamoDB
mza
94
6.3k
Being A Developer After 40
akosma
91
590k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
41
2.2k
How to train your dragon (web standard)
notwaldorf
90
6k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
30k
Documentation Writing (for coders)
carmenintech
69
4.7k
Code Reviewing Like a Champion
maltzj
522
40k
Rebuilding a faster, lazier Slack
samanthasiow
80
8.9k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Raft: Consensus for Rubyists
vanstee
137
6.9k
Scaling GitHub
holman
459
140k
Transcript
kazunori kikuchi / GMO PEPABO inc. 2016.08.19 iOSDC AB Tests
in Mobile App
J04ΤϯδχΞ kazunori kikuchi @kichikuchi NJOOFࣄۀ෦ϓϩμΫτνʔϜ
ࠃ࠷େڃͷϋϯυϝΠυϚʔέοτ NJOOF
ࠃ࠷େڃͷϋϯυϝΠυϚʔέοτ NJOOF
ࠓ͢ίτ Ͳ͏ͬͯ"#ςετΛಋೖ͍ͯ͠Δ͔ "#ςετΛͬͯྑ͔ͬͨίτ "#ςετΛͬͯࠔͬͨίτ
Ͳ͏ͬͯ"#ςετΛಋೖͯ͠ ͍Δ͔
SkyLab + Google Analytics
SkyLab
SkyLab.splitTestWithName("iosdc", conditions: [ "ios" : 0.5 , "dc" : 0.5
]) { (condition) -> Void in if condition as! String == "ios" { self.sendGA(category: "iosdc", action: "ios", value: nil) } else { self.sendGA(category: "iosdc", action: "dc", value: nil) } } ͍ํ
SkyLab.splitTestWithName("iosdc", conditions: [ "ios" : 0.5 , "dc" : 0.5
]) { (condition) -> Void in if condition as! String == "ios" { self.sendGA(category: "iosdc", action: "ios", value: nil) } else { self.sendGA(category: "iosdc", action: "dc", value: nil) } } ςετͷ໊લ ͍ํ
SkyLab.splitTestWithName("iosdc", conditions: [ "ios" : 0.5 , "dc" : 0.5
]) { (condition) -> Void in if condition as! String == "ios" { self.sendGA(category: "iosdc", action: "ios", value: nil) } else { self.sendGA(category: "iosdc", action: "dc", value: nil) } } ذύλʔϯͱ֬ ͍ํ
SkyLab.splitTestWithName("iosdc", conditions: [ "ios" : 0.5 , "dc" : 0.5
]) { (condition) -> Void in if condition as! String == "ios" { self.sendGA(category: "iosdc", action: "ios", value: nil) } else { self.sendGA(category: "iosdc", action: "dc", value: nil) } } ذύλʔϯͱॲཧ ͍ํ
SkyLab.splitTestWithName("iosdc", conditions: [ "ios" : 0.5 , "dc" : 0.5
]) { (condition) -> Void in if condition as! String == "ios" { self.sendGA(category: "iosdc", action: "ios", value: nil) } else { self.sendGA(category: "iosdc", action: "dc", value: nil) } } ςετͷ໊લ ذύλʔϯ໊ ͍ํ
ಋೖͱܭଌɾݕূ w "#ςετͷಋೖ w 4LZ-BCΛར༻ w ςετͷೖΕସ͑ϦϦʔεຖ w ςετ໊ͱذύλʔϯQMJTUͰཧ w
"#ςετͷܭଌɾݕূ w (PPHMF"OBMZUJDTΛར༻ w ΧελϜηάϝϯτͰੳ
"#ςετΛͬͯྑ͔ͬͨίτ ☺
݁Ռ͕ࣈͰݟ͑Δ w ձһొϑϩʔͷมߋͰొ্͕ঢ☺ w Χʔτೖޙͷը໘ϑϩʔΛύλʔϯࢼ͠࠷ྑѱͰߪೖ ʹͷ։͖͕͋ͬͨ w ͱ͋ΔλΠϜϥΠϯͰചΓΕ࡞දࣔ͢ΔΑ͏ʹͨ͠ ͱ͜Ζ෮ؼ͕ݮগ
վળಋೖ͠ɺվѱӨڹൣғ Λ࠷খݶʹͱͲΊΒΕΔʂ
Կ͕վળʹͭͳ͕Δ͔͕Θ͔ͬͯ͘Δ w 6*ύʔπͷαΠζมߋ QY Өڹখ w ใઃܭͷมߋ ࡏݿΕදࣔඇදࣔ
Өڹத w ϑϩʔͷมߋ ը໘ը໘ Өڹେ
Ͳ͏͍ͬͨมߋ͕ΞϓϦΛΑ͘ ͢Δ͔ߟ͑ΔνʔϜશମͷྗ͕ 61
"#ςετΛͬͯࠔͬͨίτ
ςετͷઃܭ͕͍͠ w ͦͦͲͷࣈΛݟͨΒ͍͍ʁ w ͜ͷมߋߪೖʹӨڹ͕ग़ΔͣʂʂͱͳΓ͕ͪͩͬͨ w ಉ͡ࣈΛࢦඪͱ͢Δςετ͕ෳೖΔͱݕূύλʔϯ ͕Ұؾʹ૿͑Δ
ςετͷݕূ͕େม w ςετΛճ͠ଓ͚ΔͨΊʹϑϩʔͷཱ͕֬ඞཁ w ݕূʹઐ೦Ͱ͖Δਓͷ֬อ w ฐࣾͰΤϯδχΞ͕("৮ͬͯ·͢ʂ w ͨͩΤϯδχΞৗʹख͕ۭ͍ͯΔΘ͚Ͱͳ͍ɻɻɻ
࣮ίετίʔυͷՄಡੑ w 6*Λେ͖͘มߋ͢Δ߹͕ॏΊʹͳΔ͜ͱ w ςετऴྃ࣌ʹ֘ՕॴΛ֎͢࡞ۀ͋Δʂ w ࠓͷॴେ͖ͳࣦഊͳ͍͕ݹ͍ςετ͕͍ͬͯͨ͜ͱ ͕ w ςετͷͨΊͷذ͕૿͑ͯίʔυ͕ಡΈͮΒ͘ͳΔ
w Ұ࣌తͳίʔυͳͷͰଥڠ͕ͪ͠ ίϐϖରԠͳͲ
ϦϦʔεલݕূ͕େม w "#ςετ։࢝ॳΞϓϦআ࠶Πϯετʔϧ͠ͳ͍ ͱςετύλʔϯ͕มΘΒͳ͔ͬͨ w ϦϦʔεલʹϓϩϞʔγϣϯίʔυΛൃߦͯ͠ߦ͏ݕ ূͰ࠷େݸൃߦͨ͜͠ͱ͕͋Γ·͢ w ݱࡏ˓˓˓ίϚϯυతͳͷͰΞϓϦΛআͤͣʹς ετύλʔϯΛมߋͰ͖ΔΑ͏ʹͯ͠ղফʂ
w ಛఆͷςετέʔε ಛఆͷ04Ͱ͚ͩى͜Δόά͕͋ͬͨ
ࠔͬͨ͜ͱͷྔ͕ଟ͘ͳͬͯ͠ ·͍·͕ͨ͠ɻɻɻ
ಋೖͯ͠ྑ͔ͬͨ"#ςετʂʂ
ࣗͨͪͷߦͬͨػೳՃɾม ߋʹͲΕ͚ͩͷΠϯύΫτ͕͋ͬ ͔ͨΛΕΔ
͕ࣗͨͪ͜Ε͍͍ΞΠσΞͩʂ ͱࢥ͍ͬͯͨ͜ͱ͕࣮Ϣʔβʹ ͱͬͯෆརӹͩͬͨͱ͍͏ࣄ࣮ ΕΔ
͜ΕΒͷܦݧΛ௨ͯ͡Կ͕Ϣʔ βʹͱͬͯͷՁͳͷ͔Λߟ͑Δ ྗ্͕͢Δ
"#ςετΛ௨ͯ͡ϓϩμΫτͩ ͚Ͱͳ͘νʔϜͰ͖Δʂʂ
ͥͻΈͳ͞Μ͜ͷػձʹ"#ς ετͷಋೖΛߟ͑ͯΈ͍ͯͩ͘͞ʂ
͓͠·͍