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
LIMIAでのBigQuery活用事例
Search
gree_tech
PRO
September 03, 2019
Technology
0
290
LIMIAでのBigQuery活用事例
『Google/DeNA/グリー 3社合同GCP勉強会』で発表された資料です。
gree_tech
PRO
September 03, 2019
Tweet
Share
More Decks by gree_tech
See All by gree_tech
コミュニケーションに鍵を見いだす、エンジニア1年目の経験談
gree_tech
PRO
0
130
REALITY株式会社における開発生産性向上の取り組み: 失敗と成功から学んだこと
gree_tech
PRO
2
1.8k
『ヘブンバーンズレッド』におけるフィールドギミックの裏側
gree_tech
PRO
2
600
セキュリティインシデント対応の体制・運用の試行錯誤 / greetechcon2024-session-a1
gree_tech
PRO
1
610
『アナザーエデン 時空を超える猫』国内海外同時運営実現への道のり ~別々で開発されたアプリを安定して同時リリースするまでの取り組み~
gree_tech
PRO
1
570
『アサルトリリィ Last Bullet』におけるクラウドストリーミング技術を用いたブラウザゲーム化の紹介
gree_tech
PRO
1
650
UnityによるPCアプリの新しい選択肢。「PC版 Google Play Games」への対応について
gree_tech
PRO
1
1k
実機ビルドのエラーによる検証ブロッカーを0に!『ヘブンバーンズレッド』のスモークテスト自動化の取り組み
gree_tech
PRO
1
680
"ゲームQA業界の技術向上を目指す! 会社を超えた研究会の取り組み"
gree_tech
PRO
1
800
Other Decks in Technology
See All in Technology
経理出身PdMがAIプロダクト開発を_ハンズオンで学んだ話.pdf
shunsukenarita
1
110
Talk to Someone At Delta Airlines™️ USA Contact Numbers
travelcarecenter
0
170
大規模組織にAIエージェントを迅速に導入するためのセキュリティの勘所 / AI agents for large-scale organizations
i35_267
6
220
QuickBooks®️ Customer®️ USA Contact Numbers: Complete 2025 Support Guide
qbsupportinfo
0
110
claude codeでPrompt Engineering
iori0311
0
440
(HackFes)米国国防総省のDevSecOpsライフサイクルをAWSのセキュリティサービスとOSSで実現
syoshie
5
660
怖くない!GritQLでBiomeプラグインを作ろうよ
pal4de
1
120
OpenTelemetry の Log を使いこなそう
biwashi
5
990
Wasmで社内ツールを作って配布しよう
askua
0
120
MCPに潜むセキュリティリスクを考えてみる
milix_m
1
720
20250718_ITSurf_“Bet AI”を支える文化とコストマネジメント
helosshi
1
210
TROCCO今昔
gtnao
0
210
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Thoughts on Productivity
jonyablonski
69
4.7k
Speed Design
sergeychernyshev
32
1k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2.2k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
The Pragmatic Product Professional
lauravandoore
35
6.8k
Gamification - CAS2011
davidbonilla
81
5.4k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
[RailsConf 2023] Rails as a piece of cake
palkan
55
5.7k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.8k
The Invisible Side of Design
smashingmag
301
51k
Transcript
Copyright © LIMIA, Inc. All Rights Reserved. LIMIAでの BigQuery活用事例
Copyright © LIMIA, Inc. All Rights Reserved. • グリーグループのリミア株式会社で、LIMIA という住まい領域のメディア
を作っています。ゲーム会社ですが、最近はメディアに力を入れていま す。 • 機械学習のエンジニアですが、iOS, Android,JSなどもやっている何でも 屋です。5歳の娘のパパ。twitter: @mahiguch1 • 部活動でグリー技術書典部というのを立ち上げました。 • https://limia.jp/ • https://arine.jp/ • https://aumo.jp/ • https://www.mine-3m.com/mine/ Masahiro Higuchi/樋口雅拓 技術書典7@い05C 2
Copyright © LIMIA, Inc. All Rights Reserved. LIMIAとは? 3 •
メディアサービス • Android, iOS, Web • 記事一覧を表示し、タップすると 記事詳細を閲覧できる。 • 記事一覧はパーソナライズ。 • 記事詳細読了後に関連記事を出 している。 • AWS:90%、GCP:10%。 • PHP/EC2 → Go/ECS移行中 • コンテナ間はgRPC+NLB • 偏りが激しいのでEnvoy使いたい
Copyright © LIMIA, Inc. All Rights Reserved. LIMIAでは、分析や集計のためにBigQueryを多用しています。利用方法は、 次のような形です。 1.
全てのデータをBigQueryに流す 2. 特徴を分析して運営で最適化 3. 機械に置き換えて最適化を加速 本当は(3)に注力したいが、(1)(2)に工数を取られてしまう。良さげな方法が あれば指摘していただき、加速させたい! ぶっちゃけ、ログ周りは面倒なので、知識を共有して機能開発に集中したいっ す。o(> <)o 背景と目的 4
Copyright © LIMIA, Inc. All Rights Reserved. 1. 全てのデータをBigQueryに流す
Copyright © LIMIA, Inc. All Rights Reserved. Firebase管理画面でボタンを押すだけでBigQueryにデータが連携される。 連携されるデータは、次のもの。 •
Analytics: 送信した全てのイベント • Crashlytics: 発生した例外の情報 • Predictions: 予測結果 • FCM: プッシュ通知送受信ログ • Performance: 送信したトレース情報 Analytics以外のBigQueryデータは使いこなせていない。良い使い道があれ ば教えて欲しい。 イベントログ Firebase 6
Copyright © LIMIA, Inc. All Rights Reserved. Embulkを使ってBigQueryへ転送している。Embulkコンテナを作り、ECS Fargateで回している。以下に要点だけ示す。 •
ALB: daily table(xxlog_20190828)に前日分を転送 • CloudFront: ファイル名で前日分を特定できないので、手元に最終更新 日時指定でs3 syncしてから転送。 • RDS: 負荷を考慮して1テーブルずつ転送。daily tableを切らずに上書 きしていく。履歴は残らないが、MySQLと同じqueryが使える。 • Dynamo: 構造化データはjson文字列として格納。 GCP service accountは、EKSで暗号化したファイルをcontainerに含めて いる。embulkはfargateのExecRoleを見てくれないので、AWS IAM user を環境変数で渡している。 アクセスログ ALBとCloudFrontのアクセスログ/RDSとDynamoのデータ 7
Copyright © LIMIA, Inc. All Rights Reserved. • Search Console:
golangバッチでAPIから取得し、BigQueryへ転送。 ECS fargate taskで毎晩実行。 • Google Analytics: 集計パターンをいくつか作り、それぞれをBigQuery の対象テーブルへ転送。実行環境はSCと同じ。 • Adjust: Cloud FunctionsにEndpointを作り、来たデータを全て BigQueryに格納。AdjustのGlobal Callbackに設定。 • Kintone: 一部業務の管理ツールとしてKintoneが使われていたため、 Kintone APIをGASで叩いてBigQueryへ。 その他 SearchConsole/GoogleAnalytics/Adjust 8
Copyright © LIMIA, Inc. All Rights Reserved. 2. 特徴を分析して運営で最適化
Copyright © LIMIA, Inc. All Rights Reserved. • エンジニア: エラーログ、動作速度、機能の利用状況などでシステムの健
全性を分析。パーソナライズを行うため、ユーザやアイテムの特徴を分析。 • ビジネス職: 施策立案のための状況把握。施策の想定効果見積もりと効 果測定。KPI変化の要因分析。 • 分析部隊: 基本は依頼を受けて。気づきがあれば、それとなく教えてくれ る。 誰が何を分析しているのか 仮説を立てて定量的に検証する 10
Copyright © LIMIA, Inc. All Rights Reserved. • エンジニア: 原則データの確認はRDS/Dynamo等は使わず、
BigQueryにある早朝に取ったスナップショットに対して行う。BigQuery 画面からが多く、MLの人はJupiter+pandasから。 • ビジネス職: SQLが書ける人は、BigQuery画面を使う。そうでない人は、 分析部隊に依頼する。 • 分析部隊: データサイエンティストを中心にインターン数名。BigQuery画 面でSQL実装し、re:dashに貼り付ける。それをSpreadSheetにimport している。 Google AnalyticsのWeb+Appの分析機能を使えば、SQLを書けない人で も自分で必要な分析を行えるような気がしている。 どうやって分析しているのか 分析体制と分析手法 11
Copyright © LIMIA, Inc. All Rights Reserved. 分析結果が明らかなら良いが、大抵はやってみないと分からない。そこで、管 理ツールを作り、人手でパターンを作ってオンライン検証(A/Bテスト)を行う。 例えば、分析結果から導いた次のような仮説を検証する。
• 仮説: タイトルを20文字にするとCTRが高い —> 15, 20, 25文字で A/Bテスト。 • 仮説: ユーザの興味に近い記事をプッシュ通知で送信すると開封率が高く なる —> 特徴的なユーザリストと記事を手動で作り、既存手法とA/Bテス ト。 分析結果をどう使うか 運営による改善手法 12
Copyright © LIMIA, Inc. All Rights Reserved. 3. 機械に置き換えて最適化を加速
Copyright © LIMIA, Inc. All Rights Reserved. オフライン検証のベースラインとして、人気のあるコンテンツを全員に配信した ときを想定する。 Cell/Itemを表示したらAnalyticsにimpression
eventを送信し、Clickした らclick eventを送信してBigQueryに格納する。イベント数で割り算したCTR を人気記事の定義とした。 例えば2日前のCTRが高いものを掲載したと仮定して、1日前にクリックされた かを確認する。これをBigQueryのqueryとして実装する。 Popular Model オフライン検証のベースライン 14
Copyright © LIMIA, Inc. All Rights Reserved. 類似ユーザに人気の記事を配信することで、CTRが上がるという仮説を検証し た。 ユーザをいくつかのクラスタに分類する。
分類結果をBigQueryに送信し、クラスタ毎のCTRを集計する。 定期的に集計してストレージに格納しておき、ユーザは所属するクラスタ内で CTRが高い記事を一覧表示する。 これをPopular Modelとオフラインで比較して、既存手法とオンラインで比較し た。 Segmentation Popular Model 素朴な機械化 15
Copyright © LIMIA, Inc. All Rights Reserved. LIMIAにはtwitterのようにユーザをフォローする機能がある。フォロー数が多 いほど来訪頻度が高いことが分かっている。興味のあるユーザを推薦すること でフォロー数が増えるという仮説を検証した。
BigQueryにあるフォロー情報を使ってUser x Userの行列を作る。 コサイン距離を計算するUDFを作り、類似ユーザを抽出した。自分がフォロー している人の類似ユーザや類似ユーザがフォローしていて自分がしていない人 を推薦した。 協調フィルタリング UDFを使った手法 16
Copyright © LIMIA, Inc. All Rights Reserved. まとめ
Copyright © LIMIA, Inc. All Rights Reserved. • BigQueryにデータを集約することで、SQLさえ書ければ分析可能となっ た。
• 分析する人が増えたので、ユーザやアイテムへの理解が進み、機械化が 可能となった。 • 詳細については「グリー技術書典部誌2019秋号」に掲載し、技術書典7@ い07Cで頒布予定。 グリー技術書典部のブースに遊びに来てください! まとめ 18