YAML基本文法まとめ


YAMLとは

YAMLとは、配列や連想配列などの構造化されたデータを表現できるテキストフォーマットの1つです。
似た目的で使われるものにJSONやINI、XMLなどがありますが、
YAMLはその中でもインデントが必須であったり、文字列のクォートが不要であったりと、読み書きのしやすいフォーマットです。


YAMLのいいところ

・コメント書ける(JSONは書けない)
・文字列のクォートが不要(数値や真偽値などとして判定されない文字列なら)
・インデントが強制されるので読みやすい

YAMLの文法

YAMLは自由度が高くいろいろな書き方ができますが、基本だけまとめます。


基本

  • ハッシュ
    基本はキーバリュー(連想配列)の形
    属性名(キー)と値をコロンで区切る
key01: value01
key02: value02
  • 配列
    頭にハイフン + スペース
list:
 - element01
 - element02
 - element03

  • ネスト
    要素の入れ子はスペース2つ
parent:
  child:
    child_attr01: 100
    child_attr02: 200
  • コメント
    先頭に"#"で一行コメント
    インラインコメントも可能
# This is comment.
name: john
age: 22        # This is comment too.

データ型

YAMLの値はいくつかの型を表現できます。(この他にも日付型等もある)

  • 文字列
  • 数値
  • 真偽値
  • NULL

  • 文字列
    通常は文字列扱い
string: hello!
  • 数値
    数字のみの場合は数値として扱われる
number: 3

  • 真偽値
    true or false(全て小文字)で真偽値
bool01: true
bool02: false
  • NULL
    null(全て小文字)でNULL
null: null

  • 数値のみや"null"などの文字列
    クォート(シングル or ダブル)で囲うことで文字列であることを明示
not_number: "3"
not_null: "null"

もう一つの書き方

JSONっぽい書き方もあります。これを「フロースタイル」といいます。
(通常の書き方は「ブロックスタイル」)
※本当はJSONは全てブロックスタイルで書いたYAMLなので、YAMLが先


  • 配列(フロースタイル)
[element01, element02, element03]
  • ハッシュ(フロースタイル)
{key01: value01, key02: value02, key03: value03}

ブロックスタイルとの混在も可

  list01:
    - element01
    - element02
  list02:
    [element01, element02, element03]
  hash01:
    key01: value01
    key02: value02
  hash02:
    {key01: value01, key02: value02, key03: value03}

Return

Dockerコンテナ構築手順② Docker Compose編
https://qiita.com/aminosan000/private/6f1d1b1e730e01907fbc