データスキーマ仕様

全データセットは共通の meta + slices 構造を持ちます。

interface Dataset<T> {
  meta: DatasetMeta
  slices: TimeSlice<T>[]   // effectiveFrom 昇順
}

interface DatasetMeta {
  id: string               // kebab-case
  name: string             // 日本語名
  nameEn: string
  category: 'tax' | 'compulsory-insurance' | 'social-insurance' | 'labor' | 'subsidy'
  description: string
  unit: 'JPY' | 'JPY_PER_YEAR' | 'JPY_PER_MONTH' | 'JPY_PER_DAY' | 'RATE' | 'DAY' | 'MIXED'
  updateCycle: 'yearly' | 'on-revision'
  updateMonth: number | null
  sources: SourceRef[]
  revisionHistory: Revision[]   // 新しい順
  notes: string[]
}

interface TimeSlice<T> {
  effectiveFrom: string    // 'YYYY-MM-DD'(この日以降に適用)
  effectiveTo: string | null  // 'YYYY-MM-DD'(この日まで)。null = 現行
  sources: SourceRef[]
  verifiedAt: string       // 一次資料と照合した日
  values: T                // データセット固有の値
}

規約

  • 金額は整数円。上限なしは null(JSON に Infinity は書けないため)。
  • 率は小数(18.3% → 0.183)。percent 表記は持たない。
  • 日付・期間はすべて YYYY-MM-DD
  • スライスは追記のみ。改定時は現行スライスに effectiveTo を入れ、新スライスを追加(過去日の計算互換を保つ)。
  • 全データセットに現行スライスが必ず1本effectiveTo: null)。

これらの不変条件(現行スライス1本・期間の重複/隙間なし・値域)は CI(JSON Schema 検証 + アンカー値テスト)で保証しています。

データ = CC BY 4.0 / コード = MIT。 各データは 出典を明示のうえ編集・加工したものであり、 官公庁が作成・公表したものではありません。

正確性の確保に努めていますが無保証です。業務利用時は必ず一次資料で確認してください。 本データは制度の解釈を提供するものではありません。