1. HOME
  2. ブログ
  3. エンジニアリング
  4. なんとなく使っていませんか?YAMLの基本をまとめました!

BLOG

ブログ

エンジニアリング

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

はじめに

Ruby On RailsやLaravelなどモダンなWebフレームワークや、Dockerなどのインフラを触ると必ず出てくるYAML(ヤメル、ヤムル)。

どこにでもいる上に、JSONやXMLを理解している人ならなんとなく理解できてしまうため、YAMLをよく使うけど、実はよくわかっていないという人も多いのではないでしょうか?

そんな方のためにYAMLの仕様や書き方について基本からまとめました。YAMLで設定ファイルをサクッと書き上げるできるエンジニアになりましょう!

YAMLとは

YAMLは構造化データを人間の目にわかりやすいように表現できるように設計された言語です。YAMLは「YAML Ain’t Markup Language」の頭文字を取っています。名前の定義の中に名前が入っている珍しいネーミングですね。カッコよくいうと再帰的に定義された頭文字です。(Wikipediaより)
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"
}

まとめ

以上でYAMLの基本文法の紹介は終わりです。YAMLの書き方を理解して、YAML形式の設定ファイルをサクッと書き上げるかっこいいエンジニアになりたいものです。それでは〜。

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

関連記事