企業AIエージェントは、まずデータ基盤を片づけないと働けない
企業AIエージェントのデモは簡単です。チャット欄に「先月の売上を地域別に出して」と打つ。モデルがSQLを書く。表とグラフが出る。拍手。
企業AIエージェントのデモは簡単です。チャット欄に「先月の売上を地域別に出して」と打つ。モデルがSQLを書く。表とグラフが出る。拍手。
本番はそこから急に泥臭くなる。
どのテーブルが正しいのか。誰が見ていいのか。PIIは隠れているのか。指標の定義はどこにあるのか。古いデータと新しいデータが混ざっていないか。SQLが合っていても、口径が間違っていたら答えは間違いです。
CloudflareのTown LakeとSkipperの記事が良いのは、この泥臭さを隠していないところです。彼らが作ったのは「自然言語でSQLを書くAI」ではない。AIが安全に働けるデータ基盤です。
問題は、データがあることではなく、会社の中で散らばっていること
Cloudflareは毎秒10億件以上のイベントを処理し、330以上の都市、120以上の国にネットワークを持つ。データは当然多い。ただ、多いだけでは価値にならない。
記事によると、データはPostgres、ClickHouse、Kafka、BigQuery、R2、長いパイプライン群に散っていた。簡単な問いにも、どのシステムを叩くか、どの認証情報が要るか、どのクエリ言語を書くか、データがサンプリングされているか、新鮮かを知る必要があった。
これは多くの企業で起きている。データはある。でも、知っている人しか使えない。聞ける人が辞めると、地図も一緒に消える。
Skipperはこの上に直接置かれたわけではない。まずTown Lakeを作った。
Town Lakeは、AIのための床を作っている
Town Lakeの中核は、統一SQL入口です。Apache TrinoでPostgres、ClickHouse、R2上のIcebergテーブルをまたいでクエリできる。R2 Data CatalogとIcebergで古いデータも安く問い合わせ可能にする。DataHubにテーブル、カラム、所有者、血縁、用語を入れる。Lifeguardでアクセス制御をする。SkimmerでPIIを検出する。TransformerでSQL変換のDAGを管理する。
ここで大事なのは、派手な新技術ではない。むしろ退屈な部品です。メタデータ、権限、血縁、PII、監査、取り込み、スキーマ進化。
でもAIエージェントにとっては、この退屈さが命です。
モデルは、テーブル名の羅列だけを渡されると平気で幻覚する。ありそうなjoinを書く。似たカラムを使う。古い口径で数字を出す。自信満々に間違える。
だからCloudflareは、モデルにただSQLを書かせない。DataHubのスキーマ、所有者、カラム説明、過去のjoinパターン、人間の注釈、Transformerから出るSQL由来の血縁、短いデータモデル文書、必要なら実行時のDESCRIBEや小さな探査クエリを渡す。
つまりSkipperの賢さは、プロンプトではなく文脈の地層から来ている。
セキュリティモデルが、そのままデータモデルになる
もう一つ重要なのは、default-closedです。
統一データ基盤を作ると、便利さと同時に巨大な漏洩面を作る。Cloudflareは、開けてから閉じるのではなく、レビューされるまで閉じる方向を選んだ。新しいテーブルやカラムはSkimmerでスキャンされ、PIIや敏感情報が分類され、承認されるまでクエリできない。PIIはデフォルトでマスクされ、必要なときだけ権限とログ付きで解除する。
Skipperもこの境界を越えない。ユーザーが見られないテーブルは、Skipperも見られない。共有ダッシュボードを開く人にも、その時点の権限を確認する。
これが本番のAIエージェントです。モデルに特別な鍵を渡さない。ユーザーの権限で動かす。監査できる。あとから追える。
日本企業がここを飛ばすと、たぶん事故る。自然言語SQLは便利です。でも、便利なものほど権限境界を溶かしやすい。
Code Modeは、道具呼び出しをコードにする
SkipperのMCP実装で面白いのはCode Modeです。
普通のツール型エージェントは、ツールを一つずつ呼ぶ。検索、スキーマ取得、SQL作成、実行、結果取得、グラフ作成。何度もモデル往復が発生する。遅いし高いし、文脈も毎回膨らむ。
Cloudflareは、30個の細かいツールをそのまま出すのではなく、searchとexecuteのような入口を用意し、モデルにJavaScriptを書かせる。そのコードがDynamic Worker isolateで動く。複数ステップの作業を一つのコードとして表現でき、速く、安く、監査しやすい。
これはかなり実務的な発想です。エージェントの思考を、チャットの散らばったツール呼び出しではなく、実行可能で読めるコードに寄せている。
個人的な見方
この話の主役はSkipperではないと思う。主役はTown Lakeです。
AIエージェントは、新人社員に似ている。やる気はある。手も動く。でも、会社の地図、権限、用語集、正しい帳簿、禁止事項がなければ、ろくに働けない。Cloudflareは新人を賢くする前に、会社側を働ける形にした。
企業AIでよくある失敗は、ここを逆にすることです。先にチャットUIを作る。SQL生成を試す。プロンプトを直す。幻覚に怒る。違う。先に片づけるべきは、データ基盤です。
日本企業にもかなり刺さる。部門ごとにデータが散り、ExcelとDWHと業務DBとBIが並び、指標の口径が人に依存している会社は多い。そこにAIを置いても、AIは会社の混乱を速く喋るだけです。
Skipperの教訓は冷たい。AIエージェントを働かせたいなら、まず会社を、エージェントが安全に読める形にする。地図、鍵、帳簿、監査。退屈なものが、いちばん効く。
―― AI未来編集室「AIウォッチ」
← 一覧へ