LIMIAでのBigQuery活用事例

gree_tech
gree_techgree_tech
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
1 of 18

Recommended

メディアアプリLIMIAにおけるプッシュ通知配信システム by
メディアアプリLIMIAにおけるプッシュ通知配信システムメディアアプリLIMIAにおけるプッシュ通知配信システム
メディアアプリLIMIAにおけるプッシュ通知配信システムgree_tech
765 views26 slides
Firestoreを使ってメディアアプリを作ってみた by
Firestoreを使ってメディアアプリを作ってみたFirestoreを使ってメディアアプリを作ってみた
Firestoreを使ってメディアアプリを作ってみたgree_tech
1.6K views15 slides
RecommendWidgetを作った話 by
RecommendWidgetを作った話RecommendWidgetを作った話
RecommendWidgetを作った話gree_tech
983 views14 slides
DCL15秒の見れないサイトを3秒まで改善した話。改善継続中 by
DCL15秒の見れないサイトを3秒まで改善した話。改善継続中DCL15秒の見れないサイトを3秒まで改善した話。改善継続中
DCL15秒の見れないサイトを3秒まで改善した話。改善継続中gree_tech
766 views18 slides
機械学習輪講会資料 by
機械学習輪講会資料機械学習輪講会資料
機械学習輪講会資料gree_tech
2.3K views24 slides
LIMIAアプリにおける行動履歴を用いたコンテンツ配信の最適化 by
LIMIAアプリにおける行動履歴を用いたコンテンツ配信の最適化LIMIAアプリにおける行動履歴を用いたコンテンツ配信の最適化
LIMIAアプリにおける行動履歴を用いたコンテンツ配信の最適化gree_tech
2.2K views27 slides

More Related Content

What's hot

公式部活動技術書典部の活動紹介 by
公式部活動技術書典部の活動紹介公式部活動技術書典部の活動紹介
公式部活動技術書典部の活動紹介gree_tech
1.9K views22 slides
携帯電話時代から続くモバイルゲームとアプリの関係 by
携帯電話時代から続くモバイルゲームとアプリの関係携帯電話時代から続くモバイルゲームとアプリの関係
携帯電話時代から続くモバイルゲームとアプリの関係gree_tech
1.4K views155 slides
#インスタサミット 「アカウント運用の基礎」アライドアーキテクツ株式会社 藤田さま by
#インスタサミット 「アカウント運用の基礎」アライドアーキテクツ株式会社 藤田さま#インスタサミット 「アカウント運用の基礎」アライドアーキテクツ株式会社 藤田さま
#インスタサミット 「アカウント運用の基礎」アライドアーキテクツ株式会社 藤田さまDaiki Hirozawa
2.6K views25 slides
IoTを擬人化してみた by
IoTを擬人化してみたIoTを擬人化してみた
IoTを擬人化してみたIchiro Tsuji
3K views25 slides
オウンドメディア × Instagram APIで出来ること ~写真共有サイト「Marunouchipix」からみるオウンドメディアでのInstagram... by
オウンドメディア × Instagram APIで出来ること ~写真共有サイト「Marunouchipix」からみるオウンドメディアでのInstagram...オウンドメディア × Instagram APIで出来ること ~写真共有サイト「Marunouchipix」からみるオウンドメディアでのInstagram...
オウンドメディア × Instagram APIで出来ること ~写真共有サイト「Marunouchipix」からみるオウンドメディアでのInstagram...Members_corp
5.6K views37 slides
IoTを擬人化してみた そして巨大化してみる by
IoTを擬人化してみた そして巨大化してみるIoTを擬人化してみた そして巨大化してみる
IoTを擬人化してみた そして巨大化してみるIchiro Tsuji
775 views49 slides

What's hot(20)

