コンテンツにスキップ

YAML:YAML Ain't a Markup Language@データ記述型言語

はじめに

本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。


01. YAMLとは

異なる言語間やサーバー間で変換できるデータ記述型言語である。


02. 設計規約

キー名のケース

▼ ローワーキャメルケース

高頻度で使用されている。

例えば、Kubernetesではローワーキャメルケースに統一されている。

fooBarBaz: ""

▼ スネークケース

中頻度で使用されている。

例えば、Envoyではスネークケースに統一されている。

foo_bar_baz: ""

▼ ケバブケース

低頻度で使用されている。

foo-bar-baz: ""


03. 文法

配列

[] (括弧)

account: 200
fruit: ["banana", "apple"]

- (マイナス)

account: 200
fruit:
  - "banana"
  - "apple"


改行

| (パイプ)

改行を改行のまま処理する。

また、最終行の改行までを全て使用する。

コマンドを繋ぐ&&;は不要である。

command: |
  echo foo
  echo bar
# 処理中の構造
{ "command" => "echo foo\necho bar\n" }

|+ (パイプ、プラス)

改行を改行のまま処理する。

また、最終行の改行のみでなく、それ以降の改行を全て使用する。

コマンドを繋ぐ&&;は不要である。

command: |+
  echo foo
  echo bar
# 処理中の構造
{ "command" => "echo foo\necho bar\n" }

|- (パイプ、マイナス)

改行を改行のまま処理する。

ただし、最終行の改行を削除する。

コマンドを繋ぐ&&;は不要である。

command: |-
  echo foo
  echo bar
# 処理中の構造
{ "command" => "echo foo\necho bar" }

> (大なり)

改行をスペースに変換して処理する。

また、最終行の改行までを全て使用する。

改行した異なるコマンドが、スペースを挟んで繋がってしまうため、&&;で繋ぐ必要がある。

command: >
  echo foo &&
  echo bar
# 処理中の構造
{ "command" => "echo foo;echo bar\n" }

>を使用すれば、1行の条件文を複数行で定義することもできる。

command: if [ -z "$VAR" ];then echo foo; else echo bar; fi
command: >
  if [ -z "$VAR" ];then
    echo foo;
  else
    echo bar;
  fi

>+ (大なり、プラス)

改行をスペースに変換して処理する。

また、最終行の改行のみでなく、それ以降の改行を全て使用する。

値が長くなる場合に便利である。

改行した異なるコマンドが、スペースを挟んで繋がってしまうため、&&;で繋ぐ必要がある。

command: >+
  echo foo &&
  echo bar
# 処理中の構造
{ "command" => "echo foo && echo bar\n" }

>- (大なり、マイナス)

改行をスペースに変換して処理する。

ただし、最終行の改行を削除する。

値が長くなる場合に便利である。

改行した異なるコマンドが、スペースを挟んで繋がってしまうため、&&;で繋ぐ必要がある。

command: >-
  echo foo &&
  echo bar
# 処理中の構造
{ "command" => "echo foo && echo bar" }