JSONからシンプルなYAML Schemaを生成する

フラットなJSONオブジェクトを構造、型、必須フィールドを検証するYAML Schema定義に変換する方法を学びます。基本的なプロパティマッピングとスキーマメタデータを解説します。

Basic Schemas

詳細な説明

JSONから基本的なYAML Schemaへ

最もシンプルな変換は、フラットなJSONオブジェクトからその構造を記述するYAML Schemaを生成することです。各キーはJSON値から推論された型制約を持つプロパティエントリになります。

JSON入力の例

{
  "name": "my-service",
  "version": "1.0.0",
  "port": 8080,
  "debug": false
}

生成されるYAML Schema

type: object
properties:
  name:
    type: string
  version:
    type: string
  port:
    type: integer
  debug:
    type: boolean
required:
  - name
  - version
  - port
  - debug

型推論の仕組み

JSON値 YAML Schema型
"hello" string
42 integer
3.14 number
true / false boolean
null nullable(型なし、またはtype: "null"

スキーマメタデータ

生成されたスキーマにメタデータフィールドを追加して充実させることができます:

$schema: "http://json-schema.org/draft-07/schema#"
title: ServiceConfig
description: マイクロサービスの設定
type: object
properties:
  name:
    type: string
    description: サービス識別子
  version:
    type: string
    pattern: "^\\d+\\.\\d+\\.\\d+$"
  port:
    type: integer
    minimum: 1
    maximum: 65535
  debug:
    type: boolean
    default: false

なぜスキーマにYAMLを使うのか?

YAMLスキーマはJSON形式よりも可読性が高く、特に開発者が手動で編集する設定ファイルに適しています。中括弧や引用符がないため視覚的なノイズが減り、コードレビュー時のスキーマ確認が迅速になります。YAMLはコメントもサポートしているため、スキーマファイル内に制約の注釈を直接記述できます。

スキーマに対する検証

ajvyamalepykwalifyなどのツールでYAMLドキュメントをYAMLスキーマに対して検証できます。CI/CDパイプラインでのスキーマ検証は、デプロイ前に設定エラーを検出します。

ユースケース

新しいマイクロサービスを作成する際、サンプル設定JSONから始めて、今後のすべての設定ファイルを検証するスキーマを定義する必要があります。既知の正しいJSONからYAMLスキーマを生成することで、min/max値やパターンなどの追加制約で改良できる即座のスタートポイントが得られます。

試してみる — JSON to YAML Schema

フルツールを開く