公式部活動技術書典部の活動紹介 by gree_tech
公式部活動技術書典部の活動紹介公式部活動技術書典部の活動紹介
公式部活動技術書典部の活動紹介
gree_tech1.9K views
携帯電話時代から続くモバイルゲームとアプリの関係 by gree_tech
携帯電話時代から続くモバイルゲームとアプリの関係携帯電話時代から続くモバイルゲームとアプリの関係
携帯電話時代から続くモバイルゲームとアプリの関係
gree_tech1.4K views
#インスタサミット 「アカウント運用の基礎」アライドアーキテクツ株式会社 藤田さま by Daiki Hirozawa
#インスタサミット 「アカウント運用の基礎」アライドアーキテクツ株式会社 藤田さま#インスタサミット 「アカウント運用の基礎」アライドアーキテクツ株式会社 藤田さま
#インスタサミット 「アカウント運用の基礎」アライドアーキテクツ株式会社 藤田さま
Daiki Hirozawa2.6K views
IoTを擬人化してみた by Ichiro Tsuji
IoTを擬人化してみたIoTを擬人化してみた
IoTを擬人化してみた
Ichiro Tsuji3K views
オウンドメディア × Instagram APIで出来ること ~写真共有サイト「Marunouchipix」からみるオウンドメディアでのInstagram... by Members_corp
オウンドメディア × Instagram APIで出来ること ~写真共有サイト「Marunouchipix」からみるオウンドメディアでのInstagram...オウンドメディア × Instagram APIで出来ること ~写真共有サイト「Marunouchipix」からみるオウンドメディアでのInstagram...
オウンドメディア × Instagram APIで出来ること ~写真共有サイト「Marunouchipix」からみるオウンドメディアでのInstagram...
Members_corp5.6K views
IoTを擬人化してみた そして巨大化してみる by Ichiro Tsuji
IoTを擬人化してみた そして巨大化してみるIoTを擬人化してみた そして巨大化してみる
IoTを擬人化してみた そして巨大化してみる
Ichiro Tsuji775 views
月間6アプリリリースの開発現場でのQiita:Team活用法 by Naoya Mouri
月間6アプリリリースの開発現場でのQiita:Team活用法月間6アプリリリースの開発現場でのQiita:Team活用法
月間6アプリリリースの開発現場でのQiita:Team活用法
Naoya Mouri9.1K views
How are AsakusaSatellite growing with mzp by Ryo Suetsugu
How are AsakusaSatellite growing with mzpHow are AsakusaSatellite growing with mzp
How are AsakusaSatellite growing with mzp
Ryo Suetsugu9.4K views
WordPressとS3で落ちないコーポレートサイトを立ち上げよう by Ichiro Tsuji
WordPressとS3で落ちないコーポレートサイトを立ち上げようWordPressとS3で落ちないコーポレートサイトを立ち上げよう
WordPressとS3で落ちないコーポレートサイトを立ち上げよう
Ichiro Tsuji4.2K views
Matcherの紹介@ITリーダー育成キャンプ by noriyaz
Matcherの紹介@ITリーダー育成キャンプMatcherの紹介@ITリーダー育成キャンプ
Matcherの紹介@ITリーダー育成キャンプ
noriyaz369 views
Swiftビギナーズ倶楽部でのプレゼンver02 by Tomiji Suzuki
Swiftビギナーズ倶楽部でのプレゼンver02Swiftビギナーズ倶楽部でのプレゼンver02
Swiftビギナーズ倶楽部でのプレゼンver02
Tomiji Suzuki374 views
ITニュース六時五分:Vine、日本ユーザ3か月で3倍に急増 by 明穂 足立
ITニュース六時五分:Vine、日本ユーザ3か月で3倍に急増ITニュース六時五分:Vine、日本ユーザ3か月で3倍に急増
ITニュース六時五分:Vine、日本ユーザ3か月で3倍に急増
明穂 足立227 views
3行説明「ZakurIT」 by R Tamura
3行説明「ZakurIT」3行説明「ZakurIT」
3行説明「ZakurIT」
R Tamura977 views
kintonecafefukushima-vol1-20161001 by kintone papers
kintonecafefukushima-vol1-20161001kintonecafefukushima-vol1-20161001
kintonecafefukushima-vol1-20161001
kintone papers490 views
Androidの会のご紹介 by 高見 知英
Androidの会のご紹介Androidの会のご紹介
Androidの会のご紹介
高見 知英632 views
私とFacebook 2017 by Ikuo Misao
私とFacebook 2017私とFacebook 2017
私とFacebook 2017
Ikuo Misao120 views
IoT.kyoto事例紹介(2017年9月) by Ichiro Tsuji
IoT.kyoto事例紹介(2017年9月)IoT.kyoto事例紹介(2017年9月)
IoT.kyoto事例紹介(2017年9月)
Ichiro Tsuji439 views
さくらのナレッジ ~ITエンジニアに役立つ情報を全力でシェア~ by 法林浩之
さくらのナレッジ ~ITエンジニアに役立つ情報を全力でシェア~さくらのナレッジ ~ITエンジニアに役立つ情報を全力でシェア~
さくらのナレッジ ~ITエンジニアに役立つ情報を全力でシェア~
法林浩之872 views
マルチテナントに対応したシラサギグループウェアのご紹介 by Shinji Tanimoto
マルチテナントに対応したシラサギグループウェアのご紹介マルチテナントに対応したシラサギグループウェアのご紹介
マルチテナントに対応したシラサギグループウェアのご紹介
Shinji Tanimoto1.7K views

