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
450
フロントエンドで学んだことをデータ分析で使ってみた話
#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
430
Other Decks in Programming
See All in Programming
CSC305 Lecture 04
javiergs
PRO
0
270
Server Side Kotlin Meetup vol.16: 内部動作を理解して ハイパフォーマンスなサーバサイド Kotlin アプリケーションを書こう
ternbusty
3
220
オープンソースソフトウェアへの解像度🔬
utam0k
16
3.1k
CSC305 Lecture 08
javiergs
PRO
0
250
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
490
kiroとCodexで最高のSpec駆動開発を!!数時間で web3ネイティブなミニゲームを作ってみたよ!
mashharuki
0
750
Introduce Hono CLI
yusukebe
6
2.9k
All About Angular's New Signal Forms
manfredsteyer
PRO
0
190
タスクの特性や不確実性に応じた最適な作業スタイルの選択(ペアプロ・モブプロ・ソロプロ)と実践 / Optimal Work Style Selection: Pair, Mob, or Solo Programming.
honyanya
3
180
CSC305 Lecture 06
javiergs
PRO
0
250
Domain-centric? Why Hexagonal, Onion, and Clean Architecture Are Answers to the Wrong Question
olivergierke
3
930
Claude Agent SDK を使ってみよう
hyshu
0
1.3k
Featured
See All Featured
BBQ
matthewcrist
89
9.8k
Balancing Empowerment & Direction
lara
5
690
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
4 Signs Your Business is Dying
shpigford
185
22k
Building Better People: How to give real-time feedback that sticks.
wjessup
369
20k
Automating Front-end Workflow
addyosmani
1371
200k
Designing for Performance
lara
610
69k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.6k
How STYLIGHT went responsive
nonsquared
100
5.8k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Reflections from 52 weeks, 52 projects
jeffersonlam
353
21k
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. 振り返り
データ系の実装や運用は突貫工事で放置されがち。 だからこそメンテナンス性が重要。
クエリを中心として ・拡張の容易性 ・型情報の充実 ・高い再利用性 ・テストコード をキーワードにメンテナンス性向上を図った💪
これから本格利用されるので効果を追います ご清聴ありがとうございました🙇