【詳細④】YAML・TOML・XML:設定と文書のためのデータ形式

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]
XMLSGMLを絞り込んだ形式。
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/

総集編へ戻る

コメント

タイトルとURLをコピーしました