LoginSignup
14
18

More than 3 years have passed since last update.

yamlファイルの書き方やと特徴

Last updated at Posted at 2020-12-12

はじめに

現在Railsを勉強中です。
アプリケーションを作成する上で、モデルやカラム、その他メッセージ等を日本語で出力したり扱いたい場面が必ずあると思います。自分の場合、すぐに忘れてしまうためその都度ググって、書き方合ってたかを確認しています。
ぶっちゃけYAMLファイルの仕様等を詳細に把握していなくても、問題なく作業が進むので今までないがしろにしてきましたが、今回は基本的な部分を調べて、アウトプットしようと思います。

YAMLファイルの特徴

分かりやすさ

構造化されたデータを扱うためのフォーマットであり、目的はXML等と似ているが、「読みやすい」「書きやすい」「わかりやすい」という利点がある。

構造

インデントによって、階層の構造を表現している

YAMLファイルで扱うデータ型

  • スカラー(文字列・数値・真偽値 etc)
  • シーケンス(配列)
  • マッピング(ハッシュ)

YAMLファイルの書き方

スカラー

YAMLはデータ型を自動的に判別してくれる
数字を文字列で扱いたい場合は '(シングルクォート)もしくは"(ダブルクォート)で囲むと強制的に文字列として認識してくれる

#数値
int1: 2
int2: 123,456

#浮動小数点
float1: 0.1

#NULL
nil1: nil
nil2: ~

#Boolean
bool1: true
bool2: false
bool3: yes
bool4: no
bool5: on
bool6: of

#日付
birthday: 1990-01-01
#タイムスタンプ
stamp: 2020-12-01 10:00:00 + 0900

#文字列
 str1:hoge
 str2:'true'
 str3:"333"

配列

行頭に-をいれることで、配列として扱うことが出来る。このときに-と値の間には半角スペースをいれること


- Ruby
- Java
- PHP

出力用メソッド

以降の出力例でも同様のものを使用

require 'yaml'

p YAML.load_file('test.yml')

出力結果

yaml_test.rb
["Ruby", "Java", "PHP"]

半角スペースでインデントを入れると、配列をネストさせることが出来る


- parent1
-
  - children1.1
  - children1.2
  - children1.3
  -
    - grandchild1.3.1
    - grandchild1.3.2
    - grandchild1.3.3
- parent2

出力結果

["parent1", ["children1.1", "children1.2", "children1.3", ["grandchild1.3.1", "grandchild1.3.2", "grandchild1.3.3"]], "parent2"]

ハッシュ

:で「キー:値」のように区切って記述する
おそらくこれが、railsで扱う中で一番多いパターンだと思います。


name: 名前
age: 年齢
gender: 性別
address: 住所

出力結果

{"name"=>"名前", "age"=>"年齢", "gender"=>"性別", "address"=>"住所"}

ハッシュに関しても半角スペースでインデントすることで、ネストさせることが可能


music:
  rock: ロック
  pop: ポップス
  jaz: ジャズ

出力結果

{"music"=>{"rock"=>"ロック", "pop"=>"ポップス", "jaz"=>"ジャズ"}}

アンカーとエイリアス

YAMLではアンカーとエイリアスを仕様することで、対象の構造に対して参照することが出来る
&nameでアンカーをつけ、*nameで参照することができる。

Railsの database.ymlなどではデフォルトで使われている


default: &default
  adapter: postgresql
  encoding: unicode

development:
  <<: *default

ちなみにここで登場している <<を用いることでハッシュをマージ出来る。

{"default"=>{"adapter"=>"postgresql", "encoding"=>"unicode"}, "development"=>{"adapter"=>"postgresql", "encoding"=>"unicode"}}
参考文献

プログラマーのための YAML 入門 (初級編)

14
18
0

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
14
18