ToolConvoyToolConvoyv2.6
DATA

CSV to YAML — CSV データを YAML に変換

CSV データを YAML に変換します。マップのリスト、リストのリスト、単一マップの出力が可能です。すべてブラウザ内で実行され、アップロードやアカウント登録、利用制限はありません。

● ローカル動作 · ゼロコピーパイプラインページ読み込み以降のツールによる通信:0件

CSV to YAML が適しているのは、出力先が設定ファイル、デプロイマニフェスト、あるいは人が手で編集するドキュメントである場合です。YAML は JSON のスーパーセットであり、コメント・複数行文字列・可読性の高いブロックスタイルが追加されています。そして Kubernetes リソース、Ansible playbook、GitHub Actions workflow、GitLab CI pipeline、Docker Compose ファイル、そしてほとんどの現代的な infrastructure-as-code ツールのデフォルト形式でもあります。CSV からの変換は単純で、各行が YAML mapping になり、ドキュメント全体がその mapping の sequence となり、上記のいずれのツールでも読み取れるファイルが得られます。

CSV to YAML で「自明ではない」のは型推論です。CSV には型システムがなく、すべての値はテキストですが、YAML には文字列・数値・真偽値・null があります。値が true の CSV セルは曖昧です。YAML の真偽値 true かもしれないし、YAML の文字列 \"true\" かもしれないからです。このツールは一般的なケース(真偽値、整数、浮動小数点数、null)に対して型推論を行い、それ以外は文字列としてクォートで囲みますが、その推論は保守的です。あるカラムの値がすべて数値であれば YAML の数値として出力されますが、1 つでも非数値が混ざればそのカラム全体は文字列として出力されます。まれにこれが誤りになるケース(全項目が数字の ZIP code カラム、+ で始まる電話番号など)では、「すべて文字列としてクォート」オプションで型推論を完全に無効化できます。

最終的に受け渡しする際の目安:出力先が Kubernetes manifest なら、出力を ConfigMap の data フィールド、Secret の data フィールド、またはカスタムリソース定義に貼り付けてください。出力先が Ansible なら、マップのリストの出力はそのまま play のエントリや inventory groups の標準形式になります。出力先が GitHub Actions workflow なら、YAML は workflow エディタのインポート機能にそのまま貼り付けられます。出力先が独自の設定ファイル形式なら、変換後に必ずその形式のスキーマに対して出力を検証してください。YAML の型推論は、こうしたパイプラインで起こる最も一般的で微妙なバグの原因です。

広告

使い方

  1. CSV データを貼り付ける

    CSV を入力エリアにドロップするか、.csv ファイルを読み込みます。ツールは区切り文字(カンマ、セミコロン、タブ)と UTF-8 BOM の有無を自動で検出します。デフォルトでは 1 行目がヘッダーとして扱われます。

  2. YAML の構造を選ぶ

    「マップのリスト」(YAML sequence of mappings で、設定ファイルで最も一般的な形式)、「リストのリスト」(コンパクトでヘッダーに依存しない)、「単一マップ」(フラットなマッピングで単純なキー・値のエクスポートに適する)のいずれかを選択できます。

  3. YAML をコピーまたはダウンロードする

    YAML をクリップボードにコピーするか、.yaml ファイルとしてダウンロードできます。出力は自己完結した単一の YAML ドキュメントなので、Kubernetes manifest、Ansible playbook、GitHub Actions workflow、Docker Compose ファイルに直接貼り付けることができます。

よくある質問

最も一般的な YAML の出力形式は何ですか?

「マップのリスト」(list-of-maps)は表形式データの標準形式です。各行が YAML mapping(カラムごとに 1 つのキー)になり、ドキュメント全体はその mapping の sequence になります。これは多くのツール(Ansible、Kubernetes、GitHub Actions)が表形式の入力に期待する形式です。

YAML の特殊文字はどのように扱われますか?

YAML は空白が構文上の意味を持つため、特殊文字(`-`、`?`、`:`、`#`、`&`、`*`、`!`、`|`、`>`、`'`、`"`、`%`、`@`、`` ` ``)で始まる値は自動的にクォートで囲まれます。改行を含む文字列は YAML の `|` ブロックスカラー(block scalar)スタイルで出力されます。

1 行目がキーになりますか?

はい。マップのリストおよび単一マップのモードでは、1 行目がヘッダーとして扱われます。キーはヘッダーのカラム名と完全に一致します。CSV にヘッダーがない場合は、「ヘッダーなし」オプションを切り替えることで、代わりに汎用的な `column1`、`column2` というキーが使われます。

ブロックスタイルとフロースタイルを切り替えられますか?

デフォルトはブロックスタイル(インデントされた可読性の高い形式)です。フロースタイルに切り替えると、JSON のようなインライン形式(`[{a: 1, b: 2}, {a: 3, b: 4}]`)になります。ブロックスタイルは可読性と diff のしやすさに優れており、フロースタイルはよりコンパクトです。

出力は Kubernetes や Ansible で有効な形式ですか?

はい。マップのリストは両者が期待する形式です。Kubernetes については、`ConfigMap` の `data`、`Secret` の `data`、またはカスタムリソース定義に適したオブジェクトのリストが出力されます。Ansible については、play のエントリや inventory groups のリストになります。

制限事項

  • ネスト構造は非対応CSV はフラットな表形式であり、YAML の出力もフラットです。各行は同じキーを持ち、ネストされたオブジェクトや配列を表現することはできません。階層的なデータの場合は、最初から JSON や YAML を起点にしてください。
  • YAML の anchor と alias は非対応ツールは繰り返し値に対して YAML の anchor(`&name`)や alias(`*name`)を生成しません。出力先が Kubernetes manifest の場合は、共通の値を Helm chart や Kustomize overlay に切り出すことを検討してください。
  • コメントは保持されませんCSV にはコメント構文がないため、YAML 出力にもコメントは付きません。出力先でドキュメント説明が必要な場合は、変換後に YAML ファイルへ手動でコメントを追加してください。多くの YAML エディタはコメント折りたたみ(comment folding)に対応しています。

プラットフォーム別の注意点

macOS
コマンドラインで作業する場合は、`python3 -c "import csv, yaml; ..."` で変換できます。Python REPL を立ち上げるほどでもない一回限りの変換には、ブラウザツールが適しています。
Windows
PowerShell の `Import-Csv` と powershell-yaml モジュールの `ConvertTo-Yaml` を組み合わせることで変換できます。あらゆる YAML パーサ(Python、Go、Ruby)で読み取れるクロスプラットフォームな YAML 出力が必要な場合は、ブラウザツールが適しています。
Linux
最も近い CLI 相当は `yq`(mikefarah 版)です。`yq -P input.csv` で CSV を読み込んで YAML を出力できます。チャットやメール、ドキュメントページから貼り付けた内容を再入力するのは現実的でないため、そうしたケースにはブラウザツールが適しています。
Web
完全にクライアントサイドで動作します。ページの読み込み後はオフラインでも使用できます。YAML 出力は可搬性が高く、依存関係なしに任意の YAML パーサ、設定ファイル、デプロイマニフェストへ貼り付けられます。
広告

関連ツール

広告