標準化×コード:自治体基幹システムを“スキーマとパッケージ”で運用する提案

IT政策の提案
標準化×コード:自治体基幹システムを“スキーマとパッケージ”で運用する提案

どうも〜おかむーです!今日はちょっとエンジニア寄りの話をしますよ〜

  • 国は「地方公共団体の基幹業務システムの統一・標準化」を進めている(デジタル庁、総務省資料)
  • ただし標準は文書中心で、実装レベルの“コード資産”が足りないことが現場の課題なんです!
  • 要するに、スキーマ+パッケージ+検証用データを公開して運用すれば、一気に現場が楽になるって話です

結論

政府の標準化方針(例:「標準化対象20業務」や標準準拠システムの義務化)自体は正しいです。ただ、政策の“意図”を実装に落とし込むには、機械可読なスキーマ、バージョン管理されたパッケージ、参考実装と検証用データが必要。要するに「仕様のPDF化」だけでは足りないんですよね。現場で再現・検証できるコード資産を公式に配るのが次の一手です!

レポート本文

背景 — 今ある状況の確認

政府はデジタル庁や総務省で、地方基幹業務の標準化を進めています(参考: デジタル庁の方針 / 総務省の標準化・共通化)。またe-Govの行政APIやJapan Dashboard、e-Statといった政府のデータ基盤も育ってきている(e-Gov API、Japan Dashboard、e-Stat)。ただ、以下のズレが残っているんです:

  • 仕様はPDF/文書中心で機械可読アーティファクトが少ない
  • ベンダーや自治体ごとの実装バラつきがある(準拠の曖昧さ)
  • テスト用の標準データセットが公開されていない

要するに「何を守れば合格か」がコードで示されていないんですよ。

エンジニア的に言うと — 何が必要か

コード書く人ならわかると思うんですけど、APIやデータ契約は次の3つが揃って初めて生産的になります:

  • スキーマ(JSON Schema / OpenAPI) — 機械可読な契約
  • 参照実装(ライブラリ/ミニサービス) — すぐ動くサンプル
  • 検証データセット(テストフィクスチャ) — 実際に動かして検証できるデータ
  • これを「gov-schemas」とか「local-gov-sdk」みたいな形でパッケージ化して配る。要するに仕様をnpm/pypiのパッケージにして、自治体やベンダーがinstallするだけで準拠が楽になる、ってことです。

    具体案:スキーマパッケージ設計(サンプル)

    これ見てくださいよ。住民記録の最小限スキーマ例(JSON Schema)を作っておけば、取り込みバリデーションは一発です。

    {
    

    "$id": "https://example.gov/schemas/resident-record/1.0.0.json",

    "$schema": "http://json-schema.org/draft-07/schema#",

    "title": "ResidentRecord",

    "type": "object",

    "properties": {

    "residentId": {"type": "string"},

    "name": {"type": "string"},

    "dateOfBirth": {"type": "string","format":"date"},

    "address": {"type": "string"}

    },

    "required": ["residentId","name"]

    }

    そしてOpenAPIでAPI契約を書いておくと、クライアントSDKも自動生成できます。政府側のe-Gov APIカタログ(https://www.e-gov.go.jp/digital-government/api)と連携させると、APIの発見性も上がるんですよね。

    実装例:簡単なバリデーション(Python)

    エンジニア的に言うと、こういうコードで即検証できます:

    from jsonschema import validate, RefResolver
    

    import json

    schema = json.load(open('resident-record-1.0.0.json'))

    instance = json.loads('{"residentId":"123","name":"山田太郎"}')

    validate(instance=instance, schema=schema)

    print('OK')

    要するに、スキーマ一本あれば取り込みで弾ける。PDF読みながら実装してバグるより速いんです!

    スキーマの進化と互換性戦略

    政策は変わる。だからバージョニングが重要で、セマンティックバージョン(MAJOR.MINOR.PATCH)+互換性ポリシーをドキュメントにする。マイナーで後方互換の拡張、メジャーで破壊的変更、って明確にしておけば自治体側が対応計画を立てられます。

    パッケージ例(package.jsonのイメージ):

    {
    

    "name": "gov-schemas",

    "version": "1.2.0",

    "files": ["schemas/", "fixtures/", "docs/"]

    }

    公開レジストリに置いておけば、ベンダーは依存関係として取り込めるし、自治体内のCIでバリデートすれば導入段階で問題を潰せます(ここではCI/CDという用語は使わないけど、継続的に検証するフローは必要という意味です)。

    実用的な改善提案(短期〜中期)

    • 中央が公式のスキーマレポジトリを用意する(gov-schemasリポジトリ)
    • 公式の参考実装(軽量APIサーバ、SDK)をOSSで公開
    • e-GovのAPIカタログとスキーマレポジトリをリンクさせる(OpenAPI URLを明記)
    • BODIKや地方のオープンデータ(BODIK APIや自治体標準オープンデータ)を検証用フィクスチャとして統合する
    • 互換性ルール(バージョニング方針)を明文化して技術仕様に含める

    これをやれば、PDFの「標準」を現場で再現可能な「コード」に変換できます。結果として自治体の導入工数が下がり、ベンダーの実装差分も減るはずです。

    まとめ

    • 標準化政策は正しいけど、文書中心だと実務でバラつく
    • 機械可読スキーマ + パッケージ化 + 参考実装 + テストフィクスチャがあれば劇的に楽になる
    • e-Gov API、Japan Dashboard、e-Stat、BODIKと連携して公式のコード資産を作るべき

    おかむーから一言

    僕はコードで政策の意図を再現できる状態にするのが好きなんです。標準は“読む”ものじゃなくて“使う”ものにしよう!

    シェアする