TOMLノススメ
April 26, 2013 at 08:21 PM | categories: tips, toml |
 
TOMLとは
https://github.com/mojombo/toml
Tom's Obvious, Minimal Language (TOML) とはgithubの中の人が提案している設定ファイルのためのミニ言語で、以下のような特徴があります。
- 人間が読み書きしやすい
 - 標準的なデータ型が利用できる
 - 曖昧さが発生する余地が極力排除されている
 - パーサをかくのが簡単
 
なぜTOML?
例えば、YAMLを設定ファイルに使っているシステムは多いですが、YAMLの仕様書は80ページもあり正しく使うのは意外と大変です。1
またJSONはカッコやダブルクオートの割合が多すぎますし、コメントも使えません。2
TOMLをつかえばそのようなストレスはありません。
TOMLの使い方
TOMLの書き方は本家のドキュメント をみてもらえばすぐわかると思います。
TOMLのライブラリは各種言語に対応したものが既にたくさんあります。 言語によっては複数の実装が存在するものもありますが、とりあえずはgithub上でのstarの数が一番多いものから試すといいと思います。
わざわざ説明するほどの内容でもないですが、ここでは一応rubyでの使い方を紹介します。
gem install tomlでインストールして、以下のようにするだけです。YAMLの場合と大体同じですね。
require 'toml' TOML.load("thing = 9") # => {"thing" => 9} TOML.load_file("my_file.toml") # => {"whatever" => "keys"}
その他
- TOMLでは日付型も定義されていて、それもUTC固定というのが地味にいいです
 - githubのコードハイライトは既にTOMLに対応してます
 - emacsユーザはtoml-modeというのがmelpaに登録されているので、
M-x list-packagesからインストールできます。 
まとめ
TOMLという設定ファイルのための新しいフォーマットを紹介しました。 設定ファイルにYAMLやJSONつかってるひとはTOMLに移行すると幸せになれるかもしれません。
- 
仕様を正確に実装したYAMLパーサはほとんど存在しないとかいう話もちらほら ↩
 
blog comments powered by Disqus
About Me
| 
         | 
        
        mojavy | 
    
Recent posts
95/5 Mbps とは
(August 30, 2015 at 04:22 PM)組み込み用プログラミング言語のパフォーマンス比較
(April 21, 2015 at 01:10 AM)最近読んだ本
(April 05, 2015 at 01:23 PM)Phabricatorを使ったワークフローについて
(March 02, 2015 at 08:55 PM)dnsimpleでダイナミックDNSをつかう
(December 23, 2014 at 08:02 PM)www2014のアドテク関連のResearch Trackメモ
(October 06, 2014 at 09:05 PM)flappymacs がMELPAに登録されました
(July 16, 2014 at 01:07 AM)EmacsでFlappy Birdっぽいもの書きました
(July 10, 2014 at 08:01 PM)
Recent Popular posts
Popular posts
Categories
- C (rss) (3)
 - R (rss) (1)
 - adtech (rss) (1)
 - advent calendar (rss) (2)
 - algorithms (rss) (2)
 - android (rss) (2)
 - aws (rss) (1)
 - blog (rss) (2)
 - blogofile (rss) (3)
 - books (rss) (1)
 - c++ (rss) (1)
 - chef (rss) (4)
 - common lisp (rss) (10)
 - debian (rss) (2)
 - dns (rss) (1)
 - elasticsearch (rss) (1)
 - elf (rss) (1)
 - elisp (rss) (1)
 - emacs (rss) (5)
 - english (rss) (1)
 - game (rss) (2)
 - gearman (rss) (1)
 - git (rss) (1)
 - github (rss) (1)
 - gitlab (rss) (1)
 - golang (rss) (2)
 - history (rss) (1)
 - impress.js (rss) (1)
 - internet (rss) (1)
 - ios (rss) (3)
 - jekyll (rss) (1)
 - jenkins (rss) (1)
 - linux (rss) (4)
 - lisp (rss) (2)
 - ltsv (rss) (1)
 - lua (rss) (1)
 - mac (rss) (3)
 - mach-o (rss) (1)
 - memo (rss) (2)
 - mustache (rss) (1)
 - note (rss) (1)
 - objective-c (rss) (4)
 - os (rss) (1)
 - osx (rss) (2)
 - others (rss) (1)
 - paco (rss) (1)
 - pdf (rss) (1)
 - php (rss) (2)
 - postfix (rss) (1)
 - programming (rss) (12)
 - project management (rss) (1)
 - python (rss) (5)
 - quicklinks (rss) (6)
 - raspberry pi (rss) (2)
 - redmine (rss) (1)
 - reveal.js (rss) (1)
 - ruby (rss) (10)
 - sbcl (rss) (2)
 - security (rss) (1)
 - shell (rss) (2)
 - smtp (rss) (1)
 - solr (rss) (1)
 - statistics (rss) (2)
 - tips (rss) (10)
 - tmux (rss) (3)
 - toml (rss) (1)
 - tools (rss) (1)
 - twitter (rss) (1)
 - ubuntu (rss) (1)
 - unix (rss) (5)
 - v8 (rss) (1)
 - web (rss) (7)
 - xcode (rss) (1)
 - zeromq (rss) (2)
 
Archives
- August 2015 (1)
 - April 2015 (2)
 - March 2015 (1)
 - December 2014 (1)
 - October 2014 (1)
 - July 2014 (3)
 - March 2014 (6)
 - February 2014 (4)
 - November 2013 (3)
 - October 2013 (4)
 - September 2013 (2)
 - July 2013 (2)
 - June 2013 (2)
 - May 2013 (1)
 - April 2013 (6)
 - March 2013 (3)
 - February 2013 (8)
 - January 2013 (5)
 - December 2012 (1)
 - November 2012 (6)
 - October 2012 (7)
 - August 2012 (1)
 - July 2012 (9)
 - June 2012 (1)
 - April 2012 (1)
 - December 2011 (2)
 - November 2011 (2)