Similar to LIMIAでのBigQuery活用事例

PHPからgoへの移行で分かったこと by
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことgree_tech
6.4K views39 slides
エッジ向けDeepLearningプロジェクトで必要なこと by
エッジ向けDeepLearningプロジェクトで必要なことエッジ向けDeepLearningプロジェクトで必要なこと
エッジ向けDeepLearningプロジェクトで必要なことLeapMind Inc
3.4K views38 slides
エンジニア以外の方が自らSQLを使ってセグメント分析を行うカルチャーをどのように作っていったか by
エンジニア以外の方が自らSQLを使ってセグメント分析を行うカルチャーをどのように作っていったかエンジニア以外の方が自らSQLを使ってセグメント分析を行うカルチャーをどのように作っていったか
エンジニア以外の方が自らSQLを使ってセグメント分析を行うカルチャーをどのように作っていったかgree_tech
1.6K views45 slides
JEPA2017年年末イベントパネルディスカッション資料 by
JEPA2017年年末イベントパネルディスカッション資料JEPA2017年年末イベントパネルディスカッション資料
JEPA2017年年末イベントパネルディスカッション資料馮 富久
2K views12 slides
企業によるソーシャルアカウント運用のために by
企業によるソーシャルアカウント運用のために企業によるソーシャルアカウント運用のために
企業によるソーシャルアカウント運用のためにYuka Obu
797 views15 slides
「地方零細スタートアップの失敗ノウハウ」in iOSスタートアップ勉強会 #3 by
「地方零細スタートアップの失敗ノウハウ」in iOSスタートアップ勉強会 #3「地方零細スタートアップの失敗ノウハウ」in iOSスタートアップ勉強会 #3
「地方零細スタートアップの失敗ノウハウ」in iOSスタートアップ勉強会 #3Yukidama
10.8K views36 slides

Similar to LIMIAでのBigQuery活用事例(20)

