LoginSignup
0
0

More than 5 years have passed since last update.

ドットインストールyaml入門を受講したときのメモ

Last updated at Posted at 2016-07-26

yaml入門

#01 yamlを使ってみる。

  • 環境はruby(cloud9で立ち上げ)を使用。(rubyのバージョンは2.3)
  • yamlはデータ構造をシンプルな表記で記述する記法

#03 スカラーを扱ってみる。

  • yamlが扱える3種類のデータ構造の1つ
  • スカラー:値
    • 文字列
    • 数値
    • 真偽値
    • null
    • 日付 入力例
scaler.yml
- testdata
- 30
- 23.5
- true #true/false, yes/no, on/off
- null #~
- 2016-07-10
- "333" #文字列として解釈する

#04シーケンスを扱ってみる。

  • シーケンス:配列
    • ハイフンを付けてスカラーを記述すればOK
    • インラインスタイルで書いても認識してくれる。
sequence1.yml
#ブロックスタイル
- a
- b
- c
#フロースタイル
[d,e,f]

入れ子構造

sequence2.yml
- a
-  #入れ子構造にしたい時は、ここにスカラーを入れない。
  - b-1
  - b-2
- c

#05 マッピング:ハッシュ(key / value)

  • キーと値を並べてあげればよい。
mapping1.yml
name: test
score: 80
#フロースタイルでも書ける
{name: test, score: 70}

入れ子構造

mapping2.yml
name: test
score:
  game-1: 40
  game-2: 60

#06 複雑なデータを扱う

配列のハッシュ

complex1.yml
names: 
  - test
  - taro
scores: 
  - 60
  - 90
# フロースタイルでもOK
names: [test, taro]
scores: [60, 90]

ハッシュの配列

complex2.yml
- name: test
  score: 60
- name: taro
  score: 90

# フロースタイル
- {name: test, socre: 60}
- {name: taro, socre: 90}

#07 改行を含むデータを扱う

  • 改行はスペースに変換されてしまう。
  • 改行も含めたデータとして取り扱いたい場合は以下のとおり。
data.yml
- |+   #最終行の改行を含めたい場合は"+"、除きたい場合は"-"
  this
  is
  a
  pen.

- >+   #途中の改行はスペース変換。最後の改行は有効
  this
  is
  a
  pen.

#08 アンカーとエイリアスを使ってみる。

  • 何かしらのスカラーを変数化したい時につかう。
anker.yml
- &leader tanaka #アンカー
- *leader #エイリアス
- &staff sato 
- *staff
- *staff
- *staff
- *staff

複雑なデータのアンカーとエイリアス

 * ハッシュに対して友達関係を表現したい場合。

anker2.yml
- &test
  name: test
  score: 90
- &taro
  name: taro
  score: 60
  friends:
    - *test
- &jiro
  name: jiro
  score: 45
  friends:
    - *taro
    - *test

#09 ハッシュをマージする。

  • 共通のハッシュなどをスッキリ書くときに使う。
hash_merge.yml
common: &common #commonのアンカーを定義する。
  user: dbuser
  password: dbpassword

development:
  database: myapp_dev
  <<: *common #commonのエイリアスを挿入(マージ)する。

production:
  database: myapp_prod
  <<: *common

test:
  database: myapp_test
  <<: *common

#10 複数のデータを解釈する。

  • 通常は1つのスカラーやシーケンスは1つのデータとして処理される。
  • データの始まり(---)と終了(...)を記述することで、複数のデータをまとめて解釈する。
mydata.yml
---
- 1
- 2
- 3
... #...は省略可能
---
- a
- b
- c
...
parse.rb
require "yaml"

File.open('mydata.yml') do |io|
   YAML.load_documents(io) do |d|
       p d
   end
end

出力

[1, 2, 3]
["a", "b", "c"]

#11 Rubyのto_yamlを試してみる。

  • yamlの記法を忘れてしまった時などに使える。
  • rubyでは、to_yaml
parse.rb
require "yaml"

users = [
    {'name' => 'test', 'score' => '90'},
    {'name' => 'taro', 'score' => '100'},

    ]

puts users.to_yaml

出力

---
- name: test
  score: '90'
- name: taro
  score: '100'

以上、yaml便利!

0
0
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
0
0