TOML

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ
TOML
TOML Logo.svg
ファイル名拡張子
.toml
インターネットメディアタイプ登録されていません[1]
によって開発されたトムプレストンウェルナー
コミュニティ
初回リリース2013年2月23日; 8年前 (2013-02-23
最新のリリース
v1.0.0
2021年1月11日; 12ヶ月前 (2021-01-11
フォーマットの種類データ交換
オープンフォーマットはい
Webサイトtoml .io ウィキデータでこれを編集する

TOMLは、構成ファイルのファイル形式ですこれは、「最小限」を目指す明白なセマンティクスにより、読み取りと書き込みを容易にすることを目的としており、辞書に明確にマップするように設計されています。その仕様はオープンソースであり、コミュニティからの貢献を受けています。TOMLは多くのソフトウェアプロジェクトで使用されており[2] [3] [4]、多くのプログラミング言語で実装されています。[2]「TOML」という名前は、「Tom's Obvious、MinimalLanguage」[5]の頭字語であり、その作成者であるTomPreston -Wernerを指しています。

構文

TOMLの構文は、主にkey = "value"ペア、、、[section names]およびで構成されています# commentsTOMLの構文は、の構文にいくぶん似ています。INIファイルですが、正式な仕様が含まれていますが、INIファイル形式には多くの競合するバリアントがあります。

その仕様には、サポートされているデータ型のリストが含まれています:String、Integer、Float、Boolean、Datetime、Array、およびTable。

#これはTOMLドキュメントです。

title  =  "TOMLの例"

[所有者]
 =  "トム・プレストン・ワーナー" 
DOB  =  1979-05-27T07:32:00-08:00  #ファーストクラスの日付


[データベース]サーバー =  " 192.168.1.1 
"ポート =  [  8000、8001、8002 ] connection_max  = 5000有効= true  
  
  

[サーバー]

  #インデント(タブやスペース)は許可されていますが、必須ではありません
  [servers.alpha] 
  ip  =  "10.0.0.1" 
  dc  =  "eqdc10"

  [servers.beta] 
  ip  =  "10.0.0.2" 
  dc  =  "eqdc10"

[クライアント]
データ =  [  [ "ガンマ"  "デルタ" ]  [ 1、2 ] ]  

#配列内で改行しても問題ありません
hosts  =  [ 
  "alpha" 
  "omega" 
]

他のフォーマットとの比較

次の表は、TOML仕様を利用して、他の一般的な構成形式(INIJSON、およびYAML)と比較しています。SciPy 2017で紹介されたBespON 、 [要出典]、およびシミュレーションモデリングのパラメーター化にTOMLを使用する方法についての説明も参照してください。[6]

フォーマット比較
フォーマット 正式な基準 強いタイプ[a] 人間が読める形式 コメントを許可します
JSON はい[7] はい はい 番号
YAML はい[8] はい はい はい
TOML いいえ、正式な仕様 はい はい はい
INI いいえ、複数の方言 番号 はい はい
  1. ^ 強いタイプは、一般に、構成形式[要出典]では不利であると考えられています。TOMLの何が問題になっているのか§構文の入力を参照

批評

最初のリリース以来、TOMLはいくつかの批評を受けています。StrictYAMLプロジェクトでは、TOMLで問題となる次の点がリストされています。[9]

  • TOMLは冗長です。DRYではなく、構文的にノイズが多い
  • TOMLの階層は、構文だけから推測するのは困難です
  • 過度の複雑さ:YAMLと同様に、TOMLには機能が多すぎます
  • TOMLでは、構文によってデータ型が決まります(「構文タイピング」)。

それ以来、 libconfiniプロジェクトは、 INIの観点からTOMLに対するより広範な批評を発表し、 [10]次の点を(とりわけ)問題があるものとして挙げています。

  • TOMLを使用すると、構成ファイルでデータ型(構文の型指定)を決定できますが、事実上、決定するのはクライアントアプリケーションです。不一致の型は無視されるか、(パーサーに応じて)期待される型に変換されます。
  • TOMLは、人間に優しい言語が通常取り除こうとしているものを再導入します。冗長な構文と、文字列に引用符を使用する必要性です。
  • TOML構文では、構成ファイルで大文字と小文字を区別しない必要がある場合でも、常に大文字と小文字区別されます(たとえば、FAT32ファイルシステムまたはHTMLタグをマップする構成ファイルなど)。
  • TOMLは、角かっこがテーブル名用にすでに予約されている場合でも、配列に角かっこを使用します。さらに、配列の特別な構文は、言語を構文タイピングに戻します
  • TOMLテーブルは1つのステップで入力する必要があります。複数のTOMLファイルをマージするのは問題があります
  • TOMLは日付の構文を任意に導入します
  • TOMLは、空の文字列をキーとして許可します(ただし、推奨しません)。
  • TOMLのルールはコンテンツから推測できないため、TOMLファイルを編集するには言語の予備知識が必要です。
  • TOMLはINIと下位互換性がありません

も参照してください

参考文献

  1. ^ で構成されるTOMLのmimeタイプの提案がありますが、これはIANAのメディアタイプapplication/tomlに正式に登録されたことはありません
  2. ^ a b "toml-lang / toml"GitHub
  3. ^ 「マニフェストフォーマット-貨物の本」doc.rust-lang.org
  4. ^ Drew DeVault(2021-07-28)。「次のYAMLのウィッシュリスト」YAMLは普遍的に使用されており、普遍的に罵倒されています。多くの問題がありますが、特定のタスクを解決するのにも非常に役立つため、置き換えるのは困難です。ブロックの一部の新しい子供(TOMLなど)は、市場シェアの一部をうまく引き継いでいますが、それらの選択肢が弱点を示している場所では引き続き有効です。
  5. ^ "toml-lang / toml"2021年1月15日–GitHub経由。
  6. ^ "toml-intro.rst"subversion.american.edu
  7. ^ 「JavaScriptオブジェクト表記(JSON)データ交換フォーマット」
  8. ^ 「YAML™仕様インデックス」
  9. ^ TOMLの何が問題になっていますか?
  10. ^ TOMLのINI批評

外部リンク