43
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

YAML1.1で使われる記号の意味

Last updated at Posted at 2018-06-23

YAML1.1の記号、結構ググりにくいものが多いので
よく使われそうなものだけまとめました。

また、配列やハッシュに親しい表現になるということを文字列だけで表すと直感的にわかりにくいので
Rubyで読み込んだ後の状態を、プログラム上でのイメージとして今回載せています。

調査した環境

$ ruby -v
ruby 2.5.0p0 (2017-12-25 revision 61468) 

ruby2.5なのでYAMLのバージョンは1.1です。
参考:Ruby2.5時点のYAML標準ライブラリはYAML1.1 - コード日進月歩

それぞれの記号の意味

-(ハイフン)

2つ使い方の用途がある。

配列

1つの場合は配列として利用できる。

- aaa
- bbb
- ccc

Ruby的な表現をすると以下のイメージです。(あくまでもイメージ)

読み込みイメージ
["aaa", "bbb", "ccc"]

ファイル始端

3つ重ねて使うとファイルの始端の意味を表す。
.の項で詳しく説明します。

:(コロン)

コロンを境に左側がキー、右側が値というのを表します。
主にHashのようなキーと値のセットのイメージです。

必ずコロンの後はスペースまたは改行をいれること。

key: value

Ruby的な表現をすると以下のイメージです。(あくまでもイメージ)

読み込みイメージ
{"key"=>"value"}

多重階層表現の場合

多重階層で表す場合はインデントで下げます。

main:
 sub1: value
 sub2: value

Ruby的な表現をすると以下のイメージです。(あくまでもイメージ)

読み込みイメージ
{"main"=>{"sub1"=>"value", "sub2"=>"value"}}

&(アンパサンド)

YAMLの用語としては「アンカー」と呼びます。
変数のような使いかたをし、後述のエイリアスと併せて使います。

& で記述した内容自体は反映されません

key: &vars value

これをrubyで変換すると以下のイメージ

読み込みイメージ
{"key"=>"value"}

実際の使い方はアスタリスクの項目で説明します。

*(アスタリスク)

YAMLの用語としては「エイリアス」と呼びます
アンカーで設定した値をセットすることができます。
アンカーが変数定義で、エイリアスが変数利用のイメージです。

key1: &vars same_value
key2: *vars

上記は、以下の内容と同じになります

key1: same_value
key2: same_value

<(小なり)

<<: と記述することでハッシュのマージができます。
これはエイリアスとセットで使われる事が多いです。
以下に例を示します。

group1: &main_group
  member1: taro
  member2: sato
  member3: kato
group2:
  <<: *main_group
  member4: ito

これは以下の内容と同義になります。

group1: 
  member1: taro
  member2: sato
  member3: kato
group2:
  member1: taro
  member2: sato
  member3: kato
  member4: ito

.(ドット)

3つ重ねて使うことでファイル終端を表します。
--- と併せて使うケースが多いです。

以下の場合、ファイルをロードするとkey1key2が読みこまれて終端扱いになり、key3は読み込まれません。

---
key1: value1
key2: value2
...
key3: value3

#(シャープ)

コメントアウトです。
先頭行に書く場合には素直にコメントされるが
テキスト途中で行う場合はうまく挙動しない場合があるので注意してください

?(はてな/クエスチョン)

? 以降のものは明示的にキーであることを表す
使い所としてはキーが nil にしたい時に使う

? : "key is nil"

?に関してはYAML1.2の定義と若干振る舞いが違うので動きは要確認

参考サイト

タイトルの元ネタ

43
28
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
43
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?