SlideShare a Scribd company logo
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

More Related Content

What's hot

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

What's hot (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
 

Similar to LIMIAでのBigQuery活用事例

PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
gree_tech
 
エンジニア以外の方が自らSQLを使ってセグメント分析を行うカルチャーをどのように作っていったか
エンジニア以外の方が自らSQLを使ってセグメント分析を行うカルチャーをどのように作っていったかエンジニア以外の方が自らSQLを使ってセグメント分析を行うカルチャーをどのように作っていったか
エンジニア以外の方が自らSQLを使ってセグメント分析を行うカルチャーをどのように作っていったか
gree_tech
 
JEPA2017年年末イベントパネルディスカッション資料
JEPA2017年年末イベントパネルディスカッション資料JEPA2017年年末イベントパネルディスカッション資料
JEPA2017年年末イベントパネルディスカッション資料
馮 富久
 
企業によるソーシャルアカウント運用のために
企業によるソーシャルアカウント運用のために企業によるソーシャルアカウント運用のために
企業によるソーシャルアカウント運用のためにYuka Obu
 
「地方零細スタートアップの失敗ノウハウ」in iOSスタートアップ勉強会 #3
「地方零細スタートアップの失敗ノウハウ」in iOSスタートアップ勉強会 #3「地方零細スタートアップの失敗ノウハウ」in iOSスタートアップ勉強会 #3
「地方零細スタートアップの失敗ノウハウ」in iOSスタートアップ勉強会 #3
Yukidama
 
ソーシャルメディアプロジェクトの実績紹介
ソーシャルメディアプロジェクトの実績紹介ソーシャルメディアプロジェクトの実績紹介
ソーシャルメディアプロジェクトの実績紹介Leung Man Yin Daniel
 
アプリ事業売却セミナー(Ad ticker勉強会003)
アプリ事業売却セミナー(Ad ticker勉強会003)アプリ事業売却セミナー(Ad ticker勉強会003)
アプリ事業売却セミナー(Ad ticker勉強会003)
Lui Okada
 
200事例から学ぶ自社アプリ最新トレンドセミナー2016 - Yappli
200事例から学ぶ自社アプリ最新トレンドセミナー2016 - Yappli200事例から学ぶ自社アプリ最新トレンドセミナー2016 - Yappli
200事例から学ぶ自社アプリ最新トレンドセミナー2016 - Yappli
ihara yasu
 
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. 2010SocialCompany, Inc.
 
情報処理学会 AI tech talk Ridge-i
情報処理学会 AI tech talk Ridge-i情報処理学会 AI tech talk Ridge-i
情報処理学会 AI tech talk Ridge-i
Ridge-i
 
201511 モバイルサービスにおけるSEOのトレンドと事例
201511 モバイルサービスにおけるSEOのトレンドと事例201511 モバイルサービスにおけるSEOのトレンドと事例
201511 モバイルサービスにおけるSEOのトレンドと事例
Shohei Komatsu
 
20190313_SDGsや社会課題にxRはどう活かせるか
20190313_SDGsや社会課題にxRはどう活かせるか20190313_SDGsや社会課題にxRはどう活かせるか
20190313_SDGsや社会課題にxRはどう活かせるか
Shingo Mori
 
Toolsの杜- 弥生株式会社の自動仕訳エンジンを支えるフロントエンド ~ 「ダサいは、バグだ!」を標榜してUXを徹底的に追求する ~
Toolsの杜- 弥生株式会社の自動仕訳エンジンを支えるフロントエンド ~ 「ダサいは、バグだ!」を標榜してUXを徹底的に追求する ~Toolsの杜- 弥生株式会社の自動仕訳エンジンを支えるフロントエンド ~ 「ダサいは、バグだ!」を標榜してUXを徹底的に追求する ~
Toolsの杜- 弥生株式会社の自動仕訳エンジンを支えるフロントエンド ~ 「ダサいは、バグだ!」を標榜してUXを徹底的に追求する ~
Developer Solutions事業部 メシウス株式会社 (旧グレープシティ株式会社)
 
米国のスマートフォンアプリ市場とプロモーション
米国のスマートフォンアプリ市場とプロモーション米国のスマートフォンアプリ市場とプロモーション
米国のスマートフォンアプリ市場とプロモーションHiromitsu Ishimori
 
インターンシップ×ソーシャルメディア活用による企業ブランディング
インターンシップ×ソーシャルメディア活用による企業ブランディングインターンシップ×ソーシャルメディア活用による企業ブランディング
インターンシップ×ソーシャルメディア活用による企業ブランディングJun Saito
 
Linked in×採用活動
Linked in×採用活動Linked in×採用活動
Linked in×採用活動
Hirofumi Kasuga
 
IBMのソーシャル・ コンピューティング・ガイドライン
IBMのソーシャル・ コンピューティング・ガイドラインIBMのソーシャル・ コンピューティング・ガイドライン
IBMのソーシャル・ コンピューティング・ガイドライン
Susumu Kurihara
 
NPTO Seminar Intro to Social Media for NPOs
NPTO Seminar Intro to Social Media for NPOsNPTO Seminar Intro to Social Media for NPOs
NPTO Seminar Intro to Social Media for NPOsSocialCompany, Inc.
 

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

PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
 
エンジニア以外の方が自ら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のソーシャル・ コンピューティング・ガイドライン
 
NPTO Seminar Intro to Social Media for NPOs
NPTO Seminar Intro to Social Media for NPOsNPTO Seminar Intro to Social Media for NPOs
NPTO Seminar Intro to Social Media for NPOs
 

More from gree_tech

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

More from 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