PHPからgoへの移行で分かったこと by gree_tech
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
gree_tech6.4K views
エッジ向けDeepLearningプロジェクトで必要なこと by LeapMind Inc
エッジ向けDeepLearningプロジェクトで必要なことエッジ向けDeepLearningプロジェクトで必要なこと
エッジ向けDeepLearningプロジェクトで必要なこと
LeapMind Inc3.4K views
エンジニア以外の方が自らSQLを使ってセグメント分析を行うカルチャーをどのように作っていったか by gree_tech
エンジニア以外の方が自らSQLを使ってセグメント分析を行うカルチャーをどのように作っていったかエンジニア以外の方が自らSQLを使ってセグメント分析を行うカルチャーをどのように作っていったか
エンジニア以外の方が自らSQLを使ってセグメント分析を行うカルチャーをどのように作っていったか
gree_tech1.6K views
JEPA2017年年末イベントパネルディスカッション資料 by 馮 富久
JEPA2017年年末イベントパネルディスカッション資料JEPA2017年年末イベントパネルディスカッション資料
JEPA2017年年末イベントパネルディスカッション資料
馮 富久2K views
企業によるソーシャルアカウント運用のために by Yuka Obu
企業によるソーシャルアカウント運用のために企業によるソーシャルアカウント運用のために
企業によるソーシャルアカウント運用のために
Yuka Obu797 views
「地方零細スタートアップの失敗ノウハウ」in iOSスタートアップ勉強会 #3 by Yukidama
「地方零細スタートアップの失敗ノウハウ」in iOSスタートアップ勉強会 #3「地方零細スタートアップの失敗ノウハウ」in iOSスタートアップ勉強会 #3
「地方零細スタートアップの失敗ノウハウ」in iOSスタートアップ勉強会 #3
Yukidama10.8K views
ソーシャルメディアプロジェクトの実績紹介 by Leung Man Yin Daniel
ソーシャルメディアプロジェクトの実績紹介ソーシャルメディアプロジェクトの実績紹介
ソーシャルメディアプロジェクトの実績紹介
アプリ事業売却セミナー(Ad ticker勉強会003) by Lui Okada
アプリ事業売却セミナー(Ad ticker勉強会003)アプリ事業売却セミナー(Ad ticker勉強会003)
アプリ事業売却セミナー(Ad ticker勉強会003)
Lui Okada2.1K views
200事例から学ぶ自社アプリ最新トレンドセミナー2016 - Yappli by ihara yasu
200事例から学ぶ自社アプリ最新トレンドセミナー2016 - Yappli200事例から学ぶ自社アプリ最新トレンドセミナー2016 - Yappli
200事例から学ぶ自社アプリ最新トレンドセミナー2016 - Yappli
ihara yasu688 views
情報処理学会 AI tech talk Ridge-i by Ridge-i
情報処理学会 AI tech talk Ridge-i情報処理学会 AI tech talk Ridge-i
情報処理学会 AI tech talk Ridge-i
Ridge-i869 views
201511 モバイルサービスにおけるSEOのトレンドと事例 by Shohei Komatsu
201511 モバイルサービスにおけるSEOのトレンドと事例201511 モバイルサービスにおけるSEOのトレンドと事例
201511 モバイルサービスにおけるSEOのトレンドと事例
Shohei Komatsu2.1K views
20190313_SDGsや社会課題にxRはどう活かせるか by Shingo Mori
20190313_SDGsや社会課題にxRはどう活かせるか20190313_SDGsや社会課題にxRはどう活かせるか
20190313_SDGsや社会課題にxRはどう活かせるか
Shingo Mori2.1K views
米国のスマートフォンアプリ市場とプロモーション by Hiromitsu Ishimori
米国のスマートフォンアプリ市場とプロモーション米国のスマートフォンアプリ市場とプロモーション
米国のスマートフォンアプリ市場とプロモーション
Hiromitsu Ishimori3.7K views
GIGYA 月間15億ユーザーが利用するソーシャル化プラットフォーム「GIGYA」とは?<東京開催>メンバーズオウンドメディアセミナー2013/07/09 by Members_corp
GIGYA 月間15億ユーザーが利用するソーシャル化プラットフォーム「GIGYA」とは?<東京開催>メンバーズオウンドメディアセミナー2013/07/09GIGYA 月間15億ユーザーが利用するソーシャル化プラットフォーム「GIGYA」とは?<東京開催>メンバーズオウンドメディアセミナー2013/07/09
GIGYA 月間15億ユーザーが利用するソーシャル化プラットフォーム「GIGYA」とは?<東京開催>メンバーズオウンドメディアセミナー2013/07/09
Members_corp3K views
インターンシップ×ソーシャルメディア活用による企業ブランディング by Jun Saito
インターンシップ×ソーシャルメディア活用による企業ブランディングインターンシップ×ソーシャルメディア活用による企業ブランディング
インターンシップ×ソーシャルメディア活用による企業ブランディング
Jun Saito673 views

