SlideShare ist ein Scribd-Unternehmen logo
1 von 18
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

How are AsakusaSatellite growing with mzp
How are AsakusaSatellite growing with mzpHow are AsakusaSatellite growing with mzp
How are AsakusaSatellite growing with mzp
Ryo Suetsugu
 
Matcherの紹介@ITリーダー育成キャンプ
Matcherの紹介@ITリーダー育成キャンプMatcherの紹介@ITリーダー育成キャンプ
Matcherの紹介@ITリーダー育成キャンプ
noriyaz
 
Ruby会議08 倉貫発表資料
Ruby会議08 倉貫発表資料Ruby会議08 倉貫発表資料
Ruby会議08 倉貫発表資料
Yoshihito Kuranuki
 
Androidの会のご紹介
Androidの会のご紹介Androidの会のご紹介
Androidの会のご紹介
高見 知英
 

Was ist angesagt? (20)

公式部活動技術書典部の活動紹介
公式部活動技術書典部の活動紹介公式部活動技術書典部の活動紹介
公式部活動技術書典部の活動紹介
 
携帯電話時代から続くモバイルゲームとアプリの関係
携帯電話時代から続くモバイルゲームとアプリの関係携帯電話時代から続くモバイルゲームとアプリの関係
携帯電話時代から続くモバイルゲームとアプリの関係
 
#インスタサミット 「アカウント運用の基礎」アライドアーキテクツ株式会社 藤田さま
#インスタサミット 「アカウント運用の基礎」アライドアーキテクツ株式会社 藤田さま#インスタサミット 「アカウント運用の基礎」アライドアーキテクツ株式会社 藤田さま
#インスタサミット 「アカウント運用の基礎」アライドアーキテクツ株式会社 藤田さま
 
IoTを擬人化してみた
IoTを擬人化してみたIoTを擬人化してみた
IoTを擬人化してみた
 
IoTを擬人化してみた そして巨大化してみる
IoTを擬人化してみた そして巨大化してみるIoTを擬人化してみた そして巨大化してみる
IoTを擬人化してみた そして巨大化してみる
 
月間6アプリリリースの開発現場でのQiita:Team活用法
月間6アプリリリースの開発現場でのQiita:Team活用法月間6アプリリリースの開発現場でのQiita:Team活用法
月間6アプリリリースの開発現場でのQiita:Team活用法
 
How are AsakusaSatellite growing with mzp
How are AsakusaSatellite growing with mzpHow are AsakusaSatellite growing with mzp
How are AsakusaSatellite growing with mzp
 
WordPressとS3で落ちないコーポレートサイトを立ち上げよう
WordPressとS3で落ちないコーポレートサイトを立ち上げようWordPressとS3で落ちないコーポレートサイトを立ち上げよう
WordPressとS3で落ちないコーポレートサイトを立ち上げよう
 
Matcherの紹介@ITリーダー育成キャンプ
Matcherの紹介@ITリーダー育成キャンプMatcherの紹介@ITリーダー育成キャンプ
Matcherの紹介@ITリーダー育成キャンプ
 
Swiftビギナーズ倶楽部でのプレゼンver02
Swiftビギナーズ倶楽部でのプレゼンver02Swiftビギナーズ倶楽部でのプレゼンver02
Swiftビギナーズ倶楽部でのプレゼンver02
 
ITニュース六時五分:Vine、日本ユーザ3か月で3倍に急増
ITニュース六時五分:Vine、日本ユーザ3か月で3倍に急増ITニュース六時五分:Vine、日本ユーザ3か月で3倍に急増
ITニュース六時五分:Vine、日本ユーザ3か月で3倍に急増
 
3行説明「ZakurIT」
3行説明「ZakurIT」3行説明「ZakurIT」
3行説明「ZakurIT」
 
kintonecafefukushima-vol1-20161001
kintonecafefukushima-vol1-20161001kintonecafefukushima-vol1-20161001
kintonecafefukushima-vol1-20161001
 
