【やむる】

YAML とは?

最終更新:
💡 インデントなどで、データの構造を読みやすく書く

人が読み書きしやすいことを目指したデータ直列化言語。対応表・配列・文字列や数値などを表し、設定ファイルにも使われる。ブロック形式ではインデントで階層を表現する。

📌 このページのポイント
同じデータを2つの形式でYAMLJSONserver: port: 3000features: - auth - logging{ "server": { "port": 3000 }, "features": [ "auth", "logging"]}スペースで階層括弧で階層YAMLの型の解釈はバージョン等も確認
同じ対応表と配列を表した例。YAMLのブロック形式はインデントで階層を表す。インデントにタブは使わない。
ひよこ ひよこ
YAMLは何を書く形式なの?
ペンギン先生 ペンギン先生
設定などのデータを表す形式だよ。キーと値の対応表、順序のある配列、文字列や数値などを組み合わせる。ブロック形式だけでなく、角括弧や波括弧を使うフロー形式もあるんだ。
ひよこ ひよこ
基本の書き方は?
ペンギン先生 ペンギン先生
対応表はkey: value、配列は- itemのように書くのが基本だよ。下位の項目はスペースでインデントする。同じ階層の位置を揃えよう。2スペースはよく使う書き方だけど、仕様で一律2個と決まっているわけではないんだ。
ひよこ ひよこ
タブや引用符に注意が必要?
ペンギン先生 ペンギン先生
インデントにはタブを使わず、スペースを使うよ。引用符を省ける文字列もあるけれど、記号や値の解釈に条件がある。文字列として扱いたい値は引用符で明示し、使う処理系で確認しよう。
ひよこ ひよこ
yesやonは必ず真偽値になる?
ペンギン先生 ペンギン先生
バージョンとスキーマによるよ。YAML 1.1の真偽値の規則にはyes/no/on/offが含まれる。一方、1.2のCoreスキーマではtrue/falseと大文字・小文字の指定された形が真偽値になり、yesやonは通常文字列になる。利用先の解釈を確認するんだ。
ひよこ ひよこ
JSONのファイルも読める?
ペンギン先生 ペンギン先生
YAML 1.2はJSONの上位集合になるよう設計されているよ。ただし処理系の対応バージョンや独自の制限は確認しよう。YAMLにはコメントや複数行文字列などもあり、YAMLで書いたものがすべてJSONとして読めるわけではないんだ。
もっと詳しく知りたい人へ

コメントや複数行の文字列はどう書く?

コメントは#から書くよ。複数行の文字列は|で改行を保つリテラル形式、>で通常の改行をスペースへ折りたたむ形式を選べる。ただし空行や深くインデントした行などには別の扱いがあるので、読み込んだ値も確かめよう。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「YAML」って出てきたら「設定などのデータ構造を、人が読み書きしやすく表す形式」と思えばだいたいOK!
📖 おまけ:英語の意味
「YAML Ain’t Markup Language」 = YAMLはマークアップ言語ではない
💬 名前自身にYAMLを含む再帰的な略語だよ。文書の見た目を飾るためではなく、データを表す言語という意味を示しているんだ。

参考資料

← 用語集にもどる