More from gree_tech

アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜 by
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜gree_tech
729 views36 slides
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介 by
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介gree_tech
229 views13 slides
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表 by
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表gree_tech
1K views18 slides
アプリ起動時間高速化 ~推測するな、計測せよ~ by
アプリ起動時間高速化 ~推測するな、計測せよ~アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~gree_tech
1.9K views84 slides
長寿なゲーム事業におけるアプリビルドの効率化 by
長寿なゲーム事業におけるアプリビルドの効率化長寿なゲーム事業におけるアプリビルドの効率化
長寿なゲーム事業におけるアプリビルドの効率化gree_tech
347 views116 slides
Cloud Spanner をより便利にする運用支援ツールの紹介 by
Cloud Spanner をより便利にする運用支援ツールの紹介Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介gree_tech
685 views31 slides

More from gree_tech(20)

アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜 by gree_tech
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
gree_tech729 views
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介 by gree_tech
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
gree_tech229 views
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表 by gree_tech
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
gree_tech1K views
アプリ起動時間高速化 ~推測するな、計測せよ~ by gree_tech
アプリ起動時間高速化 ~推測するな、計測せよ~アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~
gree_tech1.9K views
長寿なゲーム事業におけるアプリビルドの効率化 by gree_tech
長寿なゲーム事業におけるアプリビルドの効率化長寿なゲーム事業におけるアプリビルドの効率化
長寿なゲーム事業におけるアプリビルドの効率化
gree_tech347 views
Cloud Spanner をより便利にする運用支援ツールの紹介 by gree_tech
Cloud Spanner をより便利にする運用支援ツールの紹介Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介
gree_tech685 views
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介 by gree_tech
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
gree_tech601 views
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について by gree_tech
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現についてSINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
gree_tech626 views
海外展開と負荷試験 by gree_tech
海外展開と負荷試験海外展開と負荷試験
海外展開と負荷試験
gree_tech593 views
翻訳QAでのテスト自動化の取り組み by gree_tech
翻訳QAでのテスト自動化の取り組み翻訳QAでのテスト自動化の取り組み
翻訳QAでのテスト自動化の取り組み
gree_tech305 views
組み込み開発のテストとゲーム開発のテストの違い by gree_tech
組み込み開発のテストとゲーム開発のテストの違い組み込み開発のテストとゲーム開発のテストの違い
組み込み開発のテストとゲーム開発のテストの違い
gree_tech576 views
サーバーフレームワークに潜んでる脆弱性検知ツール紹介 by gree_tech
サーバーフレームワークに潜んでる脆弱性検知ツール紹介サーバーフレームワークに潜んでる脆弱性検知ツール紹介
サーバーフレームワークに潜んでる脆弱性検知ツール紹介
gree_tech209 views
データエンジニアとアナリストチーム兼務になった件について by gree_tech
データエンジニアとアナリストチーム兼務になった件についてデータエンジニアとアナリストチーム兼務になった件について
データエンジニアとアナリストチーム兼務になった件について
gree_tech308 views
シェアドサービスとしてのデータテクノロジー by gree_tech
シェアドサービスとしてのデータテクノロジーシェアドサービスとしてのデータテクノロジー
シェアドサービスとしてのデータテクノロジー
gree_tech432 views
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて- by gree_tech
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
gree_tech1K views
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話 by gree_tech
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
gree_tech1.1K views
比較サイトの検索改善(SPA から SSR に変換) by gree_tech
比較サイトの検索改善(SPA から SSR に変換)比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)
gree_tech694 views
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行 by gree_tech
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
gree_tech2.9K views
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜 by gree_tech
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
gree_tech397 views
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮) by gree_tech
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
gree_tech752 views

