YAML(ヤメル、ヤムル)は、構造化データやオブジェクトを
文字列にシリアライズ(直列化)するためのデータ形式の一つです。テキスト形式であるため、人間が読みやすいという特徴があります。その概念は、XMLや
プログラミング言語であるC、
Python、
Perlなどから影響を受けています。YAMLの原案は、クラーク・エバンス、ブライアン・インガーソン、オーレン・ベンキクの3人によって共同で作成されました。
YAMLは、「YAML Ain't a Markup Language.」という再帰的に定義された頭字語であり、その名前の由来は「YAMLは
マークアップ言語ではない」という意味です。当初は「Yet Another Markup Language」(もう一つの
マークアップ言語)と呼ばれていましたが、マークアップよりもデータ記述を重視する目的であったため、現在の名称になりました。しかしながら、XML(本来の
マークアップ言語)がデータシリアライズの目的で頻繁に使用されるため、YAMLを軽量
マークアップ言語と捉えることも可能です。はYAMLと類似した規格として知られています。
表記方法
YAMLでは、インデントを使って階層構造を表現します。ただし、インデントにはタブを使用することはできず、
スペースのみが使用可能です。一般的に、
スペース2個単位でインデントすることが多いです。
例
yaml
これは行コメントです。
--- は、一つのファイル内に複数のYAMLドキュメントを埋め込むときに用いるセパレータです。
リスト:
- アイテム1
- アイテム2
連想配列:
キー1: 値1
キー2: 値2
各行の改行を維持する場合:
|-
これは
複数行の
文字列です。
最終行の改行のみ維持し、他を
スペースに置換する場合:
>-
これは
複数行の
文字列です。
ハッシュのリスト:
- name: 名前1
age: 20
- name: 名前2
age: 25
リストのハッシュ:
- 項目1
- 項目2
- 項目3
- 項目4
データ構造
YAMLのデータ構造は、3種類の基本ノードから構成されます。これらのノードは、`sequence`(シーケンス)、`mapping`(マッピング)、`scalar`(スカラー)です。各ノードは、`kind`(種類)、`content`(内容)、`tag`(タグ)によって特徴づけられます。
sequence:順序付けられたアイテムのリストです。配列やリストのように、複数の要素を順番に格納します。
mapping:キーと値のペアを格納する構造です。ハッシュ、連想配列、辞書などと呼ばれるものと同様です。
scalar:単一の値です。文字列、数値、ブール値などが該当します。
実装
YAMLは、多くのプログラミング言語で利用可能です。以下はその一例です。
Python
Java
Ruby
JavaScript
PHP
C++
C#
関連項目
データ記述言語
マークアップ言語
軽量マークアップ言語
外部リンク
公式ウェブサイト
YAML検証ツール YAML Lint
Best Online YAML Converter Convert YAML Strings into , XML, CSV