倍数バリデーション — JSON SchemaのmultipleOfキーワード

JSON Schemaの multipleOf キーワードを使用して、数値が特定の値の倍数であることを検証する方法を解説します。

Number Constraints

JSON Schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "price": {
      "type": "number",
      "multipleOf": 0.01,
      "minimum": 0
    },
    "angle": {
      "type": "number",
      "multipleOf": 90,
      "minimum": 0,
      "maximum": 360
    },
    "batchSize": {
      "type": "integer",
      "multipleOf": 10,
      "minimum": 10,
      "maximum": 1000
    }
  },
  "required": ["price"]
}

Test Data

{
  "price": 19.99,
  "angle": 270,
  "batchSize": 50
}

詳細な説明

JSON Schemaの multipleOf キーワードは、数値が指定した値の倍数であることを要求します。整数と浮動小数点数の両方に適用できます。

使用例:

  • multipleOf: 1 — 整数のみ許可(integer 型と同等)
  • multipleOf: 0.01 — 小数点以下2桁まで(通貨の金額に最適)
  • multipleOf: 5 — 5の倍数のみ(0, 5, 10, 15, ...
  • multipleOf: 0.25 — 四分の一刻み(時間の記録に便利)

技術的には、multipleOf は剰余演算(モジュロ)でチェックされます。浮動小数点数の精度に関する注意が必要で、multipleOf: 0.1 のような値では浮動小数点演算の丸め誤差が影響する可能性があります。

ユースケース

通貨の金額(小数点以下2桁)、時間のステップ値、数量の単位制約などでmultipleOfを使用します。

試してみる — JSON Schema Validator

フルツールを開く