13
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【初心者】YAML入門

Posted at

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

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

#YAMLで扱えるデータ型3つ

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

YAML
    counts: 3
    author: "Qiita"
    rating: 3.3
    active: 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: "Enoshima Aquarium"
      hours: "9:00〜17:00"
      price: 2500
      kindOfFish: 810

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

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

#コメント

YAML
   # 生き物の情報
   name: jellyfish

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

YAML
    dolphin:
     - name: hope
       age: 9
     - name: atene
       age: 16
     - name : marin
       age: 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: abe
       age: 65
     - name: trump
       age: 73

---

    countory:
      - Japan
      - America

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

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

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

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

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

13
11
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?