YAML 【YAML Ain’t Markup Language】 .ymlファイル
概要
YAML(YAML Ain’t Markup Language)とは、構造的なデータ集合を簡素な文字列として表記することができるデータ形式の一つ。ソフトウェアの設定ファイルの記述や異なるソフトウェア間のデータ交換などでよく用いられる。ファイル拡張子は「.yml」とすることが多いが、公式には「.yaml」が標準とされる。用途はXMLのような汎用のマークアップ言語に近いが、文法はプログラミング言語に近く、JavaScriptのオブジェクト記法でデータを記述するJSON(JavaScript Object Notation)とよく比較される。プログラムが内部で扱うオブジェクトなどを、保存や送受信などのために文字データ化する「シリアライズ」(serialize/直列化)のための形式として特に有名である。
基本的な仕様
YAMLでは基本的に「シーケンス」(sequence)、「マッピング」(mapping)、「スカラ」(scalar)の3種類の形式の組み合わせとしてデータを記述していく。
シーケンスは多くのプログラミング言語で「配列」(array)「リスト」(list)などと呼ばれる、データを連続に並べた構造である。同様に、マッピングは「ハッシュ」(hash)「連想配列」(associative array)などと呼ばれる、キーと値のペアを列挙する構造で、スカラは単体のデータである。
シーケンスやマッピングの入れ子(ネスト)構造の表現は、1文字以上の半角スペースを行頭に挿入して字下げ(インデント)することによって行なう。スペースの数は任意だが、タブ文字で代用することはできない。
スカラとして記述することのできるデータ型には、文字列、整数(8進数/10進数/16進数)、浮動小数点数、真理値(true/false)、日付、日付と時刻(タイムスタンプ)、空データ(Null値)などがあり、特定のプログラミング言語の特定のデータ型を明示して記述することもできる。
記法
スカラは「10」なら整数、「0.1」なら浮動小数点数、「abc」なら文字列といったように原則として表記によって自動的にデータ型の判定が行われる。数字や真理値の「true」などを文字列として扱いたい場合は引用符(「"」または「'」)で括る。先頭に「!!str 」のように「!!型名 」を付けて型を明示することもできる。
シーケンスは、一行で記述する場合は [ Red, Green, Blue ] のように角括弧で囲って値をカンマ区切りで並べる。一行に一項目を記述する場合は先頭をハイフン(-)とする。マッピングは「key : value」のようにコロン(:)でキーと値を対応付ける。
シーケンスの項目やマッピングの値を別のシーケンスやマッピングにすることができ、何段階も入れ子状に構造化することができる。データ本体として評価されたくない注釈(コメント)を記述したいときは、「#」を記述すればそこから行末までがコメントとなる。コメントは行頭からでも行の途中からでもよい。
歴史
YAMLは2001年にクラーク・エバンス(Clark Evans)氏、インギー・ドット・ネット(Ingy döt Net/2005年にTerry Brian Ingersonから改名)氏、オーレン・ベンキキ(Oren Ben-Kiki)氏らが考案し、最初の正式な仕様は2004年1月に発表された。
「YAML」という名称の由来は、当初はXML等を意識した “Yet Another Markup Language” (さらにもう一つのマークアップ言語)の略とされていたが、現在では正式には “YAML Ain’t Markup Language” (YAMLはマークアップ言語ではない)の略とされる。