Slide 1

Slide 1 text

Looker APIを使い倒す: ユーザーフィードバックを基にした継続的改善サイクル Looker APIを使い倒す ユーザーフィードバックを基にした継続的改善サイクル 株式会社リクルート まなびデータマネジメントG 德本 まなびデータエンジニアリングG 谷口 Jagu’e’r データ利活用分科会 Meetup #24 あつまれLookerの森 Part2

Slide 2

Slide 2 text

Looker APIを使い倒す: ユーザーフィードバックを基にした継続的改善サイクル 谷口 正樹 担当: スタディサプリEnglish 配属: データエンジニアリンググループ 趣味: 映画、バイク (最近乗ってない) 德本 翼 担当: スタディサプリ小中高 配属: データマネジメントグループ 趣味: テニス、登山、ポケポケ

Slide 3

Slide 3 text

Looker APIを使い倒す: ユーザーフィードバックを基にした継続的改善サイクル Agenda | 01 02 03 04 導入: Looker API? 基礎編: どうやってつかうの? 応用編: スタディサプリでのメタデータ活用法 まとめと今後の期待・展望

Slide 4

Slide 4 text

Looker APIを使い倒す: ユーザーフィードバックを基にした継続的改善サイクル Looker API 使ってますか?

Slide 5

Slide 5 text

Looker APIを使い倒す: ユーザーフィードバックを基にした継続的改善サイクル Q: API で何が出来るの?

Slide 6

Slide 6 text

Looker APIを使い倒す: ユーザーフィードバックを基にした継続的改善サイクル A: すべて https://cloud.google.com/looker/docs/api-getting-started?hl=ja

Slide 7

Slide 7 text

Looker APIを使い倒す: ユーザーフィードバックを基にした継続的改善サイクル A: すべて https://cloud.google.com/looker/docs/api-getting-started?hl=ja すごそう

Slide 8

Slide 8 text

Looker APIを使い倒す: ユーザーフィードバックを基にした継続的改善サイクル 背景: スタディサプリでの Looker 利用 Looker は6年前に導入済み ✔ この数年で氾濫していた野良分析クエリを概ね統制下に ✗ データ利活用が拡大するにつれて管理コストも大きく Looker を使える人の拡大 << データ利用ニーズの拡大 ✗ 事業組織によるアドホックな分析依頼の増加 ✗ 「ダッシュボードを知らない」「使い方・見方がわからない」をどうするか問題 → 利用実態を正確に把握し、ユーザービリティの向上を図りたい

Slide 9

Slide 9 text

Looker APIを使い倒す: ユーザーフィードバックを基にした継続的改善サイクル 背景: スタディサプリでの Looker 利用 Looker は6年前に導入済み ✔ この数年で氾濫していた野良分析クエリを概ね統制下に ✗ データ利活用が拡大するにつれて管理コストも大きく Looker を使える人の拡大 << データ利用ニーズの拡大 ✗ 事業組織によるアドホックな分析依頼の増加 ✗ 「ダッシュボードを知らない」「使い方・見方がわからない」をどうするか問題 → 利用実態を正確に把握し、ユーザービリティの向上を図りたい API で ”すべて” 取れるのでは 👀

Slide 10

Slide 10 text

Looker APIを使い倒す: ユーザーフィードバックを基にした継続的改善サイクル 基礎編: どうやってつかうの?

Slide 11

Slide 11 text

Looker APIを使い倒す: ユーザーフィードバックを基にした継続的改善サイクル $ curl \ --request POST \ --header "Content-Type: application/x-www-form-urlencoded" \ "https://your.looker.com:19999/api/4.0/login?client_id=ID&client_secret=SECRET" > {"Access_token":"TOKEN", "token_type":"Bearer", "Expires_in":3600} $ curl \ --request GET \ --header "Content-Type: application/json" \ "https://your.looker.com:19999/api/4.0/dashboards?access_token=TOKEN" ① ID, SECRETを使って一時アクセストークンを取得 ② 取得したアクセストークンを使ってAPIにアクセス 基礎編1: 直接叩いてみる

Slide 12

Slide 12 text

Looker APIを使い倒す: ユーザーフィードバックを基にした継続的改善サイクル import looker_sdk sdk = looker_sdk.init40() sdk.create_user(body={"first_name":"Jane","last_name":"Doe"}) 基礎編2: 各種言語の SDK を使う [Looker] base_url=https://your.looker.com:19999 client_id=ID client_secret=SECRET verify_ssl=True Python, Typescript, Kotlin, C#, Swift, Go などのSDKを完備 looker.ini main.py

Slide 13

Slide 13 text

Looker APIを使い倒す: ユーザーフィードバックを基にした継続的改善サイクル 基礎編3: API Explore Market Place から入手

Slide 14

Slide 14 text

Looker APIを使い倒す: ユーザーフィードバックを基にした継続的改善サイクル スタディサプリでのデータ取り込み: API 利用前 BigQuery Cloud Storage gcloud cli Schedule Delivery dashboard.csv user.csv history.csv looker.dashboard looker.user looker.history System Activity ✔ History などを永続化できる (デフォルトだとMax 3ヶ月) ✔ GUIから設定 + gcloud の実行基盤は既存 → 低い工数で初期実装 ✗ System Activity など、Explore / Dashboard 上で見られる情報に限定 ✗ Dashboard に集計されて連携 → カスタマイズ性が低い、構造体を扱いづらい OLD

Slide 15

Slide 15 text

