JSON → YAMLスキーマ生成
サンプルJSONデータからJSON Schemaを生成し、JSONまたはYAML形式で出力します。
このツールについて
JSON → YAMLスキーマ生成ツールは、サンプルJSONデータからJSON Schema定義を 自動作成し、標準的なJSONまたはYAML形式で出力する無料のブラウザベースユーティリティ です。CI/CDの設定ファイル、Kubernetesマニフェスト、Helmチャート、GitHub Actions ワークフローなど、バリデーションが重要なYAML中心のエコシステムで特に有用です。
JSON SchemaはJSONドキュメントの構造を記述するための業界標準ボキャブラリです。 APIコントラクトのバリデーション、設定ファイルのリンティング、フォーム生成、 コード生成ツールに活用されています。JSON SchemaはJSON文書として定義されますが、 DevOpsやプラットフォームエンジニアリングチームの多くは可読性の観点からYAMLを好みます。 このツールは手動変換なしにYAML形式で直接スキーマを生成することで、 そのギャップを埋めます。
ジェネレーターはJSON構造全体にわたって再帰的に型推論を実行します。プリミティブ値は
対応するJSON Schema型にマッピングされます — string、
number、integer、
boolean、null です。ネストされたオブジェクトは
独自の properties ブロックを持つネストされたスキーマ定義を生成します。
配列は要素型の一貫性が分析され、混合型が含まれる場合は
oneOf コンポジションが生成されます。各プロパティにはキー名から
自動生成された可読性の高い title が付与されます。
すべての処理はネイティブJavaScript APIを使用してブラウザ内で完結します。データが 外部に送信されることはありません — サーバーとの通信、ログ記録、入力に対する サードパーティの分析は行われません。内部APIレスポンス、シークレットを含む設定 ファイル、本番データのサンプルなど機密性の高いペイロードにも安全にお使いいただけます。 Draft-07とDraft 2020-12の選択、requiredフィールドの切り替え、入力データからの サンプル値の埋め込み、ドキュメント用のdescriptionプレースホルダーの追加が可能です。
使い方
- 左側のサンプルJSONパネルにサンプルJSONを貼り付けるか入力します。
- 入力に合わせて右パネルに生成されたスキーマが自動表示されます。
- 出力フォーマットを選択して、YAML形式またはJSON形式のJSON Schemaを切り替えます。
- ドラフトバージョン(Draft-07またはDraft 2020-12)を選択して
$schema識別子を設定します。 - All requiredを切り替えて、各オブジェクトレベルの
required配列の含否を設定します。 - Include examplesを有効にすると入力データからサンプル値がスキーマに直接埋め込まれ、Include descriptionsを有効にするとドキュメント用の空のプレースホルダーフィールドが追加されます。
- CopyをクリックするかCtrl+Shift+Cを押して生成されたスキーマをクリップボードにコピーします。Ctrl+Enterで組み込みサンプルを使用して空の状態から生成できます。
JSON → YAMLスキーマ生成の人気サンプル
よくある質問
JSON SchemaとはなにでYAML形式が必要な理由は?
JSON SchemaはJSONデータの構造を記述する宣言的言語です。APIバリデーション、設定リンティング、フォーム生成に使用されます。多くのDevOpsツール(Kubernetes、Helm、GitHub Actions)はYAMLをネイティブに使用するため、YAML形式のスキーマがあると、YAML設定ファイルと並行して読みやすく、レビューしやすく、メンテナンスしやすくなります。
YAML出力は有効なJSON Schemaですか?
はい。出力はJSON Schema仕様に正確に準拠しています。YAMLはJSONのスーパーセットであるため、YAMLで表現されたJSON SchemaはJSON版と意味的に同一です。ほとんどのスキーマバリデーションツールはYAML入力を直接受け入れ、必要に応じてJSONに戻すこともできます。
ネストされたオブジェクトはどのように処理されますか?
JSON内の各ネストされたオブジェクトは再帰的に分析され、独自のtype、properties、オプションのrequiredフィールドを持つネストされたスキーマを生成します。ネストの深さに制限はなく、多階層の設定ファイルのような深くネストされた構造にも完全に対応します。
混合型の配列はどうなりますか?
配列内のすべての要素が同じ型の場合、シンプルなitemsスキーマが生成されます。配列に異なる型の要素が含まれる場合(例:文字列と数値)、各型を列挙するoneOfコンポジションが生成されます。空の配列はオープンなitemsスキーマを生成し、手動で調整できます。
データは安全ですか?
はい。すべてのスキーマ生成はJavaScriptの組み込みJSON.parseとカスタム推論ロジックを使用してブラウザ内で完全に実行されます。データがサーバーに送信されることはありません。ブラウザの開発者ツールのNetworkタブで確認できます。
Draft-07とDraft 2020-12の違いは何ですか?
Draft-07は多くのツールやライブラリで広くサポートされている安定版のJSON Schemaです。Draft 2020-12は動的参照の改善されたボキャブラリ、タプルバリデーション用のprefixItems、条件付きスキーマのクリーンなセマンティクスを導入した新しいバージョンです。ほとんどのユースケースでは生成されるスキーマは両バージョンと互換性があり、主な違いはスキーマが準拠する仕様を識別する$schema URLです。
生成されたスキーマをKubernetesやHelmで使えますか?
もちろんです。YAML出力はHelmチャートバリデーション用のvalues.schema.json(YAML形式)として直接使用でき、Kubernetesのカスタムリソース定義(CRD)のスキーマ定義としても使用できます。kubeval、kubeconform、VS Code YAML拡張機能などのツールと組み合わせて、マニフェストをスキーマに対してバリデーションすることもできます。