【入門】TOMLとは?特徴、基本構文、JSON/YAMLとの違いをわかりやすく解説!
モダンな開発環境において、プロジェクトの設定ファイルとして見かけることが増えた「TOML」。
Pythonのパッケージ管理(pyproject.toml)や、Rustのビルドツール(Cargo.toml)などで広く採用されています。
「名前は見たことあるけれど、どんな特徴があるの?」「どうやって書けばいいの?」という方に向けて、TOMLの基本から具体的な書き方まで徹底解説します!
TOMLとは?
TOML(トムル)は、「Tom's Obvious, Minimal Language」の略で、GitHubの共同創業者であるTom Preston-Werner氏らによって提案された設定ファイル向けのデータ記述言語です。
その名の通り、**「誰が見ても明らかで(Obvious)、必要最小限(Minimal)」**であることを目的に設計されており、人間がパッと見て理解しやすく、書き間違えにくいのが大きな特徴です。
TOMLの主な特徴
- 圧倒的な読みやすさ 人間が日常的に使うテキストに近い形式で記述できるため、プログラマーだけでなく、非エンジニアが見ても設定内容を直感的に理解できます。
- 仕様が明確でパースしやすい 曖昧なルールが排除されているため、プログラム側での読み込み(パース)が容易です。多くのプログラミング言語でTOMLを扱うためのライブラリが用意されています。
- エラーが起きにくい構造 インデント(字下げ)の数によって構造が変わるような言語と違い、視覚的なミスによる構文エラーが発生しにくくなっています。
他のフォーマット(JSON、YAML)との違い
設定ファイルによく使われる他のフォーマットと、TOMLの違いをまとめました。
| フォーマット | 特徴 | メリット | デメリット |
|---|---|---|---|
| TOML | 鍵と値のペア、およびセクションで管理 | 視覚的に最もシンプルで、手書きや修正が容易 | 複雑にネスト(階層化)されたデータには不向き |
| JSON | 括弧 { } や [ ] を多用する | プログラム間のデータ連携に最強、標準化されている | コメントが書けない、括弧の閉じ忘れが起きやすい |
| YAML | インデント(スペース)で階層を表現 | 階層構造が綺麗に見える、コメントも書ける | スペースが1個ズレるだけでエラーになり、見つけにくい |
TOMLは**「人間が手で書き換える設定ファイル」として、もっともバランスが良い**フォーマットと言えます。
TOMLの基本的な書き方(基本構文)
TOMLファイルの拡張子は .toml です。ファイル全体は UTF-8 でエンコードされている必要があります。
1. 基本は「キー = 値」
最もシンプルな形は、キー(名前)と値を = で結ぶ書き方です。
# これはコメントです(# を使います)
title = "マイプロジェクト"
version = "1.0.0"
enabled = true
2. セクション(テーブル)でグループ化する
設定項目をグループ分けしたいときは、角括弧 [ ] を使ってテーブルを定義します。
[database]
server = "192.168.1.1"
ports = [ 8000, 8001 ]
connection_max = 500
[owner]
name = "開発太郎"
organization = "秘密組織"
3. 主要なデータ型
TOMLでは、主に以下のデータ型をサポートしています。
- 文字列 (String): ダブルクォーテーション
""で囲みます。 - 整数 (Integer) / 浮動小数点数 (Float):
42や3.14のようにそのまま書きます。 - 真偽値 (Boolean):
trueまたはfalse(小文字のみ)。 - 配列 (Array): 括弧
[ ]で囲み、カンマで区切ります(改行も可能)。 - 日時 (Date-time): ISO 8601 形式に準拠した日時を直接書くことができます(例:
2026-05-06T01:46:25Z)。
応用的な使い方
1. 2次元配列(テーブルの配列)
同じ構造のデータを複数並べたい場合は、二重の角括弧 [[ ]] を使用します。
[[products]]
name = "ハンマー"
sku = 738594937
[[products]]
name = "釘"
sku = 859348594
2. インラインテーブル
短いグループであれば、1行にまとめて書くことも可能です。
name = { first = "Tom", last = "Preston-Werner" }
まとめ:TOMLはどんな時につかうべき?
TOMLは、以下のようなケースで最高のパフォーマンスを発揮します。
- アプリケーションの初期設定ファイル
- ユーザーが直接書き換える可能性のある環境設定
- プロジェクトの依存関係管理(各種パッケージマネージャーの設定など)
一方で、Web APIの通信データなど、プログラム間で大量の複雑なデータをやり取りする場合はJSONの方が適しています。
「手軽に読めて、安全に書き換えられる設定ファイルを作りたい!」と思ったら、ぜひTOMLの採用を検討してみてください。