Skip to main content

YAML

ymlでしか使えない構文など

ymlを継承した時などparseしてくれる。
参考URL

ymlデータ型

YAMLでは、以下のデータ型を表現できる。

  • スカラー値 (Scalar value): 文字列、整数、浮動小数点数、真偽値、null
  • シーケンス (Sequence): 配列、リスト
  • マッピング (Mapping): オブジェクト、連想配列、ハッシュ

また、YAMLは自己記述型言語であり、自由度が高いため、オリジナルのデータ型を作成することもできる。
ただし、YAMLの処理系がそのデータ型を解釈できるように、対応する処理を記述する必要があります。

Online YAML Parser

参考URL

ymlから以下にparseできる

yml→json yml→python

jsonからymlへ変更する 参考URL

基本的な書き方

参考URL

コメント 行頭に # はコメント

リスト(配列)

  • ハイフン - は配列の開始
  • 同一インデントは同じ配列に入る。

ハッシュ(連想配列)

  • キー名はスペースを含むことができる
  • キーはコロン「:」の後にスペースか、改行が必要です。
  • インデントが同じ場合は「兄弟」、異なる場合は「親子」になります。

記述

リストをShort syntax オブジェクトをLong syntax と呼ぶのは結構慣例

Short syntax(リスト)

depends_on:
- service_a

Long syntax(オブジェクト)

depends_on:
service_a:
condition: service_started

これ

継承

参考URL

JSONと違ってYAMLは継承ができる(つまりDRYに書ける)

&(anchor)と呼ぶ。これを使用しextendsできるようにする

# 参照できるようになる
foo: &foo
a: 1
b: 2
c: 3

extend

<< はextendの意味 anchorを継承したい時は <<: *アンカー名 のようにする。 ※なお後述した重複プロパティは上書きされる。この例ではcプロパティを上書きしている。

foo: &foo
a: 1
b: 2
c: 3

bar:
<<: *foo
c: "changed"
d: 4

JSON変換するとこうなる

{
"foo": {
"a": 1,
"c": 3,
"b": 2
},
"bar": {
"a": 1,
"c": "changed",
"b": 2,
"d": 4
}
}

extend inline

オブジェクトの中の単一のプロパティだけ継承元にしたいときは <<: &アンカー名 とする。

ymlフロントマター

YAMLフロントマター(Front Matter)は、マークダウンや他のテキストファイルの最初の部分に配置される、YAMLのブロック。
この部分はファイルのメタデータや設定を持つことができる。
フロントマターは3つのハイフン (---) で開始され、3つのハイフンで閉じられます。その間にYAML形式でのキーと値のペアが含まれる。

例:

---
title: "My Blog Post"
date: 2022-01-01
author: "John Doe"
---

This is the content of my blog post.

この例では、マークダウンファイルに3つのメタデータ(title, date, author)が追加されています。

とくに、静的サイトジェネレーター(例: Jekyll, Hugo)でよく使用されます。これらのツールはフロントマターの情報を使用して、ページや投稿の属性を定義し、適切にサイトを生成します。

GitHubのIssueやPull Requestのテンプレートにおいて、YAMLフロントマターはテンプレートの名前や説明、デフォルトのラベルなど、テンプレートに関するメタ情報を提供するのに使用されます。