ToolDeck の TOML ツールを使うと、TOML 設定ファイルをブラウザ上で直接フォーマット、検証、変換できます。インストール不要、アカウント不要、データのサーバー送信なし。TOML Formatter は TOML 入力をパースし、一貫したインデント・正規化されたキー順序・インラインバリデーションエラーで再シリアライズし、構文の問題を正確に示します。TOML to JSON Converter は TOML ドキュメントを JSON 等価形式に変換し、日時・インラインテーブル・テーブルの配列といったデータ型を保持します。どちらのツールも完全にクライアントサイドで動作するため、データベース認証情報や API エンドポイント、デプロイ用シークレットが含まれることの多い設定ファイルは手元のマシン上に留まります。逆方向の変換が必要な場合は、JSON カテゴリの JSON to TOML Converter をご利用ください。
TOML ツールとは?
TOML(Tom's Obvious, Minimal Language)は、明示的で曖昧さのない構文を基盤とした設定ファイル形式です。GitHub の共同創設者 Tom Preston-Werner によって作成され、2013 年に初リリース、2021 年 1 月に v1.0 仕様が公開されました。この形式はハッシュテーブルに一対一で対応します。あらゆる TOML ファイルは [ブラケット] で区切られたテーブルに整理されたキーと値のペアのツリーを定義します。YAML と異なり、TOML は構造にインデントを使わないため、空白に起因するパースバグを根絶できます。JSON と異なり、TOML はコメント・ネイティブな日時型・複数行文字列をサポートしており、設定ファイルに必要でありながら JSON が本来提供することを想定していなかった機能を備えています。
TOML ツールは TOML ファイルの読み込み・検証・変換といった機械的な作業を自動化します。フォーマットツールはインデントとキー順序を正規化し、複数のメンバーが同じファイルを編集する場合でも設定ファイルの可読性を保ちます。変換ツールは TOML と JSON の間で変換を行います。ライブラリや API が JSON 入力を要求するが、正規のソースが TOML 設定であるといった場合に便利です。バリデーションは、閉じ忘れのブラケット・重複キー・不正な日時リテラルといった構文エラーを、アプリケーション起動時の障害が発生する前に検出します。
これらの作業は、Rust プロジェクト(Cargo.toml がパッケージマニフェスト)、Python パッケージング(PEP 518 および PEP 621 により pyproject.toml が setup.py に代わる標準ビルド設定として採用)、Hugo 静的サイト(デフォルトで TOML をサイト設定に使用)、および TOML ファイルで設定を管理するあらゆるインフラ環境で頻繁に発生します。TOML 仕様は toml.io でメンテナンスされており、主要なプログラミング言語向けにパーサーが提供されています。
ToolDeck で TOML ツールを使う理由
ToolDeck の TOML ツールは JavaScript を使ってブラウザタブ内ですべてをパース・処理します。設定データはサーバーに送信されず、アカウントも不要で、初回ページ読み込み後はオフラインでも動作します。
🔒デフォルトでプライベート
設定ファイルにはデータベース URL・API キー・デプロイ先など機密値が含まれることが多いです。ToolDeck は TOML を完全にクライアントサイドで処理するため、ブラウザの外にデータが出ることはありません。プロプライエタリなプロジェクトや社内インフラ設定でも安全に使用できます。
⚡即時フィードバック
TOML を貼り付けると、フォーマット済み出力または JSON が即座に表示されます。構文エラーは行番号と説明付きで報告されます。CLI ツールのインストールやビルドステップの完了を待つ必要はありません。
🔄正確な型変換
TOML to JSON Converter は、オフセット日時・ローカル日付・ローカル時刻といった TOML 固有の型を ISO 8601 文字列として保持します。整数と浮動小数点の精度も維持されます。テーブルの配列は JSON のオブジェクト配列に正確にマッピングされます。
🌐インストール不要
モダンブラウザがあれば任意のデバイスで動作します。普段の開発環境がないマシンでプルリクエストを確認する際や、同僚の TOML ファイルをすぐに検証したい場合に便利です。
TOML ツールのユースケース
TOML のフォーマット・検証・変換はさまざまな役割やプロジェクトタイプで発生します。Rust 開発者は日常的に Cargo.toml を扱い、Python 開発者は pyproject.toml でビルドやツールの設定を行い、DevOps エンジニアは TOML で出荷されるアプリケーション設定を管理します。以下のタスクは、ワンオフスクリプトの記述や CLI ツールのインストールと比較して、ブラウザベースの TOML ツールが時間を節約できる場面を示しています。
Cargo.toml の整理
複数の依存関係追加をマージした後、Rust プロジェクトの Cargo.toml のフォーマットが乱れています。コミット前に
TOML Formatter を通してインデントとキー順序を正規化しましょう。
pyproject.toml から JSON へ
CI パイプラインがビルドメタデータを JSON 形式で必要としているが、正規のソースは pyproject.toml です。
TOML to JSON Converter を使って JSON 表現を生成し、パイプラインへの変換をスクリプト化する前にマッピングを確認しましょう。
設定の移行
アプリケーションを JSON ベースの設定から TOML へ(またはその逆へ)移行する場合。
TOML to JSON Converter で二つの表現を並べて比較し、データ型・ネスト構造・配列のセマンティクスが保持されていることを確認できます。
構文デバッグ
TOML 設定ファイルがアプリケーション起動時に不明瞭なエラーメッセージでパースに失敗した場合。
TOML Formatter に貼り付けると、構文エラーの行番号と列番号、およびパーサーが期待していた内容の説明が得られます。
ドキュメント生成
TOML と JSON の両フォーマットで設定例を含むドキュメントを作成する場合。
TOML to JSON Converter で正規の TOML 例を変換すれば、手作業での転記なしに両バージョンを同期させて保持できます。
TOML 構文の学習
TOML を初めて使う開発者は、
TOML Formatter に TOML を書いてリアルタイムで検証エラーを確認し、フォーマット済み出力と構造を比較することで形式を習得できます。仕様書を読むだけよりも効率的です。
TOML データ型リファレンス
TOML v1.0 では以下のデータ型が定義されています。各型は JSON への変換時に特定の表現にマッピングされます。下表では各 TOML 型の構文・例・変換動作を説明しています。
| 型 | 構文 | 例 | JSON マッピング |
|---|
| 文字列 | "..." または '...' | name = "TOML" | JSON 文字列。基本文字列はエスケープシーケンス(\n、\t、\u)をサポート。リテラル文字列('...')はバックスラッシュをそのまま扱います。 |
| 整数 | digits、0x、0o、0b | port = 8080 | JSON 数値。16 進数(0xDEAD)・8 進数(0o755)・2 進数(0b1010)・アンダースコア区切り(1_000)をサポート。 |
| 浮動小数点 | digits(. または e を含む) | pi = 3.14159 | JSON 数値。inf、-inf、nan をサポート(JSON に NaN がないため null または文字列にマッピング)。 |
| ブール値 | true / false | enabled = true | JSON ブール値。小文字の true と false のみ有効。 |
| オフセット日時 | RFC 3339 | 2024-01-15T09:30:00Z | JSON 文字列(ISO 8601)。タイムゾーンオフセット付き。JSON にはネイティブな日時型がありません。 |
| ローカル日時 | date T time | 2024-01-15T09:30:00 | JSON 文字列。タイムゾーン情報なし。壁掛け時計の時刻に便利です。 |
| ローカル日付 | YYYY-MM-DD | 2024-01-15 | JSON 文字列。時刻コンポーネントなしの日付。 |
| ローカル時刻 | HH:MM:SS | 09:30:00 | JSON 文字列。日付またはタイムゾーンなしの時刻。 |
| 配列 | [value, ...] | ports = [8080, 8443] | JSON 配列。TOML v1.0 では異種型の配列が可能ですが、v0.5 では同種型のみ。 |
| テーブル | tomlCategoryContent.r10Syntax | [database] | JSON オブジェクト。標準テーブルは [ブラケット] を使用。インラインテーブルは 1 行の波括弧を使用。 |
TOML v1.0.0 仕様(toml.io)が現在の安定バージョンです。テーブルの配列は [[二重ブラケット]] を使って繰り返しのテーブルエントリを定義し、JSON のオブジェクト配列にマッピングされます。
適切な TOML ツールの選び方
ToolDeck には TOML ファイルを扱う 3 つのツールがあります。2 つは TOML カテゴリにあり、逆方向の変換用の 1 つは JSON カテゴリにあります。タスクに合ったツールを選んでください。
- 1
目的 TOML ファイルの再インデント、キー順序の正規化、または行レベルのエラー報告による TOML 構文の検証 → TOML Formatter - 2
目的 TOML 設定ファイルを API・スクリプト・JSON 入力を必要とするツール向けに JSON へ変換 → TOML to JSON Converter - 3
目的 TOML を設定標準として使用するプロジェクト向けに JSON ドキュメントを TOML 形式へ変換 → JSON to TOML Converter
日常的な TOML 作業では、TOML Formatter がフォーマットと検証を一ステップで処理します。TOML を貼り付けると、クリーンな出力が得られるか、構文エラーの正確な場所が示されます。TOML と JSON を橋渡しする必要がある場合、TOML to JSON Converter は日時やネスト済みテーブルを含むすべての TOML データ型を保持します。逆方向(JSON から TOML)には、JSON カテゴリの JSON to TOML Converter を使用してください。パースに失敗する設定をデバッグする場合は、まず TOML Formatter を試してください。エラーメッセージには行番号と期待トークンの説明が含まれており、ほとんどのアプリケーションレベルの TOML パーサーが報告するものよりも具体的です。
よくある質問
TOML と YAML の違いは何ですか?
TOML はテーブルに明示的なブラケット構文を使用し、構造にインデントを依存しません。YAML は階層をインデントで定義するため、空白のエラーに敏感です。1 つのスペースのずれが解析された構造全体を変えてしまう可能性があります。TOML はネイティブな日時型を持ち、重複キーを禁止しています。一方 YAML は同じキーが 2 回現れた場合に最後の値を暗黙的に使用します。TOML はアプリケーション設定に広く好まれ、YAML はマルチドキュメントサポートやアンカー/エイリアスが有用な Kubernetes マニフェストや CI/CD パイプライン定義でより一般的です。
TOML と JSON の違いは何ですか?
JSON はマシン間通信向けに設計されたデータ交換フォーマットです。TOML は人間が読み書きするための設定フォーマットです。TOML はコメント(# で始まる行)・ネイティブな日時型・複数行文字列・ネストの深さを減らすテーブルをサポートしています。JSON はコメントをサポートせず、日付型もなく、波括弧による明示的なネストが必要です。JSON は API ペイロードとデータストレージに適しており、TOML は人間が手動で編集する設定ファイルに適しています。
TOML はすべての JSON データ構造を表現できますか?
TOML はほとんどの JSON 構造を表現できますが、エッジケースがあります。TOML は null 値をサポートしておらず、JSON の null に相当する TOML の構文はありません。TOML のキーは文字列でなければならず、これは JSON オブジェクトのキーと一致しています。TOML の配列は v0.5 では同種型に制限されていましたが、TOML v1.0 では混合型の配列が許可されています。深くネストされた JSON オブジェクトは、各ネストレベルに個別のテーブルヘッダーが必要なため、TOML では冗長になる場合があります。
どのプロジェクトが設定に TOML を使用していますか?
Rust の Cargo ビルドシステムは Cargo.toml をパッケージマニフェストとして使用しています。Python は PEP 518(2016 年)と PEP 621(2020 年)を通じて pyproject.toml を標準ビルド設定ファイルとして採用しました。静的サイトジェネレーターの Hugo はデフォルトでサイト設定に TOML を使用しています。InfluxDB はサーバー設定に TOML を使用しています。Go モジュールシステムは TOML を検討しましたが独自のフォーマットを選択しました。ただし、BurntSushi/toml や pelletier/go-toml などのライブラリを通じてアプリケーションレベルの設定に TOML を使用している Go プロジェクトは多数あります。
TOML はコメントをどのように扱いますか?
TOML は # 文字を使ってフル行コメントと行末コメントをサポートしています。# から行末までのすべてはパーサーによって無視されます。コメントは複数行の基本文字列や複数行のリテラル文字列の内部には書けません。TOML を JSON に変換する際、JSON にはコメント構文がないためコメントは破棄されます。つまり、TOML から JSON 、そして再び TOML へのラウンドトリップでは、元のファイルのすべてのコメントが失われます。
TOML のテーブルの配列とは何ですか?
テーブルの配列は [[二重ブラケット]] 構文を使って同じテーブル構造の繰り返しエントリを定義します。例えば、[[servers]] が 2 回現れると、2 つのサーバーオブジェクトを持つ配列が作成されます。JSON では、これはオブジェクトの配列にマッピングされます。テーブルの配列は、各エントリが同じキーセットを持つ依存関係・サーバー定義・プラグイン設定のリストに一般的に使用されます。
TOML は空白に敏感ですか?
TOML はインデントに敏感ではありません。インデントは純粋に見た目のためであり、パースには影響しません。ただし、TOML ではキーと値のペアを区切るために改行が必要です。同じ行に 2 つのキーと値のペアを書くことはできません(インラインテーブルの内部を除く)。インラインテーブルは 1 行に収まらなければならず、改行を含めることができません。この設計により、YAML ファイルで一般的なインデントベースのバグを回避できます。
TOML の日時値を JSON に変換するとどうなりますか?
JSON にはネイティブな日時型がないため、TOML の日時は ISO 8601 文字列に変換されます。オフセット日時(2024-01-15T09:30:00Z など)は文字列表現にタイムゾーンオフセットを保持します。ローカル日時・ローカル日付・ローカル時刻はそれぞれタイムゾーン情報なしの文字列としてシリアライズされます。文字列から元の値を再パースできるという意味では変換は可逆ですが、JSON の消費者はこれらの文字列を任意のテキストではなく日付として扱う必要があることを知っておく必要があります。