【YAML】YAML (YAML Ain't Markup Language)

■ はじめに

今更ながらだが、AWSやAnsibleなどなど色々と必要になりそうなので
YAMLについて、調べてみた。

YAML

* YAML :  
* 読み方は、「ヤムル」
* 拡張子は「***.yml」「***.yaml」

■ 種類

【1】スカラー ... 値
【2】シーケンス .. 配列
【3】マッピング .. ハッシュ(Key-Value)

【1】スカラー(値)

* データ型は以下のようなものがある

 a) 文字列 .... hello, "5", 'true'
 b) 数値 ... 5, 5.45
 c) 真偽 ... true/false, yes/no, on/off
 d) null ... null, ~(チルダ)
 e) 日付 ... 2019-12-21

【2】シーケンス(配列)

* 「- 【スカラー】」を使う(「ブロックスタイル」っていうらしい)

サンプル

- List-A
- List-B
- List-C

補足

* [List-A, List-B, List-C] って書き方でも同じ(こっちは「フロースタイル」)
* 空白を入れることで、入れ子構造もかける(「タブ」じゃだめ)

サンプル:入れ子

- List-A
- 
  - List-B1
  - List-B2
- Liar-C

【3】マッピング(Key-Value

* 「【キー】: 【値】」を使う

サンプル

key_A: value_A
key_B: value_B
key_C: value_C

補足

* { key_A: value_A, key_B: value_B, key_C: value_C } って書き方でも同じ
* 入れ子できま*
* 配列と組み合わせることも可能

■ 文法

コメント

* 「#」を使う

サンプル

# ここがコメントになる

変数(アンカー/エイリアス

* アンカー:変数定義
 ...「&」を使う

* エイリアス:変数参照
 ...「*」を使う

サンプル

- &leader Mike
- *leader
- &subleader Tom
- *lsubleader
- *subleader

改行

大なり記号 (>)

* 改行はスペースに置き換わる

【例】
- >
  aws s3 cp
  src/hello_world.py
  s3://hello-world-xxx/src/hello_world.py

# 「aws s3 cp src/hello_world.py s3://hello-world-xxx/src/hello_world.py」ってなる
#  => 一行として認識される

パイプ ( | )

* 

【例】
- |
  This is a sample.
  This is a just sample.

# 「This is a pen.\nThis is a just sample.」ってなる
#  => 改行も含めて認識される

■ その他

JSONからYAMLに変換

以下のサイトで変換できる

https://j2y.link

参考文献

https://qiita.com/fkana/items/21f7cc3b327445483d5c
https://magazine.rubyist.net/articles/0009/0009-YAML.html
https://www.wakuwakubank.com/posts/488-it-yaml/

動画

https://dotinstall.com/lessons/basic_yaml_v2

関連記事

TOML
https://dk521123.hatenablog.com/entry/2023/04/25/103533
Ansible ~ 基本編 ~
https://dk521123.hatenablog.com/entry/37482488
Python ~ 基本編 / YAML
https://dk521123.hatenablog.com/entry/2019/10/16/225401