YAMLからCSVへ
このコンバータは、ブラウザ内でYAMLのマッピングのシーケンスをRFC 4180のCSVに変換します。ネストされた値は列パスに平坦化され、フィールドは必要に応じてのみ引用符で囲まれ、行末はCRLF――まさに表計算ソフトが期待する形式です。何もアップロードされません。
YAMLからCSVへとは
YAMLはネストを好み、表計算ソフトは平坦な行を好みます。この2つの間には、一つの機械的な問題があります:ネストされたマッピングのキーがテーブルのヘッダーになるかどうか。このコンバータは、エコシステムの他の部分と同じ方法で、列パスを使ってこの問題に答えます。addressオブジェクトにcityフィールドを持つレコードはaddress.city列を生成するため、情報が失われたりキーが衝突したりすることはありません。
CSV側は厳密なRFC 4180です:カンマ区切り、フィールドにカンマ、引用符、または改行が含まれる場合の二重引用符のエスケープ、そしてCRLFの行終端。フィールドは必須の場合にのみ引用符で囲まれますなぜなら、不要な引用符はすべて、下流のスクリプトがより堅牢でなければならないことを意味するからです。結果はExcel、Numbers、LibreOffice、Google Sheetsで直接開けます。
すべてがこのブラウザのタブで動作します。貼り付けたYAMLテキストはページ内エンジンによって解析され、CSVは解析されたレコードから構築され、どちらもネットワークに触れることはありません――DevToolsを開き、ネットワークパネルが静まっているのを確認すれば、その主張が裏付けられます。
逆方向に進むこと――表計算ソフトのエクスポートを設定に戻すこと――は、同じエンジンを逆に使ったものであり、CSVをYAMLに変換するページは列パスの規則を逆読みで処理します。
ソースデータがYAMLではなくJSONの場合、専用のJSONからCSVへのコンバータが同じ平坦化ルールで対応します。
変換の実際の動作方法
エンジンはまずYAMLをレコードに解析します。なぜなら、表形式に適したYAMLファイルはマッピングのシーケンス――すべての項目にキーがあるトップレベルのリスト――だからです。各レコードのネストされた値はドットで区切られた列パスに平坦化され、すべてのレコード間のパスの和集合がヘッダー行になり、各レコードが持つ列にデータを入れ、持たない列は空白のままになります。
- 解析:YAMLテキストはマッピングのシーケンスとして読み取られます。トップレベルが単一のマッピングであるファイルは、リストを要求する明確なエラーが表示されます。
- 平坦化:ネストされたマッピングと配列は列パスに――address.city、tags.0、tags.1など。
- 和集合:ヘッダー行はすべてのレコードのパスの順序付き和集合で、最初に見つかったものが先頭になり、列は安定して予測可能な順序で読み取られます。
- 出力:各レコードはCRLFで終わる1行として書き込まれ、フィールドはコンテンツが要求する場合にのみRFC 4180に従って引用符で囲まれます。
出力の見た目
以下の作業例は、コンバータの「サンプルを読み込む」ボタンが生成する正確なペアです:2人の人物レコード、1つはネストされたアドレスとタグの配列を持つ。各形状がどうなるかを見てください――addressオブジェクトは2つの列に広がり、tags配列はインデックスで列挙され、メモフィールド内のカンマが正確にそのフィールド1つに引用符をトリガーします。
このコンバータが破損させずに拒否するエッジケース
正直なコンバータには境界があり、最悪なことはそれが存在しないふりをすることです。3つの入力は、出力があなたに嘘をつくことになるため、特定のメッセージで拒否され、静かに再形成されるのではありません。
- トップレベルがシーケンスではなくマッピング――単一の設定オブジェクトはテーブルではなく、1行のテーブルをでっち上げることは間違いを隠してしまいます。
- シーケンス項目がスカラーまたは配列――文字列のリストは名前付きの列に表形式に変換できません。
- レコード間で大きく異なる同種のキー――和集合は依然として変換されますが、プレビューは不揃いな結果を表示してくれます。保存する前に決定できるように。
よくある質問
YAMLからCSVへの変換で、ファイルがどこかにアップロードされますか?
いいえ。解析とCSVの生成の両方が、ページが開かれたときに一度読み込まれたJavaScriptを使って、このブラウザのタブ内で実行されます。ページはデータを送信するAPIルートを持たず、Content-Security-Policyはページが他の場所に接続することを禁止しています。両方の主張はDevToolsで確認できます:変換時にネットワークパネルにリクエストが表示されません。
ネストされたYAMLの値はCSV出力でどのように処理されますか?
ネストされたマッピングはドットで区切られた列パスに平坦化されます――cityフィールドを持つaddressオブジェクトはaddress.city列になります。配列はtags.0やtags.1のようなインデックス付きパスに平坦化されます。データは破棄されません:YAMLのすべてのリーフ値が正確に1つのセルに収まります。
パーサーはどのYAML構文を受け入れますか?
日常的なコア:シーケンスとマッピング、プレーンと引用符付きスカラー、コメント、ブール値、整数、浮動小数点数、null、ブロックスカラー。ディレクティブ、アンカー、エイリアス、マージキーはコンバータのサポート対象外であり、推測される代わりに名前付きエラーで拒否されます――サイトはこのサブセットを正確に文書化しているため、失敗は決して予期せぬものではありません。
なぜ行の終端がCRLFで、変更できますか?
RFC 4180は行終端子としてCRLF(\r\n)を指定しており、コンバータは最大限の互換性を持つ表計算ソフトが期待するものだからデフォルトでそれを出力します。LFだけを望むツールは通常CRLFを受け入れます。もしパイプラインがそれについて厳密であれば、まず変換してから出力を改行正規化ステップに通してください。
ファイルサイズまたは行数の制限はありますか?
制限はブラウザのタブのメモリであり、アップロードの上限ではありません。エンジンはメインスレッドで解析し、ページがフリーズする代わりに8MBを超えるドキュメントは明確なメッセージで拒否します――これはこのサイトの他のすべてのメインスレッドツールが適用の同じ文書化された制限です。典型的な設定エクスポートでは、これは数万行に相当します。
CSVを正しいエンコーディングでExcelで開くにはどうすればよいですか?
ダウンロードはバイトオーダーマークなしのUTF-8です。最新のExcelはデータ → テキスト/CSV経由でそれを正しく処理します。古いバージョンはレガシーコードページを想定して非ASCII文字を破損することがあります。もし文字化けが見られる場合は、Excelのインポートダイアログを使用し、UTF-8をソースとして選択すると、データは正しく配置されます。