結論から
- YAMLは、設定やデータ交換の内容を読みやすいテキストで表すUnicodeベースのデータシリアライズ言語であり、データとして読み込むにはバージョンとタグに対応した処理系が必要です。
- WindowsやMacでは、.yamlまたは.ymlファイルをテキストエディターで開いて読めます。スマートフォンでは、対象ファイルにアクセスできるテキストエディターを使います。テキストの閲覧にデシリアライズは必要ありません。プログラムのデータとして読み込む場合は、使用されたYAMLのバージョンとタグに対応する処理系が必要です。読み込めない場合はインデントや構文を確認してください。YAMLストリームには複数のドキュメントを含められますが、単一ドキュメント専用のアプリケーションは追加ドキュメントをエラーにする必要があります。
- 高いリスクは安全でない解析に由来します。タグの処理によって意図しないコードが実行される可能性があるため、デシリアライザーは既定でコード実行を無効にし、安全な読み込み方式を使う必要があります。循環参照やエイリアスの展開は、無限ループやデータ量の指数関数的な増大を引き起こす可能性があります。入力を検証し、アンカーの再帰深度を制限してください。読めることや読み込みに成功することだけでは、安全性を証明できません。
YAMLファイルの開き方・互換性・安全な読み込み
YAMLは「YAML Ain’t Markup Language」の再帰的な略語です。基本構造はマッピング、シーケンス、スカラーです。インデントで階層を表し、コロンでキーと値を区切り、ハイフンでリスト項目を示せます。型タグ、アンカー、エイリアスにも対応します。登録メディアタイプはapplication/yamlで、推奨拡張子は.yaml、.ymlも認められています。固定のマジックナンバーは登録されていません。
YAMLからJSONへの変換は、必ずしも無損失ではありません。コメント、ディレクティブ、エイリアスによる表現が失われる場合があります。文字列以外のキー、循環参照、JSONにない型は追加の処理が必要です。必要なデータが変換結果に保持されているか確認してください。
開き方
WindowsやMacでは、.yamlまたは.ymlファイルをテキストエディターで開いて読めます。スマートフォンでは、対象ファイルにアクセスできるテキストエディターを使います。テキストの閲覧にデシリアライズは必要ありません。プログラムのデータとして読み込む場合は、使用されたYAMLのバージョンとタグに対応する処理系が必要です。読み込めない場合はインデントや構文を確認してください。YAMLストリームには複数のドキュメントを含められますが、単一ドキュメント専用のアプリケーションは追加ドキュメントをエラーにする必要があります。
WindowsやMacでは、.yamlまたは.ymlファイルをテキストエディターで開いて読めます。スマートフォンでは、対象ファイルにアクセスできるテキストエディターを使います。テキストの閲覧にデシリアライズは必要ありません。プログラムのデータとして読み込む場合は、使用されたYAMLのバージョンとタグに対応する処理系が必要です。読み込めない場合はインデントや構文を確認してください。YAMLストリームには複数のドキュメントを含められますが、単一ドキュメント専用のアプリケーションは追加ドキュメントをエラーにする必要があります。
YAMLからJSONへの変換は、必ずしも無損失ではありません。コメント、ディレクティブ、エイリアスによる表現が失われる場合があります。文字列以外のキー、循環参照、JSONにない型は追加の処理が必要です。必要なデータが変換結果に保持されているか確認してください。
安全チェック
高いリスクは安全でない解析に由来します。タグの処理によって意図しないコードが実行される可能性があるため、デシリアライザーは既定でコード実行を無効にし、安全な読み込み方式を使う必要があります。循環参照やエイリアスの展開は、無限ループやデータ量の指数関数的な増大を引き起こす可能性があります。入力を検証し、アンカーの再帰深度を制限してください。読めることや読み込みに成功することだけでは、安全性を証明できません。
送り主が分からない、拡張子が二重になっている、中身が拡張子と合わない——一つでも当てはまるなら、開く前に確かめてください。
変換するときは
YAMLからJSONへの変換は、必ずしも無損失ではありません。コメント、ディレクティブ、エイリアスによる表現が失われる場合があります。文字列以外のキー、循環参照、JSONにない型は追加の処理が必要です。必要なデータが変換結果に保持されているか確認してください。
元ファイルではなくコピーを変換し、変換後に画質・メタデータ・レイアウトを元と見比べてください。
よくある質問
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のアンカーとエイリアスの使い方と必要な制限は?
アンカーはノードに印を付け、エイリアスはアンカーの付いたノードを参照します。循環参照やエイリアス展開は無限ループやデータ量の指数関数的な増大を招く可能性があるため、処理系には入力検証とアンカーの再帰深度の制限が必要です。
関連する形式
参考資料
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