TOML ツール集 — TOML と JSON、YAML、INI、.env の相互変換とフォーマット
TOML の総合ツールキット:TOML と JSON、YAML、INI、.env を相互変換。加えて、インデントを設定できるフォーマッタも搭載 — すべてブラウザ内で完結します。
TOML Tools
Convert TOML to/from JSON, YAML, INI, .env — or just format it. Runs in your browser.
TOML(Tom’s Obvious, Minimal Language)は、過去 10 年で開発者ツールのエコシステムを勝ち取った設定ファイル形式です。Rust の Cargo はプロジェクトマニフェストに TOML を使い、Python の pyproject.toml はビルドシステム、linter、formatter の設定を記述する標準的な場所となっています。Go、Zig、Julia のプロジェクトも、設定ファイルとして TOML を推奨しています。この形式の設計原則 — 読みやすく、構文は最小限、型は明示的 — によって、明確さを簡潔さより重視する開発者が手作業で記述する設定ファイルの正しい選択肢となっています。JSON は機械間のデータ交換に適した形式であり、YAML は DevOps の設定フォーマット戦争に勝利しました。しかし、リポジトリのルートに置かれ、すべてのコントリビュータによって編集される設定ファイルにとって、答えは TOML です。
TOML ツール集のページは、TOML エコシステムのための多機能ツールです。TOML と JSON、YAML、INI、.env の間で相互に変換するコンバータに加え、インデントやキーのソートを設定できるフォーマッタを備えています。変換パスは、開発者が TOML ツールを手に取る最も一般的なシナリオをカバーしています。Rust プロジェクト向けに JSON ベースの設定を TOML へ移行する、YAML 入力を期待する CI/CD パイプライン向けに TOML ファイルを YAML へ変換する、Docker コンテナ向けに TOML 設定を .env にフラット化する、レガシープロジェクトの INI ファイルをモダンなツールチェーン向けに TOML へ変換するといった用途です。フォーマッタは、リファレンスパーサの printer が生成する出力と同一の、一貫性があり git に優しい TOML を出力します。すべての処理はブラウザ内で完結します。
使い方
TOML を貼り付けるかドロップする
.toml ファイルをドロップするか、TOML の内容を貼り付けます。パーサが構文を検証し、エラーがある場合は行番号付きで報告します。有効な TOML は変換前に構文ハイライト付きのツリービューで表示されます。
出力形式を選択する
出力形式(JSON、YAML、INI、.env)を選択します。変換ではすべての値、コメント(出力形式がサポートしている場合)、テーブル構造が保持されます。ネストされたテーブルは、出力形式に応じてネストされたオブジェクトまたはドット記法のキーになります。
あるいは TOML をフォーマットする
フォーマッタタブに切り替えて、既存の TOML を整形します。インデント幅を設定し、スペースとタブのどちらを使うかを選び、キーをアルファベット順にソートするか元の順序のままにするかを選べます。フォーマット後の TOML は、TOML 仕様公式テストスイートの出力と一致することが確認されています。
よくある質問
TOML は JSON や YAML と何が違うのですか?
TOML は GitHub の共同創業者である Tom Preston-Werner によって 2013 年に設計された設定ファイル形式で、JSON よりも人間が読み書きしやすく(波括弧やキーのクォート規則がなく)、YAML よりも曖昧さがありません(意味のある空白や Norway 問題がない)。Rust(Cargo.toml)、Python(pyproject.toml)、Go プロジェクトの標準的な設定形式となっています。
変換ツールは TOML のコメントを保持しますか?
YAML と INI の出力ではコメントが保持されます(どちらもコメントをネイティブにサポートしています)。JSON にはコメント構文がないため、JSON 出力ではコメントは失われます。.env 形式は `#` によるインラインコメントをサポートしており、構造的に可能な箇所では TOML のコメントが .env のコメントにマップされます。
ネストされたテーブルは INI や .env のようなフラットな形式にどう変換されますか?
ネストされた TOML テーブルはドット記法のキーにフラット化されます。`[server.database]` の `host = 'localhost'` は INI では `server.database.host = localhost` に、.env では `SERVER_DATABASE_HOST=localhost`(大文字化、ドットはアンダースコアに変換)になります。テーブル配列(`[[entry]]`)は番号付きのキーになります。
他の形式から TOML へ変換できますか?
はい — 逆方向の変換は JSON、YAML、INI、.env の入力を受け付け、TOML を出力します。出力される TOML は仕様のスタイルガイドに従います。浅い入れ子にはドット記法のキーを使い、深い入れ子にはテーブルヘッダを、繰り返し出現するセクションにはテーブル配列構文を使います。
制限事項
- スキーマ検証は非対応このツールは TOML の構文を解析・変換しますが、コンテンツに対するスキーマ検証は行いません。スキーマ検証には、`taplo`(Rust)や `tomllib`(Python 3.11+)などのツールを別途スキーマ定義と共に使用してください。
- 日付/時刻型の忠実度TOML は date、time、datetime-local 型をファーストクラスでサポートしています。JSON(date 型を持たない)に変換する際、これらの値は ISO 8601 文字列になります。書式情報はテキストとしては保持されますが、型の区別は失われます。
- 大容量ファイルでのパフォーマンス深くネストされた 1 MB を超える TOML ファイルは、ツリービューでのレンダリングが遅くなる場合があります。変換自体は高速で、ボトルネックはビジュアルレンダリングです。大容量ファイルでは生出力タブを使用してください。
プラットフォーム別の注意点
- macOS
- `taplo` は macOS 向けの標準的な TOML ツールキットです(`brew install taplo`)。ブラウザ版ツールは、taplo がネイティブで扱わない形式変換(YAML、INI、.env との相互変換)を追加で提供します。
- Linux
- Python 3.11+ は標準ライブラリに `tomllib` を含んでいます。`python3 -c 'import tomllib; print(tomllib.load(open("config.toml", "rb")))'` で TOML を Python の dict にパースできます。
- Web
- 完全にブラウザ内で動作します。設定ファイルはローカルでパースされ、設定データが外部に送信されることはありません。第三者の API に設定を公開せずに、内部プロジェクトの設定ファイルを转换したい場合に便利です。