■YAMLとは?
YAMLは "YAML Ain't Markup Language "の略で、人間が読めるデータシリアライズ言語です。YAMLは設定ファイルの作成によく使われます。
YAMLはJSONのスーパーセットで、JSONができることとそれ以上のことができるます。
YAMLはインデントと改行でデータ構造を表します。
■Listデータの書き方
◆Listの中にスカラーが入っているパターン
- apple
- orange
- banana
上のように書いて、JSONに変換すると、画像のようになります。
「-」で書いていくパターンを「ブロックスタイル」といいます。
[apple, orange, banana]
jsonのような形式でYAMLを書くこともできます。
この書き方を「フロースタイル」といいます。
◆Listの中に長いスカラーが入っているパターン
- apple
orange
banana
長いスカラーは、上のような書き方ができます。
JSONに変換すると、1つの文字列として扱われます。
◆Listの中にListが入っているパターン
-
- apple
- orange
- banana
listの中にlistがあるパターンを再現するには、上のように書きます。
◆Listの中に複数のListがあるパターン
-
- apple
- orange
- banana
-
- carrot
- spinach
- cabbage
■dictionaryデータの書き方
◆dictionaryで値が1つのパターン
apple: 1
or
apple:
1
dictionaryを定義するには、上のように定義します。
apple:
1
2
3
複数の値をベタ書きしても、スカラーとして認識されます
◆dictionaryで複数の値を定義するパターン
apple:
small: 1
medium: 2
large: 3
◆1つのdictinaryの中にkeyとvalueが複数あるパターン
apple: 100
banana: 150
orange: 200
■Listとdictionaryの組み合わせ
◆listの中にdictinaryが1つあるパターン
- apple: 100
- apple: 100
banana: 200
orange: 300
◆1つのlistの中にdictionaryが複数あるパターン
- apple: 100
- banana: 200
- orange: 300
◆dictinaryの中にListがあるパターン
fruits:
- apple
- banana
- orange
- grape
◆listの中に複数のdictinaryがあるパターン
fruits:
- apple: 100
- banana: 150
- orange: 200
- grape: 250
■改行系
◆長い文字列の改行あり
description: |
This is a sample YAML file for a project configuration.
It includes various settings and parameters for the project.
改行込みの複数行文字列として認識させるには、| を使います。
jsonに治すと、「configuration.」のあとに改行が含まれていることがわかります。
◆長い文字列の改行なし
description: >
This is a sample YAML file for a project configuration.
It includes various settings and parameters for the project.
複数行の文字列の改行未反映バージョンです。
「configuration.」のあとに改行が含まれていないことがわかります。
◆コメント
# コメント
description: |
This is a sample YAML file for a project configuration.
It includes various settings and parameters for the project.
yamlでは、#でコメントを書くことができます。
■データ型について
◆Scalar (文字列)
# 文字列
apple: red
banana: yellow
grape: purple
# 文字列(ダブルクォート)
apple: "red"
banana: "yellow"
grape: "purple"
# 文字列(シングルクォート)
apple: 'red'
banana: 'yellow'
grape: 'purple'
クオーテンションで囲ってこも、囲わなくても文字列として扱われます。
◆Scalar (数値)
# int型
apple: 100
orange: 80
banana: 150
# float型
apple: 1.11
orange: 0.8
banana: 1.5
大きく分けて、int型とfloat型があります。
◆Scalar (日付)
# 「協定世界時 (UTC)」を意味する Z が付いており、これは UTC 基準 の時刻であることを示します。
standard time zone: 2001-12-15T02:59:43Z
# local time zone(標準時からの差分)
# 「+08:00」というオフセットが記されており、UTC より 8 時間進んだローカル時刻を表します。
# 例えば、UTC で 02:59:43 の時刻が、このローカルでは 10:59:43 に相当します。
local time zone: 2001-12-15T02:59:43+08:00
# no time zone(タイムゾーン情報なしの場合、Z = 世界標準時で扱われる)
# タイムゾーン指定がない時刻。YAML 仕様上は、 UTC とみなされる というルールがあります。
no time zone: 2001-12-15T02:59:43
# date only
# 時刻部分が省略されている日付のみの形式。
# YAML 仕様では、この場合は 2001-12-15T00:00:00Z(その日の午前 0 時の UTC)と同じと解釈されます。
date only: 2001-12-15
◆Scalar (真偽値)
boolValue: False # false, FALSE, False, no, No, NO, off, Off, OFF も同じ
boolValue2: true # true, TRUE, True, yes, Yes, YES, on, On, ON も同じ
◆Scalar (Null値)
name: Null # null, NULL, Null, ~ も同じ意味
◆Collection (シーケンス)
fruits:
- apple
- banana
- cherry
シーケンスとは、List(配列)のことです。
◆Collection (マッピング)
apple:
small: 1
medium: 2
large: 3
マッピングは、オブジェクトのことです。
■資料















