TOML フォーマッター
TOML(Tom's Obvious, Minimal Language)を整形・バリデーションします。key = value・テーブル・配列を読みやすく整列し、構文エラーがあれば行番号付きで表示します。
TOML の主なデータ型
| 型 | 記述例 | 説明 |
|---|---|---|
| 文字列(基本) | "hello" | ダブルクォートで囲む。\n・\t などのエスケープシーケンスが使える。 |
| 文字列(リテラル) | 'C:\path' | シングルクォートで囲む。エスケープ処理を一切行わないため、バックスラッシュを含むパス文字列に便利。 |
| 整数 | 42 | 10進数のほか、0x(16進)・0o(8進)・0b(2進)や 1_000 のようなアンダースコア区切りも可能。 |
| 浮動小数点数 | 3.14 | 指数表記(1e10)や inf・nan も有効な値として扱える。 |
| 真偽値 | true | true か false のいずれか。大文字始まり(True)は無効。 |
| 配列 | [1, 2, 3] | 角括弧内にカンマ区切りで値を並べる。末尾カンマも許可される。 |
| テーブル | [server] | セクションヘッダー以降の key = value が、そのテーブルの子要素になる。 |
| 配列テーブル | [[fruits-basket]] | 同名のテーブルを複数回繰り返すことで配列を表現する(例: 依存パッケージの複数定義)。 |
| 日付・日時 | 1979-05-27T07:32:00Z | RFC 3339 形式。引用符なしで書ける唯一の複合的な値。 |
TOMLの整形と構文チェック
TOMLは設定ファイル向けに設計された書式で、`key = value` を並べるだけの見た目の素直さが身上です。このツールは貼り付けたTOMLを整形し、あわせて構文が通るかを判定します。壊れていれば行番号つきで指摘します。
**TOMLで最初につまずきやすいのは、構造をインデントではなく `[テーブル名]` という見出し行で作るという点です。** YAMLに慣れていると字下げで階層を表そうとしてしまいますが、TOMLでは字下げに意味がなく、**テーブル見出しから次の見出しまでの間に書いたキーが、そのテーブルに属します。** つまり行の位置そのものが構造を決めます。もう一つの特徴が日時を第一級の型として持つことで、`2026-09-20T10:00:00Z` のような値をクォートなしでそのまま書けます。
使い方
- TOMLを貼り付ける `Cargo.toml` や `pyproject.toml` の中身をそのまま貼れます。
- 判定を確認する **有効なら「有効な TOML」、構文エラーがあれば該当行が示されます。**
- 整形結果を読む キーと値の位置が揃い、テーブルの切れ目が見やすくなります。
- コピーして使う 整形済みの内容をそのままファイルへ戻せます。
使いこなすためのヒント
- インライン配列・インラインテーブルは1行で完結する記法のみ対応しています。複数行にまたがる配列は事前に1行へまとめてから貼り付けてください。
- 整形結果は「=」の前後を必ず半角スペース1つに揃え、配列・インラインテーブルの区切りも「, 」に統一します。書き手ごとの表記ゆれを吸収できます。
- コメント(# 以降)は保持されますが、内容が変わらないよう「#」の直後に半角スペースを1つ補うだけの軽微な整形にとどめています。
- 連続する空行は1行にまとめて出力するため、テーブルごとの区切りが見やすくなります。
- このツールはブラウザ内で完結して処理されます。入力した設定ファイルの内容が外部サーバーに送信されることはありません。
活用シーン
設定ファイルの誤りを探す
**テーブル見出しの置き場所を間違えるとキーの所属が変わってしまい、目視では気づきにくい種類の誤りです。**
Rust・Pythonのプロジェクト設定を読む
`Cargo.toml` や `pyproject.toml` を整形すると、依存関係の区切りが追いやすくなります。
他形式から移してきたものを検算する
JSONやYAMLから書き換えた設定が、構文として通るかをその場で確かめられます。
チームの記法を揃える
整形して戻しておくと、差分に無関係な空白の揺れが混ざらなくなります。
TOMLの用語
- テーブル
- `[package]` のように角かっこで書く見出しで、**そこから次の見出しまでのキーをひとまとまりにします。**
- テーブル配列
- `[[dependencies]]` と二重の角かっこで書く記法です。同じ見出しを繰り返すと配列の要素が増えます。
- インラインテーブル
- `{ a = 1, b = 2 }` と1行で書くテーブルです。**短い設定に向きますが、途中で改行できません。**
- 基本文字列
- ダブルクォートで囲む文字列で、`\n` などのエスケープが効きます。
- リテラル文字列
- シングルクォートで囲む文字列で、**エスケープが一切効かないためWindowsのパスや正規表現を書くのに向きます。**
- 日時
- TOMLが標準で持つ型です。`1979-05-27T07:32:00Z` のように、クォートなしで日付や時刻を書けます。
よくある質問
[[section]] ヘッダーの整形自体は行いますが、同名セクションを1つの配列にまとめてJSONオブジェクトへ変換するような処理は行っていません。複雑な配列テーブル構造は、行単位の整形結果を目視で確認してからご利用ください。"""...""" や '''...''' は現時点では未対応で、その行はエラーとして検出されます。長文を扱う場合は、1行で書けるエスケープ形式の文字列に変換してからお試しください。
余談ですが ― TOML はなぜ「設定ファイルの共通語」になったのか
TOML は GitHub の共同創業者である Tom Preston-Werner が 2013 年に考案したフォーマットで、名前の「Tom's Obvious, Minimal Language」がそのまま設計思想を表しています。JSON のように機械にとって扱いやすく、かつ人間が素で読み書きしても迷わない構文を目指して作られました。
普及の決定打になったのは、Rust のパッケージマネージャー Cargo が設定ファイル形式に Cargo.toml を採用したことです。以降、Python のパッケージング標準を定めた PEP 518 が pyproject.toml を導入し、Python エコシステムの setup.py・setup.cfg・requirements.txt が乱立していた状況を一本化する役割も担いました。
YAML との最大の違いは「インデントに意味を持たせない」設計にあります。YAML はインデント幅のズレが構文エラーやデータ構造の誤認識を引き起こしやすい一方、TOML は [section] と key = value の組み合わせだけで階層を表現するため、コピー&ペーストによる事故が起きにくいと言われています。
一方で TOML は YAML に比べて表現力がやや控えめです。アンカー・エイリアスによる値の再利用や、複雑な多階層構造の簡潔な記述は苦手とされ、用途に応じて YAML・JSON と使い分けるのが実務上の定石になっています。