Pano Blog

tomlファイルとはなんぞや

September 26, 2021 , posted under config file format
Hugoの設定をやっていたらtomlファイルというのに遭遇したので、tomlファイルとはなんなのか調べてみました。

TOMLの概要

TOMLは「最小限の設定ファイル」「読みやすい構文」であることを目指して作られたファイルフォーマットです。 2013年頃から開発が始まり、現在(2021年6月25日時点)では v1.0.0 まで公開されています。

サンプル

以下がTOMLのサンプルです。

title = "Hello world"

[params]
  author = "Panorama"
  bio = "A hedgehog learning Web Application"

  # twitter = "https://twitter.com/PANORAMA_01"

文法

TOMLの文法は非常に単純で主に Key/Value PairCommentTable と、Value に使用できるいくつかの型だけでできています。

Key/Value Pair

Key/Value Pair は一般的なプログラミングの代入のような記法です。

key = "value"

行中のスペースは無視されます。 また Key/Value の宣言は基本的に1行で行う必要があります。

Value は以下の型がサポートされています。 括弧()に例を示しています。

  • String ("string")
  • Integer (1)
  • Float (3.14)
  • Boolean (true)
  • Offset Date-Time (2021-06-25T22:38:34+09:00)
  • Local Date-Time (2021-06-25T22:38:34)
  • Local Date (2021-06-25)
  • Local Time (22:38:34)
  • Array ([1, 2, 3])
  • Inline Table ([table])

Keybare, quoted, dotted の3種類の記法があります。

# bare
key = "value"
# quoted
"key" = "value"
# dotted
blog.url = "https://~"

注意点: 同じkeyを2回以上宣言することはできません。最後の宣言で上書きなどはできません。

Comment

コメントは以下のように # を使用するだけです。 行末までコメントになります。

# This is a comment.
key = "value" # This is a comment at the end of a line

Table

Table はいわゆるハッシュや辞書のようなものです。 Key/Value Pair のコレクションとして定義します。 用途としてはファイル内の役割を区切ったり、名前空間を分けるために使用します。

[table1]
key1 = "string1"
key2 = 123

[table2]
key1 = "string2"
key2 = 456

以上がTOMLの記述方法です。 さらに詳細なルールや記法がありますが、基本的には上記の知識だけで完結しておりまさにminimalです。 個人的には他の設定ファイルのフォーマット(yaml, json)に比べて読みやすいと感じました。 もちろん階層が深くなる場合はyaml、Webの通信で使う・JavaScriptで扱う場合はjson、簡潔で列挙していくような設定の場合にtomlなどのようにして使い分けるのが良さそうです。

TOMLリンク集

公式ドキュメント(v1.0.0)

GitHub