Help us understand the problem. What is going on with this article?

YAML 基本記法まとめ

More than 1 year has passed since last update.

概要

最近YAMLファイルで書かれている設定ファイルを目にする機会が増えた為、
最低限の記法だけまとめてみた。

YAMLの基本

YAMLの概要

  • 構造化されたデータの表現記法。
  • フレームワーク・ツールの設定ファイルに利用されている。
  • Ruby関連の設定ファイルでよく利用されている。
  • 拡張子は.ymlが使われる事が多い。
  • Ruby側では‘yaml’をrequireでYAML関連の命令が使える様になる。
  • YAMLではデータ構造を自動で判別してくれる。
    • “”などをつけると強制的に型を変換できる。
  • #でコメント可能

YAMLが扱えるデータ構造

スカラー(値)

  • 文字列
    • hello
    • fujimoto
  • 数値
    • 2
    • 3
    • 32.5
  • 真偽値
    • true/false
    • yes/no
    • on/off
  • NULL
    • null
    • ~
  • 日付
    • 2015-07-08

シーケンス(配列)

  • ハイフン(-)に引き続きスカラーを記載する。(ブロックスタイル)
    • -の後ろにはスペースが必要
  • インラインで[ ]で記載も可能(フロースタイル)
  • 入れ子で記載も可能
    • 字下げは1文字以上の空白(tabは不可)
    • シーケンスを利用する際は、空白のシーケンスを利用する。 ### マッピング(ハッシュ・連想配列)
  • コロン(:)でkey/value形式で利用する。(ブロックスタイル)
    • :の後ろにはスペースが必要
  • インラインで{ }で記載も可能(フロースタイル)

改行を含むデータ

  • |
  • >
  • 改行記号の後に、+や-で最後の改行のあるなしを設定したりできる。

アンカーとエイリアス

  • &
    • アンカー
    • 変数を定義するイメージ
  • *
    • エイリアス
    • 変数を利用するイメージ

ハッシュのマージ

  • <<でマージできる
data.yml
common: &common
  user: dbuser
  password: password

development:
  database: myapp_dev
  <<: *common
production:
  database: myapp_prod
  <<: *common
test:
  database: myapp_test
  <<: *common

複数のデータを解釈する

  • 1つのファイルで複数のデータを解釈させる。
    • データの初めを---
    • データの終わりを…
      • …は省略可能
index.rb
require 'yaml'

# 1ファイル1データを読み込む
datas = YAML.load_file('data.yml')
p datas

# 1ファイルで複数のデータを読み込む
File.open('data.yml') do |io|
  YAML.load_documents(io) do |d|
    p d
  end
end
data.yml
---

- a
- b
- c

---

- 1
- 2
- 3

Rubyのto_yaml

  • Rubyの変数をYAMLで変換する事が可能。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした