YAML

YAML(ヤメル[1][2]、ヤムル[3])とは、構造化データやオブジェクト文字列シリアライズ(直列化)するためのデータ形式の一種。

YAML
拡張子.yaml, .yml
MIMEタイプapplication/yaml
初版2001年5月11日 (2001-05-11)
最新版
1.2 (Third Edition)
(2009年10月1日 (2009-10-01))
種別Data interchange
オープン
フォーマット
Yes
ウェブサイトyaml.org

特徴

テキストのため可読である。その概念はXMLプログラミング言語であるCPythonPerlからきている。YAMLの原案はクラーク・エバンス[4]、ブライアン・インガーソン[5]、オーレン・ベンキク[6]が共同で出した。

YAMLは再帰的に定義された頭字語でありその語源は「YAML Ain't a Markup Language.(→YAMLはマークアップ言語じゃない)である。初期には「Yet Another Markup Language(→もうひとつ別のマークアップ言語)と言われていたが、マークアップよりもデータ重視を目的としていたために後付されてできた名前である。しかしながら XML(本当のマークアップ言語)がデータシリアライズ目的のために頻繁に使用されるため、 YAMLを軽量マークアップ言語と考えることもできる。類似の規格としてJSONがある。

表記方法

インデントを使い階層構造を表現する。ただし、インデントにはタブが使えずスペースのみが使える[7]。スペース2個単位でインデントすることが多い。

# は行コメント。---は、一つのファイル内に複数のYAMLドキュメントを埋め込むときに用いるセパレータ。

リスト

--- # お好みの映画、ブロック形式
- Casablanca
- Spellbound
- Notorious
--- # 買い物リスト、インライン形式、またはフロー形式
[milk, bread, eggs]

連想配列

--- # ブロック
name: John Smith
age: 33
--- # インライン
{name: John Smith, age: 33}

各行の改行の維持

--- |
  There was a young fellow of Warwick
  Who had reason for feeling euphoric
      For he could, by election
      Have triune erection
  Ionic, Corinthian, and Doric

最終行の改行のみ維持し他はスペース一字に置換

--- >
  Wrapped text
  will be folded
  into a single
  paragraph
  
  Blank lines denote
  paragraph breaks

ハッシュのリスト

- {name: John Smith, age: 33}
- name: Mary Smith
  age: 27

リストのハッシュ

men: [John Smith, Bill Jones]
women:
  - Mary Smith
  - Susan Williams

データ構造

YAML木は3種類の基本ノード、sequence, mapping, scalar からなる[8]。各ノードは kind, content, tag によって特徴づけられる[9]

実装

YAMLは次の言語で利用可能である。

脚注

  1. Yet Another Markup Language (YAML) 1.0”. The Official YAML Web Site (2001年5月26日). 2016年2月15日閲覧。
  2. - Symfony”. Symfony, High Performance PHP Framework for Web Development. 2016年2月15日閲覧。
  3. ヤムル - PHPプロ!用語集”. PHPプロ!. 2017年3月23日閲覧。
  4. : Clark Evans
  5. : Brian Ingerson
  6. : Oren Ben-Kik
  7. プログラマーのための YAML 入門 (初級編)”. 日本Rubyの会. 2017年3月23日閲覧。
  8. "YAML represents any native data structure using three node kinds: sequence ...; mapping ...; and scalar" YAML specification v1.2.2.
  9. "Each YAML node requires ... kind and content ... tag" YAML specification v1.2.2.

関連項目

外部リンク

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.