228
224

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 5 years have passed since last update.

YAML 基本記法まとめ

Last updated at Posted at 2016-12-29

概要

最近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で変換する事が可能。
228
224
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
228
224

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?