YAML(ヤメル、ヤムル、YAML Ain't Markup Language)とは、構造化データやオブジェクトを文字列にシリアライズ(直列化)するデータ記述言語の一種。
特徴 テキストのため可読である。その概念はXMLやプログラミング言語であるC、Python、Perlからきている。2001年に、クラーク・エバンス、ブライアン・インガーソン、オーレン・ベンキクが共同でAMLの原案を提案した。その後、約3年間の共同設計や仕様調整を経て、2004年に最初の正式仕様である「YAML 1.0」が発表された。
YAMLは再帰的に定義された頭字語でありその語源は「」である。初期には「」と言われていたが、マークアップよりもデータ重視を目的としていたために後付されてできた名前である。類似の規格としてJSONがあるが、JSONと違ってコメントの記述ができるのが特長である。
表記方法
インデントを使い階層構造を表現する。ただし、インデントにはタブが使えずスペースのみが使える。スペース2個単位でインデントすることが多い。
例 # は行コメント。---は、一つのファイル内に複数のYAMLドキュメントを埋め込むときに用いるセパレータ。 リスト
--- # お好みの映画、ブロック形式 - Casablanca - Spellbound - Notorious --- # 買い物リスト、インライン形式、またはフロー形式 [milk, bread, eggs]
連想配列
--- # ブロック name: John Smith age: 33 --- # インライン {name: John Smith, age: 33}
各行の改行の維持 data: | 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
最終行の改行のみ維持し他はスペース一字に置換 data: > 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
特殊な値 - null - true - .inf - .-inf - .nan - 0x12 # 16進数 - 0o12 # 8進数
データ構造 YAML木は3種類の基本ノード、sequence, mapping, scalar からなる"YAML represents any native data structure using three node kinds: sequence ...; mapping ...; and scalar" YAML specification v1.2.2.。各ノードは kind, content, tag によって特徴づけられる"Each YAML node requires ... kind and content ... tag" YAML specification v1.2.2.。
実装 YAMLは次の言語で利用可能である。
ActionScript C/C++ C#/.NET Cocoa Dart Golang Haskell Java JavaScript Lua Nim OCaml Perl PHP (PECLのモジュールやSymfonyのYAMLコンポーネントがある) Python Ruby (Ruby 1.8から標準ライブラリに含まれる。) Rust Tcl Vim
脚注
関連項目 データ記述言語 マークアップ言語 軽量マークアップ言語
外部リンク
YAML検証ツール YAML Lint Best Online YAML Converter Convert YAML Strings into JSON, XML, CSV YAMLからテーブルへのコンバーター YAML 修復ツール。