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

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

ファインディにおける 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