【データコントラクト】
データコントラクト とは?
最終更新:
💡 届けるデータの約束を、両側でそろえる
データを提供する側と使う側が、形式・意味・品質・提供条件・責任などを共有する取り決め。定義に加えて検証や変更時の連絡を運用し、意図しない変更への備えを増やす。
📌 このページのポイント
- 提供者と利用者が、形式・意味・品質・責任を共有する
- 項目の型に加え、欠損や更新頻度なども定義できる
- 取り決めを書くことと、実データを検証することは別
- 変更の相談・検証・責任者への連絡まで運用する
どんな問題に役立つの?
提供側が項目名や型を変更すると、そのデータを使う集計や分析が動かなくなることがあるよ。そこで、どんなデータをどの条件で渡すかを両側で共有するんだ。取り決めがあるだけで変更を自動的に防ぐわけではなく、確認や連絡の運用も必要だよ。
テーブルの項目を書けばよい?
項目名や型は大切だけれど、値の意味や品質の条件もあるよ。たとえば「金額の単位は円」「注文IDは欠けない」「更新の頻度は合意した条件に従う」といった内容だね。責任を持つチームや問い合わせ先も共有すると、問題が起きたときに相談しやすい。
必ず同じ書式を使うの?
YAMLを書けば、データの間違いを検出できる?
それだけではないよ。ファイルの書式が仕様に合うかの確認と、実際のデータが品質ルールを満たすかの確認は別。実データを検証するには、ルールを実行するツールや接続、実行のタイミングなどを用意する。CIや定期的な処理に組み込む方法もあるけれど、自動で全部そろうわけではないんだ。
項目を変えたいときは?
使っている側への影響を確認し、必要なら版を分けるなど、移行方法を相談しよう。変更前の検証と、提供中の品質確認も役立つ。データメッシュのように複数のチームがデータを提供する場面でも使えるけれど、それ専用の仕組みではない。書いた取り決めを、実際の運用で使うことが大切だよ。
まとめ:ざっくりこれだけ覚えればOK!
「データコントラクト」って出てきたら「提供するデータの形式や品質、責任を、使う側と共有する取り決め」と思えばだいたいOK!
📖 おまけ:英語の意味
「Data Contract」 = データ契約
💬 ソフトウェアのAPI契約と同じ発想で、データにも「こういう形式で提供します」という契約を結ぶ考え方だよ