Claude Codeで「もうSQLを手書きしない」——BigQuery Skill・自然言語クエリ・チームダッシュボード構築の実践ガイド

はじめに

「6ヶ月以上、SQLを一行も手書きしていない」——Claude Code創設者のBoris Cherny氏がこう語っている。

この発言を最初に聞いたとき、正直信じられなかった。SQLを書くこと自体はそれほど難しくないが、テーブルスキーマを確認して、集計ロジックを組み立てて、構文エラーを直して……という一連の作業に、実際には毎回20〜30分かかっている。それが本当にゼロになるのか?

答えは「単純にClaudeに書いてもらう」という話ではなかった。BigQuery Skillをチームのリポジトリに組み込み、サブエージェントに分析を委譲し、最終的にはチーム全員が自然言語でデータを引ける仕組みを作る——この設計まで踏み込んで初めて、「SQLを書かない」が実現する。

本記事では個人での活用から、チームへの展開まで3段階で解説する。

基本:自然言語からSQLクエリを生成する

CLIを使ったシンプルなアプローチ

最初のステップは難しくない。CLIアクセスさえあれば、Claudeに自然言語で依頼するだけで動く。

# BigQuery(bq CLIを使用)
「過去30日間のアクティブユーザー数を集計して。bq CLIを使って」
→ Claude が自動生成して実行:
   bq query --use_legacy_sql=false '
   SELECT COUNT(DISTINCT user_id) as active_users
   FROM `project.dataset.events`
   WHERE event_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)
   '

# PostgreSQL(psql CLIを使用) 「注文テーブルから先週の売上をカテゴリ別に集計して」 → Claude が適切なSQLをpsql経由で実行

BigQuery・PostgreSQL・MySQL・MongoDBなど、CLIやAPIが存在するほぼ全てのDBに対応している。

Claude Codeがこのアプローチで強みを発揮するのはスキーマ認識だ。データベース接続を通じてテーブル構造・カラム名・リレーションシップを把握するため、「ユーザーが意図していること」から適切なクエリを逆引きできる。ジョイン・ウィンドウ関数・CTEといった複雑なSQLも、スキーマ情報があれば精度が上がる。

BigQuery Skill:チーム全員が自然言語で分析できる仕組み

「その場でSQLを依頼する」だけでは、個人の生産性にとどまる。チームへの展開にはBigQuery Skillをリポジトリに保存することがカギになる。

Boris Cherny氏チームの運用パターンがこれだ。

~/.claude/skills/bigquery-skill/
├── SKILL.md              # エントリポイント(テーブル一覧・クエリルール)
└── reference/
    ├── finance.md        # 収益・ARR・請求指標のスキーマ
    ├── sales.md          # 機会・パイプラインのスキーマ
    ├── product.md        # API使用量・機能利用のスキーマ
    └── marketing.md      # キャンペーン・アトリビューションのスキーマ

ここで「全スキーマを1ファイルに詰め込まない」設計が効いてくる。

# SKILL.md(エントリポイント)

Available datasets

Finance: Revenue, ARR, billing → See [reference/finance.md] Sales: Opportunities, pipeline → See [reference/sales.md] Product: API usage, features → See [reference/product.md] Marketing: Campaigns, attribution → See [reference/marketing.md]

Query rules

  • Always exclude test accounts (account_type != 'test')
  • Use UTC for all timestamps
  • Cost limit: $10 per query (bq --maximum_bytes_billed)

(訳:テストアカウントを常に除外すること、タイムスタンプはUTC使用、クエリあたりコスト上限$10)

売上指標を質問したとき、Claudeは`sales.md`だけを読み込む。他のドメインファイルはコンテキストを消費しない。スキーマが増えるほどこの恩恵は大きくなる。

CLIとMCPの使い分け

BigQueryにはCLI(bqコマンド)とMCPサーバーの2つのアクセス方法があり、使い分けの基準がある。

bq CLI + SkillBigQuery MCP Server
コンテキスト消費数百トークン数千〜数万トークン
向いている場面定型クエリ・スクリプト自動化スキーマ不明のDB探索・リアルタイムジョブ監視

