データ変換ツール(JSON・CSV・YAML・XML)

このツールでできること

JSON・CSV・TSV・YAML・XMLという5つの主要なテキスト系データ形式を、ブラウザ上で双方向に変換するためのツールです。APIレスポンスをExcelに取り込みたい、ExcelのデータをそのままYAMLの設定にしたい、レガシーシステムのXMLを今どきのJSONに変換したい――そんな日常的に発生する「形式が違うだけで本質的には同じデータ」のやり取りを、コピペひとつで完結させることを目的にしています。

サーバーや外部APIを一切経由せず、貼り付けたデータはブラウザ内のJavaScriptだけで処理されます。社内の機密データやAPIキーを含むレスポンスでも、外部に流出するリスクなく試せるのが利点です。エンジニア・データアナリスト・QAエンジニア・情シス担当者など、形式変換を頻繁に求められる方を主な利用者として想定しています。

5つのデータ形式 ― 特徴と使い分け早見表

形式長所短所向いている用途
JSON 言語非依存・ネスト表現が自然・パーサが豊富 コメント不可・末尾カンマ不可・冗長になりがち Web API、SPA、ログ、NoSQL、設定ファイル全般
CSV Excel/BIツールとの親和性・行指向で軽量 ネスト不可・型情報なし・エスケープ規則が方言だらけ 表形式の集計データ、DBエクスポート、帳票連携
TSV 区切り文字がタブなので値中のカンマと衝突しない セル内タブ・改行は依然として弱点 Excel・Google Sheetsへの直接貼り付け、ログ整形
YAML 人間が読みやすい・コメント可・参照(anchor)で再利用可 インデントに敏感・暗黙の型変換でハマる Docker Compose、Kubernetes、GitHub Actions、Ansible
XML 属性・名前空間・スキーマ検証など表現力が高い 記述が冗長・パースが重い・属性vs要素で揺れる SOAP/レガシーAPI、Office Open XML、Androidリソース

基本的な使い方

  1. 左側のテキストエリアに変換したいデータを貼り付ける
  2. 左上のセレクトボックスで入力形式を選ぶ(自動判定はせず明示指定)
  3. 右上のセレクトボックスで出力形式を選ぶ
  4. 「変換」ボタンを押す。エラーがあれば赤帯で原因が表示される
  5. 「結果をコピー」で右側の出力をクリップボードへ取得

とりあえず動きを見たいときは「サンプルを入力」ボタンで例データを挿入できます。CSV → JSON、JSON → YAMLあたりは結果のイメージを掴みやすいので最初に試すのに向いています。

同じデータを5つの形式で書くと?

「ユーザー2名のリスト」を各形式で表現するとこうなります。同じ情報量でも見た目と相性がまったく違うことが分かります。

JSON

[
  { "id": 1, "name": "佐藤", "active": true },
  { "id": 2, "name": "鈴木", "active": false }
]

CSV

id,name,active
1,佐藤,true
2,鈴木,false

TSV

id	name	active
1	佐藤	true
2	鈴木	false

YAML

- id: 1
  name: 佐藤
  active: true
- id: 2
  name: 鈴木
  active: false

XML

<users>
  <user>
    <id>1</id>
    <name>佐藤</name>
    <active>true</active>
  </user>
  <user>
    <id>2</id>
    <name>鈴木</name>
    <active>false</active>
  </user>
</users>

変換時にハマりやすい落とし穴

JSON ⇄ CSV:ネストの平坦化問題

CSVは「行 × 列」という二次元の表でしか情報を持てません。一方JSONは配列の中に配列、オブジェクトの中にオブジェクトを無制限にネストできます。これをCSVに落とすときは「ネストを諦めて捨てる」「ドット記法で平坦化する(例: address.city)」「JSON文字列のままセルに入れる」の三択になります。本ツールは原則として一階層目までを平坦化します。三階層以上の深いJSONを扱うときは、いったんJSON側で必要な項目を map して整形してから貼り付けるのがおすすめです。

JSON ⇄ YAML:型情報の保持

YAMLには「YAML 1.1の暗黙型変換問題」と呼ばれる有名な罠があります。例えば country: NO と書くと、ノルウェーの国コードのつもりでも false(真偽値)として解釈されることがあります。 version: 1.201.2 に丸まりがちです。これを避けたい場合はYAML側で "NO"'1.20' のように引用符で囲み、文字列として明示するのが安全です。本ツールはJSON→YAMLでは型を保ったまま出力します。

CSV:カンマ・改行・ダブルクォートのエスケープ