Looker APIを使い倒す: ユーザーフィードバックを基にした継続的改善サイクル スタディサプリでのデータ取り込み: API活用後 API 対応の クラス looker_api.dashboard looker_api.user looker_system_activit y.history records = sdk.all_users() # list[User] for r in records: r = json.dumps(r, default=serialize_func) Cloud Run sdk.run_inline_query(body={"model": "system__activity", "view": "history", ...}) BigQuery Cloud Storage gcloud cli データ コネクタ dashboard.csv user.csv history.csv looker.dashboard looker.user looker.history System Activity System Activity OLD NEW

Slide 16

Slide 16 text

Looker APIを使い倒す: ユーザーフィードバックを基にした継続的改善サイクル スタディサプリでのデータ取り込み: API活用後 API 対応の クラス looker_api.dashboard looker_api.user looker_system_activit y.history records = sdk.all_users() # list[User] for r in records: r = json.dumps(r, default=serialize_func) Cloud Run sdk.run_inline_query(body={"model": "system__activity", "view": "history", ...}) BigQuery Cloud Storage gcloud cli データ コネクタ dashboard.csv user.csv history.csv looker.dashboard looker.user looker.history System Activity System Activity OLD NEW APIを活用することで ダッシュボードのメタ情報 や ユーザーの利用状況 の生データが すべて BQ で扱える世界に ✨

Slide 17

Slide 17 text

Looker APIを使い倒す: ユーザーフィードバックを基にした継続的改善サイクル 応用編: スタディサプリでの メタデータ活用法

Slide 18

Slide 18 text

Looker APIを使い倒す: ユーザーフィードバックを基にした継続的改善サイクル API 経由で BQ に取り込んだ情報を活用する BigQuery BigQuery DSBD 検索 メタ情報 提供 利用状況 調査 DSBD 整理 ※ DSBD:ダッシュボード

Slide 19

Slide 19 text

Looker APIを使い倒す: ユーザーフィードバックを基にした継続的改善サイクル 事例1: トップページでのダッシュボード検索 Before 長年のダッシュボード蓄積によって、 利用者が欲しい情報に辿り着けない... After トップページを設けてリストアップ 検索やソートで探索できるように!

Slide 20

Slide 20 text

Looker APIを使い倒す: ユーザーフィードバックを基にした継続的改善サイクル 事例1: トップページでのダッシュボード検索 ダッシュボード タイトル一覧 Description に 記述した説明文 Measure リストアップ

Slide 21

Slide 21 text

Looker APIを使い倒す: ユーザーフィードバックを基にした継続的改善サイクル Before ダッシュボードによって構成がバラバラ メタ情報を明確&簡潔に伝えたい... After ヘッダーとフッターの共通Lookを作成 簡単な設定でメタ情報を表示できる! 事例2: 各ダッシュボードへの動的コンポーネント追加

Slide 22

Slide 22 text

Looker APIを使い倒す: ユーザーフィードバックを基にした継続的改善サイクル 事例2: 各ダッシュボードへの動的コンポーネント追加 ヘッダーとフッターの Look を作成 フィルター設定をするだけで ダッシュボードに Look を適用できる

Slide 23

Slide 23 text

Looker APIを使い倒す: ユーザーフィードバックを基にした継続的改善サイクル 事例2: 各ダッシュボードへの動的コンポーネント追加

Slide 24

Slide 24 text

Looker APIを使い倒す: ユーザーフィードバックを基にした継続的改善サイクル 事例3: 利用状況分析 History, User, Dashboards 等を取得して、 以下をアドホック分析できるようになった ・ダッシュボード閲覧したユーザーの数や属性 ・ダッシュボード間の関係性(機能や製品ごと 誰がどのような検索ワードを使ったか 発行されるクエリをパースして分析

Slide 25

Slide 25 text

Looker APIを使い倒す: ユーザーフィードバックを基にした継続的改善サイクル 事例4: 使われていないダッシュボードのクリーニング 各種運用フォルダ 活用されている ダッシュボード (閾値基準) + 例外として残す ダッシュボード (ホワイトリスト) 退避フォルダ 利用が確認できない クリーニング対象の ダッシュボード ゴミ箱フォルダ 退避後12ヶ月経過し 復旧依頼のなかった ダッシュボード クリーニング 四半期に1度 復旧対応 退避後に改めて 必要になった際の 個別復旧対応 ゴミ箱移動 12ヶ月経過 ここで 使用

Slide 26

Slide 26 text

Looker APIを使い倒す: ユーザーフィードバックを基にした継続的改善サイクル 今後の展望: リッチな周辺ツールも鋭意開発中! 社内チャットBotのデータソースとして BQテーブル → Lookerダッシュボード まで紐づけたデータリネージ ※ 画面は開発中のものです

Slide 27

Slide 27 text

Looker APIを使い倒す: ユーザーフィードバックを基にした継続的改善サイクル まとめ ✔ 簡単・便利な Looker API ◆ Looker 上で出来ることのすべてを網羅 ◆ コマンドラインやSDKを使って簡単に使用可能 ✔ Looker 導入後に起きがちな課題に対しての打ち手となる ◆ メタデータ提供や情報検索性アップでユーザビリティの向上を実現 ◆ 運用保守工数の削減や分析利用など、使い道は多岐にわたる

Slide 28

Slide 28 text

Looker APIを使い倒す: ユーザーフィードバックを基にした継続的改善サイクル ご清聴ありがとうございました