フロントエンドで学んだことをデータ分析で使ってみた話
by
Daichi Igarashi
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
フロントエンドで学んだことを データ分析で使ってみた話
Slide 2
Slide 2 text
はじめに
Slide 3
Slide 3 text
五十嵐 大地 2020年 Webフロントで新卒入社. Ameba Pickチームで約2年勤務. 機能開発・DX改善・データ整備に携わる. 2023年よりSEO周りの分析と開発に従事. https://github.com/Dai7Igarashi
Slide 4
Slide 4 text
五十嵐 大地 2020年 Webフロントで新卒入社. Ameba Pickチームで約2年勤務. 機能開発・DX改善・データ整備に携わる. 2023年よりSEO周りの分析と開発に従事. https://github.com/Dai7Igarashi
Slide 5
Slide 5 text
五十嵐 大地 2020年 Webフロントで新卒入社. Ameba Pickチームで約2年勤務. 機能開発・DX改善・データ整備に携わる. 2023年よりSEO周りの分析と開発に従事. https://github.com/Dai7Igarashi 本日は、メンテナンス性を意識した データ整備についてお話しします
Slide 6
Slide 6 text
あらすじ
Slide 7
Slide 7 text
1.背景 2. 設計 3. 実装 4. 振り返り
Slide 8
Slide 8 text
1. 背景
Slide 9
Slide 9 text
No content
Slide 10
Slide 10 text
投稿数 商品名 imp数 CV数 ブロガー報酬額 投稿UU アフィリエイトサービスで追いたい指標は様々
Slide 11
Slide 11 text
投稿数 商品名 imp数 CV数 ブロガー報酬額 投稿UU 様々なモニタリングをしたい! アフィリエイトサービスで追いたい指標は様々
Slide 12
Slide 12 text
既存でモニタリング環境は あるにはあった💹
Slide 13
Slide 13 text
No content
Slide 14
Slide 14 text
クエリ クエリ クエリ クエリ クエリ
Slide 15
Slide 15 text
クエリ クエリ クエリ クエリ クエリ 需要に応じて分析ツールは様々。 そしてクエリの保管場所も様々😇
Slide 16
Slide 16 text
そして... 開発 仕様変更 指標変化 分析
Slide 17
Slide 17 text
メンテナンスが追いつかず 破綻したクエリが続出 ということで
Slide 18
Slide 18 text
クエリを一元管理することに💪
Slide 19
Slide 19 text
2. 設計
Slide 20
Slide 20 text
設計方針 ・GitHubで情報を完結できる状態 ・継続的にメンテナンスできる状態 ・仕様や指標の変更で破綻しにくい状態
Slide 21
Slide 21 text
・GitHubで情報を完結できる状態 Why ・1箇所で管理することで管理コストを減らしたい How ・READMEの充実 ・拡張可能なアーキテクチャ
Slide 22
Slide 22 text
・継続的にメンテナンスできる状態 Why ・属人化を排除したい How ・学習コストの削減 ┣ 型情報の充実 ┗ 知名度の高いアーキテクチャ
Slide 23
Slide 23 text
・仕様や指標の変更で破綻しにくい状態 Why ・修正不要、または即修正できる状態にしたい How ・SQLの一元管理 ・再利用性 ・テストコードの追加
Slide 24
Slide 24 text
要件 ・Google Sheetsへスケジュール書込み ・BigQueryを直接叩けるようにSQL単体も存在
Slide 25
Slide 25 text
・ベースはNode.js → GASを使うから ・yarn workspaceによるモノレポ → 拡張可能なアーキテクチャ ・TypeScript導入 → 型情報の充実 ・こだわりのフォルダ構成 → SQLの一元管理や再利用性 ・Jest導入 → テストコードの追加 設計 確定版
Slide 26
Slide 26 text
3. 実装
Slide 27
Slide 27 text
ディレクトリTOP
Slide 28
Slide 28 text
ディレクトリTOP SQLの一元管理
Slide 29
Slide 29 text
No content
Slide 30
Slide 30 text
【Point】 ・atomic designの要領で責務分離し再利用性を高める ・SQLとtsファイルを同階層に置き修正漏れを防ぐ ・クエリは直接 or プログラムいずれでの利用も可能
Slide 31
Slide 31 text
【Point】 ・分析の最終出力クエリはtamplates層で管理する
Slide 32
Slide 32 text
ディレクトリTOP クエリで呼び出す定数の共通利用
Slide 33
Slide 33 text
【Point】 ・基本的にGASで呼び出すクエリの定数なのでtsファイル ・定数の変更が抽出に影響するものは、ここでテストコードを追加
Slide 34
Slide 34 text
ディレクトリTOP 拡張可能なアーキテクチャ
Slide 35
Slide 35 text
【Point】 ・同一のクエリを使い回して様々なプログラムを組める
Slide 36
Slide 36 text
GASフォルダ構成 【Point】 ・ts-loaderとgas-webpack-pluginでGASをtsで書く ・claspを用いてCLIからデプロイ
Slide 37
Slide 37 text
GASフォルダ構成 【Point】 ・src以下は全てtsファイルで型が充実 ・utilsとかはテストコードが充実
Slide 38
Slide 38 text
おまけ: package.jsonはこんな感じ
Slide 39
Slide 39 text
4. 振り返り
Slide 40
Slide 40 text
データ系の実装や運用は突貫工事で放置されがち。 だからこそメンテナンス性が重要。
Slide 41
Slide 41 text
クエリを中心として ・拡張の容易性 ・型情報の充実 ・高い再利用性 ・テストコード をキーワードにメンテナンス性向上を図った💪
Slide 42
Slide 42 text
これから本格利用されるので効果を追います ご清聴ありがとうございました🙇