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

dbt開発 with Claude Codeのためのガードレール設計

Avatar for 10xinc 10xinc
September 10, 2025

dbt開発 with Claude Codeのためのガードレール設計

Avatar for 10xinc

10xinc

September 10, 2025
Tweet

More Decks by 10xinc

Other Decks in Technology

Transcript

  1. 10X, Inc. ALL RIGHTS RESERVED 自己紹介 • 吉田 康久 ◦

    Xやはてなidは@syou6162 / id:syou6162 • 株式会社10Xでデータエンジニア ◦ 2022/09に入社 ◦ プロダクト本部 データ基盤チームに所属 ◦ データマネジメント / データガバナンスの仕事をしてます • 京都から働いてます • これまでの職歴としては研究者(NLP & ML) => Webアプリケーションエンジニア, MLエンジニア => データエンジニ ア, Analytics Engineer • データ系のコミュニティが主戦場です ◦ datatech-jpの運営の一人です、Slackをベースに1800人以上が参加 ◦ dbt Community spotlight & Google Developer Expertに選出されました ◦ Data Engineering Studyのアドバイザに就任しました • Tokyo dbt Meetup #8で登壇、Elementaryを用いたデータ品質の可視化とデータ基盤の運用改善について話しました 2
  2. 10X, Inc. ALL RIGHTS RESERVED 夏から秋にかけて他にも色々話すので、是非来てください! • Data Engineering Study

    #31: データエンジニアがこの先生きのこるには...? • アーキテクチャConference2025: 現場課題から考えるセマンティックレイヤーとデータモデリング 3
  3. 10X, Inc. ALL RIGHTS RESERVED dbt、大好きです!!! • dbtや関連のエコシステムについて、あれこれ登壇してます ◦ Dataplexとdbt-osmosisを活用した「がんばらない」データカタログとメタデータ管理の運用

    ◦ Elementaryを用いたデータ品質の可視化とデータ基盤の運用改善 ◦ 全日本dbt-osmosisを愛でる会 ◦ 全日本datacontract-cliを使い倒す会 • そんなアレコレを好きでやっていたら、dbtのCommunity spotlightに選ばれました 4
  4. 10X, Inc. ALL RIGHTS RESERVED Claude Code、大好きです!!! • Claude Codeで自分用のツールを色々作りました

    ◦ ターミナルで動くRSS Reader(termfeed) / プライベート用途のPodcast管理ツール(podself) • Claude Code関連のエコシステムで便利なツール作った ◦ Hookをyamlで読みやすく管理するcchook / Status lineをyamlで読みやすく管理するccstatusline • GitHubでたくさん草も生えた 5 昨年 今年(09/07時点) Writing Code Was Never The Bottleneckではあるの で、「草が多いから何だ?」という話ではある。 しかし、Claude Codeのおかげで、ここ10年くらいで一 番楽しくコード書いています!
  5. 10X, Inc. ALL RIGHTS RESERVED 題材はdbtとClaude Codeですが、もっと広く通じる思想も話します • 本発表はもちろん以下の2つを中心トピックとして扱います ◦

    dbt: データのETLツール ◦ Claude Code: 汎用的なCoding Agent • とはいえ... ◦ dbtはETLツールのうちの一つ ◦ Claude Codeは汎用的なCoding Agentのうちの一つ • 今日話すpracticeはDataformやCodex CLIやGemini CLIなどでも通じます ◦ 具体的な方法論だけでなく、裏側にある思想をお届けできればなと思っています 6 Take Home Message: ガードレールという制約を使いこなし 快適なdbt開発 with Claude Code生活を送りましょう!
  6. 10X, Inc. ALL RIGHTS RESERVED アジェンダ • 背景: 10XとStailerについて •

    データ基盤にまつわる課題とClaude Code • データ基盤を作るためのガードレール ◦ Hard constraints / Soft constraints ◦ ガードレールとしてのレイヤリング / データモデリング ◦ ガードレールとしてのData Contract • データ基盤を運用するためのガードレール ◦ コードリーディングの補助 ◦ アラート対応 • データ分析をするためのガードレール ◦ メタデータ ◦ Semantic Layer ◦ コンテキストエンジニアリング • まとめ 7
  7. 10X, Inc. ALL RIGHTS RESERVED アジェンダ • 背景: 10XとStailerについて •

    データ基盤にまつわる課題とClaude Code • データ基盤を作るためのガードレール ◦ Hard constraints / Soft constraints ◦ ガードレールとしてのレイヤリング / データモデリング ◦ ガードレールとしてのData Contract • データ基盤を運用するためのガードレール ◦ コードリーディングの補助 ◦ アラート対応 • データ分析をするためのガードレール ◦ メタデータ ◦ Semantic Layer ◦ コンテキストエンジニアリング • まとめ 8
  8. 10X, Inc. ALL RIGHTS RESERVED ネットスーパー運営に必要な全ての要素を提供しています 9 Stailer ネットスーパー事業 -

    提供プロダクト 小売事業者向けアプリ ミスが少なく効率的な 業務オペレーションを実現 配達スタッフ向けアプリ スタッフ用アプリと完全連動し、 効率的なルーティングを実施 ネットスーパーアプリ 数万点のSKUからスムーズに お買い物ができる
  9. 10X, Inc. ALL RIGHTS RESERVED 事業の特性と本発表のスタンス • 高い複雑性 ◦ 様々なデータソース(ID-POS

    / 発注 / 納品 / etc)が存在 ◦ 小売毎に微妙に異なる入力や仕様が存在 ◦ 共通のデータ形式に変換する必要がある ◦ ネットスーパー / AI発注 / AIプライシングなど様々な出口が存在する • 高いデータ品質が求められる ◦ GMVなど各種統計量が管理画面で閲覧できる(プロダクトとして提供している) ◦ データのミスは誤ったオペレーションなどに直接繋がってしまう • 本発表のスタンス ◦ 事業の特性上、高いデータ品質を求められる ◦ それに伴って、本発表のガードレールは比較的固い作りになっている ◦ 会社や事業によってはここまでやると、too muchになる場合もありえると思います ◦ 自社の必要に応じて、差し引いて考えてください 11 入力データのvalidationや変換時のテスト などが極めて重要 LLM以前からデータ品質に向き合っている (例: データ品質全般 / メタデータ / Data Contract)
  10. 10X, Inc. ALL RIGHTS RESERVED アジェンダ • 背景: 10XとStailerについて •

    データ基盤にまつわる課題とClaude Code • データ基盤を作るためのガードレール ◦ Hard constraints / Soft constraints ◦ ガードレールとしてのレイヤリング / データモデリング ◦ ガードレールとしてのData Contract • データ基盤を運用するためのガードレール ◦ コードリーディングの補助 ◦ アラート対応 • データ分析をするためのガードレール ◦ メタデータ ◦ Semantic Layer ◦ コンテキストエンジニアリング • まとめ 12
  11. 10X, Inc. ALL RIGHTS RESERVED dbt開発にまつわる課題 • 日々たくさん依頼がくる ◦ 例:

    先月の施策の結果を分析したいです ◦ 例: このテーブルにこういうカラム追加できますか? ◦ 例: このカラムってどういう意味ですか? ◦ 例: こういうクエリ書いてみたけど、集計結果がおかしい。クエリを見て欲しいです • たくさんのmodelファイルの保守メンテナンスをしないといけない ◦ 減らすのは大変、日々増えていきがち • 最近の10Xの場合: ◦ 新しい小売企業との連携が始まった ◦ 新しい種類のデータが増え、データ取り込みやデータモデリングする対象が増えた ◦ 出口側のDXアプリも増えてくる 13
  12. 10X, Inc. ALL RIGHTS RESERVED Claude Codeが得意なこと • コードベースを広く見てくれる ◦

    Grepツールやjqなどを駆使しながら、広く理解しようとしてくれる • 機械的な作業も苦としない ◦ スクリプトを書くまでもない定型作業などは大得意 • 自律的に動いてくれる ◦ 多少うまくいかないことがあっても、諦めずに試行錯誤してくれる • Coding Agentの中では先駆け的な存在であるため、相対的には枯れている ◦ 必要があればVSCodeなどのIDE連携もできる ◦ hookやstatuslineなどコードを書く以外のことも整備されてる ◦ dbtと同様にBest Practiceが世の中で知られている ◦ 必要があればGitHub Actions上で動かすこともできる • 「Claude Codeでdbt開発の全ての課題を解決してやるぜ!!!」でうまくいく...? 14
  13. 10X, Inc. ALL RIGHTS RESERVED Claude Codeはまだまだやんちゃ: その1 15 martにビジネスロジックが染み出して、

    SSoTには程遠い実装。場 当たり的なmartがどんどん出来てしまう ... Claude Code: とにかくこのmartが動いて テストも通ることを確認しましょう
  14. 10X, Inc. ALL RIGHTS RESERVED Claude Codeはまだまだやんちゃ: その2 16 キーの設計もその場しのぎになっており、適合ディメンションになっ

    ていない。プロセスを跨いだ集計が可能になっていない Claude Code: 後段のmartでうまくJOINできること を優先してDWH層を考えていきましょう
  15. 10X, Inc. ALL RIGHTS RESERVED Claude Codeはまだまだやんちゃ: その3 17 incrementalな履歴テーブルを簡単に消さないで

    ! Claude Code: 何回やってもテストが通らない。上流のテーブルに バグがある可能性があるので、削除してから作り直します
  16. 10X, Inc. ALL RIGHTS RESERVED Claude Codeはまだまだやんちゃ: その4 18 お願い、そういうの勝手にやるのやめて

    ! Claude Code: クエリがタイムアウトしてしまいます。 スロットを買い増しして、実行できるようにしましょう
  17. 10X, Inc. ALL RIGHTS RESERVED やんちゃなClaude Codeに活躍してもらうにはガードレールが大事! • 高い自走力の裏返しで、Claude Codeは課題を解決するためにあの手この手で頑張ってしまう

    • その結果、例えば以下のようなことで困ることがそれなりにある ◦ 一貫性のないクエリやデータ品質の高いクエリを初手で書いてしまい、レビューコストが高くなる ◦ 危ないオペレーションを行なってしまう可能性があり、目を離せないため疲れる • Claude Codeに活躍してもらうためには、ガードレールの設計が重要! ◦ 危険なことはそもそもできないようにする ◦ 「こう書いて欲しい」という設計やモデリングがあれば、それをClaude Codeが理解しやすい形で表現する • 今日はこういったガードレールの事例を盛りだくさんで紹介します! 19
  18. 10X, Inc. ALL RIGHTS RESERVED dbt関連のガードレールの事例やプラクティスは世の中にまだあまりない • ソフトウェアエンジニアリング一般ではそれなりに話題になり、プラクティスが溜まってきつつある ◦ 型

    / Lint / テスト / 仕様書駆動開発/ etc • それに加えて、データエンジニアリング / アナリティクスエンジニアリングのプラクティスが我々には必要なはず ◦ 特にdbt x Claude Codeの事例...! ◦ だが、正直まだまだあまりまとまった事例はない • 本発表ではそこに切り込んでいきたい 21
  19. 10X, Inc. ALL RIGHTS RESERVED アジェンダ • 背景: 10XとStailerについて •

    データ基盤にまつわる課題とClaude Code • データ基盤を作るためのガードレール ◦ Hard constraints / Soft constraints ◦ ガードレールとしてのレイヤリング / データモデリング ◦ ガードレールとしてのData Contract • データ基盤を運用するためのガードレール ◦ コードリーディングの補助 ◦ アラート対応 • データ分析をするためのガードレール ◦ メタデータ ◦ Semantic Layer ◦ コンテキストエンジニアリング • まとめ 22
  20. 10X, Inc. ALL RIGHTS RESERVED そもそもHard constraints / Soft constraintsとは?

    • Hard Constraints: ◦ 定義: 形式的に定義が可能で、確定的に判定できる制約 ◦ 例: 型(Type)に矛盾がないか / コンパイルが通るか / リントが通るか / テストが通るか • Soft Constraints: ◦ 定義: 自然言語で定義され、文脈依存で確率的な判定を伴う制約 ◦ 例: Coding Agentに対するプロンプト • Hard ConstraintsもSoft ConstraintsもCoding Agentに対して、有用なガードレールになり得る ◦ ガードレールによって解空間を狭め、Coding Agentが効率的に探索できる • オススメ: まずはHard Constraintsでの実装を試みて、困難な場合にSoft Constraintsの実装を試す ◦ Hard Constraintsは基本的に早い / 安い / 再現可能 / これまでの人類の叡智に乗っかれる ◦ 試してみて難しい場合はSoft Constraintsを最小限の範囲で実装する • dbt開発 with Claude Codeの文脈でのHard constraints / Soft constraintsを紹介していきます! 23
  21. 10X, Inc. ALL RIGHTS RESERVED Hook as Hard constraints •

    PreToolUse: dbtの管理は素のpythonではなく、uvで管理している ◦ dbt runではなくuv run dbt runで実行して欲しい... ▪ 余談: uvはめっちゃ早いので、まだの人は是非試してください ◦ dbt runを実行しようとしたらPreToolUseのHookで叩き落とす • PostToolUse: SQLファイルを修正した後は必ずsqlfmtをかけて欲しい ◦ 人間、あるいはVSCode Copilot Agentだと、VSCodeの保存時にsqlfmtを適用する設定が可能 ◦ Claude Codeはエディタを介さず、EditツールでSQLを書いてしまう ◦ pre-commitで確実にsqlfmtを適用させるようにPostToolUseのHookを必ず実行させる • 公式のHooks reference を読み込みましょう ◦ 宣伝: JSONで設定しにくい場合、拙作のcchookがオススメです 24 Hookの活用: xxする前に必ず確認、yyした後に必ず実行させる
  22. 10X, Inc. ALL RIGHTS RESERVED Claude Codeがdbtコマンドやbq queryを直接実行する場合の危険性 • Claude

    Codeがデータマートを構築する試行錯誤の際、何回もクエリを実行することになる ◦ 通常のWeb開発であれば、テスト用のDBなどを含め、dockerやDev container内で済むことも多い ▪ Anthropicも開発コンテナを提供している ◦ しかし、dbtでの開発はdbtコマンドを直接叩くにせよ、bq queryなどを叩くにせよ、DWH環境に接続できる必要がある • 基本的には実行の度にクエリを目視で確認して、Approveすることが多いはず • 何も考えずに、auto-approveや--dangerously-skip-permissionsを指定している人はいないですよね...? ◦ マジでやめましょう... ◦ 何でもできてしまいますし、試行錯誤のときにClaude Codeがやんちゃする可能性は結構あり得ます ◦ 例: 「何回やってもテストが通らない。上流のテーブルにバグがある可能性があるので、削除してから作り直します」 ◦ 例: 「クエリがタイムアウトしてしまいます。スロットを買い増しして、実行できるようにしましょう」 • できちゃう可能性があること ◦ DDL: DROP / CREATE / ALTER / TRUNCATE ◦ DML: INSERT / UPDATE / DELETE / MERGE ◦ 権限設定: GRANT / REVOKE ◦ CREATE CAPACITY: 実はスロットの購入がクエリで実行できてしまいます ◦ その他の高度なオペレーション: EXPORT DATA / EXECUTE IMMEDIATE / CALL / CREATE MODELなどなど 25
  23. 10X, Inc. ALL RIGHTS RESERVED 権限管理 / Sandbox as Hard

    constraints • 権限管理の最小化 ◦ 普段はユーザー権限でDWHを利用している人が多いと思います。これだと強すぎる場合が多いです ◦ Claude Codeを実行するときは最小権限のサービスアカント経由で実行させる ▪ 権限: ジョブの発行権限やデータセット単位の閲覧権限のみ ▪ サービスアカウントを借用(impersonate)して実行させる ◦ やんちゃなことをやろうとしても、権限不足で実行できないようにする • Sandbox環境で動かす ◦ sandbox-exec やDevelopment containersで動かす ◦ ネットワークやファイルシステムのレイヤーで隔離する ◦ ホワイトリストで許したことのみしか実行できない • 以下の区別をしっかり持ちましょう ◦ プロンプトの中で「XXXは絶対にしないでください」と書くこと ◦ Hard constraintsとして、そもそもClaude Codeが実行できないこと • より詳細はClaude CodeでBigQueryのクエリを実行する際のガードレールを設計するを参照してください 26
  24. 10X, Inc. ALL RIGHTS RESERVED 自然言語 as Soft constraints •

    データ基盤のためのリーダブルSQL 同僚の@tenajimaさん作 ◦ 元々は人間用に書いたもの • コードでは書きにくいようなルールはドキュメント(CLAUDE.mdなど)として整備する ◦ 書くときにも使わせることができるし、コードレビューにも使える on Claude Code GitHub Actions 27
  25. 10X, Inc. ALL RIGHTS RESERVED 参考: ピクシブさんのCI/CDでのコードレビュー事例(Gemini on Vertex AI)

    29 LLMとGitLab CI/CDを活用したdbtコードレビューの自動化 より引用
  26. 10X, Inc. ALL RIGHTS RESERVED ユビキタス言語 / 命名規則 as Soft

    constraints • Claude Codeに「いい感じ」にクエリを書かせない • 定義を参照させる。定義するのは人間の仕事 ◦ 組織全体でユビキタス言語を育てていく過程はタイミーさんの事例が参考になります 30
  27. 10X, Inc. ALL RIGHTS RESERVED 仕様書 as Soft constraints •

    Kiroに代表される仕様書駆動開発(Spec-driven Development)が登場し、界隈では注目を集めている ◦ 当然、この仕様書もLLM Agentに対して強力なガードレールとして働く • 特定のIDEに限定されずに仕様書駆動開発をサポートするツールも登場している ◦ gotalab/claude-code-spec / github/spec-kit / Pimzino/claude-code-spec-workflow / Pimzino/spec-workflow-mcp • dbt開発 with Claude Codeでも仕様書駆動開発は有効! ◦ 先ほどまでのクエリの書き方 / ユビキタス言語 / 命名規則などは仕様書駆動開発ではSteeringとして機能する • 「実装が微妙だな...」と思ったときは仕様書のみ残して書いてもらったコードを捨てる、ということがやりやすい ◦ 人間相手にはやりにくかった 31
  28. 10X, Inc. ALL RIGHTS RESERVED アジェンダ • 背景: 10XとStailerについて •

    データ基盤にまつわる課題とClaude Code • データ基盤を作るためのガードレール ◦ Hard constraints / Soft constraints ◦ ガードレールとしてのレイヤリング / データモデリング ◦ ガードレールとしてのData Contract • データ基盤を運用するためのガードレール ◦ コードリーディングの補助 ◦ アラート対応 • データ分析をするためのガードレール ◦ メタデータ ◦ Semantic Layer ◦ コンテキストエンジニアリング • まとめ 32
  29. 10X, Inc. ALL RIGHTS RESERVED ガードレールなしだとClaude Codeには難しい: その1 34 データレイク

    DWH Data Mart 「なんかいい感じに前処理する」くらいの意味合いしか持て ておらず、各SQLファイルでやり方がバラバラ Claude Code: intermediateというディレクトリが あるからここに適当に書いていきましょう
  30. 10X, Inc. ALL RIGHTS RESERVED ガードレールなしだとClaude Codeには難しい: その2 35 データレイク

    DWH Data Mart キーの設計もその場しのぎになっており、適合ディメンションになっ ていない。プロセスを跨いだ集計が可能になっていない Claude Code: 後段のmartでうまくJOINできること を優先して考えていきましょう
  31. 10X, Inc. ALL RIGHTS RESERVED ガードレールなしだとClaude Codeには難しい: その3 36 データレイク

    DWH Data Mart martにビジネスロジックが染み出して、 SSoTには程遠い実装。場当 たり的なmartがどんどん出来てしまう ... Claude Code: とにかくこのmartが動いて テストも通ることを確認しましょう
  32. 10X, Inc. ALL RIGHTS RESERVED ガードレールなしだとClaude Codeには難しい: その4 37 データレイク

    DWH Data Mart 特定の目的のために作っていたはずが、いつの間にか 大福帳化してメンテナンス不能に ... Claude Code: 依頼を達成するには、この martにカ ラムを追加するだけなので、簡単です
  33. 10X, Inc. ALL RIGHTS RESERVED あれ、この光景どこかでも見たことあるぞ🤔 • ジュニアなデータエンジニア / アナリティクスエンジニアへのレビューでもありがちな問題

    ◦ Claude Codeも素の状態だと、SQLを書くことだけはできるジュニアなSWEと同じ状態 • 「こういう風に書いてね」「これがこうなっているのはこういう意図でね」というのを教えてあげないといけない ◦ README.mdなりCLAUDE.mdなり毎回のプロンプトなり • 典型的なデータ基盤の3層構造のまま教えてもよいが、もっとモデリングの意図を反映しやすい構造だと教えるのも やりやすい ◦ 10Xの場合: Data Vault + ディメンショナルモデリング
  34. 10X, Inc. ALL RIGHTS RESERVED Data Vault + ディメンショナルモデリング =

    よいガードレール 39 データレイク Staging Raw Vault Business Vault Data Mart Fact / Dim
  35. 10X, Inc. ALL RIGHTS RESERVED Data Vault + ディメンショナルモデリング =

    よいガードレール 40 データレイク Staging Raw Vault Business Vault Data Mart Fact / Dim Hub: エンティティの定義 Link: エンティティ同士の接続 Satellite: エンティティの属性の履歴管理 詳しくはこちらを参照してください! 自然言語でつらつらと書くよりも、構造化(= レイヤリング + モデリング) した形で制約を与えているのが特徴! Data Vaultを使った開発の良さを同僚の@tenajimaさんが9/24の みんなの考えた最強のデータ基盤アーキテクチャ第5回で紹介します。 気になる人は是非参加してください!!!
  36. 10X, Inc. ALL RIGHTS RESERVED Data Vault + ディメンショナルモデリング =

    よいガードレール 41 データレイク Staging Raw Vault Business Vault Data Mart Fact / Dim エンティティ / ビジネスイベントの設計は最初で済ませておく。アナリティクスエンジ ニアが頭を使うべき箇所。 ボイラーテンプレートになることも多い。そのため設計ができたら、Claude Code GitHub Actionsに自動でprを作ってもらう コンポーネントを細かく切り出す。 Genericテストはもちろん、ユニットテストも書く(Claude Codeに書いてもらう)。 「どういうdbtのユニットテストを書くべきか?」はまたどこかで話したい...
  37. 10X, Inc. ALL RIGHTS RESERVED Data Vault + ディメンショナルモデリング =

    よいガードレール 42 データレイク Staging Raw Vault Business Vault Data Mart Fact / Dim 細かく切り出されて、よくテストされたコンポーネントを基本的にはJOINするだけ (そうでない場合はビジネスロジックが染み出しているサイン)。 こういう作業はClaude Codeが大得意 Data Vaultもディメンショナルモデリングも20年以上前から現役のプラクティス。Claude Code自体にとって既知のため、よいガードレールとして機能する。 社内で独自の俺俺フレームワークを覚えさせるよりも省コストにできた
  38. 10X, Inc. ALL RIGHTS RESERVED レイヤリング / データモデリングの意図をHard constraintsで守らせる •

    レイヤリング / データモデリングはあくまでSoft constraints ◦ 「こういう風に設計しておくと書きやすいだろう」というある意味、理想形を述べているだけ ◦ Claude Codeがそれに沿って書いてくれるとは限らない • Claude Codeがやんちゃしないように、以下のようなことを守らせたい ◦ 例: martがmartを参照するのは許さない ◦ 例: Business Vaultのレイヤーはビジネスロジックのテスト必須 ◦ 例: martのレイヤーはJOINミスがないようにnot_nullとuniqueのテスト必須 ◦ 例: Business VaultがBusiness Vaultを参照するのは許容するが、最大でもN段までしか許可しない ◦ 例: このレイヤーのnot_nullはdata_testではなくconstraintsで定義させる ◦ 例: モデリングの対象は品質の高いデータソースのみ許容する • であれば、Hard constraintsで守らせよう ◦ 「どのレイヤーのモデルは何を満たすべき」という制約を組織独自のJSON Schemaやdbt-project-evaluatorを 使ったSingular data testsで実現する ◦ 守らない場合は即座にCIで叩き落として、Claude Codeにフィードバックする • 余談: この仕組みはClaude Codeのために作ったものではなく、元々はデータ基盤の変更容易性を高めるために作った 仕組み 43
  39. 10X, Inc. ALL RIGHTS RESERVED 例: dbt-project-evaluatorによるHard constraints 44 dbt-project-evaluatorで独自のレイヤリングの制約をCI上で表現する

    を参照してください 例: adhocからadhocを参照させない Singular data tests 例: 同一のレイヤで過剰な多重の参照関係を許 可しないSingular data tests
  40. 10X, Inc. ALL RIGHTS RESERVED Data Vault以外でも同様のガードレールを敷くことは可能 45 Google Cloud

    で学ぶデータエンジニアリング入門 2025年版 #GoogleCloudNext / 20250805 より引用
  41. 10X, Inc. ALL RIGHTS RESERVED 今後、人間がやるべきことの一つ: データモデリング 46 AI時代のソフトウェア開発を考える(2025/07版) より引用

    単純なクエリを書くのはガードレールの存在を前提に Claude Codeに委託できる 今後のデータ領域の中核の一つにデータモデリングは欠かせない 指示をする我々のデータモデリングの 能力も上げていく必要がある!
  42. 10X, Inc. ALL RIGHTS RESERVED アジェンダ • 背景: 10XとStailerについて •

    データ基盤にまつわる課題とClaude Code • データ基盤を作るためのガードレール ◦ Hard constraints / Soft constraints ◦ ガードレールとしてのレイヤリング / データモデリング ◦ ガードレールとしてのData Contract • データ基盤を運用するためのガードレール ◦ コードリーディングの補助 ◦ アラート対応 • データ分析をするためのガードレール ◦ メタデータ ◦ Semantic Layer ◦ コンテキストエンジニアリング • まとめ 48
  43. 10X, Inc. ALL RIGHTS RESERVED 何も工夫しないと... 50 基幹システムから CSVを受領 GCSへ保存

    BigQueryへload dbtで変換 CSVの仕様書 処理の流れ 全てString型でBigQueryにloadされてしまう... 仕様書を見ながら、文字列のparseや validateをdbt内で頑張る...
  44. 10X, Inc. ALL RIGHTS RESERVED 型や制約は雄弁、ガードレールとして語らせよう 基幹システムから CSVを受領 GCSへ保存 BigQueryへload

    dbtで変換 CSVの仕様書 (Data Contract) Pydantic 処理の流れ dbtのsource yaml ガードレール Agentで自動生成 行レベルでのvalidationを挟み込む 列レベルのテストを挟み込む 余談: この仕組みはClaude Codeのために作ったものではなく、元々はデータ生産者と データ消費者の間の取り決めをData Contractとして運用していた。同様のData Contractの事例が Ubieさんでも行なわれている(Tokyo dbt Meetup #15での発表内容) 51
  45. 10X, Inc. ALL RIGHTS RESERVED アジェンダ • 背景: 10XとStailerについて •

    データ基盤にまつわる課題とClaude Code • データ基盤を作るためのガードレール ◦ Hard constraints / Soft constraints ◦ ガードレールとしてのレイヤリング / データモデリング ◦ ガードレールとしてのData Contract • データ基盤を運用するためのガードレール ◦ コードリーディングの補助 ◦ アラート対応 • データ分析をするためのガードレール ◦ メタデータ ◦ Semantic Layer ◦ コンテキストエンジニアリング • まとめ 53
  46. 10X, Inc. ALL RIGHTS RESERVED Claude Codeに人間用のガードレールを敷いてもらう • データエンジニア /

    Analytics Engineerは仕様調査のため、プロダクト側のコードを読みに行かないといけない場合 もある ◦ 筋力も必要だし、SWE出身でない場合は難易度が高くなってしまうことがある ▪ 特にAnalytics EngineerはSWE出身でない場合が多い ◦ とはいえ、定義に立ち戻ることができるかどうかは非常に重要! • そうした場合にClaude Codeに助けてもらおう! 人間に対してガードレールを引いてもらう ◦ 例1: オーナーの同定 ◦ 例2: Enumの値の同定 ◦ 例3: Statusの状態遷移を同定 • より詳細はAnalytics Engineerのためのプロダクトコードのコードリーディング with LLM Agentに書いてます • 余談: Claude Codeは出力スタイル(Explanatory / Learning)を変更できて、コードリーディングにも強力なパートナー になってくれます 54
  47. 10X, Inc. ALL RIGHTS RESERVED 例1: データオーナーの同定 • データソースの調査や依頼をする際、開発チームの中から適切なデータオーナーに問い合わせる必要がある •

    まれに「神」テーブルに出くわすことがある ◦ 例: Orderテーブル / Userテーブル ◦ 「神テーブルはそもそも正規化しよう」という話はもちろんあるが、歴史的経緯などを含め、現実にはすぐ解 決するのは難しいこともある ◦ カラム毎にデータオーナーが異なる、あるいは明示的には決まっていない場合もある • 「git blame / git history / Pull Request / Notion / Slack」などを網羅的に調べていくとデータオーナーの輪郭が浮か んでくる ◦ 歴史考古学者的な仕事、社歴が長いと有利なことが多い ◦ Claude Codeに調べてもらおう 55
  48. 10X, Inc. ALL RIGHTS RESERVED 調査結果例 56 「売り場チームがオーナーかなぁ」と思っていたが、別のチームがオー ナーであることが分かった。識者が誰かも一緒に分かった ドメインチームで複数にチームが分かれている、開発チームが大きい場

    合などに有効! 別リポジトリの情報をClaude Codeに見て欲しいときは/add-dirコマンドが便利! dbtのリポジトリ / サーバーサイド / クライアントサイド / IaCの リポジトリを入れることが多い 実際のsha1やPull Requestも提示させると ハルシネーションを起こしにくい(気がする)
  49. 10X, Inc. ALL RIGHTS RESERVED 例2: Enumの値の同定 • データ基盤ではEnumの値を利用者が分かりやすいように変換することがよくある •

    Enumに新しいtypeが追加されると、画像のコードだと全部otherに吸収されてしまう ◦ 分析者: 「ある時期からotherの割合が急に増えてきている🤔」「otherではなく、その内訳を知りたいよ」 • じゃあ、新しいEnumの値は何? ◦ 実際は口座振替 / クーポン利用 / ポイント利用などが追加されていた 57 実際に使ったプロンプト。 調べてもらった調査結果を元に CASE文に追加してもらうPull Requestを書くもよし
  50. 10X, Inc. ALL RIGHTS RESERVED 例3: Statusの状態遷移を同定 • 問い合わせ調査: 「hoge_statusが3になっていて、集計が合わないので調査をお願いします」と聞かれる

    • 以下が分かると、調査が捗ることが多い ◦ 例: 「その状態に遷移するとしたら、前の状態は何か?」 ◦ 例: 「状態がもう遷移しない終端状態はどれか」 • 状態遷移図が手に入ると嬉しいが、基本的にはそんな便利なものはないことが多い... • SWEであれば頑張れば状態遷移図を書くことできる ◦ でも「漏れなく」洗い出してくれ、と言われたら非常に大変で、辛い作業です ◦ 集中してコードを読んでも2~3時間じゃ洗い出せない、ということも普通にある • 「Coding Agentは疲れを知らないから状態遷移図を書かせてみることはできる」かもしれない ◦ 普通に難しいと思ったが、ダメ元でUltrathinkでお願いしてみた 58
  51. 10X, Inc. ALL RIGHTS RESERVED 状態遷移図ができてしまった...! 59 想像通り、かなり複雑。出来上がったと きは、正直腰を抜かした😇 SWEに聞いてみたが、問題ありそうな

    遷移はなかった。 Analytics Engineerはこの状態遷移図を 元に、問い合わせ調査を進められる。 取り得る状態遷移が人間にとってのガー ドレールとなり、調査のための仮説が立て やすくなる! 「どこからどこに遷移する」だけでは なく「どの画面のどういう操作で遷移が起き える(コード上の該当行はここ)」 ということまで記載してくれた
  52. 10X, Inc. ALL RIGHTS RESERVED アジェンダ • 背景: 10XとStailerについて •

    データ基盤にまつわる課題とClaude Code • データ基盤を作るためのガードレール ◦ Hard constraints / Soft constraints ◦ ガードレールとしてのレイヤリング / データモデリング ◦ ガードレールとしてのData Contract • データ基盤を運用するためのガードレール ◦ コードリーディングの補助 ◦ アラート対応 • データ分析をするためのガードレール ◦ メタデータ ◦ Semantic Layer ◦ コンテキストエンジニアリング • まとめ 60
  53. 10X, Inc. ALL RIGHTS RESERVED 典型的なアラート対応はClaude Codeに対応して欲しい! • これまでのデータ基盤に加え、新規プロダクトの開発 /

    運用も始まり、アラート対応もこれまで以上に素早く解決す る必要が出てきた ◦ 具体例: 対応しなければならないデータプロダクト / パートナー数 / データソースの種類が増えてきた • アラート対応は複雑なものもあるが、概ね典型的なアラートは型化できる ◦ A: 元データに想定外の変更があった場合 ◦ B: データ基盤リポジトリ内の変更が原因の場合 ◦ C: インフラ側で不調があった場合 • これらをClaude Codeが対応できるようにドキュメント as ガードレールとして書いておく 61
  54. 10X, Inc. ALL RIGHTS RESERVED アラート対応フロー 62 gcloud logging readでログの中身を確

    認 Cloud Loggingへの リンク Datadogのアラート エラーパターンを分類 元データによる変更 データ基盤側の変更 インフラ側の不調 statusページの確認 / retryの実行 ghコマンドやnotion mcp を使って最近の修正を 確認 ghコマンドで原因prを特 定。どのレコードが原因 か洗い出し
  55. 10X, Inc. ALL RIGHTS RESERVED ガードレールを機能させるためのポイントやご利益 • Claude Codeがアーキテクチャ全体を理解できるようにしておく ◦

    Mermaidで書いた図も理解してくれる ◦ IaCから構成図を書かせることもできる ◦ どこで問題があったのか、どこまでは問題がなかったかをClaude Codeが把握できるようにする • 調査用のドキュメント内で利用するコマンドは具体的に書いておく ◦ Claude Codeが試行錯誤しなくてよいようにする ◦ スキーマや典型的なjqのフィルタ条件を書いておくと、ほぼ問題なく調べてくれる • 調べるべき情報源の明示 ◦ ハルシネーションをしないように & していないかの確認をさっとできるようにしたい ◦ 例: 原因と判断した行とそのログの絞り込み方 ◦ 例: 原因と判断したコードのファイル名とその行数 • ご利益 ◦ アラート対応に慣れていない人でもアラート対応でどういったことをやればいいかが明確になった ◦ Claude Codeに理解してもらうため、アーキテクチャ図も刷新する機会になった 64
  56. 10X, Inc. ALL RIGHTS RESERVED アジェンダ • 背景: 10XとStailerについて •

    データ基盤にまつわる課題とClaude Code • データ基盤を作るためのガードレール ◦ Hard constraints / Soft constraints ◦ ガードレールとしてのレイヤリング / データモデリング ◦ ガードレールとしてのData Contract • データ基盤を運用するためのガードレール ◦ コードリーディングの補助 ◦ アラート対応 • データ分析をするためのガードレール ◦ メタデータ ◦ Semantic Layer ◦ コンテキストエンジニアリング • まとめ 65
  57. 10X, Inc. ALL RIGHTS RESERVED メタデータ as ガードレール • 急な依頼で月次の店舗別のGMVと顧客数の推移を出さなければならなくなった、としましょう

    • 手でクエリを書いてもよいが、楽をしたい • 「そうだ、Claude Codeに書いてもらおう!」は思った通りに行かないことも多い ◦ GMVに関する複数のテーブルをうまく使い分けてくれない ◦ カラムの意味をうまく考慮してくれない • Claude CodeはBigQueryやSnowflakeのテーブルやスキーマしか分からないし、できないのは当然と言えば当然 ◦ テーブル名やスキーマもコンテキストにない場合もある ◦ どういう目的で作られたテーブルか、どういう意味のカラムか、などは分からない • そこで重要になってくるのがメタデータ! 66
  58. 10X, Inc. ALL RIGHTS RESERVED メタデータ as ガードレール • テーブルのdescription:

    ◦ 想定用途、レコードの制限(例: 2024年以降のデータしか入っていない) • カラムのdescription: ◦ 集計の定義。目的に沿っているか(同名だけど、定義が違う場合も稀にある) • カラムの制約: ◦ nullがあるか、参照照合性は満たされているか(INNER JOINでレコードが落ちないか) • テーブルの主キー: ◦ JOIN時のヒントになる。うまく解消できていないと重複して集計してしまうリスクも • テーブルのオーナーやデータ品質 ◦ そもそもレポートとして提出するのに相応わしくないデータソースは使わないほうがいい 67 これらのメタデータは人間だけでなく データ分析をするAgentにとって役に立つ! でも、全てのテーブルに入れていくの、大変す ぎない?
  59. 10X, Inc. ALL RIGHTS RESERVED データに対する期待値を定義しよう 68 10Xでのデータ基盤の変遷とこれからより引用 Tier定義で実現するAI-Readyなデータ利活用 より引用

    • 10Xやdelyさんなどでデータに対する期待値やTierを定義する事例が公開されている • Agentが参照すべきデータも「Trusted」や「Tier 1」であることが多いはず • AdhocなマートはAgentに「見せない」こともガードレールとして機能する
  60. 10X, Inc. ALL RIGHTS RESERVED Claude Code以外でもメタデータは役に立つ 69 • データ活用者の手元でClaude

    Codeを動かしてもらうのは難しい • Devinなどブラウザ経由でリポジトリを参照できるAgentであれば、ブラウザで簡単に質問やクエリを書いてもらえる ◦ dbtのyamlというメタデータのガードレールに沿って書いてくれる • PdMがデータプロダクトの仕様を調査するのにも役に立つ
  61. 10X, Inc. ALL RIGHTS RESERVED 宣伝: メタデータ管理の記事を寄稿しました 70 本発表のガードレール以外の メタデータ活用事例をまとめています!

    メタデータ活用の習熟度に合わせたメタデータの育て 方を書いています! 楽に管理をするためのOSS事例も豊富に載せています! 「LLM時代に人間が記入するべきメタデータとは?」など踏 み込んだ話題も取り扱っています!
  62. 10X, Inc. ALL RIGHTS RESERVED アジェンダ • 背景: 10XとStailerについて •

    データ基盤にまつわる課題とClaude Code • データ基盤を作るためのガードレール ◦ Hard constraints / Soft constraints ◦ ガードレールとしてのレイヤリング / データモデリング ◦ ガードレールとしてのData Contract • データ基盤を運用するためのガードレール ◦ コードリーディングの補助 ◦ アラート対応 • データ分析をするためのガードレール ◦ メタデータ ◦ Semantic Layer ◦ コンテキストエンジニアリング • まとめ 71
  63. 10X, Inc. ALL RIGHTS RESERVED Semantic Layer: 「Agentに直接SQLを書かせない」という制約 • 「そもそもAgentに直接SQLを書かせなければ間違いが起きにくいのでは?」を突き詰めた先の一つにSemantic

    Layer がある ◦ 端的にいうと、JOINの仕方と集約した先のMeasureを規定してくれる動的クエリ生成器 ◦ 指標のSSoT化を強力にサポートしてくれる ◦ Agentにとって、強力な制約(=ガードレール)となるし、筋のよい制約 ◦ Agentと違って、決定的な振舞いをしてくれる • 逆に言うと、ディメンショナルモデリングやSemantic Layerなどよいガードレールなしで直接クエリをAgentに書か せるのはリスクがあると認識しておく必要がある 72
  64. 10X, Inc. ALL RIGHTS RESERVED アジェンダ • 背景: 10XとStailerについて •

    データ基盤にまつわる課題とClaude Code • データ基盤を作るためのガードレール ◦ Hard constraints / Soft constraints ◦ ガードレールとしてのレイヤリング / データモデリング ◦ ガードレールとしてのData Contract • データ基盤を運用するためのガードレール ◦ コードリーディングの補助 ◦ アラート対応 • データ分析をするためのガードレール ◦ メタデータ ◦ Semantic Layer ◦ コンテキストエンジニアリング • まとめ 74
  65. 10X, Inc. ALL RIGHTS RESERVED 実際のデータ分析にまだ足りないもの: コンテキスト • これまでのスライドでも色々なガードレールを紹介してきたが、実際のデータ分析をする場合にはまだ不足すること が多い

    • コンテキストが足りない! ◦ 例: プロダクトの機能リリースがいつあったか ◦ 例: キャンペーンや販促情報 ◦ 例: 過去にアナリストが同様の分析をしていて、有力な仮説がある ◦ 例: 社内で広く利用実績があるテーブルはこれ! ◦ 例: データからもNext Actionとしてこれをやればよいことは分かっている ▪ そこを動かすためにBizDevが現在頑張っている、それ以外の方向性を探って欲しい ▪ そのActionをするための予算はどこから持ってくる? ◦ 例: 過去の解約要因、顧客セグメントの特性、競合サービスの動向、外部環境の変化 75
  66. 10X, Inc. ALL RIGHTS RESERVED コンテキストをガードレールとして与える • 様々な情報をAgentに与えて、分析のガードレールとして機能させる ◦ プロダクトのリリース状況

    ◦ 過去の分析内容 on Notion / Google Docs ◦ 社内のクエリ状況 via 監査ログ ◦ 顧客からの問い合わせ / フィードバック回答 • 参考: ◦ データ戦略グループにおけるcontext engineeringの取り組み | MEDLEY Developer Portal ◦ AIを"最強のチームメイト"に育てる『コンテキストエンジニアリング』実践法|notty 76 こういった広義のメタデータの重要性も増している。 データエンジニア / Analytics Engineerもコンテキストをど う管理、育てていくかを考えていく必要がある
  67. 10X, Inc. ALL RIGHTS RESERVED アジェンダ • 背景: 10XとStailerについて •

    データ基盤にまつわる課題とClaude Code • データ基盤を作るためのガードレール ◦ Hard constraints / Soft constraints ◦ ガードレールとしてのレイヤリング / データモデリング ◦ ガードレールとしてのData Contract • データ基盤を運用するためのガードレール ◦ コードリーディングの補助 ◦ アラート対応 • データ分析をするためのガードレール ◦ メタデータ ◦ Semantic Layer ◦ コンテキストエンジニアリング • まとめ 77
  68. 10X, Inc. ALL RIGHTS RESERVED Take Home Message • Claude

    Codeはまだまだやんちゃ ◦ ガードレールがないと、地獄への高速道路をあっという間に作ってしまう • Claude Codeを用いたdbt開発での実践的なガードレールの敷き方を紹介 ◦ データ基盤を作るためのガードレール ◦ データ基盤を運用するためのガードレール ◦ データ分析をするためのガードレール 78 Take Home Message: ガードレールという制約を使いこなし 快適なdbt開発 with Claude Code生活を送りましょう!
  69. 10X, Inc. ALL RIGHTS RESERVED 最後に • データエンジニア / アナリティクスエンジニアの仲間を増やしたい!

    • コミュニティ: datatech-jpに来てね! ◦ アジャイルデータモデリングの輪読会やってます! • イベント: 夏から秋に色々あるので来てね! ◦ Data Engineering Study #31: データエンジニアがこの先生きのこるには...? ◦ アーキテクチャConference2025: 現場課題から考えるセマンティックレイヤーとデータモデリング • 10Xでもデータエンジニアを募集してます! ◦ カジュアル面談からお待ちしてます ◦ 新規プロダクトについて知りたい方はこちらを参照してください! 79