Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ファインディにおける Dataform ブランチ戦略

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

ファインディにおける Dataform ブランチ戦略

Avatar for Noriaki Hiraki

Noriaki Hiraki

July 25, 2025
Tweet

More Decks by Noriaki Hiraki

Other Decks in Technology

Transcript

  1. 3
 自己紹介 Findy / データエンジニア / マネージャ 開 功昂 /

    Noriaki Hiraki / @hiracky16 • 2023 年 11 月にファインディの CTO 室データソ リューションチームにジョイン🙌 • データエンジニアとしてマルチプロダクトのデータ 基盤を設計・開発をリード💪 • サッカー⚽とポッドキャスト🎙と子育て👦が趣味 • Dataform 歴 4 年
  2. Dataform の好きなところ(≒ 採用理由) • やすい … BigQuery の利用料金以外は基本無料 • はやい

    … 環境構築不要、ワークフロー設定が手軽 • うまい … Git 連携やデータリネージ, テストなど最低限の機能 6
 =
  3. • データエンジニア以外のコントリビュータが 10 名に増えた • データマートつまり利活用先が 4 倍に増えた • SQL

    のレビュー体制を構築することができた ◦ PR 数では社内で一番活発に動いているデータプロジェクトへ 🎉 導入後の良い効果 8

  4. • SQL 構文ミスで実行不可 • 不規則なファイルやテーブルの命名 • SQL の書き方に統一性がない • フォルダ構成やレイヤーを無視したクエリが生まれる

    • タグ、ワークフロー追加忘れなどのオペミスが発生 • ほぼ毎日何かしらのアラートが鳴る🚨 😭 導入後の悪い効果 9

  5. 1. 確実に動く SQL を本番環境に提供しエラー件数を 0 に近づけること 2. オペミスによるデータパイプラインの失敗は最小限に留めること 3. データ基盤の設計思想や

    SQL の書き方や命名規則を利用者間で決め機械 的にチェックできること 4. 高コストなクエリや使用されていないテーブルが定期的に見直されている こと これらを達成すべくブランチ戦略やリリース手順を見直し💪 🎯 改善目標 12

  6. 様々な開発スタイルに対応 15
 • Google Cloud Console ◦ 主に非エンジニア(データアナリストやマーケ)が使用 ◦ ボタンで

    Git 操作が可能 • VSCode ◦ 主にデータエンジニアや機械学習エンジニアが使用 ◦ GitHub や BigQuery MCP + Claude Code で効率化 • Devin ◦ 複数リポジトリ間で開発が必要な場合に使用 ◦ 例1) Rails の db/schema.rb から source, staging 層のクエリを作成 ◦ 例2) datamart テーブル作成、変更時に LookML を編集
  7. GitHub Actions + SQLFluff によるリファクタ 16
 develop への push で発火

    sqlfluff fix でフォーマット ↓ スターお待ちしてます☆
  8. コーディング規約の作成 18
 GitHub Pull Request のテンプレート • 使用可能な略語の定義 • js

    ブロックを避ける ◦ JavaScript が不得意なメンバーもい るため ◦ SQL と JavaScript の責務が曖昧にな りがち ◦ dbt への乗り換えを見据えて
  9. 19
 Dataform のレビュー体制 # GitHub Actions name: validate-sql on: pull_request:

    branches: - develop jobs: steps: - name: check-hoge - name: check-fuga - name: dataform-run 
 select skill, count(1) from `project_a.dataset_b.users` where created_at >= '2025-01-01' push review review review
  10. • カスタムアサートを用いて利用状況をモニタリング • 前日のデータスキャンや使われなくなったテーブルを検知 Dataform を使ったモニタリング config { type: ‘assertions’

    tags: [‘monitoring’] } select table_id, count(1) as job_count from INFORMATION_SCHEMA.JOBS having count(1) = 0 21
 config { type: ‘assertions’ tags: [‘monitoring’] } select user_email, query, billed_giga_bytes from INFORMATION_SCHEMA.JOBS where billed_giga_bytes > 10
  11. • ワークフローのエラー発生率は昨対比で 85% 減 ◦ スプレッドシートを使った外部テーブルの入力ミス • ワークフロー追加などのオペレーションミスは 0 件

    • テーブルの棚卸しやジョブの監視によりコスト削減 ◦ 導入後 1 年で 200 近くのテーブルを削除 堅牢な Dataform を作ることができた🛡 ブランチ戦略見直しの効果 23

  12. • Dataform は手軽に始められデータ活用の裾野を広げることが可能 • 利用者の増加とガバナンスの難しさは比例 • Dataform のブランチ戦略を見直すとパイプラインの品質が向上 • 堅牢さによって

    “やすい、はやい” が失われない仕組みが必要 ◦ モニタリング、レビューと CI の高速化 • 利用者のやりたいことを先回りし、運用を見越したテーブルやパイプライ ンの設計・開発 まとめ 26