YAMLとは

YAMLとは、(YAML Ain’t Markup Language)の略で、ヤメルもしくはヤムルと呼びます。

構造化データやオブジェクトを文字列にシリアライズ化(直列化)する為のデータ形式です。最近は構成管理ツールなどのテンプレートとしてjsonなどの採用されています。よく、jsonと比べられることが多いのですが、jsonはコメントが記述できないことと{}を書く必要がないがないので、jsonよりもyamlで書くことをおススメしています。

YAMLの特長

テキストであるために可読できる。

拡張子は、.yml もしくは .yaml 。

yamlは多くのプログラミング言語から使うことができる。golang,PHP,javascript,actionscript,java,perl,XML, Lua等々

yamlの書き方

YAMLは、基本的に配列・ハッシュ・スカラーの組み合わせでデータを表現します。

配列

配列(シーケンス形式)は – で表現します。-半角スペースvalueの順番です。- の後には必ず半角スペースを入れます。

– aaa
– bbb
– ccc

[“aaa”,”bbb”,”ccc”]

 

入れ子構造にすることもできます。

– aaa
 – bbb
 – ccc

[“aaa”,[“bbb”,”ccc”]]

ハッシュ

ハッシュは、key:半角スペースvalueの順に書いて表現します。キー:値、key:value形式で表します。

name: ken
post number: 123-4567 
address: tokyo

[“name”=>”ken”,”post number”=>”123-4567″,”address”=>”tokyo”]

ハッシュもネスト(入れ子)にすることができます。

name: hana
Address
 post number: 234-5678 
 state: kyoto

{“name”=>”hana”,”Address”=>{“post number”=>”123-4567″,”address”=>”tokyo”}}

配列(シーケンス)とハッシュ(マッピング)の違い

配列は、[]で括ったn個のデータを入れることができる箱です。

Tokyo=[asakusa,kaminarimon,ueno] 

このような形で箱の中にデータを入れることができます。

データを取り出す時は、tokyo[0] とするとasakusaを取り出すことができます。データは前から順番に0,1,2,3,4,5…と呼び出します。使い方の例としましては、個人の名前や生年月日、郵便番号、住所などのデータを並べておいて、欲しい情報を指定して取り出す などがあります。

 

ハッシュは、 data={a:111, b:222, c:333}

配列はのデータはただの aaa や bbb といったデータでしかありません。一方で、ハッシュは a に 111 といったデータが紐づけられています。

ハッシュで書かれていれば、dataはdata[:a]で111、data[:b]で222を取り出すことができます。

スカラー

スカラーとは、値。つまり、文字列や整数、浮動小数点、真偽値(true,false,yes,no)、NULL、日付(yyyy-mm-dd hh:mm:ss)などのことです。

– ‘hogehoge’
– ‘1122334455’
– ‘false’
– 2020-03-01
– null

 

yamlでスカラーを表現してみる

str: ‘hogehoge’
str2: ‘1122334455’
boolean: true
date: 2020-03-01
float: 0.001
null: null

フロースタイルとブロックスタイル

 

これまでご紹介してきた書き方は、1行に文字列を納めるフロースタイル[red,blue,green]でしたが、複数行に文字列を記述する表現もあります。それがブロックスタイルです。