YAML:人が読みやすいデータの書き方
YAML 1.2.2の仕様は、YAMLを「人が読みやすく、どのプログラミング言語でも扱えて、世界中の文字に対応した、データの書き方」と説明しています。
名前は「YAML Ain’t Markup Language」の略で、「マークアップ言語(タグで文書を飾る言語)ではない」という意味です [Y1]。
設定ファイルによく使われますが、仕様は「設定専用ではなく、データを書き出すための言語であり続ける」と明記しています [Y1]。
JSONとの関係も、仕様に書かれています。
2005年のYAML 1.1のころに、JSONがほぼYAMLの一部になっていることに気づき、2009年のYAML 1.2では、「JSONで書けるものはすべてYAMLでも書ける」ようにすることが主な目標になりました [Y1]。
2021年10月に出たYAML 1.2.2は、YAML 1.2から、決まりごとに関わる変更はありません [Y1]。
name: hoge
tags:
- data
- yaml
active: true
TOML:設定ファイルに特化した、シンプルな形式
TOMLの公式サイトによると、TOMLは、設定ファイルのためのシンプルな形式を目指しています。
読みやすく意味がはっきりしていること、「名前と値の対応表」に迷いなく置き換えられること、多くのプログラミング言語で簡単に読み込めること、の3つが狙いです [T1]。
- # でコメントを書ける(「設定ファイルにはコメントが必要」という立場) [T1]
- 文字・数・真偽値・日時・配列・表など、設定に必要な型が揃っている。日時は、時差つきでも時差なしでも書ける [T1]
# TOMLの例
title = "TOML Example"
[database]
enabled = true
ports = [ 8000, 8001, 8002 ]
注記:公式サイトでは、現在の版はv1.0.0と表示されています。
仕様は更新される可能性があるため、利用前に確認してください [T1]。
XML:タグで構造を示す、W3C公認の形式
XML 1.0(第5版)は、W3Cが公式に推奨する仕様(勧告)で、2008年11月26日に公開されました。
XMLは、SGMLという古い文書の規格を、Webで使いやすいように絞り込んだものです [X1]。
第5版は「新しいバージョンのXML」ではなく、見つかった誤りの訂正を取り込んだ版です [X1]。
主な変更として、タグの名前などに使える文字の制限がゆるみ、XML 1.1でしか使えなかった便利さが、XML 1.0でも得られるようになりました [X2]。
設計の考え方として、仕様自身が「マークアップの簡潔さは、ほとんど重要ではない」と述べています [X1]。
タグで囲む分、書く量は増えますが、そのぶん文書の構造をはっきり示せます。
<?xml version="1.0" encoding="UTF-8"?>
<person>
<name>hoge</name>
<active>true</active>
</person>
3形式の違いを一言で
| 形式 | 仕様が述べる性格 | 気をつける点 |
| YAML | 人が読みやすい、データの書き方。 JSONで書けるものはすべて書けることを目指した [Y1] | 機能が多い分、仕様も大きい。 仕様の前置きでも、複雑すぎるという見方があることに触れている [Y1] |
| TOML | 設定ファイル向けのシンプルな形式。 コメントを書ける [T1] | 主な用途は設定ファイル [T1] |
| XML | SGMLを絞り込んだ形式。 W3C公認 [X1] | 簡潔さよりも、構造をはっきり示すことを優先した設計 [X1] |
注記:上の表の「気をつける点」は、各公式ページの記述に基づく私の整理です。
YAMLの「複雑という見方」は、YAML 1.2.2仕様の前置きに書かれている内容です [Y1]。
参照元
[Y1] YAML Ain’t Markup Language (YAML) version 1.2.2 — https://yaml.org/spec/1.2.2/
[T1] TOML v1.0.0 — https://toml.io/en/
[X1] W3C, Extensible Markup Language (XML) 1.0 (Fifth Edition) — https://www.w3.org/TR/xml/
[X2] W3C, XML 1.0 Fifth Edition Is a W3C Recommendation(W3Cニュース) — https://www.w3.org/news/2008/extensible-markup-language-xml-10-fifth-edition-is-a-w3c-recommendation/

コメント