CSVの仕様(RFC 4180)では、値の中にカンマ・改行・ダブルクォートが含まれる場合は値全体を " で囲み、内側の """ に二重化する決まりです。Excelで作ったCSVと、自前スクリプトで作ったCSVで動きが違うときはだいたいここが原因です。「住所」「コメント」など自然文が入る列ほど壊れやすいので、変換結果がおかしいときはまずこのエスケープが効いているかを確認してください。

XML:属性 vs 子要素のマッピング

XMLは <user id="1"> のように属性で持つこともできれば、 <user><id>1</id></user> のように子要素で持つこともできます。JSONには「属性」という概念がないため、変換時に必ず方針を決める必要があります。本ツールでは属性を @ プレフィックス(例: {"@id": "1"})として保持する方式を採用しており、戻すときも同じ規約に従います。

TSV:Excel往復による文字化け

TSVをExcelで開く・保存し直すと、Shift_JISへの再エンコードで絵文字や一部の漢字が「?」化することがあります。Excelを経由する場合は「データ」タブの「テキストから」でUTF-8を明示してインポートするのが安全です。

実務でよくある活用シーン

  • API調査:Postman等で取得したJSONレスポンスをCSVに直し、Excelで件数・ユニーク数を確認する
  • データ移行:旧システムのCSVエクスポートを、新システムが要求するJSON形式に整える前段処理
  • 設定ファイルの編集:JSONで書かれた既存設定をYAMLに直して可読性を上げ、コメントを足してチームに共有する
  • レガシー連携:SOAPで返ってくるXMLをJSONに整形し、フロントエンドで扱いやすい構造に変換する
  • QA・テストデータ作成:Excelで生成した大量のテストケース(CSV/TSV)を、APIテスト用にJSON配列へ変換する
  • ドキュメント化:内部ツールの設定スキーマを、JSONとYAMLの両方で例示するために形式を揃える

処理はすべてブラウザ内で完結

変換ロジックはこのページに同梱されたJavaScriptで動いており、貼り付けたデータが外部のサーバーに送られることはありません。社外秘の構成情報、本番DBから抜いたサンプルデータ、APIキー入りのレスポンスなどでも、ローカルのテキストエディタ感覚で安心して使えます。オフライン環境(ページを一度開いた後にネットを切る)でも動作するので、閉域網の社内端末でも検証可能です。

よくある質問

カンマを含むフィールドは自動的にダブルクォーテーションで囲まれます。例えば「東京都,渋谷区」は「"東京都,渋谷区"」として出力されます。値の中にダブルクォートが含まれる場合はRFC 4180に従って二重化("" の形)して出力するため、そのまま再パースしても元の文字列に戻ります。
いいえ、すべての処理はブラウザ上で完結します。入力データが外部に送信されることは一切ありません。アクセスログや解析タグからも生データは見えない仕組みなので、APIキーや個人情報を含むレスポンスのデバッグにも利用できます。
配列のトップレベル直下までを「行」とみなし、その下のオブジェクトを列に展開します。さらに深いネストは原則そのままJSON文字列としてセルに格納します。完全な平坦化(ドット記法で全階層を列にする)が必要な場合は、変換前にJavaScript側で flat() 相当の整形をかけてから貼り付けてください。
YAML 1.1由来の暗黙型変換です。文字列として確定させたい場合は、元のYAML側で "NO"'true' のように引用符で囲んでください。本ツールはJSON→YAMLの方向では型を保つため、JSONで "NO"(文字列)と書いておけば、出力側でも文字列として扱われます。
属性は @ プレフィックス付きのキーとして保持します。例えば <user id="1">太郎</user>{"user": {"@id": "1", "#text": "太郎"}} のようにマッピングされます。逆方向(JSON→XML)でも同じ規約を採用しているため、往復変換しても情報が失われません。
処理はブラウザのメモリ上で行うため、目安として数MB程度までであればストレスなく動作します。それを超える大きなデータを扱う場合は、テキストエリアへの貼り付け自体が重くなるので、ローカルでスクリプト(Python・Node.js等)を使うほうが快適です。逆に数十KB〜数百KBのAPIレスポンス確認用途であれば、本ツールが最も手早い選択肢になります。
現在のバージョンではCSVはカンマ区切り固定、TSVはタブ区切り固定としています。ヨーロッパ圏で使われるセミコロン区切りが必要な場合は、いったんCSVで出力したあとエディタの一括置換でカンマをセミコロンに置き換える運用を推奨します。需要が多ければ将来的にカスタム区切り文字オプションを追加予定です。