#YAMLとは
YAMLは構造化データを人間の目にわかりやすいように表現できるように設計された言語です。
YAMLは「YAML Ain’t Markup Language」(YAMLはマークアップ言語ではない)の頭文字を取っています。名前の定義の中に名前が入っている珍しいネーミングですね。カッコよくいうと再帰的に定義された頭文字です。
XMLなどのマークアップ言語と同じく構造化データを表現する言語の一つですが、YAMLは自身の名前でマークアップ言語ではないよ!と言っているように、マークアップ言語の課題であった、読みにくさを払拭してくれます。
拡張子は.ymlまたは.yamlを使います。
#YAMLの文法
それではさっそくYAMLの基本的な文法を紹介していきたいと思います。
YAMLを理解する上でまずはじめに押さえておきたい点として、YAMLはスカラー、シーケンス、マッピングといったデータ形式をインデントで表現するのを基本としている点です。
こちらのサイトでYAMLをJSONなどに変換できるので色々遊びながらやっていくといいと思います。
https://codebeautify.org/yaml-to-json-xml-csv
スカラー
YAMLでは、数字や文字列、真偽値など基本的な値を表現できます。
post-counts: 3
author: "tanaka"
rating: 3.2
active: true
文字列をダブルクオートで囲みましたが、
author: tanaka
のように省略してもOKです。
シーケンス(配列・リスト)
YAMLでは要素の集合をシーケンスで表現できます。
languages:
- Ruby
- JavaScript
- PHP
- SQL
要素はインデント、ダッシュ(-)、スペースの後に続けて書きます。
マッピング(ハッシュ、辞書)
YAMLではkey:value型のコレクションをマッピングとして表現できます。
person:
name: tanaka
age: 38
height: 172
weight: 70
コロン(:)のあとのスペースは必須です!
コメント
#から始める文章はコメントとして扱われ無視されます。
# 田中さんに関する情報
name: tanaka
シーケンス、マッピングのネスト
シーケンスの中にマッピングをネストしたり、マッピングの中にシーケンスをネストしたりすることができます。
people:
- name: tanaka
age: 38
- name: suzuki
age: 26
- name : sato
age: 58
JSON形式に変換すると以下のようになります。
{
"people": [
{
"name": "tanaka",
"age": 38
},
{
"name": "suzuki",
"age": 26
},
{
"name": "sato",
"age": 58
}
]
}
インライン記法
マッピングやシーケンスをJSONのような形式でインラインに記述することができます。
languages: [Ruby, PHP, JavaScript]
student: {name: tanaka, age: 14}
それぞれJSONに変換すると以下のようになります。
{
"languages": [
"Ruby",
"PHP",
"JavaScript"
]
}
{
"student": {
"name": "tanaka",
"age": 14
}
}
マルチドキュメント
YAMLでは一つのファイルに複数のドキュメントを区切って表現することができます。区切り文字として3つのダッシュ(—)を使います。
people:
- name: tanaka
age: 38
- name: suzuki
age: 26
- name : sato
age: 58
---
languages:
- Ruby
- JavaScript
- PHP
- SQL
特殊文字の扱い
YAMLでは、 [] {} : > |. などを文字列としてそのまま使うとエラーになります。これらの文字を使いたいときはクオートで囲みましょう。
greeting: "hello>world."
改行を含む文字列
改行を含む文字列を扱いたいときは | を使います。
introduction: |
YAML
xml
JSON
JSONに変換すると以下のようになっています。
{
"introduction": "YAML\nxml\nJSON\n"
}
#Resource
https://tech.windii.jp/tool/yaml