設定ファイルやAPIレスポンスなど、開発現場ではJSONとYAMLの両方を扱う機会が多いですよね。
この記事では、JSONをYAMLに変換する方法を、ツール・コマンドライン・プログラムの3つの視点から解説します。
JSONとYAMLの違い
まず簡単に、JSONとYAMLの違いを確認しておきましょう。
JSON(JavaScript Object Notation)
- データ交換フォーマットとして広く使われる
- 機械可読性が高い
- APIレスポンスによく使われる
{
"name": "太郎",
"age": 25,
"skills": ["PHP", "JavaScript", "Python"]
}YAML(YAML Ain’t Markup Language)
- 人間が読みやすい
- 設定ファイルによく使われる(Docker Compose、GitHub Actions、Kubernetes等)
- インデントでデータ構造を表現
name: 太郎
age: 25
skills:
- PHP
- JavaScript
- Python方法1:Webツールで変換(最も簡単)
最も手軽な方法は、Webツールを使うことです。
おすすめツール

JSON to YAML変換 | Handy Dev Tools
JSON to YAML変換ツールの説明
使い方
- JSONデータを入力欄にペースト(またはファイルをアップロード)
- 自動的にYAMLに変換される
- 「コピー」ボタンでクリップボードにコピー
メリット
- インストール不要
- ブラウザだけで完結
- ファイルアップロードにも対応(最大100KB)
こんな時に便利
- 一時的な変換作業
- 環境構築が不要
- チームメンバーと共有しやすい
方法2:コマンドラインで変換
継続的に変換作業が必要な場合は、コマンドラインツールが便利です。
Node.jsを使う方法
インストール
npm install -g js-yaml-gを避けたい場合は以下
npx js-yaml input.json使い方
# JSONファイルをYAMLに変換
js-yaml input.json > output.yamlJavaScriptコード例
const yaml = require('js-yaml');
const fs = require('fs');
// JSONファイルを読み込み
const jsonData = JSON.parse(fs.readFileSync('input.json', 'utf8'));
// YAMLに変換
const yamlData = yaml.dump(jsonData);
// ファイルに保存
fs.writeFileSync('output.yaml', yamlData, 'utf8');
console.log('変換完了!');Pythonを使う方法
インストール
pip install pyyamlPythonコード例
import json
import yaml
# JSONファイルを読み込み
with open('input.json', 'r', encoding='utf-8') as f:
json_data = json.load(f)
# YAMLに変換して保存
with open('output.yaml', 'w', encoding='utf-8') as f:
yaml.dump(json_data, f, allow_unicode=True, default_flow_style=False)
print('変換完了!')yqコマンドを使う方法
yqは、YAMLとJSONを相互変換できる便利なコマンドラインツールです。
インストール(Mac)
brew install yqインストール(Linux)
# 最新版をダウンロード
sudo wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64
sudo chmod +x /usr/local/bin/yqインストール(Windows)
# Scoopを使う場合
scoop install yq
# Chocolateyを使う場合
choco install yq使い方(v4以降の最新記法)
yq v4以降ではevalコマンドが省略可能になりました。
# JSONをYAMLに変換(最新記法)
yq -P input.json > output.yaml
# 従来の記法(v4以降も使えます)
yq eval -P input.json > output.yaml
# ワンライナーで変換
cat input.json | yq -P > output.yamlオプションの説明:
-P:YAML形式で出力(--prettyPrintの略)
yqのバージョン確認
yq --version
# yq (https://github.com/mikefarah/yq/) version 4.x.x方法3:プログラムで変換
アプリケーション内で変換が必要な場合は、各言語のライブラリを使います。
PHP(Laravel)
use Symfony\Component\Yaml\Yaml;
// JSONをパース
$jsonData = json_decode(file_get_contents('input.json'), true);
// YAMLに変換
$yamlData = Yaml::dump($jsonData, 4, 2);
// ファイルに保存
file_put_contents('output.yaml', $yamlData);JavaScript(ブラウザ)
import yaml from 'js-yaml';
// JSONをパース
const jsonData = JSON.parse(jsonString);
// YAMLに変換
const yamlData = yaml.dump(jsonData);
console.log(yamlData);Ruby
require 'json'
require 'yaml'
# JSONファイルを読み込み
json_data = JSON.parse(File.read('input.json'))
# YAMLに変換して保存
File.write('output.yaml', json_data.to_yaml)変換時の注意点
1. 文字コード
- UTF-8を使うのが安全
- 日本語を含む場合は特に注意
2. データ型の違い
Boolean値
- JSONの
true/falseはYAMLでもtrue/false
Null値
- JSONの
nullはYAMLではnullまたは~
# どちらも同じ意味
value: null
value: ~3. インデント
- YAMLはインデントが重要(通常2スペース)
- タブは使わない(YAMLの仕様でタブは禁止)
4. 特殊文字
- YAMLでは
:や-で始まる文字列は引用符で囲む必要がある場合がある
# ❌ エラーになる可能性
message: Warning: This is important
# ✅ 引用符で囲む
message: "Warning: This is important"5. 複数行の文字列
YAMLでは複数行の文字列を見やすく書けます。
# | を使うと改行が保持される
description: |
これは1行目
これは2行目
これは3行目
# > を使うと改行がスペースに変換される
summary: >
長い文章を
複数行に分けて
書くことができます逆変換(YAML → JSON)
YAMLをJSONに変換したい場合も、同じツールやライブラリで対応できます。
Webツール

