TOML設定 (.toml)

TOML 標準

Tom's Obvious Minimal Language(TOML)は、GitHubの共同創業者であるトム・プレストン=ワーナー(Tom Preston-Werner)によって作成された、曖昧さのない人間中心の設定フォーマットです。Rust(Cargo)やPython(pyproject.toml)をはじめとする現代のプログラミングエコシステムで広く採用されています。

TOML を JSON に変換

無料のブラウザ内 TOML から JSON へのコンバーター。お使いのデバイスでファイルを即座に変換します。

調査とメタデータ

オペレーティングシステムやファイル解析ツールは、先頭のバイナリバイトシーケンスを検査することで TOML ファイルを識別します:

ここにファイルを選択またはドロップ

100%プライベートなブラウザ内変換 - ファイルがデバイスから外部に出ることはありません

または貼り付け Ctrl+V
ネットワーク送信ゼロのプライバシー保証: 外部サーバーへのデータ送信は0バイトです。すべての処理はお使いのブラウザのサンドボックス内でローカルに実行されます。

バイトレベルのヘッダーシグネチャ (マジックバイト)

オペレーティングシステムやファイル解析ツールは、先頭のバイナリバイトシーケンスを検査することで TOML ファイルを識別します:

16進数シグネチャ (オフセット 0):

5B ... 5D

ASCII表現: [...]

標準化: TOML v1.0.0 Specification

技術仕様

コンテナアーキテクチャHuman-readable configuration file mapping unequivocally to a hash table, structured with [tables] and key = value pairs
圧縮Uncompressed text stream
バイトエンディアンUTF-8 text stream
色空間N/A (Configuration File)
チャンネルと構造Tables, arrays of tables, inline tables, strings, integers, floats, booleans, and RFC 3339 datetimes
最大寸法Unbounded text length
透過性None
ストリーミングとプログレッシブSequential line-by-line configuration parsing

技術比較マトリックス: TOML 対 競合製品

技術属性TOML (現在)YAMLJSONINI
曖昧さのリスクゼロ(厳密に曖昧さのない仕様)高い(YAMLの「ノルウェー問題」によるブール値のバグ)ゼロ(厳密なデータ型)中程度(公式標準なし)
ネイティブ日時型ネイティブなRFC 3339の日付と時刻のサポート暗黙的な文字列/日付のパースなし(文字列のみ)なし(文字列のみ)
コメントのサポートネイティブ(# コメント)ネイティブ(# コメント)コメント不可ネイティブ(; および # コメント)
主要なエコシステムRust(Cargo)、Python(PEP 518)、GoKubernetes、Ansible、CI/CDパイプラインWeb API、ブラウザ通信レガシーWindows、Git設定

一般的な破損モードと16進数リカバリガイド

パーサーのエラー:「Duplicate key in table(テーブル内の重複キー)」または「Invalid table header(無効なテーブルヘッダー)」。

根本原因: ドキュメント内で既存のキーまたはテーブルの名前空間を再定義しようとしています。

復旧: File2File TOMLフォーマッタを使用して、TOML構文を検証および再フォーマットしてください。

セキュリティ分析とパーサー攻撃ベクトル

TOMLパーサーは、プロトタイプ汚染や、病的なテーブル配列のネストによるCPU枯渇に対して警戒する必要があります。

既知の攻撃ベクター

  • JavaScriptのTOMLパーサーにおけるプロトタイプ汚染により、Object.prototypeにプロパティが注入される。
  • 深くネストされたテーブル配列の宣言によるサービス拒否(DoS)。
  • 巨大なインライン配列のパース中の無制限なメモリ割り当て。

防御的ベストプラクティス:

歴史的背景とマイルストーン

2021TOML v1.0.0が正式にリリースされ、コア構文の仕様が固定されました。
2018Pythonが、モダンなビルド設定標準として「pyproject.toml」(PEP 518)を標準化しました。
2013トム・プレストン=ワーナーが、YAMLの複雑さを持たないクリーンな設定フォーマットを提供するためにTOMLを公開しました。

主な利点とメリット

  • 完全に曖昧さがありません:予期しない型変換を一切起こさず、ハッシュテーブルへクリーンかつ予測通りにマップされます。
  • 文字列のエスケープなしで、ファーストクラスのネイティブ日時サポート(RFC 3339のタイムスタンプ、日付、時刻)を提供します。
  • モダンな言語ツール(RustのCargo.toml、Pythonのpyproject.toml)の公式標準設定フォーマットとして採用されています。

技術的な制限とデメリット

  • 深くネストされた多層オブジェクトツリーは、YAMLと比較して冗長になる場合があります。
  • テーブルの配列([[table.array]])の構文は、初心者にとって直感的ではない場合があります。
  • スループットの高いマシン間APIデータ交換においては、JSONよりもコンパクトではありません。

興味深い技術トリビア

  • TOMLは、GitHubの共同創業者であり、GravatarやSemVer(セマンティックバージョニング)も作成したトム・プレストン=ワーナーによって作成されました。
  • すべてのRustプロジェクトにある「Cargo.toml」ファイルは、すべてのパッケージ依存関係とコンパイラフラグをTOML形式で指定します。
  • JSONとは異なり、TOMLはコメント(「#」文字を使用)と複数行文字列をネイティブでサポートしています。

よくある技術的な質問

TOMLは何に使用されますか?

TOMLは、RustのCargo.toml、Pythonの pyproject.toml、Go Hugoの設定、コンテナツールなど、ソフトウェアの設定に主に使用されます。

設定にYAMLよりもTOMLが好まれるのはなぜですか?

TOMLは、クォートなしの「NO」がブールのfalseになってしまうようなYAMLの悪名高いエッジケースの解析バグを回避しつつ、コメントや明確なテーブルを備えて人間にとって扱いやすい状態を維持します。

TOMLをJSONまたはYAMLに変換するにはどうすればよいですか?

Webブラウザから直接File2File.appを使用して、TOMLファイルをJSONまたはYAMLに即座に変換できます。