JSONをYAMLに変換する方法【無料ツール・コード例】

Handy Dev Tools JavaScript

設定ファイルや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変換ツールの説明

使い方

  1. JSONデータを入力欄にペースト(またはファイルをアップロード)
  2. 自動的にYAMLに変換される
  3. 「コピー」ボタンでクリップボードにコピー

メリット

  • インストール不要
  • ブラウザだけで完結
  • ファイルアップロードにも対応(最大100KB)

こんな時に便利

  • 一時的な変換作業
  • 環境構築が不要
  • チームメンバーと共有しやすい

方法2:コマンドラインで変換

継続的に変換作業が必要な場合は、コマンドラインツールが便利です。

Node.jsを使う方法

インストール

npm install -g js-yaml

-gを避けたい場合は以下

npx js-yaml input.json

使い方

# JSONファイルをYAMLに変換
js-yaml input.json > output.yaml

JavaScriptコード例

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 pyyaml

Pythonコード例

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を相互変換できる便利なコマンドラインツールです。

注意:yqには2種類あります

  • Go版(mikefarah/yq)← おすすめ
  • Python版(kislyuk/yq)

この記事ではGo版を紹介します。Go版の方が高機能で、YAML 1.2に対応しており、現在主流となっています。

インストール(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

Python版のyqをインストールしている場合

Python版とGo版を区別するため、Go版をyq、Python版を別名でインストールすることをおすすめします。

# Python版がインストールされているか確認
which yq
yq --version

# Python版の場合は削除してGo版をインストール
pip uninstall yq
brew install yq

方法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

YAML 1.1とYAML 1.2の違い

YAML 1.1ではyes/noもBoolean値として解釈されましたが、YAML 1.2規格ではyes/noは文字列として扱われます

現在主流の環境(GitHub Actions、Kubernetes、Dockerなど)ではYAML 1.2が使われているため、Boolean値にはtrue/falseを使うことを推奨します

# ✅ 推奨(YAML 1.2互換)
enabled: true
debug: false

# ⚠️ 非推奨(YAML 1.1の古い記法)
enabled: yes
debug: no

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.json

Python

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つ紹介しました:

  1. Webツール:最も手軽、インストール不要
  2. コマンドライン:大量処理、自動化に向いている(yq Go版を推奨)
  3. プログラム:アプリケーション内で動的に変換

また、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変換ツールの説明

この記事が役に立ったら、ぜひツールも使ってみてください!

タイトルとURLをコピーしました