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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Daichi Igarashi
January 19, 2023
Programming
470
0
Share
フロントエンドで学んだことをデータ分析で使ってみた話
#TypeScript #AtomicDesign #GoogleAppsScript #BigQuery #SQL #Jest #DataAnalysis
Daichi Igarashi
January 19, 2023
More Decks by Daichi Igarashi
See All by Daichi Igarashi
Amebaチョイス立ち上げの裏側 ~依存システムとの闘い~
daichi_igarashi
0
440
Other Decks in Programming
See All in Programming
Offline should be the norm: building local-first apps with CRDTs & Kotlin Multiplatform
renaudmathieu
0
190
RSAが破られる前に知っておきたい 耐量子計算機暗号(PQC)入門 / Intro to PQC: Preparing for the Post-RSA Era
mackey0225
3
130
UIの境界線をデザインする | React Tokyo #15 メイントーク
sasagar
1
270
実践CRDT
tamadeveloper
0
450
PHPのバージョンアップ時にも役立ったAST(2026年版)
matsuo_atsushi
0
300
PHP で mp3 プレイヤーを実装しよう
m3m0r7
PRO
0
250
へんな働き方
yusukebe
6
2.9k
事業会社でのセキュリティ長期インターンについて
masachikaura
0
250
Symfonyの特性(設計思想)を手軽に活かす特性(trait)
ickx
0
130
Nuxt Server Components
wattanx
0
260
Make GenAI Production-Ready with Kubernetes Patterns
bibryam
0
110
夢の無限スパゲッティ製造機 -実装篇- #phpstudy
o0h
PRO
0
200
Featured
See All Featured
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
520
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
210
How to build a perfect <img>
jonoalderson
1
5.4k
Six Lessons from altMBA
skipperchong
29
4.2k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
180
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
So, you think you're a good person
axbom
PRO
2
2k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
240
Ruling the World: When Life Gets Gamed
codingconduct
0
190
What's in a price? How to price your products and services
michaelherold
247
13k
Into the Great Unknown - MozCon
thekraken
40
2.3k
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. 振り返り
データ系の実装や運用は突貫工事で放置されがち。 だからこそメンテナンス性が重要。
クエリを中心として ・拡張の容易性 ・型情報の充実 ・高い再利用性 ・テストコード をキーワードにメンテナンス性向上を図った💪
これから本格利用されるので効果を追います ご清聴ありがとうございました🙇