定型的なデータ取得にはbq CLI + BigQuery Skillの組み合わせが効率的だ。スキーマが未知で探索的な分析をしたい場合はMCP Serverのスキーマ自動検出が強力になる。

データサイエンティストサブエージェント:分析を専門化する

複雑な分析タスクでは、データ分析に特化したサブエージェントを定義すると、毎回プロンプトを考える手間がなくなり出力の質が安定してくる。

---
name: data-scientist
description: SQL queries, BigQuery operations, and data insights specialist.
tools: Bash, Read, Write
model: sonnet
---

You are a data scientist specializing in SQL and BigQuery analysis. (訳:あなたはSQLとBigQuery分析に特化したデータサイエンティストです)

When invoked:

  1. Understand the data analysis requirement
  2. Write efficient SQL queries with proper filters
  3. Use BigQuery command line tools (bq)
  4. Analyze and summarize results clearly
  5. Provide data-driven recommendations

このサブエージェントとSkillを組み合わせると、こうなる。

メインセッション
「先週のKPIレポートを作ってSlack #metricsに投稿して」
    ↓
data-scientistサブエージェント(独立コンテキスト)
├── BigQuery Skillを参照してスキーマを理解
├── bq CLIで複数クエリを実行
├── 結果を集計・Markdown整形
└── レポートを出力
    ↓
Slack MCPが#metricsに自動投稿

メインセッションのコンテキストが大量のクエリ実行履歴で汚染されない。

チームのClaude Code活用状況をBigQueryで可視化する

データ分析の応用事例として、Claude Code活用状況を可視化するダッシュボードを構築した実践報告がある。

課題: チーム全員がClaude Codeを使っているはずなのに、誰が何をどう使っているかが見えない。有志が作ったSkillが埋もれ、作った本人しか使わない状態。

システム構成:

Claude Codeプラグイン(データ収集)
  └── セッションのJSONLトランスクリプトを自動収集
       ↓
BigQueryテーブル(データ蓄積)
  └── ツール使用・モデル・トークン・ワークスペース等を構造化
       ↓
Webダッシュボード(可視化)
  └── Claude Codeで1日強で構築

可視化した内容は、ユーザー別のSkill・サブエージェント利用比率、モデル別トークンコスト、ワークスペース単位のドリルダウンなどだ。

導入効果(参考値): チームの100%がプラグインをインストールし、ダッシュボード公開後1週間でサブエージェント利用数が約1.5倍になった。そして最も大きかったのが「複数人が同内容のSkillを個別作成していた」という属人化の発覚だ。データで可視化して初めて、重複した努力が見えた。

ビフォーアフター

Before(従来のデータ分析ワークフロー)

KPIを確認したいと思ったら、BigQueryコンソールを開き、テーブルスキーマを確認し、SQLを書いて構文エラーを修正し、実行して結果を解釈し、Slackに手動でコピーする。所要時間:1〜2時間。

After(BigQuery Skill + サブエージェント)

「先週のKPIレポートを作ってSlack #metricsに投稿して」と入力するだけ。data-scientistサブエージェントがBigQuery Skillを参照してスキーマを理解し、bq CLIで複数クエリを自動実行して、結果をSlack MCPが投稿する。所要時間:5〜10分(人間の介入ゼロ)。

「6ヶ月以上SQLを手書きしていない」という状態は、この仕組みの上にある。

まとめ:今日からできること

  1. 今すぐ(5分): 「SELECT * FROM テーブル名 LIMIT 5 をbq CLIで実行してスキーマを確認して」と試す(BigQuery権限があれば即日使える)
  2. 今日中: `~/.claude/skills/bigquery-skill/SKILL.md`を作成し、自分のプロジェクトのテーブル一覧とクエリルール(テストアカウント除外条件など)を書く
  3. 今週: `data-scientist`サブエージェントのYAMLを作成し、複雑な分析タスクを委譲してみる
  4. チーム展開: BigQuery SkillをプロジェクトリポジトリにチェックインしてClaude Codeを「チーム共通の分析ツール」にする

「SQLを書く時間」から「何を分析するか考える時間」へ——この移行がデータ分析ワークフロー改善の本質だと思っている。

コメント

タイトルとURLをコピーしました