YAML to JSON変換 | Handy Dev Tools
YAML to JSON変換ツールの説明
コマンドライン(yq v4以降)
# YAMLをJSONに変換(最新記法)
yq -o=json input.yaml > output.json
# または
yq eval -o=json input.yaml > output.jsonPython
import json
import yaml
with open('input.yaml', 'r', encoding='utf-8') as f:
yaml_data = yaml.safe_load(f)
with open('output.json', 'w', encoding='utf-8') as f:
json.dump(yaml_data, f, ensure_ascii=False, indent=2)ユースケース別の選び方
Webツールを使うべき場合
- 一時的な変換作業
- チームメンバーと共有したい
- 環境構築したくない
- ファイルサイズが小さい(〜100KB)
コマンドラインを使うべき場合
- 大量のファイルを一括変換
- CI/CDパイプラインに組み込む
- スクリプトで自動化したい
- バージョン管理されたスクリプトで使いたい
プログラムで実装すべき場合
- アプリケーション内で動的に変換
- ユーザーからの入力を変換
- リアルタイム変換が必要
- Webサービスの機能として提供したい
よくある質問
Q1. yqのGo版とPython版、どちらを使うべき?
A. Go版(mikefarah/yq)をおすすめします。
理由:
- YAML 1.2に対応
- 高速
- 機能が豊富
- 活発にメンテナンスされている
- GitHub ActionsなどのCI環境で標準的に使われている
Q2. YAML 1.1とYAML 1.2、どちらを使うべき?
A. YAML 1.2を使いましょう。
理由:
- GitHub Actions、Kubernetes、Dockerなど主要ツールがYAML 1.2を採用
yes/noの曖昧性が解消されている- より厳密で予測可能
Q3. 大きなJSONファイルも変換できる?
A. ツールによります。
- Webツール:100KBまで(ブラウザの制限)
- コマンドライン:数GB以上も可能(メモリ次第)
- プログラム:実装次第(ストリーミング処理も可能)
大きなファイルはコマンドラインツールの使用を推奨します。
まとめ
JSONをYAMLに変換する方法を3つ紹介しました:
- Webツール:最も手軽、インストール不要
- コマンドライン:大量処理、自動化に向いている(yq Go版を推奨)
- プログラム:アプリケーション内で動的に変換
また、YAML 1.2の仕様により:
- Boolean値は
true/falseを使う(yes/noは非推奨) - 現在主流の環境(GitHub Actionsなど)ではYAML 1.2が標準
手軽に変換したい場合は、Webツールが便利です。

JSON to YAML変換 | Handy Dev Tools
JSON to YAML変換ツールの説明
ブラウザだけで動作し、データはサーバーに送信されないので安心して使えます。
逆変換(YAML→JSON)も対応しています:

YAML to JSON変換 | Handy Dev Tools
YAML to JSON変換ツールの説明
この記事が役に立ったら、ぜひツールも使ってみてください!

