YAML 入門

YAML とは、データを簡易的に表現する記法です。ハッシュのキーや値は自動的に型が推測されるので、文字列を引用符で囲む必要はありません。

YAMLの書き方

ブロックスタイルフロースタイル があります。動作確認には YAML をリアルタイムでパースしてくれるサイト(yaml-online-parser など)を使うと便利です。

ブロックスタイル

インデントによって構造を表す書き方です。

ハッシュ

hoge: 123
fuga: 456

# {"hoge"=>123, "fuga"=>456}

ハッシュ(ネスト)

hoge: 123
fuga:
  fuga1: 456
  fuga2: 789

# {"hoge"=>123, "fuga"=>{"fuga1"=>456, "fuga2"=>789}}

配列

- 123
- 456

# [123, 456]

配列(ネスト)

- 123
-
  - 456

# [123, [456]]

配列の中にハッシュ

- hoge: 123
  fuga: 456
- hoge: 234
  fuga: 567

# [{"hoge"=>123, "fuga"=>456}, {"hoge"=>234, "fuga"=>567}]

ハッシュの中に配列

hoge:
  - 1
  - 2
fuga:
  - 3
  - 4

# {"hoge"=>[1, 2], "fuga"=>[3, 4]}

複数行の文字列

hoge: |-
  abc
  def
  ghi

# {"text"=>"abc\ndef\nghi"}

フロースタイル

{ } や [ ] で直接記述する書き方です。

# ハッシュ
{hoge: 123, fuga: 456}

# ハッシュ(ネスト)
{hoge: 123, fuga: {fuga1: 456, fuga2: 789}}

# 配列
[123, 456]

# 配列(ネスト)
[123, [456]]

コメントアウト

# から行末までがコメントになります。

# コメント行
- 123
- 456

アンカーとエイリアス

ひとかたまりのYAMLを変数に入れ、それを他の場所で参照することができます。変数は &変数名(アンカー)で宣言し、参照する時は *変数名(エイリアス)で呼び出します。

default: &default
  - 123
  - 456

hoge:
  *default


# {"default"=>[123, 456], "hoge"=>[123, 456]}

ハッシュのマージ

<<: *変数名 で、ハッシュをマージすることができます。

default: &default
  hoge: 123
  fuga: 456

hoge:
  <<: *default
  piyo: 789

# {"default"=>{"hoge"=>123, "fuga"=>456}, "hoge"=>{"hoge"=>123, "fuga"=>456, "piyo"=>789}}