YAML ファイル形式とは?
.yaml は、さまざまなアプリケーション間でデータを交換するために使用されるテキストファイル形式です。YAML(*YAML Ain't Markup Language* の略)は、UTF-8 でエンコードされたインデントベースの key: value ペアを使用して、人間が読みやすくプラットフォームに依存しない形式で情報を整理するための標準規格です。.yaml ファイルを解析するには YAML ライブラリをインストールする必要があります。一般的なライブラリには PyYAML (Python)、js-yaml (JavaScript)、SnakeYAML (Java) などがあります。.yaml ファイルは .yml 拡張子で保存されることもありますが、機能的には同一です。データ交換以外にも、.yaml ファイルは通常、データのシリアル化や、Docker Compose、Kubernetes、GitHub Actions などのツールでの設定ファイルの記述に使用されます。
シリアル化(Serialization)
シリアル化はコンピュータサイエンスで使用される用語です。シリアル化とは、データやオブジェクトを、保存、送信、および後で再構成できる形式に変換するプロセスです。例えば、異なるアプリケーションを使用して標準化された形式でデータを交換する 2 つの機関は、送信前にそのデータをシリアル化する必要があります。シリアル化されたデータは、.yaml、.xml、.json、.toml などのファイルに保存してから受信者に送信することもできます。
.yaml ドキュメントは、オプションで --- ドキュメント開始マーカーで始まり、... で終わることができます。これにより、1 つのファイル内に複数のドキュメントを含めることも可能です。YAML 1.2(2009年、2021年改訂)以降、すべての有効な JSON ファイルは有効な YAML でもあります。
セキュリティと安全性
リスク: MEDIUMYAML ファイルはプレーンテキストであり、それ自体は実行されないため、読み取りは安全です。2 つの現実的なリスクがあります。(1) 設定 YAML(CI パイプライン、Compose、K8s、Ansible)には、トークン、パスワード、キーなどの機密情報が含まれることが多いため、信頼できないオンラインバリデータに貼り付けたり、公開リポジトリにコミットしたりしないでください。(2) プログラム上の危険性:信頼できない YAML を安全でないパーサー(例:PyYAML の yaml.safe_load ではなく yaml.load)で読み込むと、任意のオブジェクトやコードが実行される可能性があります。信頼できないファイルには常に安全なローダーを使用してください。編集上のリスク:タブやずれたスペースが意味を密かに変えてしまう可能性があるため、編集後は検証を行ってください。
形式の詳細
概要YAML ファイルを開くプログラム
技術的詳細
詳細仕様| ファイル拡張子 | .yaml (または .yml) |
| MIME タイプ | application/yaml |
| エンコーディング | UTF-8 プレーンテキスト。バイナリヘッダーやマジックバイトなし |
| 構造 | インデントベースの key: value ペア。インデントにはスペースのみを使用し、仕様によりタブは禁止 |
| ドキュメントマーカー | --- はドキュメントの開始、... はドキュメントの終了。1つのファイルに複数のドキュメントが共存可能 |
| ネイティブデータ型 | 文字列、整数、浮動小数点数、ブール値、null、シーケンス(リスト)、マッピング(辞書)、タイムスタンプ |
| 仕様バージョン | YAML 1.2 (2009年、2021年改訂)。YAML 1.1 (2005年) および YAML 1.0 (2001年) を継承 |
| JSON 互換性 | YAML 1.2 以降、すべての有効な JSON ドキュメントは有効な YAML でもある。JSON は厳密なサブセット |
| コメント | # で始まる単一行コメント。独自の行、または値の後のインラインとして記述可能 |
| 複数行文字列 | リテラルブロックスカラー (|) は改行を保持し、折り返しブロックスカラー (>) は改行をスペースに変換 |
| アンカーとエイリアス | & は名前付きアンカーを定義し、* はそれを参照(エイリアス)することで、重複なしで値を再利用可能 |
| 開発者 | Clark Evans, Ingy döt Net, Oren Ben-Kiki |
| 一般的なユースケース | 設定ファイル (Kubernetes, Docker Compose, GitHub Actions, Ansible)、データシリアル化、OpenAPI 定義 |
| 引用符 | 引用符なし、単一引用符 ('...')、二重引用符 ("...") の文字列をすべてサポート。二重引用符はエスケープシーケンスを許可 |
| リリース日 | 2001 (YAML 1.0); YAML 1.1 (2005); current YAML 1.2 (2009, revised 2021) |
| オープンスタンダード | はい · ロイヤリティフリー |
| 仕様書 | yaml.org |