Recently uploaded

Najah Matsuo Self Introduction by
Najah Matsuo Self IntroductionNajah Matsuo Self Introduction
Najah Matsuo Self IntroductionNajahMatsuo
10 views29 slides
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私 by
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私修治 松浦
208 views36 slides
SSH超入門 by
SSH超入門SSH超入門
SSH超入門Toru Miyahara
490 views21 slides
onewedge_companyguide1 by
onewedge_companyguide1onewedge_companyguide1
onewedge_companyguide1ONEWEDGE1
66 views22 slides
ウォーターフォール開発で生 産性を測る指標 by
ウォーターフォール開発で生 産性を測る指標ウォーターフォール開発で生 産性を測る指標
ウォーターフォール開発で生 産性を測る指標Kouhei Aoyagi
55 views13 slides
概要.pdf by
概要.pdf概要.pdf
概要.pdfTaira Shimizu
6 views1 slide

Recently uploaded(7)

Najah Matsuo Self Introduction by NajahMatsuo
Najah Matsuo Self IntroductionNajah Matsuo Self Introduction
Najah Matsuo Self Introduction
NajahMatsuo10 views
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私 by 修治 松浦
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私
JISTA月例会2023年12月 書籍『3カ月で改善!システム障害対応実践ガイド』ご紹介+失敗学と障害対応と私
修治 松浦208 views
onewedge_companyguide1 by ONEWEDGE1
onewedge_companyguide1onewedge_companyguide1
onewedge_companyguide1
ONEWEDGE166 views
ウォーターフォール開発で生 産性を測る指標 by Kouhei Aoyagi
ウォーターフォール開発で生 産性を測る指標ウォーターフォール開発で生 産性を測る指標
ウォーターフォール開発で生 産性を測る指標
Kouhei Aoyagi55 views

