powered by TechFeed
表示モード
ハウツー

Claude CodeがPythonを書かずにデータファイルへ直接SQLを実行できる「duckdb-skills」 — 自然言語の質問をDuckDBが厳密な答えに変換する役割分担

9月16日、DuckDBチームが「DuckDB Skills for Claude Code」と題した記事を公開した。この記事では、Claude CodeにDuckDB CLIを使わせるプラグイン「duckdb-skills」の機能と使い方について詳しく紹介されている。AIがデータを読む方法を変えるClaude CodeなどのAIエージェントがデータファイルを分析する際、現状ではPythonスクリプトを書いて実行し、その出力を読むという手順を踏む。動くには動くが、遅い上に、カラム名や型をエージェントが推測するため精度に限界がある。duckdb-skillsはこの問題をシンプルに解決する。DuckDBはCSV・JSON・Parquet・Avro・Excelなど主要なデータ形式をそのまま読めるインプロセス分析用データベースエンジンだ。このプラグインを入れると、Claude CodeはPythonを書く代わりにDuckDB CLIを直接呼び出してSQLを実行するようになる。会話とSQLの二層構造が面白い記事中のデモが実際の動作をよく示している。You: How many taxi trips...

9月16日、DuckDBチームが「DuckDB Skills for Claude Code」と題した記事を公開した。この記事では、Claude CodeにDuckDB CLIを使わせるプラグイン「duckdb-skills」の機能と使い方について詳しく紹介されている。

AIがデータを読む方法を変える

Claude CodeなどのAIエージェントがデータファイルを分析する際、現状ではPythonスクリプトを書いて実行し、その出力を読むという手順を踏む。動くには動くが、遅い上に、カラム名や型をエージェントが推測するため精度に限界がある。

duckdb-skillsはこの問題をシンプルに解決する。DuckDBはCSV・JSON・Parquet・Avro・Excelなど主要なデータ形式をそのまま読めるインプロセス分析用データベースエンジンだ。このプラグインを入れると、Claude CodeはPythonを書く代わりにDuckDB CLIを直接呼び出してSQLを実行するようになる。

会話とSQLの二層構造が面白い

記事中のデモが実際の動作をよく示している。

You: How many taxi trips in that Parquet file were longer than 10 miles?
Claude runs:
    SELECT count(*) FROM 'trips.parquet' WHERE distance > 10;
DuckDB:
    Binder Error: Referenced column "distance" not found
    Candidate bindings: "trip_distance"
Claude reads the error, checks the columns and retries:
    SELECT count(*) FROM 'trips.parquet' WHERE trip_distance > 10;
DuckDB:
    ┌──────────────┐
    │ count_star() │
    ├──────────────┤
    │       184362 │
    └──────────────┘
Claude: 184,362 of the trips were longer than 10 miles.

ユーザーとClaudeは自然言語で会話し、ClaudeとDuckDBはSQLで会話する。ClaudeがSQLを間違えてもDuckDBのエラーメッセージを読んで修正し、正しい答えを返す。DuckDBが厳密な答えを出し、Claudeがそれを人間向けの言葉に変換するという役割分担だ。

インストール

DuckDB CLIが必要だが、未インストールの場合はプラグイン側がインストールを案内する。Claude Codeへのセットアップは2行で完了する。

/plugin marketplace add duckdb/duckdb-skills
/plugin install duckdb-skills@duckdb-skills

なお、Claude Codeのプラグインマーケットプレイス(/plugin marketplace)はClaude Codeが提供するプラグイン配布の仕組みであり、duckdb-skillsはその上に公開された拡張プラグインとして位置づけられる。上記2行目のコマンドは元記事に記載されたものをそのまま引用している。

インストール後は /duckdb-skills:skill-name の形式で各スキルを呼び出せる。ただし、スラッシュコマンドを直接入力しなくても、「このCSVをParquetに変換して」のように自然言語で指示すれば、Claude Codeが適切なスキルを自動で選ぶ。

搭載スキルの一覧

スキルは用途別にグループ化されている。

データの読み込み・変換

  • query — 接続済みDBやファイルに対してSQL、または自然言語で質問を実行
  • read-file — CSV・JSON・Parquet・Avro・Excel・SQLite・Jupyterノートブック等を読み込み、スキーマをプロファイリング。S3・GCS・Azure・HTTPSのリモートファイルも対象
  • convert-file — ファイル形式の変換(例:CSV→Parquet、JSON→Excel)
  • attach-db — DuckDBデータベースをアタッチしてセッション状態に記録

リモート・空間データ

  • s3-explore — S3・R2・GCS・MinIOなどS3互換ストレージのデータをダウンロードせずにリスト表示・クエリ実行
  • spatial — 距離計算・最近傍探索・空間ジョイン・地理的検索。Overture Mapsの無料データも利用可能

ドキュメント検索・セッション管理

  • duckdb-docs — DuckDBおよびDuckLakeのドキュメントとブログ記事を検索(DuckLakeはDuckDBチームが開発するオープンなデータレイクフォーマット仕様)
  • read-memories — 過去のClaude Codeセッションのログから、以前の決定事項・命名規則・未解決TODOを検索
  • install-duckdb — DuckDB拡張機能のインストール・更新(コミュニティ拡張も対応)

セッション状態はプロジェクトごとにstate.sqlという単一ファイルで管理される。ATTACHUSELOAD文やシークレット、マクロを記録したSQLスクリプトで、duckdb -init state.sqlでセッションを復元できる。

read-memoriesスキルの設計が興味深い

複数スキルの中で特に目を引くのがread-memoriesだ。Claude Codeのセッションは基本的に毎回リセットされ、前回の判断経緯や決めた命名規則を引き継げない。このスキルは過去のセッションログを検索して文脈を復元する。「以前のセッションでDuckDBのスキーマについて何を決めたか?」という問いに答えられる設計になっている。

プラグインのソースコードはgithub.com/duckdb/duckdb-skillsで公開されており、問題報告や提案はIssueページで受け付けている。DuckDB関連のエラーを報告する際はduckdb --versionの出力とエラーメッセージ全文を添えることが推奨されている。

詳細はDuckDB Skills for Claude Codeを参照していただきたい。