Quantcast
Channel: 初心者タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 21093

【初心者】YAML入門

$
0
0

Dockerを触ってみたりする中で、他の方が書いたMysqlとPHPMyAdminのコンテナをたてるdocker-compose.ymlとかをなんとなく調べて解読しながら読んだ事はありますが、、
そもそもYAMLの書き方について基礎的な知識がなく、基本的には読めないし書けないので、一度ゼロから入門してみたいと思います。

YAMLとは

正式名称は「YAML Ain’t Markup Language」。マークアップ言語ではなく、
構造化されたデータを表現するためのフォーマット。
拡張子は「.yml」または「.yaml」を使用。

YAMLで扱えるデータ型3つ

スカラー

数字や文字列、真偽値などの基本的な値を表現できる。
※文字列のダブルクォートは省略も可

YAML
counts:3author:"Qiita"rating:3.3active:true

上記のYAMLデータをJSONに変換すると、以下のようになる。

JSON
{"counts":3,"author":"Qiita","rating":3.3,"active":true}

シーケンス(Sequence)

要素の集合で、配列・リストのこと。
YAMLでは、行頭に「-」をつけることで配列を表現する。
「-」のあとに半角スペースを入れる。

YAML
languages:-Ruby-JavaScript-PHP-SQL

上記のYAMLデータをJSONに変換すると、以下のようになる。

JSON
{"languages":["Ruby","JavaScript","PHP","SQL"]}

マッピング(Mapping)

YAMLではkey:value型のコレクションをマッピングとして表現できる。

YAML
spot:name:"EnoshimaAquarium"hours:"9:00〜17:00"price:2500kindOfFish:810

上記のYAMLデータをJSONに変換すると、以下のようになる。

JSON
{"spot":{"name":"Enoshima Aquarium","hours":"9:00〜17:00","price":2500,"kindOfFish":810}}

コメント

YAML
# 生き物の情報name:jellyfish

シーケンスとマッピングのネスト

シーケンスの中にマッピングをネストしたり、逆にマッピングの中にシーケンスをネストすることができる。

YAML
dolphin:-name:hopeage:9-name:ateneage:16-name :marinage:18

上記のYAMLデータをJSONに変換すると、以下のようになる。

JSON
{"dolphin":[{"name":"hope","age":9},{"name":"atene","age":16},{"name":"marin","age":18}]}

インライン記法

マッピングやシーケンスをJSONのようにインラインに記述可能

YAML
languages:[Ruby,PHP,JavaScript]student:{name:tanaka,age:14}
JSON
{"languages":["Ruby","PHP","JavaScript"],"student":{"name":"tanaka","age":14}}

マルチドキュメント
区切り文字としてアンダースコア3つ「___」を使うことで、1つのファイルに複数のドキュメントを区切って表現することが可能。

YAML
people:-name:abeage:65-name:trumpage:73---countory:-Japan-America

特殊文字の扱い

YAMLでは、  [] {} : > |. などを文字列としてそのまま使うとエラーになる。
これらの文字を使うときはクオートで囲みましょう。

YAML
greeting:"[hello]>{world.}"

改行を含む文字列

改行を含む文字列を扱うときは「|」を使う

YAML
introduction: |HIGHMIDLOW 
JSON
{"introduction":"HIGH\nMID\nLOW\n"}

参考資料

WINDIIテック>なんとなく使っていませんか??YAMLの基本をまとめました!


Viewing all articles
Browse latest Browse all 21093

Trending Articles