2026.07.08 (水)
2026.07.16 (木) 更新

✨ GPT-5.5の要約  

JSON・CSV・DuckDBの間で揺れていた基準データをPostgreSQLへ移しながら、元となるevidence、observation、基準データ、実行snapshot、納品用成果物を分離した記録。

JSON・CSV・DuckDBの間で基準データが揺れた

ここ数日、データ収集、検証、実行、納品のフローをセットアップしていると、いろいろな問題が次々に出てきた。やはり自分はDBをきちんと学んだことも扱ったこともないので、データの保存方式を頻繁に変え、そのたびに単なる置き換えでは済まなかった。

最初はデータをJSON/CSVで収集し、閲覧用にDuckDBを付けて確認していた。ところが、ワーカーの成果物とコーディネーターがDBを作り直し続ける構造が混ざり、何が原本データで何が基準データなのかがずっと揺れた。

そこでMySQLでDBを作るプランも立ててみた。ただ、問題はMySQLそのものというより、複数のワーカーやスクリプトが基準データを直接更新する構造だった。そのまま進めれば、同時update、衝突、所有権、ロールバックの問題が繰り返される可能性が高かった。

その後も別の方式を検討したが、核心は同じだった。収集データ、基準データ、実行データ、納品用成果物の境界が曖昧なら、結局同じ問題がまた起きる。

DB製品よりmutation ownershipが核心だった

PostgreSQLへ移したからといって、問題が勝手に解決するわけではなかった。どのDBを使うかより先に、誰が基準データを変更できるのかを決めなければならなかった。

ワーカーは原本evidenceとobservationをappend-onlyで残す。基準データは直接修正しない。コーディネーターがevidenceとobservationを検証した後、基準データと基準値を更新する。基準データを変更する責任を一か所に集めてこそ、衝突が起きたときに何を戻すべきかも追跡できた。

PostgreSQLの中で役割を分けた

そこで今日PostgreSQL DBへ移しながら、ここ数日セットアップしてきた全体の流れも一緒に整理した。すべてをDBという一つの塊として処理せず、役割を分けた。

  • 元となるevidence
    • 公開情報から収集した根拠と元の値を保存する
    • 処理済みの値と状態は元データを上書きせず、別の履歴として残す
    • JSON/CSVファイルはevidence mirrorにはなり得るが、基準データではない
  • observation
    • ワーカーは担当する収集チャネルの観測値だけをappend-only ledgerへ提出する
    • 発見と補強は別の役割として分ける
    • ワーカーは基準データを直接修正しない
  • 基準データ
    • コーディネーターがevidenceとobservationを検証する
    • 検証済みの値だけを定めた構造に合わせて基準データへ反映する
    • viewは計算、検証、exportのための表面として使う
  • 実行snapshot
    • 収集viewをそのまま実際の実行基準にはしない
    • 重複除去と品質ゲートを通過した対象を、ある時点のsnapshotとして固定する
    • 実行結果と除外・後続状態は基準データから分離して管理する
  • 納品用成果物
    • CSV、Google Sheet、Excel、vox.ai向けのファイルは、基準データまたは実行snapshotから生成する
    • これらは表示または納品のための成果物である
    • 成果物を再び基準データのように修正しない

根拠から実行と納品まで追跡できるようになった

こうして、収集した根拠がどこに積まれ、ワーカーが何を残し、どの値が基準値になり、どのsnapshotが実際の実行に使われ、何が納品用成果物なのかを追跡できるフローが完成した。

もちろん、まだまだ足りない構造なので、これから触るべきところは多いだろう。引き続きテストし、フィードバックし、修正する中で、いろいろな大変動が起きるはずだ。そしてそうやってフローも、ハーネス構造も、自分の直感も全部発展していくのだろう。

自分のフローセットアップが、もしかしたら誰かの役に立つかもしれないと思い、共有してみる。

コメントする