見出し画像

YAMLファイルについておぼえがき

#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"

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	

いいなと思ったら応援しよう!