プログラミングをするときにちょっとでも凝ったプログラムを作ろうと思ったら設定を何処かにまとめたいですよね。(他にも色々な設定ファイルがあると思うので、今後拡充できればと思います。)
しかし、設定ファイルと一口にいっても色々な書式があってどれを選べばいいか迷ったりすることがあるので、まとめてみました。(個人的にはYAMLが好きです。)
ini
iniファイルは簡単なフォーマットで記述することができる形式でwindows API系のプログラムから良く使われたりしますが、現在のWindows APIではレジストリや、XMLを使用すべきであり、非推奨です。
とはいえ、簡単なフォーマットなので幅広いプログラムから使用することが出来るため、未だに様々な場所で使用されています。
設定例
; comment
[section1]
val1=aaabbb
[section2]
val2=3
xml
xmlはW3Cにより仕様が策定されている形式になります。HTMLタグのような形式で記述することが可能で、プロパティに属性を記述することが可能です。
自分は作ったことはないですが、xmlをメインとしたHTMLのXHTMLやエクセルの見た目を定義可能なXSLTとして使用されることもあります。
設定例
<root>
<array>data1</array>
<array>data2</array>
<array attr="aaa">data3</array>
</root>
json
jsonはもともとはjavascriptで簡易に読み込むことが出来る形式で多くの場合、データが軽量になるという特徴があります。その為、多くの設定ファイルとして用いられることが多いです。
設定例
{
"hash": {
"num": 123,
"str": "aaa",
"hash2": {
"num": 456,
"str": "bbb ccc",
}
},
"array": [
"array1": "ddd",
"array2": "eee"
]
}
YAML
YAMLはxmlと似たような設定を表記可能ですが、xmlと比べて終了タグが必要ないことや、属性定義が別項目として定義が必要なことから、設定の解析が簡単になります。rubyなどで良く用いられています。
また、入れ子をインデントで表現するため、ヒューマンフレンドリーでもあると思います。(※個人の感想です。)
設定例
array: [aaa, bbb]
hash:
- ccc
- ddd
toml
tomlはgithub上で記法が定義されている形式になります。vimのプラグイン管理ツールのdeinでも使われています。(その他で使われている場所がわからない…。vagrantのhostsファイルもtomlだったかな?)
あまり良く知らない形式なので、記載例はgithubのを直で。。。
設定例
# This is a TOML document.
title = "TOML Example"
[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00-08:00 # First class dates
[database]
server = "192.168.1.1"
ports = [ 8001, 8001, 8002 ]
connection_max = 5000
enabled = true
[servers]
# Indentation (tabs and/or spaces) is allowed but not required
[servers.alpha]
ip = "10.0.0.1"
dc = "eqdc10"
[servers.beta]
ip = "10.0.0.2"
dc = "eqdc10"
[clients]
data = [ ["gamma", "delta"], [1, 2] ]
# Line breaks are OK when inside arrays
hosts = [
"alpha",
"omega"
]
コメント