はじめてのYAML

YAMLは可読性に優れたデータ直列化フォーマット。ネストされた要素を字下げで表現することにより、無用なマークアップを不要にしている。すなわち、YAMLマークアップ言語と同様の機能を持つが、マークアップ を何も必要としない(YAML Ain't Markup LanguageがYAMLの語源)。このため、XML と比べて読みやすい、書きやすい、わかりやすいという特徴を有する。

YAMLについてはプログラマーのための YAML 入門 (初級編)が分かりやすい。

YAMLの構造

YAMLではデータを次の3つの組み合わせで表現する。

配列

YAML では、行頭に「-」をつけることで配列を表現する。「-」のあとには半角スペースを入れる。

- aaa
- bbb
- ccc
ハッシュ

ハッシュは「キー: 値」の形式で表現する。コロン「:」のあとに半角スペースを 1 つ以上入れること(タブ文字は不可)

A: aaa
B: bbb
C: ccc
配列とハッシュのネスト

配列とハッシュはお互いにネストさせることが可能。

- name:  Hanako
  email: flower@mail.com
- name:  Sumire
  email: garnet@mail.net
- name:  Momoko
  email: peach@mail.org
ブロックスタイルとフロースタイル
  • インデントを使って構造を表す書き方→「ブロックスタイル」
  • 「{}」や「[]」を使って構造を表す書き方→「ブロックスタイル」
[aaa, bbb, ccc]

{"A"=>"aaa", "B"=>"bbb", "C"=>"ccc"}
コメント行

「#」から行末までがコメントとして扱われる。

複数行の文字列

複数行の文字列は以下のように扱う。

## 各行の改行を保存する
text1: |
  aaa
  bbb
  ccc
## 各行の改行を保存する
text1: |

## 各行の改行と、最終行に続く改行を保存する
text2: |+

## 各行の改行は保存するが、最終行の改行は取り除く
text3: |-

## 改行を半角スペースに置き換える、ただし最終行の改行は保存される
text4: >

## 改行を半角スペースに置き換え、最終行に続く改行を保存する
text5: >+

## 改行を半角スペースに置き換え、最終行の改行を取り除く
text6: >-
アンカーとエイリアス

YAML では、データに「&name」で印をつけ、「*name」で参照することが可能。前者をアンカー (Anchor)、後者をエイリアス (Alias) と呼ぶ。