このツールとは?
YAMLは、Kubernetesのマニフェスト、Docker Compose、GitHub ActionsやGitLab CIのパイプライン、Ansibleのplaybookなど、多くのモダンな設定ファイルで第一選択となっているフォーマットです。手作業でファイルを編集する人間にとってJSONより読みやすいからです。ほとんどのキーに引用符が不要で、末尾のカンマで間違える心配もなく、コメントにも対応しています。一方JSONは、ほとんどのAPIやプログラミング言語がネイティブに生成・読み込みする形式です。
このツールは、YAML仕様の広く使われているJavaScript実装であるjs-yamlを使って両者を橋渡ししているため、解析と生成はkubectlやCIランナーのようなYAML対応ツールと同じルールに従います。
JSONをYAMLに変換すると、オブジェクトはインデントされたkey: valueのブロックになり、配列は`-`で始まるリスト項目になります。YAMLをJSONに変換するとその逆が行われ、さらにYAML特有の型の省略表記(引用符なしのtrue、null、数値など)も適切なJSON型に解決されます。
なぜこれを使うのか?
- 双方向対応——同じ画面でJSONからYAML、YAMLからJSONの両方に変換できます。
- js-yamlによる標準準拠の解析・生成——出力は実際のYAMLツール(Kubernetes、CIシステム、Ansible)が期待する形式と一致します。
- 任意の深さのネストされたオブジェクトや配列を処理——YAMLのインデントベースの構造とJSONの波括弧・角括弧の間を変換します。
- YAMLの型の省略表記を正しく解釈——引用符なしのtrue/false、null、数値は文字列ではなく適切なJSON型になります。
- クリップボードへのコピー、または.jsonや.yamlファイルとしてダウンロード可能。
- 100%クライアントサイド——貼り付けた内容はどこにもアップロードされません。
使い方
- 「JSON → YAML」または「YAML → JSON」の方向を選びます。
- 入力欄にデータを貼り付けます。
- 「Convert」をクリックします。
- 結果を確認し、コピーするか「Download」をクリックしてファイルとして保存します。
例
入力
{"name":"Alice","roles":["admin","editor"],"active":true}出力
name: Alice
roles:
- admin
- editor
active: true
配列が"roles"の下にダッシュ付きのリスト項目として展開され、真偽値が文字列"true"ではなく引用符なしのtrueのまま保たれている点に注目してください。
実践的なヒント
- Kubernetesのマニフェストやgithub Actionsのワークフローを書く場合:まずJSONとして構造を下書きし(多くのエディタやAIツールはJSONの方が確実に生成できます)、最終的なファイルとしてYAMLに変換します。
- 動作がおかしいYAML設定をデバッグする場合:JSONに変換すると、どの値が文字列・数値・真偽値なのかが正確にわかります——YAMLの柔軟な構文は、JSONでは一目瞭然な型の食い違いを隠してしまうことがあります。
- JSONに特殊文字を含むキーや数字で始まるキーがある場合、js-yamlはYAML出力時にそれらへ自動的に引用符を付けるため、後で正しく解析し直せます。
型変換がYAMLで最も厄介な理由
YAMLがJSONに対して持つ最大の使いやすさ——ほとんどの値に引用符が不要な点——は、同時に微妙なバグの最大の原因でもあります。典型的な例が「ノルウェー問題」です。多くの古いパーサーが採用しているYAML 1.1では、引用符なしの`no`という値は文字列"no"ではなく真偽値`false`として解釈されてしまい、これが実際にノルウェーの国コードを列挙する設定を壊したことがあります。このツールはYAML 1.2仕様に従っており、真偽値として扱われる引用符なしの値の範囲を`true`と`false`(およびその大文字小文字のバリエーション)だけに絞り込んでいるため、この種の予期せぬ動作を(完全にではありませんが)減らしています。値がどのように型付けされるか不安な場合は、YAML内で明示的に引用符を付けるのが最も安全な選択です。
よくある質問
JSONに変換して戻すと、YAMLのコメントは保持されますか?
保持されません。JSONにはコメントという概念がないため、YAMLをJSONに変換すると、元のファイルにある#コメントはすべて破棄されます。そのJSONをYAMLに戻しても、コメントは復元されません——これはツールの不具合ではなく、フォーマット自体の本質的な制約です。
ツールはYAMLのアンカーとエイリアス(&と*)をどう扱いますか?
内部で使われているパーサー(js-yaml)は、JSONを生成する前にアンカーとエイリアスを解決します。そのため、&アンカーと*エイリアスを使ってデータのブロックを再利用しているYAMLファイルは、参照されている箇所すべてでそのデータが完全に展開された状態のJSONに変換されます。
YAMLの数値がJSONで文字列になってしまう、あるいはその逆が起きるのはなぜですか?
YAMLの元データで値が引用符で囲まれている場合(例:version: "3.10")、それは意図的に文字列として扱われます。これは重要なポイントで、引用符なしのYAML数値(3.10など)は浮動小数点として解析されると末尾のゼロが失われる可能性があるためです。特定の値をテキストとして扱いたい場合は、元のYAMLでその値を引用符で囲んでください。
複数のドキュメント(---で区切られた)を含むYAMLファイルを変換できますか?
このツールは一度に1つのYAMLドキュメントのみを変換します。ファイルに---マーカーで区切られた複数のドキュメントが含まれる場合は、一度に1つのセクションずつ変換するか、用途に合うのであれば区切りを取り除いて先に1つのドキュメントにまとめてください。
自分のデータはどこかにアップロードされますか?
いいえ。変換はすべてブラウザ内でjs-yamlライブラリを使って行われます。サーバーには何も送信されないため、内部のホスト名やインフラの詳細を含む実際の設定ファイルにも安心して使えます。