00

結論から

  • YAMLは、設定やデータ交換の内容を読みやすいテキストで表すUnicodeベースのデータシリアライズ言語であり、データとして読み込むにはバージョンとタグに対応した処理系が必要です。
  • WindowsやMacでは、.yamlまたは.ymlファイルをテキストエディターで開いて読めます。スマートフォンでは、対象ファイルにアクセスできるテキストエディターを使います。テキストの閲覧にデシリアライズは必要ありません。プログラムのデータとして読み込む場合は、使用されたYAMLのバージョンとタグに対応する処理系が必要です。読み込めない場合はインデントや構文を確認してください。YAMLストリームには複数のドキュメントを含められますが、単一ドキュメント専用のアプリケーションは追加ドキュメントをエラーにする必要があります。
  • 高いリスクは安全でない解析に由来します。タグの処理によって意図しないコードが実行される可能性があるため、デシリアライザーは既定でコード実行を無効にし、安全な読み込み方式を使う必要があります。循環参照やエイリアスの展開は、無限ループやデータ量の指数関数的な増大を引き起こす可能性があります。入力を検証し、アンカーの再帰深度を制限してください。読めることや読み込みに成功することだけでは、安全性を証明できません。
01

YAMLファイルの開き方・互換性・安全な読み込み

YAMLは「YAML Ain’t Markup Language」の再帰的な略語です。基本構造はマッピング、シーケンス、スカラーです。インデントで階層を表し、コロンでキーと値を区切り、ハイフンでリスト項目を示せます。型タグ、アンカー、エイリアスにも対応します。登録メディアタイプはapplication/yamlで、推奨拡張子は.yaml、.ymlも認められています。固定のマジックナンバーは登録されていません。

元ファイルは残す

YAMLからJSONへの変換は、必ずしも無損失ではありません。コメント、ディレクティブ、エイリアスによる表現が失われる場合があります。文字列以外のキー、循環参照、JSONにない型は追加の処理が必要です。必要なデータが変換結果に保持されているか確認してください。

02

開き方

WindowsやMacでは、.yamlまたは.ymlファイルをテキストエディターで開いて読めます。スマートフォンでは、対象ファイルにアクセスできるテキストエディターを使います。テキストの閲覧にデシリアライズは必要ありません。プログラムのデータとして読み込む場合は、使用されたYAMLのバージョンとタグに対応する処理系が必要です。読み込めない場合はインデントや構文を確認してください。YAMLストリームには複数のドキュメントを含められますが、単一ドキュメント専用のアプリケーションは追加ドキュメントをエラーにする必要があります。

中身を見たいだけ

WindowsやMacでは、.yamlまたは.ymlファイルをテキストエディターで開いて読めます。スマートフォンでは、対象ファイルにアクセスできるテキストエディターを使います。テキストの閲覧にデシリアライズは必要ありません。プログラムのデータとして読み込む場合は、使用されたYAMLのバージョンとタグに対応する処理系が必要です。読み込めない場合はインデントや構文を確認してください。YAMLストリームには複数のドキュメントを含められますが、単一ドキュメント専用のアプリケーションは追加ドキュメントをエラーにする必要があります。

誰かに送りたい

YAMLからJSONへの変換は、必ずしも無損失ではありません。コメント、ディレクティブ、エイリアスによる表現が失われる場合があります。文字列以外のキー、循環参照、JSONにない型は追加の処理が必要です。必要なデータが変換結果に保持されているか確認してください。

03

安全チェック

高いリスクは安全でない解析に由来します。タグの処理によって意図しないコードが実行される可能性があるため、デシリアライザーは既定でコード実行を無効にし、安全な読み込み方式を使う必要があります。循環参照やエイリアスの展開は、無限ループやデータ量の指数関数的な増大を引き起こす可能性があります。入力を検証し、アンカーの再帰深度を制限してください。読めることや読み込みに成功することだけでは、安全性を証明できません。

こんなときは、いったん手を止める

送り主が分からない、拡張子が二重になっている、中身が拡張子と合わない——一つでも当てはまるなら、開く前に確かめてください。

04

変換するときは

YAMLからJSONへの変換は、必ずしも無損失ではありません。コメント、ディレクティブ、エイリアスによる表現が失われる場合があります。文字列以外のキー、循環参照、JSONにない型は追加の処理が必要です。必要なデータが変換結果に保持されているか確認してください。

変換する前に

元ファイルではなくコピーを変換し、変換後に画質・メタデータ・レイアウトを元と見比べてください。

05

よくある質問

YAMLファイルとは何で、何に使いますか?

YAMLは、人が読みやすく、プログラミング言語をまたいで使えるデータシリアライズ言語です。設定ファイルやデータ交換によく使われ、マッピング、シーケンス、スカラーでデータを表します。

WindowsでYAMLファイルを開く方法は?

.yamlまたは.ymlファイルをテキストエディターで開くと内容を読めます。アプリケーションがデータとして読み込む場合は、そのYAML処理系がファイルのバージョンとタグに対応している必要があります。

MacでYAMLファイルを開く方法は?

テキストエディターで.yamlまたは.ymlファイルを開き、内容を確認します。データとして読み込むには、別途、対応するYAML処理系が必要です。

スマートフォンでYAMLファイルを開く方法は?

スマートフォン内の対象ファイルにアクセスできるテキストエディターを使います。YAMLはプレーンテキストなので内容を表示できます。データとして読み込むには、対応するYAML処理系が必要です。

YAMLが読み込めないとき、インデントと構文を確認する方法は?

対応するYAML処理系で、インデント、キーと値の区切り、リストの記号を確認します。タグの解決、認識、データ型の構築に失敗する場合もあります。単一ドキュメント専用のアプリケーションは追加ドキュメントを拒否する必要があります。

YAMLとYMLの拡張子にはどのような違いがありますか?

どちらもYAMLの拡張子として認められています。RFC 9512では.yamlが推奨され、.ymlも認められています。拡張子を選び直しても、バージョンやタグの互換性の問題は解決しません。

YAMLからJSONへの変換で失われる情報は何ですか?

コメント、ディレクティブ、エイリアスによる表現が失われる場合があります。文字列以外のキー、循環参照、JSONにない型には追加の処理が必要で、無損失の変換とは限りません。

信頼できないYAMLファイルを安全に解析する方法は?

既定でコード実行を無効にした安全な読み込み方式を使い、入力を検証し、アンカーの再帰深度を制限します。タグ処理、循環参照、エイリアス展開にはリスクがあり、これらの対策で絶対的な安全性が保証されるわけではありません。

YAML 1.1と1.2の真偽値の違いは互換性にどう影響しますか?

暗黙の真偽値の解釈はバージョンによって異なる場合があります。互換性の問題を減らすには、YAML 1.2のコアスキーマが認める大文字・小文字の形式でtrueまたはfalseを使い、読み込み側の処理系のバージョンを確認します。

YAMLのアンカーとエイリアスの使い方と必要な制限は?

アンカーはノードに印を付け、エイリアスはアンカーの付いたノードを参照します。循環参照やエイリアス展開は無限ループやデータ量の指数関数的な増大を招く可能性があるため、処理系には入力検証とアンカーの再帰深度の制限が必要です。

06

関連する形式

参考資料

YAML Ain’t Markup Language (YAML) Version 1.2, Revision 1.2.2 · YAML 官方规范 / YAML Language Development Team

RFC 9512: YAML Media Type · IETF / RFC Editor