Ruby会議08 倉貫発表資料
Ruby会議08 倉貫発表資料Ruby会議08 倉貫発表資料
Ruby会議08 倉貫発表資料
 
Androidの会のご紹介
Androidの会のご紹介Androidの会のご紹介
Androidの会のご紹介
 
私とFacebook 2017
私とFacebook 2017私とFacebook 2017
私とFacebook 2017
 
IoT.kyoto事例紹介(2017年9月)
IoT.kyoto事例紹介(2017年9月)IoT.kyoto事例紹介(2017年9月)
IoT.kyoto事例紹介(2017年9月)
 
さくらのナレッジ ~ITエンジニアに役立つ情報を全力でシェア~
さくらのナレッジ ~ITエンジニアに役立つ情報を全力でシェア~さくらのナレッジ ~ITエンジニアに役立つ情報を全力でシェア~
さくらのナレッジ ~ITエンジニアに役立つ情報を全力でシェア~
 
マルチテナントに対応したシラサギグループウェアのご紹介
マルチテナントに対応したシラサギグループウェアのご紹介マルチテナントに対応したシラサギグループウェアのご紹介
マルチテナントに対応したシラサギグループウェアのご紹介
 
さくらクラブ紹介LT20151224
さくらクラブ紹介LT20151224さくらクラブ紹介LT20151224
さくらクラブ紹介LT20151224
 

Ähnlich wie LIMIAでのBigQuery活用事例

企業によるソーシャルアカウント運用のために
企業によるソーシャルアカウント運用のために企業によるソーシャルアカウント運用のために
企業によるソーシャルアカウント運用のために
Yuka Obu
 
ソーシャルメディアプロジェクトの実績紹介
ソーシャルメディアプロジェクトの実績紹介ソーシャルメディアプロジェクトの実績紹介
ソーシャルメディアプロジェクトの実績紹介
Leung Man Yin Daniel
 
Social Media for Social Good | Nov. 2010
Social Media for Social Good | Nov. 2010Social Media for Social Good | Nov. 2010
Social Media for Social Good | Nov. 2010
SocialCompany, Inc.
 
米国のスマートフォンアプリ市場とプロモーション
米国のスマートフォンアプリ市場とプロモーション米国のスマートフォンアプリ市場とプロモーション
米国のスマートフォンアプリ市場とプロモーション
Hiromitsu Ishimori
 
インターンシップ×ソーシャルメディア活用による企業ブランディング
インターンシップ×ソーシャルメディア活用による企業ブランディングインターンシップ×ソーシャルメディア活用による企業ブランディング
インターンシップ×ソーシャルメディア活用による企業ブランディング
Jun Saito
 

Ähnlich wie LIMIAでのBigQuery活用事例 (20)

PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
 
エッジ向けDeepLearningプロジェクトで必要なこと
エッジ向けDeepLearningプロジェクトで必要なことエッジ向けDeepLearningプロジェクトで必要なこと
エッジ向けDeepLearningプロジェクトで必要なこと
 
エンジニア以外の方が自らSQLを使ってセグメント分析を行うカルチャーをどのように作っていったか
エンジニア以外の方が自らSQLを使ってセグメント分析を行うカルチャーをどのように作っていったかエンジニア以外の方が自らSQLを使ってセグメント分析を行うカルチャーをどのように作っていったか
エンジニア以外の方が自らSQLを使ってセグメント分析を行うカルチャーをどのように作っていったか
 
JEPA2017年年末イベントパネルディスカッション資料
JEPA2017年年末イベントパネルディスカッション資料JEPA2017年年末イベントパネルディスカッション資料
JEPA2017年年末イベントパネルディスカッション資料
 
企業によるソーシャルアカウント運用のために
企業によるソーシャルアカウント運用のために企業によるソーシャルアカウント運用のために
企業によるソーシャルアカウント運用のために
 
