【初心者】YAML入門
Dockerを触ってみたりする中で、他の方が書いたMysqlとPHPMyAdminのコンテナをたてるdocker-compose.ymlとかをなんとなく調べて解読しながら読んだ事はありますが、、
そもそもYAMLの書き方について基礎的な知識がなく、基本的には読めないし書けないので、一度ゼロから入門してみたいと思います。
YAMLとは
正式名称は「YAML Ain’t Markup Language」。マークアップ言語ではなく、
構造化されたデータを表現するためのフォーマット。
拡張子は「.yml」または「.yaml」を使用。
YAMLで扱えるデータ型3つ
スカラー
数字や文字列、真偽値などの基本的な値を表現できる。
※文字列のダブルクォートは省略も可
counts: 3
author: "Qiita"
rating: 3.3
active: true
上記のYAMLデータをJSONに変換すると、以下のようになる。
{
"counts": 3,
"author": "Qiita",
"rating": 3.3,
"active": true
}
シーケンス(Sequence)
要素の集合で、配列・リストのこと。
YAMLでは、行頭に「-」をつけることで配列を表現する。
「-」のあとに半角スペースを入れる。
languages:
- Ruby
- JavaScript
- PHP
- SQL
上記のYAMLデータをJSONに変換すると、以下のようになる。
{
"languages": [
"Ruby",
"JavaScript",
"PHP",
"SQL"
]
}
マッピング(Mapping)
YAMLではkey:value型のコレクションをマッピングとして表現できる。
spot:
name: "Enoshima Aquarium"
hours: "9:00〜17:00"
price: 2500
kindOfFish: 810
上記のYAMLデータをJSONに変換すると、以下のようになる。
{
"spot": {
"name": "Enoshima Aquarium",
"hours": "9:00〜17:00",
"price": 2500,
"kindOfFish": 810
}
}
コメント
YAML
# 生き物の情報
name: jellyfish
シーケンスとマッピングのネスト
# 生き物の情報
name: jellyfish
シーケンスの中にマッピングをネストしたり、逆にマッピングの中にシーケンスをネストすることができる。
dolphin:
- name: hope
age: 9
- name: atene
age: 16
- name : marin
age: 18
上記のYAMLデータをJSONに変換すると、以下のようになる。
{
"dolphin": [
{
"name": "hope",
"age": 9
},
{
"name": "atene",
"age": 16
},
{
"name": "marin",
"age": 18
}
]
}
インライン記法
マッピングやシーケンスをJSONのようにインラインに記述可能
languages: [Ruby, PHP, JavaScript]
student: {name: tanaka, age: 14}
{
"languages": [
"Ruby",
"PHP",
"JavaScript"
],
"student": {
"name": "tanaka",
"age": 14
}
}
マルチドキュメント
区切り文字としてアンダースコア3つ「___」を使うことで、1つのファイルに複数のドキュメントを区切って表現することが可能。
people:
- name: abe
age: 65
- name: trump
age: 73
---
countory:
- Japan
- America
特殊文字の扱い
YAMLでは、 [] {} : > |. などを文字列としてそのまま使うとエラーになる。
これらの文字を使うときはクオートで囲みましょう。
greeting: "[hello]>{world.}"
改行を含む文字列
改行を含む文字列を扱うときは「|」を使う
introduction: |
HIGH
MID
LOW
{
"introduction": "HIGH\nMID\nLOW\n"
}
参考資料
Author And Source
この問題について(【初心者】YAML入門), 我々は、より多くの情報をここで見つけました https://qiita.com/mackeyTA/items/7dd9282ae7c0599495a6著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .