YAMLファイルについておぼえがき
YAMLってなに?
たまにしか使わないyamlファイル。 なんとなく適当に使っていたけど、(またなんとなくでも使えていたけど) ちょっと知っておくとエラーとか避けれそうなので覚書。
YAMLは YAML Ain’t Markup Language の略。(じゃぁ、そのYAMLはなんなんだよっていうメタ的なネーミング🤔)
ファイルの拡張子には.yml や.yamlが使われる。
YAML ファイルの用途
Docker
Kubernetes
Prometheus
Shopify theme
Github workflow
などの設定ファイルに使われるフォーマット形式。独自の表記法をつかう。
YAML は Data serialization language の一種でXMLやJSONなどと同じ。
Data Serialization language とはデータの転送などのために使われる標準化された言語
なぜYAMLが使われるか
読みやすいから
YAMLと他のXMLとJSONの比較
YAML - 人間の目ですごく読みやすい! ただしスペースや改行などに注意。
person:
- name: 屋守太郎
age: 29
gender: 男
birthday: 1994-3-24
XML は読みにくいし複雑 括弧がおおくなる
<person>
<name>屋守太郎</name>
<age>29</age>
<gender>男</gender>
<birthday>1994-3-24</birthday>
</person>
JSON は {} でくくる、大きくなってくると{}がどこで閉じてるのかわからなくなってくる。
{
"person": [
{
"name": "屋守太郎",
"age": 29,
"gender": "男",
"birthday": "1994-3-24"
}
]
}
YAML は JSONのSupersetなので 、YAMLが読み込めるならJSONファイルも読み込みも可能。置き換えのツールなどのもある(後述)
YAMLのよみやすい特徴
JSONやXMLは括弧で区切るが、YAMLはPython と同じようにラインとインデントで文法が構成。
ネスト入れ子構造で見た目が複雑になりにくい。
YAMLの文法ー基礎編
① Key-value pair で書く
キーとバリュー(値)がペアになっていること。これはJSONなんかと同じ
キー : バリュー
Key : Value
key: value
key: 'value'
key: "value"
② Commentの書き方
コメントには # を使う
# コメントの書き方はシャープを使う
key: value
③ Objectにする書き方
オブジェストにはインデントを使う。スペースの位置に注意。
object:
key1: value
key2: value
key3: value
JSONだとこんな感じね。
{
"object": {
"key1": "value",
"key2": "value",
"key3": "value"
}
}
④ Listの書き方 Array
-ダッシュを使う。 最初の一行にダッシュをつけて他はインデントを揃える。
- value
- value
- value
JSONだとこう
[
"value",
"value",
"value"
]
⑤ Booleanの書き方
YAMLではtrue false 以外にも yes no が使える。また on off も使える
# true or false での boolean
key1: true
key2: false
# yes or no での boolean
key3: yes
key4: no
# on or off での boolean
key5: on
key6: off
List の応用編
複数のリスト
# 複数のリスト
object1:
- key1: value
key2: value
- key3: value
key4: value
ちなみにJSON だとこうなる
{
"object1": [
{
"key1": "value",
"key2": "value"
},
{
"key3": "value",
"key4": "value"
}
]
}
もうちょっと複雑なの
family:
- person1:
name: 屋守太郎
- person2:
name: 屋守花子
JSONだとこう
{
"family": [
{
"person1": {
"name": "屋守太郎"
}
},
{
"person2": {
"name": "屋守花子"
}
}
]
}
直でValueを書くこともできる。
# 直で書く
array:
- value1
- value2
JSONだとこうなる
{
"array": [
"value",
"value"
]
}
リストの中のリスト
リストの中にリストを作る場合はこんな感じ。インデントに注意!!
# リストの中のリスト
object:
- key1: value
key2:
- value1
- value2
JSONだとこうなる
{
"object": [
{
"key1": "value",
"key2": [
"value1",
"value2"
]
}
]
}
リストがよみにくい場合は従来のArrayのように[]括弧をつかうのもアリ。
Valueが数字だけとか小さい場合はこっちのほうが読みやすい!
object:
- key1: value
key2: [value1, value2, value3]
YAMLの文法ツール
YAML チェッカーを使おう
Yaml Validator : YAMLの文法があっているかチェックしてくれる。
YAML Checker - The YAML Syntax Validator : こっちでもチェックしてくれる、細かいこと間違いなども教えてくれるのでこっちのほうがよいかも。
JSONには慣れてる人にはこんなのもある。
ONLINEYAMLTOOLS : YAMLをJSONに変更してくれる。
YAMLの文法ー応用編
Multi Line Strings (複数行)
multilineStrings1: |
一つのストリングを改行する
にはパイプシンボルを使います。
JSONだと \n のエスケープを使う感じ
{
"multilineString": "一つのストリングを改行するには\nにはパイプシンボルを使います。\n"
}
Environment Variable
よくEnvironment Variable にYAMLは使われる。
Environment Variable のパスワードなどのVariableには$マークをつかう。
全部大文字で使われるのが一般的のよう。
loginID: Test123
password: $THIS_IS_PASSWORD
APIKEY: $THIS_IS_API_KEY
Place Holder プレースホルダー
YAMLの中でプレースホルダーを使う場合{{}}を使う。
object:
key: {{ .Value.name }}
一つのYAMLファイルに複数のコンポーネントを入れる。
一つのYAMLファイルの中に複数のコンポーネントをいれたい場合は - - - ダッシュ3つでつなげたのをいれる。
key1: value
key2: value
object:
key3: value
---
key1: value
key2: value
object:
key3: value
key4: value