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
RxJS, mixpanelで実装するSPAの行動分析基盤
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Yosuke Kurami
November 02, 2017
Programming
600
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
RxJS, mixpanelで実装するSPAの行動分析基盤
Yosuke Kurami
November 02, 2017
More Decks by Yosuke Kurami
See All by Yosuke Kurami
TypeScript LSP の今までとこれから
quramy
1
2.1k
フロントエンドテストの育て方
quramy
12
3.9k
App Router 悲喜交々
quramy
8
750
上手に付き合うコンポーネントテスト
quramy
6
2.4k
Patched fetch did not work
quramy
6
800
GraphQL あるいは React における自律的なデータ取得について
quramy
18
5.9k
Next.js App Router
quramy
15
3.9k
Fragment Composition of GraphQL
quramy
17
4.9k
reg-viz VRT tools
quramy
4
1.7k
Other Decks in Programming
See All in Programming
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
500
Cloudflare is Agents
chimame
0
170
170k Jobs a Day on GKE: Scaling Mercari's CI Platform - and What's Next for AI-Native Development
junyaokabe
0
110
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
1
700
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
4
460
「人を評価する AI」の設計と実装
ryoyanara
0
210
Claude CodeとAgentCore Gatewayを繋ぐ際の認証認可 / Authentication and authorization when connecting Claude Code with AgentCore Gateway
har1101
2
300
Claude Code全社展開のためにやったことn選~プラグイン302個・コミッター271人を支えるために~
kenchan
5
1.6k
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
270
仕様駆動開発の消費期限
watany
20
8.6k
AIが無かった頃の素敵な出会いの話
codmoninc
1
460
ここ半年くらいでAIに作らせたR用ツール
eitsupi
0
390
Featured
See All Featured
My Coaching Mixtape
mlcsv
0
240
RailsConf 2023
tenderlove
30
1.5k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
240
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.7k
How STYLIGHT went responsive
nonsquared
100
6.2k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.3k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
490
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
490
Everyday Curiosity
cassininazir
0
280
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
45k
Transcript
3Y+4 NJYQBOFMͰ࣮͢Δ41"ͷߦಈੳج൫ :PTVLF,VSBNJ !2VSBNZ 1
"CPVUNF
w 2VSBNZ UXJUUFS(JU)VC2JJUB ͱ͍͍·͢ w OHKBQBOͷελοϑͯ͠·͢ w IUUQTMBDLJOWJUFOHKBQBOPSH w "OHVMBS
5ZQF4DSJQU 7JNΛภѪ͍ͯ͠·͢ ࣗݾհ
ձࣾαʔϏεհ
"*ΞφϦετ w IUUQTXBDVMBJDPN
"*ΞφϦετ w (PPHMF"OBMZUJDTͷσʔλΛݩʹɺ8FCαΠτͷվળҊΛ ఏҊ w ྫɿʮಛఆͷϖʔδΛݟΔͱ$73͕ஶ͘͠ѱ͘ͳΔʯ w 8FCϚʔέλʔ ཧళ͞Μ͚ʹͬͯΒ͏ͨΊͷ##
4BB4 w "OHVMBSWʹΑΔ41"
ࠓͷςʔϚ
41"͕ͲͷΑ͏ʹΘΕͯΔ͔Γ͍ͨ
σʔλΛݩʹվળΛݟ͚ͭΔ
NJYQBOFM w Ϣʔβʔ୯ҐͷΠϕϯτΛࡉ͔͘औಘɾੳͰ͖Δ
NJYQBOFMͷಛ w NJYQBOFMUSBDL ʜ ͰҙͷΠϕϯτΛૹ৴Ͱ͖Δ w σʔλΛ"1*ͰFYQPSUͰ͖Δ w #JH2VFSZʹJNQPSU w
ଞͷσʔλιʔε %# ͱΘͤͯɺ3FEBTIͰΫΤϦΛ ࡞Γɺ༷ʑͳ࣠Ͱੳ͕Ͱ͖Δ
ͲͷΑ͏ʹૹ৴͢ΕΑ͍͔ʁ
ϢʔβʔΠϕϯτͷநԽ w 41"Ͱ༷ʑͳʮΠϕϯτʯ͕ൃੜ͢Δ w %0.Πϕϯτ ϑΥʔϜͷೖྗ ϘλϯΫϦοΫ w ϧʔλʔʹΑΔը໘ભҠ
w ϞʔμϧΞϥʔτͷ։ด w Ϗδωεཁ݅తͳ ίϯόʔδϣϯΠϕϯτ w FUDʜ
ΠϕϯτͷநԽ w ΠϕϯτͷൃੜՕॴຖʹNJYQBOFMͷૹ৴Λॻ͘ͷɺ ॲཧͷݟཱ͕ͯѱ͘ͳΔ w ͦ͜ͰɺΠϕϯτΛ3YKTͷετϦʔϜͱͯ͠நԽ w ͜ͷετϦʔϜΛ4VCTDSJCFͯ͠.JYQBOFMૹ৴ w 3YKT࣌ؒͰൃੜ͢ΔΠϕϯτΛநతʹѻ͏͜ͱʹಛԽ͠
ͨϥΠϒϥϦ
ࢀߟʹͨ͠Ϟσϧ ҰൠతͳQVCTVCϞσϧ w SYKT͕ΈΛఏڙͯ͘͠ΕΔ -PH+ͳͲͰݟΒΕΔΧςΰϦઃܭ w lVJz w
lVJCVUUPOz w lVJCVUUPODMJDLz
this.ngZone.runOutsideAngular(() => { if (e && e["__pushed__"]) return; if (e)
e["__pushed__"] = true; const element = this.elemRef.nativeElement as HTMLElement; const value = element.textContent; const typeAttr = element.getAttribute("type"); const kindAttr = element.getAttribute("kind"); const iconAttr = element.getAttribute("iconKind"); const activity = createActivity(element, { categorySuffix: "button", action: "click", value, }); if (typeAttr) activity.label += `[type='${typeAttr}']`; if (kindAttr) activity.label += `[kind='${kindAttr}']`; if (iconAttr) activity.label += `[iconKind='${iconAttr}']`; this.accumulator.push(activity); }); 1VCMJTI&WFOUT
Observable.merge( activities .filterCategorizedActivity("ui.router") .filter(({ action }) => action === "navigationEnd")
.debounceTime(100), activities .filterCategorizedActivity("ui.root", { exclude: true }) .filterCategorizedActivity("ui.router", { exclude: true }) ) .mapFlattenData() .subscribe(({ action, category, ...rest }) => mixpanel.track(`${category}.${action}`, rest)) ; 4VCTDSJCF&WFOUT
ΠϕϯτநԽͷϝϦοτ w ΠϕϯτͷநԽʹΑΓɺૹ৴ίʔυΛՃ͢Δ͚ͩͰɺଞ αʔϏεͷ࿈ܞ͕Մೳɻ w FYɿྫ֎ൃੜ࣌ʹɺൃੜͨ͠Πϕϯτͷۙ݅ΛΤϥʔ τϥοΩϯάαʔϏε4FOUSZૹ৴ ܽམ͢Δ͜ͱʜ
4VNNBSZ
·ͱΊ w NJYQBOFM͍͍ͧ w #JH2VFSZ͍͍ͧ w 3Y+4͍͍ͧ w "OHVMBS͍͍ͧ
5IBOLZPV