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
フロントエンドで学んだことをデータ分析で使ってみた話
Search
Daichi Igarashi
January 19, 2023
Programming
0
440
フロントエンドで学んだことをデータ分析で使ってみた話
#TypeScript #AtomicDesign #GoogleAppsScript #BigQuery #SQL #Jest #DataAnalysis
Daichi Igarashi
January 19, 2023
Tweet
Share
More Decks by Daichi Igarashi
See All by Daichi Igarashi
Amebaチョイス立ち上げの裏側 ~依存システムとの闘い~
daichi_igarashi
0
400
Other Decks in Programming
See All in Programming
私のRubyKaigi 2025 Kaigi Effect / My RubyKaigi 2025 Kaigi Effect
chobishiba
1
200
Interface vs Types ~型推論が過多推論~
hirokiomote
1
190
Boast Code Party / RubyKaigi 2025 After Event
lemonade_37
0
300
技術的負債と戦略的に戦わざるを得ない場合のオブザーバビリティ活用術 / Leveraging Observability When Strategically Dealing with Technical Debt
yoshiyoshifujii
0
150
AWS診断200件の分析から見る頻出指摘と対策
shoodagiri
0
100
TypeScript だけを書いて Tauri でデスクトップアプリを作ろう / Tauri with only TypeScript
tris5572
2
470
『Python → TypeScript』オンボーディング奮闘記
takumi_tatsuno
1
110
Rethinking Data Access: The New httpResource in Angular
manfredsteyer
PRO
0
190
Cloudflare Workersで進めるリモートMCP活用
syumai
13
1.9k
抽象データ型について学んだ
ryounasso
0
190
イベントソーシングとAIの親和性ー物語とLLMに理解できるデータ
tomohisa
1
150
推論された型の移植性エラーTS2742に挑む
teamlab
PRO
0
120
Featured
See All Featured
The Cult of Friendly URLs
andyhume
78
6.4k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Faster Mobile Websites
deanohume
307
31k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.4k
Visualization
eitanlees
146
16k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.2k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
820
How to Think Like a Performance Engineer
csswizardry
23
1.6k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Testing 201, or: Great Expectations
jmmastey
42
7.5k
Transcript
フロントエンドで学んだことを データ分析で使ってみた話
はじめに
五十嵐 大地 2020年 Webフロントで新卒入社. Ameba Pickチームで約2年勤務. 機能開発・DX改善・データ整備に携わる. 2023年よりSEO周りの分析と開発に従事. https://github.com/Dai7Igarashi
五十嵐 大地 2020年 Webフロントで新卒入社. Ameba Pickチームで約2年勤務. 機能開発・DX改善・データ整備に携わる. 2023年よりSEO周りの分析と開発に従事. https://github.com/Dai7Igarashi
五十嵐 大地 2020年 Webフロントで新卒入社. Ameba Pickチームで約2年勤務. 機能開発・DX改善・データ整備に携わる. 2023年よりSEO周りの分析と開発に従事. https://github.com/Dai7Igarashi 本日は、メンテナンス性を意識した
データ整備についてお話しします
あらすじ
1.背景 2. 設計 3. 実装 4. 振り返り
1. 背景
None
投稿数 商品名 imp数 CV数 ブロガー報酬額 投稿UU アフィリエイトサービスで追いたい指標は様々
投稿数 商品名 imp数 CV数 ブロガー報酬額 投稿UU 様々なモニタリングをしたい! アフィリエイトサービスで追いたい指標は様々
既存でモニタリング環境は あるにはあった💹
None
クエリ クエリ クエリ クエリ クエリ
クエリ クエリ クエリ クエリ クエリ 需要に応じて分析ツールは様々。 そしてクエリの保管場所も様々😇
そして... 開発 仕様変更 指標変化 分析
メンテナンスが追いつかず 破綻したクエリが続出 ということで
クエリを一元管理することに💪
2. 設計
設計方針 ・GitHubで情報を完結できる状態 ・継続的にメンテナンスできる状態 ・仕様や指標の変更で破綻しにくい状態
・GitHubで情報を完結できる状態 Why ・1箇所で管理することで管理コストを減らしたい How ・READMEの充実 ・拡張可能なアーキテクチャ
・継続的にメンテナンスできる状態 Why ・属人化を排除したい How ・学習コストの削減 ┣ 型情報の充実 ┗ 知名度の高いアーキテクチャ
・仕様や指標の変更で破綻しにくい状態 Why ・修正不要、または即修正できる状態にしたい How ・SQLの一元管理 ・再利用性 ・テストコードの追加
要件 ・Google Sheetsへスケジュール書込み ・BigQueryを直接叩けるようにSQL単体も存在
・ベースはNode.js → GASを使うから ・yarn workspaceによるモノレポ → 拡張可能なアーキテクチャ ・TypeScript導入 → 型情報の充実
・こだわりのフォルダ構成 → SQLの一元管理や再利用性 ・Jest導入 → テストコードの追加 設計 確定版
3. 実装
ディレクトリTOP
ディレクトリTOP SQLの一元管理
None
【Point】 ・atomic designの要領で責務分離し再利用性を高める ・SQLとtsファイルを同階層に置き修正漏れを防ぐ ・クエリは直接 or プログラムいずれでの利用も可能
【Point】 ・分析の最終出力クエリはtamplates層で管理する
ディレクトリTOP クエリで呼び出す定数の共通利用
【Point】 ・基本的にGASで呼び出すクエリの定数なのでtsファイル ・定数の変更が抽出に影響するものは、ここでテストコードを追加
ディレクトリTOP 拡張可能なアーキテクチャ
【Point】 ・同一のクエリを使い回して様々なプログラムを組める
GASフォルダ構成 【Point】 ・ts-loaderとgas-webpack-pluginでGASをtsで書く ・claspを用いてCLIからデプロイ
GASフォルダ構成 【Point】 ・src以下は全てtsファイルで型が充実 ・utilsとかはテストコードが充実
おまけ: package.jsonはこんな感じ
4. 振り返り
データ系の実装や運用は突貫工事で放置されがち。 だからこそメンテナンス性が重要。
クエリを中心として ・拡張の容易性 ・型情報の充実 ・高い再利用性 ・テストコード をキーワードにメンテナンス性向上を図った💪
これから本格利用されるので効果を追います ご清聴ありがとうございました🙇