powered by TechFeed
表示モード
Deep Dive

AIエージェントは「おかしなデータ」に気づけない — 人間の暗黙知に頼ってきた30年分のデータ設計を見直す時が来た

8月27日、Thoughtworksのプリンシパルデータエンジニアらが「Making Your Data Ready for Agentic AI」と題した記事を公開した。AIエージェントが信頼して活用できるデータ基盤を設計するために何が必要かを、具体的なアーキテクチャパターンとコード例を交えて論じている。

8月27日、Thoughtworksのプリンシパルデータエンジニアらが「Making Your Data Ready for Agentic AI」と題した記事を公開した。AIエージェントが信頼して活用できるデータ基盤を設計するために何が必要かを、具体的なアーキテクチャパターンとコード例を交えて論じている。


人間向けデータ設計の限界

30年以上、データシステムは「人間が画面の前に座って使う」前提で作られてきた。ダッシュボード、レポート、アナリストクエリ——すべてに共通するのは、人間が持つ「暗黙知」への依存だ。

熟練したアナリストは「revenue」が自社のコンテキストで何を指すかを知っている。数字が怪しければ立ち止まり、ダブルチェックする。休日に落ちる売上を異常値と見なさず、文脈で判断できる。

AIエージェントにはこれが一切ない。 人間が「なんかおかしい」と感じて手を止めるところを、エージェントは確信をもって誤った値に基づき行動する。この「失敗モードの違い」が本記事全体の核心だ。


最大の問題:エージェントは悪いデータを嗅ぎ分けられない

記事が最も力を入れて論じているのが、データ品質とデータコントラクトの重要性だ。

具体的なシナリオで考えるとわかりやすい。価格エージェントが商品Xの価格を問われる。実際には$49.99から$59.99に更新済みだが、エージェントのデータソースはまだ古い値を返す。エージェントは$49.99を顧客に提示し、顧客は購入する。会社は1件あたり$10を失う。エージェントのワークフローは完璧に動いていた。問題はデータだ。

人間の営業なら「先週更新しなかったっけ?」と立ち止まる。エージェントは立ち止まらない。

この問題の規模感を示すデータとして、記事はPreciselyとDrexel大学LeBow経営大学院による505名のデータ・分析リーダーを対象とした調査(2026年State of Data Integrity and AI Readiness)を引用している。それによれば、87%が「自社データはAI対応済み」と自信を持つ一方、43%が「データの準備不足が最大の障壁」と回答している。 自信と実態のギャップそのものが、組織規模の「価格エージェント問題」だ。


データコントラクトをコードとして書く

この問題への処方箋がデータコントラクト——スキーマを「お作法」ではなく「法律」として扱う設計思想だ。

Open Data Contract StandardData Contract CLIThoughtworks Tech Radar 33でも推奨)を使えば、以下のような制約をYAMLで明示できる。

apiVersion: v3.1.0
kind: DataContract
id: product-pricing
name: Product Pricing
version: 1.0.0
status: active
schema:
  - name: product_pricing
    physicalType: table
    properties:
      - name: price
        logicalType: number
        physicalType: decimal
        required: true
        quality:
          - type: sql
            description: Every price must be greater than zero
            query: SELECT min({property}) FROM {object}
            mustBeGreaterThan: 0
      - name: currency
        logicalType: string
        physicalType: varchar(3)
        required: true
        quality:
          - type: sql
            description: Currency must be a supported ISO code
            query: SELECT count(*) FROM {object} WHERE {property} NOT IN ('USD', 'EUR', 'GBP')
            mustBe: 0
      - name: ingested_at
        logicalType: timestamp
        physicalType: timestamp
        required: true
slaProperties:
  - property: latency
    value: 24
    unit: h
    element: product_pricing.ingested_at

重要なのは末尾のslaPropertiesだ。「直近24時間以内にリフレッシュされていなければコントラクト違反」と定義することで、先の価格シナリオをアーキテクチャのレベルで防止できる。エージェントが古いデータを見る前に、そのデータ自体が弾かれる。

コントラクトの検証は3軸で行う:

  • スキーマ強制:型・制約の明示的な検証
  • フレッシュネスSLA:データセットごとに許容される最大陳腐化時間を定義。バッチ更新では不十分なケースに対処
  • 品質ゲート:CI/CDでコントラクトを検証し、違反時はデプロイをブロック

違反データはエージェントに見せない:検疫パターン

コントラクトを定義しても、違反データは必ず発生する。その対処が検疫パターン(Quarantine Pattern)だ。

生データはまずバリデーションゲートを通過する。スキーマ・フレッシュネスSLA・品質ルールの3つすべてをパスしたデータだけが「認定済み・エージェント対応」ストアに流れ込む。1つでも失敗したデータはデッドレターキューに隔離され、アラートが発火し、人間がレビューする。

エージェントは悪いデータを決して目にしない。 先の価格シナリオでは、ingested_atが24時間を超えた時点でレコードが検疫され、エージェントは「現在の価格データがありません」と返す。誤った数字を自信満々に返すよりはるかにマシな失敗モードだ。

この仕事はモデルではなくデータアーキテクチャの責務だ。より良いモデルは、悪いデータからあなたを救わない。


メダリオンアーキテクチャにエージェント専用層を追加する

Databricksが普及させたメダリオンアーキテクチャ(Bronze→Silver→Gold)をエージェント向けに拡張する提案も興味深い。

  • Bronze:生データをそのまま保存(監査・リネージュ用)
  • Silver:スキーマ適用・重複排除・コントラクト検証(検疫パターンが機能する層)
  • Gold:認定済み。セマンティックモデルが参照し、アクセスが統制される

記事はここに第4層「Adaptive Gold」を追加することを提案する。エージェントが自身のクエリパターンを監視し、頻繁にアクセスされるデータの組み合わせを特定して最適化されたデータセットを自動で生成する層だ。エージェントが受動的な消費者から能動的なデータキュレーターになる。


Figure 1: データはBronze→Silver→Gold→Adaptive Goldと流れ、エージェントはGold以上のみアクセスできる

エージェントが見ていいのはGold以上だけ。 BronzeとSilverはリネージュ・デバッグ・人間調査用であり、エージェントに生データや部分検証済みデータを渡すことは「価格問題の再招待」に等しい。


AI対応データの5条件

記事は、エージェントに渡すデータが満たすべき属性を5つに整理している。

属性 人間がやっていたこと データ側で必要なこと
Trusted 違和感のある数字で立ち止まる 精度・鮮度・バリデーションを組み込む
Contextual 「revenue」の定義を知っている 意味をデータ自体に明示する
Traceable 判断の理由を後から説明できる エージェントの推論を発生時点でキャプチャ
Governed 役割と判断でアクセスを制限 アクセス範囲を設計で制御・監査可能にする
Operational ダッシュボードを見て自分で行動する エージェントが直接アクションを実行できる

1つでも欠ければ、エージェントは人間のように「緩やかに劣化」しない。確信をもって失敗する。


詳細はMaking Your Data Ready for Agentic AIを参照していただきたい。