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
260
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
280
会社紹介資料
ldf_tech
1
3.1k
SwiftSyntaxでUIKitとSwiftUIの使用率を完璧に計測できちゃう件について
ldf_tech
0
300
Kotlin 2.0が与えるAndroid開発の進化
ldf_tech
0
260
Road to Kotlin 〜10年続くPerl運用からの脱却〜
ldf_tech
0
67
Kotlin Collection関数をマスター
ldf_tech
0
460
マンガアプリのメモリ改善と解析方法
ldf_tech
0
59
Other Decks in Technology
See All in Technology
Android Studio の 新しいAI機能を試してみよう / Try out the new AI features in Android Studio
yanzm
0
240
なごミュ@SPAJAM2025 第二回予選
1901drama
0
120
あとはAIに任せて人間は自由に生きる
kentaro
3
1.1k
[OCI Skill Mapping] AWSユーザーのためのOCI(2025年8月20日開催)
oracle4engineer
PRO
2
110
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
8.5k
モノレポにおけるエラー管理 ~Runbook自動生成とチームメンションの最適化
biwashi
0
520
AIドリブンのソフトウェア開発 - うまいやり方とまずいやり方
okdt
PRO
9
510
歴代のWeb Speed Hackathonの出題から考えるデグレしないパフォーマンス改善
shuta13
6
580
マイクロモビリティシェアサービスを支える プラットフォームアーキテクチャ
grimoh
1
160
PFEM Online Feature Flag @ newmo
shinyaishitobi
2
310
自治体職員がガバクラの AWS 閉域ネットワークを理解するのにやって良かった個人検証環境
takeda_h
2
370
生成AI活用のROI、どう測る? DMM.com 開発責任者から学ぶ「AI効果検証のノウハウ」 / ROI of AI
i35_267
4
150
Featured
See All Featured
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
BBQ
matthewcrist
89
9.8k
Why Our Code Smells
bkeepers
PRO
338
57k
It's Worth the Effort
3n
187
28k
RailsConf 2023
tenderlove
30
1.2k
Optimizing for Happiness
mojombo
379
70k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.6k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.8k
The Cost Of JavaScript in 2023
addyosmani
53
8.8k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Done Done
chrislema
185
16k
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.