TOMLフォーマット

目次

TOMLとは

TOML(とむる、Tom’s Obvious, Minimal Language)はトム氏の考案した明瞭で最小の言語です。2013年に初版であるver.0.1.0が公開されました。

[フォーマット]

# コメント
[テーブル名]
キー名=値
項目内容
キー設定を「名前=値」の形式で記述します。
キーにはベアキー、引用符付きキー、ドット付きキーがあります。
テーブルキーをテーブルというグループに分けて管理します。
同一のテーブル内に同一のキー名を設けることはできません。
コメント「#」から行末まではコメントとなります。
フォーマットの説明

TOMLの特徴

  • 公式サイトで詳細を確認できます。日本語訳もあります。
  • ファイルの拡張子は「.toml」です。
  • ファイルのエンコードは「UTF-8」です。
  • MIMEタイプは 「application/toml」です。
  • 改行コードはLFまたはCRLFです。

キーの表記方法

ベアキー

ベアキーの名前には「A~Z、a~z、0~9」の他、アンダースコア「_」とダッシュ「-」のみを使用できます。

key = "value"
bare_key = "value"
bare-key = "value"
1234 = "value"
引用符付きキー

引用符「’」または「”」で囲うことで、より多様な名前を付けることができます。

"127.0.0.1" = "value"
"character encoding" = "value"
'key' = "value"
'quoted "value"' = "value"
ドット付きキー

ベアキーまたは引用符付きキーをドット「.」で繋いだものです。

physical.color = "orange"
physical.shape = "round"
site."google.com" = true

上記をJSONで記述すると、下記のようになります。 テーブルを用いるのと同じ効果を得られます。

{
  "physical": {
    "color": "orange",
    "shape": "round"
  },
  "site": {
    "google.com": true
  }
}

値の表記方法

文字列

ダブルクォーテーション「”」で囲むと文字列となります。バックスラッシュ(日本だと「\」)を用いたエスケープシーケンス記法も可能です。(下記参照)

  • b:バックスペース(U+0008)
  • t:タブ(U+0009)
  • n:ラインフィード(U+000A)
  • f:フォームフィード(U+000C)
  • r:キャリッジリターン(U+000D)
  • “:ダブルクォーテーション(U+0022)
  • \:バックスラッシュ(U+005C)
  • uXXXX:(U+XXXX)
  • UXXXXXXXX:(U+XXXXXXXX)
str1 = "I'm a string. \"You can quote me\". Name\tJos\u00E9\nLocation\tSF."
str2 = """
Roses are red
Violets are blue"""
整数
  • (-263)~(263-1)の範囲の整数値を扱えます。
  • 正の数の前にプラス「+」を付けることができます。
  • 桁が大きい場合、アンダースコア「_」を入れることができます。
  • 0以外の値に対して、先頭に0を入れてはいけません。
  • 先頭に「0b」で2進数、「0o」で8進数、「0x」で16進数を表します。
int1 = +99
int2 = -99
int3 = 123_456_789
bin1 = 0b11010110
oct1 = 0o01234567
hex1 = 0xDEADBEEF
hex2 = 0xdeadbeef
浮動小数点数

浮動小数点数は、IEEE 754 binary64 値として実装する必要があります。

  • 小数点を使用する場合、その両端に1桁以上の数字が必要です。
  • 非数(nan)や無限(inf、-inf)を使用できます。これらは小文字である必要があります。
flt1 = +1.0
flt2 = 3.14159265
flt3 = 5e+22
flt4 = 1e06
flt5 = -2E-2
flt6 = 6.62607015e-34
真偽値

真を「true」、偽を「false」で表します。trueとfalseは小文字で表します。

bool1 = true
日時

RFC 3399にしたがったフォーマットで日時を設定できます。

odt1 = 1979-05-27T00:32:00-07:00
odt2 = 1979-05-27T07:32:00
ld1 = 1979-05-27
lt1 = 07:32:00
配列

値を角括弧「[ … ]」で囲んで表します。

  • 各要素はカンマで区切ります。末尾にカンマがあっても構いません。
  • 配列内の要素は同じ型である必要はありません。
integers = [1, 2, 3]
colors = ["red", "green", "blue",]
目次