公的データの日次取り込み運用
公的機関の公開データを毎日取り込み、時点と出典を保ったまま業務システムの判断材料にする運用の型
官公庁・自治体・独法が公開する統計・台帳・公告・會議録などを、API または全件ファイルから定期的に取得して自前のデータベースに組み直し、その上に判定・検索・通知を載せる運用のこと。kurage-products の製品群では、この運用が「買い切り・オンプレミス・月額0円」という商品形態を成立させる中核になっている。
なぜ「取り込み運用」が主題になるのか
一度ダウンロードして同梱するだけでは、公的データはすぐ古くなる。制度の施行日は動き、事業所は新設・廃止され、入札公告は日々追加され、国会の質疑は会期中に毎日増える。したがって製品の価値は「データを持っていること」ではなく、取り込みを回し続けられることに移る。kappstore-ecosystem の各製品が「ソース同梱・改変自由」であることは、この運用を顧客側で維持できることを意味する。
取り込みの方式
| 方式 | 例 | 設計上の注意 |
|---|---|---|
| 公式 API の定期取得 | 官公需情報ポータル(knyusatsu)、Jグランツ(kurage-subsidy-navi)、国立国会図書館の国会会議録検索API(kseidocal、kurage-kokkai-tracker) | 規約に沿った出典表示を実装まで含める(open-data-license-compliance) |
| 全件ファイルの組み直し | 国税庁の法人番号・インボイス全件ファイル(ktorihiki) | 毎月、全件を再構築して差分ではなくスナップショットを作る |
| 週報・PDF の読み取り | 感染症の週報PDFから名古屋市16区を抽出(kkansen) | PDF しか出ていない領域は自動化の難所になる |
| オープンデータの GIS 取り込み | 国土数値情報、指定緊急避難場所、地番参考図(kurage-flood-hazard-map、kurage-refuge-map、kurage-earthquake-map) | 整備年度が自治体ごとに違う |
| 差分監視 | RSS・API・HTML差分・SSL期限の4方式(kcheckit) | 変更検知そのものを商品にする |
実装は「標準ライブラリだけの Python で1日1回」のような小さなバッチに寄せる。常駐プロセスもポートも要らない構成は self-contained-php-app と相性がよく、閲覧側は PHP1ファイル+SQLite、取得側だけ Python、という分担が繰り返し現れる。
設計原則
1. データ時点を判定結果に必ず添える
evidence-traceability の中核。土砂災害ハザードマップは「データ時点 2026-03-06」を返し、時点を確認できないデータでは判定しない。津波浸水想定は県ごとに整備年度が違うため、結果にその県の時点を表示する。利用者が「いつの情報で判断したか」を知らないまま行動すると、この種のシステムはかえって危険になる。
2. 「区域外」と「未収録」を区別する
unknown-vs-outside-distinction。東京都・福井県・香川県は沿岸があるのに国の津波データに未収録で、黙って「区域外」と返すと安全だと誤解させる。盛土規制法の区域指定は都道府県ごとに進行中で、青森・香川・佐賀・沖縄は未公開。だから「未指定」と明示する。この区別は hazard-map-judgment の前提条件でもある。
3. 公表の有無そのものを情報として出す
学童保育の待機児童は国の公表が PDF だけで、市区町村名が出るのは待機児童50人以上の88市町村のみ。全国16,330人のうち31.4%はどこの市か分からない。製品はこれを「未公表」と書き、推定した数字を出さない。administrative-data-publication-gap は、取り込み運用を設計すると必ずぶつかる構造的な穴である。
4. 増えた側だけでなく消えた側も取る
facility-data-churn。訪問介護は1年半で差し引き667か所増えたが、同じ期間に3,242か所が公表データから消えた。グループホームは4年半で1.60倍になった一方1,618か所が消え、2024年9月末だけで473か所(うち202か所が1法人)。放課後等デイは1.71倍と3,114か所の消滅が同時に起きている。日次・月次のスナップショットを積む運用だからこそ、この「消えた」を測れる。ただし理由は公表されていないので「廃止した」とは書かない。
5. 取得できないときは「取得できない」と書く
防災AIチャットは、情報が取れなかった場合に「出ていない」ではなく「取得できない」と明示する。避難発令の取得失敗を「発令なし」と表示すれば、それは安全側の誤りではなく人命側の誤りになる。
6. 収集を控えるべき対象は取り込まない
国土交通省「川の防災情報」はツールによる定期的な収集を控えるよう求めているため、取り込まずリンクで案内する。技術的に可能かどうかと、運用してよいかどうかは別である。
鮮度と更新頻度の設計
| 頻度 | 対象 | 例 |
|---|---|---|
| 毎時 | 改ざん・侵害の兆候 | ksecwatch(全ファイルを台帳と比較し、変わった PHP だけを YARA へ) |
| 毎日 | 公告・会議録・新着・制度変更 | knyusatsu、kseidocal、kcheckit |
| 毎朝 | 前日の実績を日報化 | kcallai、kadsai |
| 毎週 | 感染症の定点報告 | kkansen |
| 毎月 | 全件ファイルの組み直し | ktorihiki |
| 随時(年次改定) | 最低賃金・制度カレンダー | kchingin、kseidocal |
失敗の型
実測された落とし穴は measured-pitfall-catalog に集約されている。日次取り込みに固有のものは次のとおり。
- 全件ファイルの列変更・ファイル名変更で静かに壊れる(エラーが出ないまま0件になる)。
- PDF のレイアウト変更で区ごとの数字がずれる。
- 取得失敗を「データなし」として下流に流すと、判定不能が「該当なし」に化ける。
- タイムゾーンと和暦。日本の書類は和暦の日付を含み、CSV は Shift_JIS のことがある(openvpm の日本語版キットなど)。
- レート制限と礼儀。毎日1回・1リクエストずつを守る。
取り込み済みデータの差し替え可能性
日次取り込みの仕組みを商品にすると、データだけを差し替えて他地域へ展開できる。municipality-data-swap-expansion がそれで、名古屋市版を同梱し「JSON 2ファイルの差し替えで他自治体へ」という形を繰り返す(kurage-seido-navi、kecnavi、kibasho、kposting)。nagoya が実質的な参照実装になっているのは、公表の粒度とオープンデータの整備状況が揃っているためである。
関連する製品と概念
- 代表例:kkansen(週次の地図化)、kurage-kokkai-tracker(会議録の継続収集)、kurage-subsidy-navi(API 日次+出典表示)、kgeop ではなく ktrackgeo(AI クローラーの来訪実測)
- 判定に使う側:deterministic-core、judgment-engine-bundle
- 外部に出さない原則:no-external-data-egress、local-llm
- 住所から引く入口:address-lookup-navigator
- 基盤となる事業構造:kurage-platform、kappstore-ecosystem、kurage-products
まとめ
公的データの日次取り込み運用は、(1) 小さなバッチで回し、(2) 時点と出典を結果に貼り、(3) 未収録・未公表・取得失敗を正直に分け、(4) 消えたものも記録するという4点に集約される。この型を守る限り、月額0円・オンプレミス・AI 無しでも業務システムとして成立する。逆にこの型を外すと、データが新しくても判断を誤らせる道具になる。
Kurage.AI に質問する
