YAML
Webサーバーのテンプレートを YAML で書いてプルリクエストを出したら、CIが落ちて
YAML(ヤムル)は、設定を書くための書き方の1つです。
「キー: 値」の形で書き、行の頭の字下げ(インデント)で「何の中に入っているか」を表します。字下げがずれると、意味が変わったり、読み込めなくなったりします。
- YAML(ヤムル)は、設定を書くための書き方(形式)の1つ
- 「キー: 値」で書き、字下げ(インデント)で「何の中に入っているか」を表す
- 字下げは半角スペースで書く
- 「#」から後ろはコメント(メモ)
身近な例えで理解する
本の目次では、章の下に節が字下げして並びます。字下げの位置で、その節がどの章に入っているかが分かります。
- 章の見出し親のキー
- 字下げして並ぶ節子のキーや値
- 字下げの位置インデント
- 字下げがずれて、別の章の節に見えるインデントがずれて、別のものの中身として読まれる
目次なら人が見て「たぶんこうだろう」と分かりますが、コンピューターは字下げの位置どおりに読みます。
ちょっと確認
次の YAML を見た先輩:「インデントずれてるよ」何がおかしい? ``yaml server: name: web-01 ports: - 80 - 443 ``
例えを外して、実際のしくみ
キーと値
name: web-01 のように、「キー」「:」「半角スペース」「値」の順に書きます。並びのもの(リスト)は、行の頭に「- 」(ハイフンと半角スペース)をつけて書きます
字下げで中身を表す
下の例では、name と ports が server の中に入っていて、80 と 443 が ports の中身です。
# Webサーバー
server:
name: web-01
ports:
- 80
- 443もし ports: の行を server: と同じ位置まで左に寄せると、ports は server の中ではなく、別のものとして読まれます
字下げは半角スペースで
YAMLの決まり(仕様)で、字下げにタブは使えません。全角スペースも字下げにはなりません。何文字ずつ下げるかは決まっていませんが、同じ階層はそろえます。チームでは2文字ずつにそろえることが多いです
このページのまとめ
- YAML
- 設定を書くための書き方の1つ。字下げで中身を表す
- キー: 値
- 「name: web-01」のような、名前と中身の組
- インデント(字下げ)
- 行の頭の半角スペース。何の中に入っているかを表す
- #
- そこから行の終わりまでがコメント
先輩のひとことの意味
先輩「ここ、インデントずれてるよ」
「行の頭の字下げの位置がずれているので、その行が本来入るべきものの中ではなく、別のところに入っている(または読み込めない)と判断されているよ。字下げを半角スペースでそろえ直して」という意味です。
練習問題で確かめる
YAMLの字下げの書き方として正しいものは?
YAMLで、行の中に「#」を書くとどうなる?
参考資料
ご意見・「これで例えて!」を募集しています
ご意見・ご感想・質問・間違いのご指摘など、何でもお気軽にお寄せください。「この言葉も例えで説明してほしい」「こんな例えなら分かりやすい」という声をもとに、新しいページや例えを作ります。
- 説明してほしいITの言葉
- 例えてほしい場面(部活・アルバイト・家事など)
- 分かりにくかったところ・間違いのご指摘
意見箱は準備中です。