「地方零細スタートアップの失敗ノウハウ」in iOSスタートアップ勉強会 #3
「地方零細スタートアップの失敗ノウハウ」in iOSスタートアップ勉強会 #3「地方零細スタートアップの失敗ノウハウ」in iOSスタートアップ勉強会 #3
「地方零細スタートアップの失敗ノウハウ」in iOSスタートアップ勉強会 #3
 
20110624 sem facebook_yaoi
20110624 sem facebook_yaoi20110624 sem facebook_yaoi
20110624 sem facebook_yaoi
 
ソーシャルメディアプロジェクトの実績紹介
ソーシャルメディアプロジェクトの実績紹介ソーシャルメディアプロジェクトの実績紹介
ソーシャルメディアプロジェクトの実績紹介
 
アプリ事業売却セミナー(Ad ticker勉強会003)
アプリ事業売却セミナー(Ad ticker勉強会003)アプリ事業売却セミナー(Ad ticker勉強会003)
アプリ事業売却セミナー(Ad ticker勉強会003)
 
200事例から学ぶ自社アプリ最新トレンドセミナー2016 - Yappli
200事例から学ぶ自社アプリ最新トレンドセミナー2016 - Yappli200事例から学ぶ自社アプリ最新トレンドセミナー2016 - Yappli
200事例から学ぶ自社アプリ最新トレンドセミナー2016 - Yappli
 
Social Media for Social Good | Nov. 2010
Social Media for Social Good | Nov. 2010Social Media for Social Good | Nov. 2010
Social Media for Social Good | Nov. 2010
 
情報処理学会 AI tech talk Ridge-i
情報処理学会 AI tech talk Ridge-i情報処理学会 AI tech talk Ridge-i
情報処理学会 AI tech talk Ridge-i
 
ソーシャルアプリ成功の秘訣
ソーシャルアプリ成功の秘訣ソーシャルアプリ成功の秘訣
ソーシャルアプリ成功の秘訣
 
201511 モバイルサービスにおけるSEOのトレンドと事例
201511 モバイルサービスにおけるSEOのトレンドと事例201511 モバイルサービスにおけるSEOのトレンドと事例
201511 モバイルサービスにおけるSEOのトレンドと事例
 
20190313_SDGsや社会課題にxRはどう活かせるか
20190313_SDGsや社会課題にxRはどう活かせるか20190313_SDGsや社会課題にxRはどう活かせるか
20190313_SDGsや社会課題にxRはどう活かせるか
 
Toolsの杜- 弥生株式会社の自動仕訳エンジンを支えるフロントエンド ~ 「ダサいは、バグだ!」を標榜してUXを徹底的に追求する ~
Toolsの杜- 弥生株式会社の自動仕訳エンジンを支えるフロントエンド ~ 「ダサいは、バグだ!」を標榜してUXを徹底的に追求する ~Toolsの杜- 弥生株式会社の自動仕訳エンジンを支えるフロントエンド ~ 「ダサいは、バグだ!」を標榜してUXを徹底的に追求する ~
Toolsの杜- 弥生株式会社の自動仕訳エンジンを支えるフロントエンド ~ 「ダサいは、バグだ!」を標榜してUXを徹底的に追求する ~
 
米国のスマートフォンアプリ市場とプロモーション
米国のスマートフォンアプリ市場とプロモーション米国のスマートフォンアプリ市場とプロモーション
米国のスマートフォンアプリ市場とプロモーション
 
インターンシップ×ソーシャルメディア活用による企業ブランディング
インターンシップ×ソーシャルメディア活用による企業ブランディングインターンシップ×ソーシャルメディア活用による企業ブランディング
インターンシップ×ソーシャルメディア活用による企業ブランディング
 
Linked in×採用活動
Linked in×採用活動Linked in×採用活動
Linked in×採用活動
 
IBMのソーシャル・ コンピューティング・ガイドライン
IBMのソーシャル・ コンピューティング・ガイドラインIBMのソーシャル・ コンピューティング・ガイドライン
IBMのソーシャル・ コンピューティング・ガイドライン
 

Mehr von gree_tech

Mehr von gree_tech (20)

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

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