【データコントラクト】

データコントラクト とは?

💡 データの「約束事」を明文化して、壊れないパイプラインを作る契約書
📌 このページのポイント
データコントラクト 提供者と消費者の約束 データ提供者 上流チーム ユーザーDB 注文イベント データコントラクト スキーマ定義(型・制約) 品質ルール(NOT NULL等) 鮮度SLA / 所有者情報 データ消費者 下流チーム ダッシュボード MLモデル CI/CDパイプラインでの自動検証 スキーマ変更PR コントラクト検証 OK: マージ NG: ブロック
データコントラクトによる品質保証の仕組み
ひよこ ひよこ

データコントラクトって、なんで必要なの?

ペンギン先生 ペンギン先生

たとえば上流チームが「ちょっとカラム名変えよう」とか「このカラム廃止しよう」とやると、下流のダッシュボードMLモデルが突然壊れるんだ。コントラクトがあれば「勝手に変えないでね」と約束できるよ

ひよこ ひよこ

API仕様書みたいなもの?

ペンギン先生 ペンギン先生

まさにその通り!APISwaggerOpenAPI仕様書があるように、データにも「このテーブルにはこのカラムがあって、型はこれで、NULLは許可しない」という仕様書を作るんだ。それがデータコントラクトだよ

ひよこ ひよこ

具体的にはどんなことを定義するの?

ペンギン先生 ペンギン先生

スキーマ定義(カラム名、データ型)、品質ルール(NULLの許可、値の範囲)、鮮度(何分以内に更新されるか)、所有者(どのチームが責任を持つか)、SLA(稼働率)なんかを定義するよ

ひよこ ひよこ

データメッシュと関係があるって聞いたけど?

ペンギン先生 ペンギン先生

データメッシュでは各ドメインチームが自分のデータを「プロダクト」として提供するんだけど、チーム間の境界でデータの形式がバラバラだと困るよね。コントラクトはチーム間のインターフェースを明確にする仕組みなんだ

ひよこ ひよこ

機械的にチェックもできるの?

ペンギン先生 ペンギン先生

YAMLJSON Schemaで定義しておけば、CI/CDパイプラインで自動検証できるよ。PRでスキーマ変更があったら「このコントラクトに違反しています」と自動で弾ける。手動レビューだけに頼らない仕組みが大事だね

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「データコントラクト」って出てきたら「データの形式や品質を提供者と消費者で約束する仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「Data Contract」 = データ契約
💬 ソフトウェアのAPI契約と同じ発想で、データにも「こういう形式で提供します」という契約を結ぶ考え方だよ
← 用語集にもどる