LIMIAでのBigQuery活用事例

  • 1. Copyright © LIMIA, Inc. All Rights Reserved. LIMIAでの BigQuery活用事例
  • 2. 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
  • 3. Copyright © LIMIA, Inc. All Rights Reserved. LIMIAとは? 3 ● メディアサービス ● Android, iOS, Web ● 記事一覧を表示し、タップすると 記事詳細を閲覧できる。 ● 記事一覧はパーソナライズ。 ● 記事詳細読了後に関連記事を出 している。 ● AWS:90%、GCP:10%。 ● PHP/EC2 → Go/ECS移行中 ● コンテナ間はgRPC+NLB ● 偏りが激しいのでEnvoy使いたい
  • 4. Copyright © LIMIA, Inc. All Rights Reserved. LIMIAでは、分析や集計のためにBigQueryを多用しています。利用方法は、 次のような形です。 1. 全てのデータをBigQueryに流す 2. 特徴を分析して運営で最適化 3. 機械に置き換えて最適化を加速 本当は(3)に注力したいが、(1)(2)に工数を取られてしまう。良さげな方法が あれば指摘していただき、加速させたい! ぶっちゃけ、ログ周りは面倒なので、知識を共有して機能開発に集中したいっ す。o(> <)o 背景と目的 4
  • 5. Copyright © LIMIA, Inc. All Rights Reserved. 1. 全てのデータをBigQueryに流す
  • 6. Copyright © LIMIA, Inc. All Rights Reserved. Firebase管理画面でボタンを押すだけでBigQueryにデータが連携される。 連携されるデータは、次のもの。 ● Analytics: 送信した全てのイベント ● Crashlytics: 発生した例外の情報 ● Predictions: 予測結果 ● FCM: プッシュ通知送受信ログ ● Performance: 送信したトレース情報 Analytics以外のBigQueryデータは使いこなせていない。良い使い道があれ ば教えて欲しい。 イベントログ Firebase 6
  • 7. 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
  • 8. 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
  • 9. Copyright © LIMIA, Inc. All Rights Reserved. 2. 特徴を分析して運営で最適化
  • 10. Copyright © LIMIA, Inc. All Rights Reserved. ● エンジニア: エラーログ、動作速度、機能の利用状況などでシステムの健 全性を分析。パーソナライズを行うため、ユーザやアイテムの特徴を分析。 ● ビジネス職: 施策立案のための状況把握。施策の想定効果見積もりと効 果測定。KPI変化の要因分析。 ● 分析部隊: 基本は依頼を受けて。気づきがあれば、それとなく教えてくれ る。 誰が何を分析しているのか 仮説を立てて定量的に検証する 10
  • 11. 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
  • 12. Copyright © LIMIA, Inc. All Rights Reserved. 分析結果が明らかなら良いが、大抵はやってみないと分からない。そこで、管 理ツールを作り、人手でパターンを作ってオンライン検証(A/Bテスト)を行う。 例えば、分析結果から導いた次のような仮説を検証する。 ● 仮説: タイトルを20文字にするとCTRが高い —> 15, 20, 25文字で A/Bテスト。 ● 仮説: ユーザの興味に近い記事をプッシュ通知で送信すると開封率が高く なる —> 特徴的なユーザリストと記事を手動で作り、既存手法とA/Bテス ト。 分析結果をどう使うか 運営による改善手法 12
  • 13. Copyright © LIMIA, Inc. All Rights Reserved. 3. 機械に置き換えて最適化を加速
  • 14. Copyright © LIMIA, Inc. All Rights Reserved. オフライン検証のベースラインとして、人気のあるコンテンツを全員に配信した ときを想定する。 Cell/Itemを表示したらAnalyticsにimpression eventを送信し、Clickした らclick eventを送信してBigQueryに格納する。イベント数で割り算したCTR を人気記事の定義とした。 例えば2日前のCTRが高いものを掲載したと仮定して、1日前にクリックされた かを確認する。これをBigQueryのqueryとして実装する。 Popular Model オフライン検証のベースライン 14
  • 15. Copyright © LIMIA, Inc. All Rights Reserved. 類似ユーザに人気の記事を配信することで、CTRが上がるという仮説を検証し た。 ユーザをいくつかのクラスタに分類する。 分類結果をBigQueryに送信し、クラスタ毎のCTRを集計する。 定期的に集計してストレージに格納しておき、ユーザは所属するクラスタ内で CTRが高い記事を一覧表示する。 これをPopular Modelとオフラインで比較して、既存手法とオンラインで比較し た。 Segmentation Popular Model 素朴な機械化  15
  • 16. Copyright © LIMIA, Inc. All Rights Reserved. LIMIAにはtwitterのようにユーザをフォローする機能がある。フォロー数が多 いほど来訪頻度が高いことが分かっている。興味のあるユーザを推薦すること でフォロー数が増えるという仮説を検証した。 BigQueryにあるフォロー情報を使ってUser x Userの行列を作る。 コサイン距離を計算するUDFを作り、類似ユーザを抽出した。自分がフォロー している人の類似ユーザや類似ユーザがフォローしていて自分がしていない人 を推薦した。 協調フィルタリング UDFを使った手法 16
  • 17. Copyright © LIMIA, Inc. All Rights Reserved. まとめ
  • 18. Copyright © LIMIA, Inc. All Rights Reserved. ● BigQueryにデータを集約することで、SQLさえ書ければ分析可能となっ た。 ● 分析する人が増えたので、ユーザやアイテムへの理解が進み、機械化が 可能となった。 ● 詳細については「グリー技術書典部誌2019秋号」に掲載し、技術書典7@ い07Cで頒布予定。 グリー技術書典部のブースに遊びに来てください! まとめ 18