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
Kotlin sealed classを用いた、 ユーザーターゲティングDSL(専用言語)と ...
Search
LINE Digital Frontier - TECH
June 22, 2024
Technology
0
150
Kotlin sealed classを用いた、 ユーザーターゲティングDSL(専用言語)と 実環境で秒間1,000万評価を行う処理系の事例紹介
「Kotlin Fest2024」の登壇資料です。
https://www.kotlinfest.dev/kotlin-fest-2024
LINE Digital Frontier - TECH
June 22, 2024
Tweet
Share
More Decks by LINE Digital Frontier - TECH
See All by LINE Digital Frontier - TECH
How LINE MANGA Uses ClickHouse for Real-Time AnalysisSolving Data Integration Challenges with ClickHouse
ldf_tech
0
190
会社紹介資料
ldf_tech
1
780
SwiftSyntaxでUIKitとSwiftUIの使用率を完璧に計測できちゃう件について
ldf_tech
0
240
Kotlin 2.0が与えるAndroid開発の進化
ldf_tech
0
180
Road to Kotlin 〜10年続くPerl運用からの脱却〜
ldf_tech
0
35
Kotlin Collection関数をマスター
ldf_tech
0
320
マンガアプリのメモリ改善と解析方法
ldf_tech
0
31
Other Decks in Technology
See All in Technology
ABWG2024採択者が語るエンジニアとしての自分自身の見つけ方〜発信して、つながって、世界を広げていく〜
maimyyym
1
180
Share my, our lessons from the road to re:Invent
naospon
0
150
Potential EM 制度を始めた理由、そして2年後にやめた理由 - EMConf JP 2025
hoyo
2
2.8k
困難を「一般解」で解く
fujiwara3
5
320
入門 PEAK Threat Hunting @SECCON
odorusatoshi
0
170
開発組織を進化させる!AWSで実践するチームトポロジー
iwamot
2
430
生成AI×財務経理:PoCで挑むSlack AI Bot開発と現場巻き込みのリアル
pohdccoe
1
750
遷移の高速化 ヤフートップの試行錯誤
narirou
6
1.6k
Fraxinus00tw assembly manual
fukumay
0
120
大規模アジャイルフレームワークから学ぶエンジニアマネジメントの本質
staka121
PRO
3
1.2k
NFV基盤のOpenStack更新 ~9世代バージョンアップへの挑戦~
vtj
0
360
DevinでAI AWSエンジニア製造計画 序章 〜CDKを添えて〜/devin-load-to-aws-engineer
tomoki10
0
170
Featured
See All Featured
For a Future-Friendly Web
brad_frost
176
9.6k
The Cost Of JavaScript in 2023
addyosmani
47
7.4k
How GitHub (no longer) Works
holman
314
140k
Designing for Performance
lara
604
68k
KATA
mclloyd
29
14k
Designing Experiences People Love
moore
140
23k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
114
50k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
570
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
4
380
Building an army of robots
kneath
303
45k
Practical Orchestrator
shlominoach
186
10k
Transcript
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO ,PUMJOTFBMFEDMBTTΛ用͍ͨɺ ϢʔβʔλʔήςΟϯά%4-(専用言語)ͱ 実環境Ͱ秒間 万評価Λ行͏処理系ͷ事例紹介 CZ!LB[VLJ@NBUTVEB
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO lαʔϏεͷମݧΛύʔιφϥΠζ͠ɺڵຯͷ͋ΔίϯςϯπΛָ͠ΜͰ͏ͨΊʹɺ ֤छΫϦΤΠςΟϒʢόφʔɾϙοϓΞοϓʣͷλʔήςΟϯάʢCZɺੑผɺ04ɺFUDʣ͕͔ܽͤ·ͤΜɻ ࠷ॳݸผʹ࣮͢Δࣄ͕ଟ͍Ͱ͕͢ɺ࿐ग़໘ O ͱλʔήςΟϯά݅ N ͕૿͑ͨ߹ɺ
0 OYN ͷ࣮ɾϝϯςφϯείετ͕͔͔ͬͯ͠·͍ɺڞ௨Խ͕ඞཁͱͳΓ·͢ɻ ࠓճͷൃදɺ৽ن࡞͞Εͨڞ௨ 1MBUGPSN ্ʹ͓͚Δ՝ɿ ʰϚʔέλʔΛॳΊͱ͢Δશࣾһ͕ɺ Ϣʔβʔͷ݅ͦͷ "/%03/05ͷҙͷΈ߹ΘͤʹΑΔλʔήςΟϯάΛՄೳͱ͢ΔʱΛɺ ,PUMJOͰ࣮ͨ͠ :".-ϕʔεͷϢʔβʔλʔήςΟϯά%4-ʢಠࣗݴޠʣͱ ͦͷॲཧܥʹΑͬͯղܾͨ͠ࣄྫͷհͱͳΓ·͢ɻ
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO "HFOEB • ಋೖ λʔήςΟϯά֓ཁͱɺղ͖͘՝ • :".-,PUMJOΛར༻ͨ͠ %4-
ͷ࣮ • • ·ͱΊ
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO "HFOEB • λʔήςΟϯά֓ཁͱɺղ͖͘՝ • :".-,PUMJOΛར༻ͨ͠ %4- ͷ࣮
• • ·ͱΊ
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO λʔήςΟϯάͱͭ·ΓͲ͏͍͏͜ͱ͔ r ͋ΔϚϯΨΞϓϦ։ൃͷݱ ΞϓϦʹىಈ࣌ϙοϓΞοϓػೳ͕ཉ͍͠ Ͱ͢ΑͶ τοϓը໘ʹόφʔग़͍ͨ͠ΑͶ Θ͔Γ·͢
όφʔ࡞ͷΈʢಡΜ͔ͩͲ͏͔ʣͰग़͚͍ͨ͠͠ͳ ࡞Γ·ͬͤ ىಈ࣌ϙοϓΞοϓΛಛఆͷϢʔβʔʢ$47 -JTUʣ ʹରͯ͠ͷΈग़͢Α͏ʹ͍ͨ͠ɻ ֦ு͠·͢ ϢʔβʔΛࢦఆʢ$47ʣͯ͠ 1VTI ௨ΛૹΔػೳ࡞Ζ͏ ͱΓ͋͑ͣ SZ ىಈ࣌ϙοϓΞοϓ࡞ΈࢦఆͰग़͍ͨ͠Μ͚ͩͲ ͦΖͦΖਏ͍ͧɻɻɻ
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO ͭ·ΓͲ͏͍͏͜ͱ͔ʁ Banner Popup その他A B C ...
全表⽰ ✅ ✅ ✅ ✅ ✅ … 登録時期 ✅ ✅ ❌ ❌ ✅ … 課⾦履歴 ✅ ❌ ✅ ❌ ❌ … 閲覧履歴 ❌ ✅ ❌ ✅ ✅ … ID指定 ❌ ✅ ✅ ✅ ❌ … … … … … … … … 機能 ターゲティング条件
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO Banner Popup その他A B C ... 全表⽰
✅ ❌ ❌ ✅ ❌ … 登録時期 ✅ ✅ ❌ ❌ ✅ … 課⾦履歴 ✅ ❌ ✅ ❌ ❌ … 閲覧履歴 ❌ ✅ ❌ ✅ ✅ … ID指定 ❌ ✅ ✅ ✅ ❌ … … … … … … … … 機能 ターゲティング条件 ͭ·ΓͲ͏͍͏͜ͱ͔ʁ • ਏ͘ͳ͖ͬͯͨɻ • αʔϏεͷͬͯ͜͏͍͏ͷʂʁ • ͋Δఔڞ௨Խ͓͚ͯ͜͠͏ͳΒΜΖ͏ɻ • ͜ͷλʔήςΟϯάॲཧॏ͍ͷͰ 5PQ 1BHF Ͱͬͯཉ͘͠ͳ͍ FUD ͕ӡ༻ෛՙ εϐʔυ༏ઌʢʁʣͰɺ αʔϏε͕͢ΔͱͲ͏ͳΔͷ͔ɾɾɾʁ
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO ͭ·ΓͲ͏͍͏͜ͱ͔ʁ ターゲティング条件 露出機能
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO &OHJOFFSJOHGPS4DBMF • ݸผʹ࣮͍ͯ͠ΔͱλʔήςΟϯάͷ࣮ɾϝϯςφϯείετ 𝑂 λʔήςΟϯάͷछྨ × 𝑂
ػೳͷ ~ 𝑂 𝑆𝑒𝑟𝑣𝑖𝑐𝑒 𝐺𝑟𝑜𝑤𝑡ℎ × 𝑂 𝑆𝑒𝑟𝑣𝑖𝑐𝑒 𝐺𝑟𝑜𝑤𝑡ℎ = 𝑂 𝑆𝑒𝑟𝑣𝑖𝑐𝑒 𝐺𝑟𝑜𝑤𝑡ℎ ! αʔϏεͷʹରͯ͠ͷίετ͕͔͔Δɺͱ͍͏͜ͱɻ ͜ΕΛղܾ͢Δඞཁ͕͋ͬͨɻ ࠷ॳʰͱ͍͑ͳΜͱ͔ͳΔͰ͠ΐʱͷൣғ͕ͩͬͨʜʜ
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO 8)0 8& "3& • ͜ͷηογϣϯͰհͤͯ͘͞ͷ -*/&ϚϯΨ ͱ͍͏ɺ
ࠃ 5PQ4BMFTɺʹͳΔ͋Δ ΞϓϦͷαʔόʔαΠυࣄྫͱͳΓ·͢ • Λ͑Δӡ༻ͷੵΈॏͶ • ߴτϥϑΟοΫ • ສ 5BSHFUJOHTFD͕࣮ࡍʹඞཁ Apple: https://www.youtube.com/watch?v=aRKayW4LZCg
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO 13,PUMJO2VJ[ ग़தͰ͢
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO ϦϦʔε͔ΒΛӽ͑ΔΞϓϦͷ λʔήςΟϯά͕ ?ͩͬͨ߹ͷίετ 𝑂 λʔήςΟϯά࣮ͷτʔλϧίετ ~ 𝑂
ػೳͷ ⋅ 𝑂 λʔήςΟϯάͷछྨ ~ 𝑂 𝑆𝑒𝑟𝑣𝑖𝑐𝑒 𝐺𝑟𝑜𝑤𝑡ℎ ⋅ 𝑂 𝑆𝑒𝑟𝑣𝑖𝑐𝑒 𝐺𝑟𝑜𝑤𝑡ℎ = 𝑂 𝑆𝑒𝑟𝑣𝑖𝑐𝑒 𝐺𝑟𝑜𝑤𝑡ℎ ! = 𝑂 11 ͷϊϋͷੵΈॏͶ ! ͔Βͷ 11年 ! ͔Βͷ
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO ສTFD ͷλʔήςΟϯάͰ࣮ߦ • ඵؒ ສ
TFDͷ "1* $BMM ͕͋ΔΘ͚Ͱͳ͍ɻ • "1*$BMMͷதͰɺ༷ʑͳλʔήςΟϯά͕ߦΘΕ͍ͯΔ • ྫɿ-*/& ϚϯΨͷىಈ࣌εΫϦʔϯ • Ϣʔβʔొʢ৽نʁطଘʁFUDʣຖʹɺը໘ߏΛม͑Δ • όφʔɾ1PQVQ ͻͱͭͻͱͭΛݟͤΔɾݟͤͳ͍ • ֤छ "# 5FTU • ։ൃྃػೳͷ (SBEVBM 3PMMPVU
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO ߹ܭ 5BSHFUJOH r TFD
1,000万/sec とはどれくらいか? = 1回の処理に 1ms かかってしまうとすると 1スレッドで秒間1000回しかターゲティングできず、 1万スレッドが必要。
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO ඵؒ ສճΛ͑Δ λʔήςΟϯάΛ࣮ݱ͢Δํ๏ • ٕज़ཁૉΛ "E5FDI
͔Βഈआ ˞ • 'VMMTDSBUDIͷ 1SJWBUF %.1 "VEJFODFཧʣΛ ,PUMJO Ͱ։ൃɾӡ༻ • શͯͷ "1* ϦΫΤετʹରͯ͠ɺ αϒϛϦඵͰ 6TFSͷ "VEJFODF(SPVQ*% 'MBH4FU Λฦ͢ • ͜ͷ 'MBH 4FUʹରͯ͠ɺλʔήςΟϯάΛద༻ ※ https://en.wikipedia.org/wiki/Data_management_platform etc
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO 1MBUGPSN͕͋Ε͜͏ͳΔ Targeting Patform (PrivateDMP+α) 𝑂 𝑆𝑒𝑟𝑣𝑖𝑐𝑒 𝐺𝑟𝑜𝑤𝑡ℎ
! 𝑂 𝑆𝑒𝑟𝑣𝑖𝑐𝑒 𝐺𝑟𝑜𝑤𝑡ℎ + 𝑂 𝑆𝑒𝑟𝑣𝑖𝑐𝑒 𝐺𝑟𝑜𝑤𝑡ℎ ~ 𝑂(𝑆𝑒𝑟𝑣𝑖𝑐𝑒 𝐺𝑟𝑜𝑤𝑡ℎ)
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO ߟྀ͖͢ϙΠϯτ *0'SFF ཁ • ʰ͜Ε৽نϢʔβʔʹग़͍ͨ͠ʱͱ ͍͏ͱ͖ʹɺग़͚͠ͷλΠϛϯάͰ
৽نϢʔβʔ͔Ͳ͏͔Λ %# ʹ͍ ߹ΘͤΔࣄͰ͖ͳ͍ 1,000万 ターゲティング /sec = 1回の処理に 1ms (1IO) かかってしまうと 1万スレッドが必要。 利⽤開始時期 バナー TargetingPlatform DB
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO -*/&ϚϯΨʹ͓͚Δɺ,PUMJO ্Ͱͷ λʔήςΟϯάͷղ͖ํ "1*ݺͼग़͠։࢝ͷλΠϛϯάͰɺ جຊใʢϢʔβʔ*%ͳͲʣʹՃ͑ͯɺ "VEJFODF(SPVQ*%
ͱݺΕΔ 'MBH 4FU Λ %.1͔Βશͯऔಘ͓ͯ͘͠ NT ྫɿ6TFS"GMBH< > ΫϦΤΠςΟϒʢόφʔɾ1PQVQFUDʣͷϦετ͕ɺ λʔήςΟϯάͱڞʹ༩͑ΒΕΔɻ • ྫɿ͜ͷόφʔΛ GMBHͷϢʔβʔʹදࣔ ϢʔβʔຖʹదͳϑΟϧλϦϯάΛίʔυͰߦ͏
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO λʔήςΟϯάΛͲ͏දݱ͢Δ͔ʁ • "/%03/05ΛؚΉλʔήςΟϯάΛ ʰσʔλʱʢʣͱͯ͠දݱ͍ͨ͠ ʹ/PU-PHJD$PEF • ਓؒͱϓϩάϥϜ͕ޡղແ͘ಡΈॻ͖Ͱ͖Δදݱܗࣜʢ%4-
ઐ༻ݴޠʣ͕ཉ͍͠ • Կނσʔλ %4- ͔ʁ • %#1SPUPDPMʹ҆ఆͯ͠ӬଓԽ 4FSJBMJ[F ग़དྷΔํ๏͕ඞཁ • ਓ͕ؒ "/%03/05ͷҙͷΈ߹ΘͤΛ $.4 ͔Βઃఆ͍ͨ͠ • ઃఆϑΝΠϧʢύϥϝʔλϑΝΠϧʣ্Ͱ׆༻͍ͨ͠
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO "HFOEB • ಋೖ λʔήςΟϯά֓ཁͱɺղ͖͘՝ • :".-,PUMJOΛར༻ͨ͠ %4-
ͷ࣮ • 4FSJBMJ[F%FTFSJBMJ[F 1BSTFS ࣮ • &WBMVBUJPOr ࣜධՁ • ·ͱΊ
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO %4- 4FS%F 1BSTFS ࣮ • લఏɿ%4-
:".- ϕʔεͱͯ͠ɺ "/%03/05 ͷཧԋࢉࢠ͓Αͼ -FBG /PEF Ͱߏ͞ΕΔ • :".- ࠾༻ཧ༝ɿϋΠϥΠτͳͲΛطଘ &EJUPS .POBDP ʹཔΓ͍ͨ • ύʔε %FTFSJBMJ[F ӬଓԽ 4FSJBMJ[F Λ࣮͍ͨ͠ • ϕʔε ljackson-dataformat-yaml”
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO %4- ͷྫ
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO %4- 1BSTF ΛՄೳͱ͢Δ+BDLTPOͷ QPMZNPSQIJTN ରԠ • :".-.BQQFS
ͰɺҎԼͷ༻ʹॻ͍͓ͯ͘ͱ ࠓճͷ %4- Λ ύʔεͰ͖ΔԼ४උ͕ग़དྷΔ • :".- /BUJWF ͷ 5ZQF 'JFME ΛແޮԽ FUD
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO "/%03/05ٴͼ -FBG $POEJUJPO Λ ࣔ͢ TFBMFEJOUFSGBDF EBUBDMBTT
• ΫϥεΛ͜͏ఆٛ • 5BSHFUJOH ͱݴ͏֓೦ʢ*OUFSGBDFʣ͕͋ͬͯ "/%03/05 ֤छܕ͕ 4VC5ZQF
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO "/%03/05ٴͼ -FBG $POEJUJPO Λ ࣔ͢ TFBMFEJOUFSGBDF EBUBDMBTT
• ΫϥεΛ͜͏ఆٛ • 5BSHFUJOH ͱݴ͏֓೦ʢ*OUFSGBDFʣ͕͋ͬͯ "/%03/05 ֤छܕ͕ 4VC5ZQF
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO %4-1BSTF3FTVMU
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO "HFOEB • ಋೖ λʔήςΟϯά֓ཁͱɺղ͖͘՝ • :".-,PUMJOΛར༻ͨ͠ %4-
ͷ࣮ • 4FSJBMJ[F%FTFSJBMJ[F 1BSTFS ࣮ • &WBMVBUJPOr ࣜධՁ • • ·ͱΊ
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO %4-&WBMVBUJPO • Ϣʔβʔ Y λʔήςΟϯά ʹ #PPMFBOΛฦ͢
XIFOࣜͰذͯ͠ɺ ίϯύΠϧΤϥʔ͕ग़ͳ͘ͳΔ·ͰຒΊΔ
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO *NQMFNFOUBUJPO
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO 5FTUJOH&WBMVBUJPO • %4- ͷධՁ͕ग़དྷͨ
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO 'JMMUIF.JTTJOH1BSUT
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO "HFOEB • ಋೖ λʔήςΟϯά֓ཁͱɺղ͖͘՝ • :".-,PUMJOΛར༻ͨ͠ %4-
ͷ࣮ • • ύϑΥʔϚϯε • ֦ுੑ • ·ͱΊ
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO 1FSGPSNBODF • ࠓճ 4MJEF Ͱհͨ͠ %4- ͷධՁ
TFD PO.#1.4JOHMF$PSF • ࣮ࡍͷෳαʔόʔɾෳ $PSF ڥͰɺ΄ ΅θϩͱݟͳͤΔίετ • *0'SFFධՁ͍ test summary: Benchmark Mode Cnt Score Error Units MyBenchmark.complexTargeting thrpt 5 150221873.429 ± 21629093.823 ops/s MyBenchmark.simpleTargeting thrpt 5 253614332.192 ± 642978.132 ops/s
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO 4FBMFEDMBTT $PNQJMFSΛར༻ͨ͠ ҆શͳ %4- ֦ு • %4-ͷ
-FBG5ZQF͕૿͑ͨ߹ɺ ,PUMJO$PNQJMFSʹ (VJEF ͞Ε ͯίϯύΠϧ͕௨Δ·ͰίʔυΛ ॻ͍͍͚࣮ͯ࿙Ε͕ͳ͍ • JT.BUDI5BSHFUJOH Λϝϯόؔʹ ͠ͳ͍ཧ༝ʁ • σʔλʹରͯ͠ 5BSHFUJOH Ҏ֎ʹ ༷ʑͳॲཧΛ͢Δඞཁ͕͋Γɺݟ௨͠ Λ֬อ͔ͨͬͨ͠ɻ • ྫʣDPOWFSU&MBTUJDTFBSDI2VFSZ
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO ·ͱΊ • ຊ 5PQ4BMFTʢʹͳΔ͋Δʣ ΞϓϦͷ 4FSWFS
Ͱॻ͔Ε͍ͯΔ • ສλʔήςΟϯάTFDΛ࣮ݱ͢Δ 1SJWBUF %.1 ͷج൫ Ͱॻ͚Δɻ • KBDLTPOEBUBCJOEZBNM Λར༻ͯ͠ :".- ্ͷ %4- Λ ʹ .BQQJOH 1BSTF Ͱ͖Δ r 4FS%F • %4- &WBMVBUJPO ͷ 4FBMFE $MBTT ͳΒ҆৺ɾ؆୯ r &WBM
,PUMJO'FTU -*/&%JHJUBM'SPOUJFS$PSQPSBUJPO End Of doc.