プロダクトDB × BigQuery × スプレッドシートのカオスを終わらせた話
レビュー投稿日の情報になります
株式会社ドクターズプライム / issuy
テックリード / テックリード / 従業員規模: 51名〜100名 / エンジニア組織: 10名以下
最終更新日投稿日
| ツールの利用規模 | ツールの利用開始時期 | 事業形態 |
|---|---|---|
| 10名以下 | 2024年1月 | B to B B to C |
| ツールの利用規模 | 10名以下 |
|---|---|
| ツールの利用開始時期 | 2024年1月 |
| 事業形態 | B to B B to C |
アーキテクチャ

導入の背景・解決したかった問題
導入背景
当時はプロダクトDBの各テーブルをBigQueryに同期し、そのテーブルを非エンジニアが直接クエリできる状態でした。各関係者はスプレッドシートなど各ツールで独自にクエリをカスタマイズしており、それを分析や事業運営上重要な数値を出すために利用していました。
ツール導入前の課題
- プロダクトDBに対するテーブルスキーマ変更の影響範囲が測れない
- クエリ利用者が独自にクエリしており、どのテーブルがどのように使われているかを洗い出すのが困難
- 再利用性の低い複雑なクエリが散財している
- 一つの結果を出すためにいくつものJOINを必要とし、複雑なクエリになっていた
- このクエリがまた別の目的のためにカスタマイズされ、冗長なクエリが量産されていた
- BigQueryと接続するスプレッドシートがエラーになる
- 一つの目的のために、BigQueryと接続しているシートAを、さらにBigQueryと接続しているシートBが参照する、という多段構成のときにシートの読み込みが遅い、エラーになる
どのような状態を目指していたか
- プロダクトDBの各テーブルの中で、どのテーブル・カラムがどのような形で利用されているかが可視化されている状態
- スプレッドシートなどで利用する時点で必要なカスタマイズの8割が完了している状態
- 一つの目的のためにシンプルなクエリを書けば欲しいデータが取得できる状態
選定理由
- 内部的にはBigQueryを利用するだけなので追加の費用なく開始できること
- クエリの構築はBigQuery Studioとほぼ同じなので、将来的にエンジニア以外でも編集できると考えたこと
導入の成果
改善したかった課題はどれくらい解決されたか
- BigQuery上でケアすべき影響範囲を完全に可視化できた
- 共用dataset(スプレッドシートなど各ツールから利用される)を用意し、そこにDataformで加工したテーブルを出力する構成。
- ここで出力されるテーブルのスキーマが担保されていれば、Dataform内をどれだけ変更しても問題がない
- 再利用性の低い複雑で冗長なクエリは、たった数個のJOINでカスタマイズが完了するほどシンプルになった
- シートの読み込みを高速化できた
どのような成果が得られたか
- プロダクトDBのカラム修正、削除のハードルが低くなった
- Dataformの加工に問題が発生する場合はアラートを出して、エンジニアが気付ける状態にした
- Git管理されることでクエリの品質を管理しやすくなった
- エンジニアの視点を入れて必要な共通化ができるようになった
- データ分析やその他で、どんなデータが必要とされているか見通しやすくなった
- エンジニアが関与していない箇所でどのような利用がされているかキャッチアップしやすくなった
- スプレッドシートが軽くなった
- クエリを結果を使用しているシートを、さらに別シートで参照する、という多段利用の場合に読み込みが遅くエラーになる問題があったが、解消した
導入に向けた社内への説明
上長・チームへの説明
元々プロダクトDB自体をリプレースするタイミングだったため、全体的にクエリを見直す必要がありました。 またスプレッドシートなどでクエリを利用している担当者も、先述の課題感は以前から共通認識として持っていました。 そのため、多少コストを掛けても適切に管理・共通化された状態にする意思決定をしました。
活用方法
よく使う機能
- リポジトリのGit連携
- GitHubでPull Requestを上げてレビューするフローにしている
- 開発ワークスペース
- クエリ修正する個々人で一つのワークスペースを利用している
- ワークフロー構成
- 定期的にクエリを実行し、各ツールが参照するデータを最新化している
- 増分テーブル
- ログテーブルなどレコード数の多いものは増分テーブルでコストカットしている
ツールの良い点
- BigQueryの延長線上なので手軽に始められて、期待通りの効果が得られる
ツールの課題点
- エンジニア以外にクエリを書いてもらうのは難しい
- 独自にカスタマイズされていたものを適切にモデリング、共通化するためにはエンジニアによる整理が必要
- Compiled graph は規模が大きくなってくると使い物にならない
- 各テーブル間のひも付きが複雑になってしまう
- 特定の切り口でひも付きを絞りたいが、そのための機能が足りてない
株式会社ドクターズプライム / issuy
テックリード / テックリード / 従業員規模: 51名〜100名 / エンジニア組織: 10名以下
2013年に新卒でKLab株式会社に入社。 株式会社トレタを経て2021年に株式会社ドクターズプライムに入社。 バックエンドエンジニアとしての経験を軸に、現在はフルスタックで開発・技術課題の解消を行っている。
よく見られているレビュー
株式会社ドクターズプライム / issuy
テックリード / テックリード / 従業員規模: 51名〜100名 / エンジニア組織: 10名以下
2013年に新卒でKLab株式会社に入社...
もっとみる


