YML ファイル形式とは?
.ymlはプレーンテキストファイルであり、データ交換フォーマットです。これは標準化されたプラットフォームに依存しない形式で、インデントに基づいた key: value 構造によって整理された、人間が読めるテキストとしてデータを保存します。.ymlファイルは、事実上すべての主要なプログラミング言語で利用可能な YAML ライブラリを使用して読み書きできます。.yml と .yaml は同じフォーマットを指します。.yml は古い3文字の形式で、docker-compose.yml、.gitlab-ci.yml、GitHub Actions のワークフローなど、多くのツールで引き続き採用されています。この形式は、データのシリアル化やアプリケーションの設定に最も一般的に使用されます。
シリアル化(シリアライゼーション)とはコンピュータサイエンスの用語で、適切に定義されたオブジェクトを使用してプログラムやアプリケーション間でデータを交換する概念を指します。オブジェクトはデータコンテナと理解できます。例えば、データベースのレコードは、さまざまなデータベース間で簡単に交換できるため、データシリアル化の一種です。シリアル化されたデータは、アプリケーション間で送信可能な構造化ファイルの形式をとることもあります。最も広く使用されているシリアル化フォーマットには、.yml、XML、JSON、TOML などがあります。
.yml の際立った特徴は、意味を持つ空白(significant whitespace)の使用です。インデントがドキュメント構造を定義し、スペースのみが許可されます。タブは仕様によって明示的に禁止されています。ドキュメントは任意で ---(ドキュメントの開始)で始まり、... で終わる場合があります。また、YAMLはインラインの # コメント、| や > を使用した複数行のブロックスカラー、および繰り返される値を再利用するためのアンカー(&)とエイリアス(*)をサポートしています。
セキュリティと安全性
リスク: MEDIUM.yml ファイルはプレーンテキストであり、それ自体で実行されることはないため、読み取りは安全です。2つの実質的なリスクがあります。(1) 設定 YAML (CI パイプライン、Compose、K8s、Ansible) には、トークン、パスワード、キーなどの機密情報が含まれることが多いため、信頼できないオンラインバリデーターに貼り付けたり、公開リポジトリにコミットしたりしないでください。(2) プログラム上の危険性:信頼できない YAML を安全でないパーサー(例:PyYAML の yaml.safe_load ではなく yaml.load)で読み込むと、任意のオブジェクトやコードが実行される可能性があります。信頼できないファイルには常に安全なローダーを使用してください。編集上のリスク:タブやずれたスペースが静かに意味を変えてしまう可能性があるため、編集後は必ず検証してください。
形式の詳細
概要- Strangereal IFL camera-map (稀) - いくつかのレガシーアプリが YAML 以外のデータに .yml を再利用していましたが、今日ではこの拡張子は事実上常に YAML テキストを指します。
YML ファイルを開くプログラム
技術的詳細
詳細仕様| MIMEタイプ | application/yaml (IANA登録済み); レガシーなバリアントには text/yaml, text/x-yaml, application/x-yaml が含まれる |
| エンコーディング | UTF-8 (デフォルトかつ最も一般的); BOM付きの UTF-16 および UTF-32 も仕様で許可されているが、実際にはほとんど使用されない |
| ファイル構造 | インデントベースのマッピング (key: value)、シーケンス (- item)、およびスカラー。ネストは純粋にインデントレベルによって表現される |
| 意味を持つ空白 | インデントが構造を定義する。スペースのみが許可され、タブは YAML 仕様によって明示的に禁止されている |
| ドキュメントマーカー | 任意の --- がドキュメントの開始を示し、... がドキュメントの終了を示す。1つの .yml ファイルに --- で区切られた複数の YAML ドキュメントを含めることができる |
| コメントのサポート | # で始まるインラインおよび行全体のコメント。JSON やほとんどのバイナリシリアル化フォーマットには存在しない機能 |
| ネイティブデータ型 | 文字列、整数、浮動小数点、ブール値、null、タイムスタンプ、およびバイナリ (!!binary タグを介した base64 エンコード) |
| アンカーとエイリアス | & は再利用可能なアンカーを宣言し、* はそれを参照(エイリアス)する。複雑な設定ファイルでのコピー&ペーストによる重複を排除する |
| ブロックスカラー | | (リテラルブロック形式) は改行をそのまま保持し、> (折りたたみブロック形式) は改行をスペースに置き換える |
| JSONのスーパーセット | YAML 1.2 (2009年) 以降、すべての有効な JSON ファイルは有効な YAML でもあるため、YAML パーサーは JSON をネイティブに読み取ることができる |
| マジックバイト / シグネチャ | なし - バイナリヘッダーやマジックナンバーは存在しない。インデントベースの key: value 構造と .yml または .yaml 拡張子によって識別される |
| ファイルサイズ (一般的) | 設定ファイルや CI/CD パイプラインファイルの場合は数バイトから数十KB。数百KBを超えることは稀 |
| 拡張子の同等性 | .yml と .yaml はフォーマットとして同一。.yml は docker-compose.yml、.gitlab-ci.yml、GitHub Actions などで採用されている DOS 時代の3文字形式 |
| 仕様バージョンディレクティブ | ファイル冒頭のオプションの %YAML 1.2 プラグマは仕様バージョンを宣言する。ほとんどのファイルでは省略され、パーサーのデフォルトに依存する |
| リリース日 | 2001 (YAML 1.0); YAML 1.1 (2005); current YAML 1.2 (2009, revised 1.2.2 in 2021) |
| 最新バージョン | YAML 1.2.2 (2021) |
| オープンスタンダード | はい · ロイヤリティフリー |
| 仕様書 | yaml.org |
YML の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。YML ファイルについて最初の質問をしてみましょう。