概要
TOML (Tom's Obvious, Minimal Language) は人間や機械にとって読みやすく、解析しやすい設定ファイル形式である。
TOMLファイルは、設定ファイルやデータ保存の効率的な方法として注目されている。
TOMLファイルの特徴として、JSON形式よりも人間が読みやすい点が挙げられる。
また、XMLと比べてシンプルな構造を持ちながら、十分な表現力を備えている。
TOMLファイルの構造は、キーと値のペアを基本としており、セクションを使用して階層構造を表現することもできる。
これにより、複雑な設定やデータ構造を直感的に表現することができる。
C#でTOMLファイルを使用する場合は、一般的に、サードパーティ製ライブラリを使用する。
以下に示すライブラリを使用することにより、TOMLファイルの読み書きを簡単に行うことができる。
- Tomlyn
- ライセンス : 2条項BSDライセンス
- URL : https://github.com/xoofx/Tomlyn
- Tommy
- ライセンス : MITライセンス
- URL : https://github.com/dezhidki/Tommy
- Tomlet
- ライセンス : MITライセンス
- URL : https://github.com/SamboyCoding/Tomlet
- Nett (ただし、2020年以降は開発が停止)
- ライセンス : MITライセンス
- URL : https://github.com/paiden/Nett
C#でTOMLファイルを読み込む場合は、ファイルを開いて内容を解析して、その結果をオブジェクトとして扱う。
逆に、C#のオブジェクトをTOML形式で書き込むこともできる。
C#プロジェクトでTOMLファイルを使用するメリットを以下に示す。
- 設定ファイルの管理が容易になる。
- データの構造化が簡単である。
- 他の言語やプラットフォームとの互換性が高い。
ただし、TOMLファイルはまだJSONファイルほど広く採用されているわけではないため、チーム内での合意やプロジェクトの要件に合わせて採用を検討する必要がある。
TOMLファイルの処理を効率的に行うためには、適切なライブラリの選択とTOML形式の特性を理解することが重要である。
TOMLの採用を検討することにより、より効率的な設定管理やデータ処理が可能になる。
TOMLの構文
TOMLファイルの主な構文要素を以下に示す。
- キーと値のペア
- 基本的な形式は、
<キー名> = <値>
である。 - 例:
name = "TOML Example"
- 基本的な形式は、
- 文字列
- 基本文字列
- ダブルクォートで囲む
"Hello"
- リテラル文字列
- シングルクォートで囲む
'C:\Users\username'
- 基本文字列
- 数値
- 整数
42
- 浮動小数点
3.14
- 整数
- ブーリアン
- true または false
- 日付と時刻
- ISO 8601形式を使用する。
- 例:
date = 2023-03-27T15:32:00Z
- 配列
- 角括弧で囲む。
- 例:
colors = [ "red", "yellow", "green" ]
- テーブル (セクション)
- 角括弧で囲んだ名前で定義する。
- 例:
[database] server = "192.168.1.1" ports = [ 8001, 8001, 8002 ]
- インラインテーブル
- 中括弧で囲む。
- 例:
point = { x = 1, y = 2 }
- テーブルの配列
- 2重の角括弧で定義する。
- 例:
[[fruits]] name = "apple" [[fruits]] name = "banana"
- コメント
- シャープ記号 (
#
) を使用する。
- シャープ記号 (
TOMLファイルの例
# config.tomlファイル
title = "設定ファイル" # トップレベルのキー
[user] # ユーザ情報のセクション
name = "山田太郎"
age = 30
email = "yamada@example.com"
[application] # アプリケーション設定のセクション
version = "1.0.0"
debug_mode = false
[database] # データベース接続情報のセクション
host = "localhost"
port = 5432
username = "admin"
password = "secret"
[features] # 機能のオン / オフを制御するセクション
enabled = ["login", "logout", "dashboard"]
disabled = ["admin_panel"]
[logging] # ロギング設定のセクション
level = "info"
file = "/var/log/app.log"
[[servers]] # サーバ情報の配列
ip = "192.168.1.1"
role = "frontend"
[[servers]] # サーバ情報の配列
ip = "192.168.1.2"
role = "backend"
TOMLファイルとYAMLファイルの比較
TOMLファイルは、YAMLファイルより学習が容易な傾向がある。
一般的に、TOMLファイルの方がYAMLファイルよりパースが高速である。
YAMLの特徴
- 人間が読みやすい。
- 階層構造を表現しやすい。
- 多くの言語やフレームワークでサポートされている。
- 複雑なデータ構造を表現できる。
- 複数のドキュメントを1つのファイルに含められる。
- アンカーとエイリアスを使用して、データの再利用が可能。
- フロースタイルと折りたたみスタイルの2つの記述スタイルがある。
- JSONのスーパーセットであり、JSONと互換性がある。
- YAMLファイルは、大規模で複雑な設定に適している。
- YAMLの方が長く存在しており、より広くサポートされている。
TOMLの特徴
- シンプルで明確な構文である。
- 日付や時刻のデータ型をネイティブにサポートされている。
- 曖昧さが少ない。
- コメントが記述しやすい。
- INIファイルに似た構造で、慣れ親しみやすい。
- 配列の配列や複雑な入れ子構造をサポートしている。
- キーにドット記法を使用できる
これは、セクション内のサブセクションを表現しやすい。 - 型推論が強く、明示的な型宣言が少なくて済む。
- TOMLは小〜中規模の設定ファイルに適している。