なぜあらゆるツールがJSON設定ファイルを使うのか?
Why do so many tools have JSON config files?
textlog.ccの投稿が、JSON設定ファイルが広く採用されている理由を探る。可読性と機械可読性のバランス、ネスト構造による複雑な設定の表現力、そして開発者にとっての使いやすさに焦点を当てる。JSONが事実上の標準となった背景と、その利点・欠点を簡潔に解説する。
JSONは、人間が読み書きでき、かつ機械が簡単に解析できるという、稀有なバランスを実現したフォーマットである。
HNでの議論
59- raincole
> なぜこれほど多くのツールがJSON設定ファイルを使うのか?‽ オプションをなぜそのように設定したのかコメントできるのは、ごく基本的なことではないか…。なぜ技術者は物事を書き留めることをそんなに嫌がるのか⁇
それが投稿の全部だ。まず、これがなぜHNに投稿されたのか分からない。第二に、「JSON設定」と「物事を書き留めること」がなぜ正反対の選択肢になるのかも分からない。
- szatkus
> 多くの技術者は、文書化が自分の雇用の安定につながると考えて抵抗する。
いや、ただ怠けているだけだ。
- gwbas1c
> なぜこれほど多くのツールがJSON設定ファイルを使うのか?‽
1: JSONは扱うのが非常に簡単なシリアライゼーション形式だからだ。これらのツールはすべて、設定ファイルから直接デシリアライズされる設定クラス/オブジェクトを持っているのではないかと思う。
2: これらのツールの多くはJavaScriptで書かれていて、JavaScriptではJSONが非常に扱いやすいからだと思う。
- mholt
CaddyではJSONを選んだ。なぜなら、JSONはかなり普遍的で、Goの構造体とほぼ1対1で対応し(拡張可能なサーバーの初期化に役立つ)、さらに、ほとんどすべてのものが何らかの形でJSONにコンパイルされるので、実質的に自分の好みの設定形式を選べるからだ: https://caddyserver.com/docs/config-adapters
- zzo38computer
私の意見では、JSONは最良の形式ではなく、いくつか問題がある。コメントがないのは、彼らが言及している理由の一つだ。もう一つは、末尾のカンマがないことだ(手書きのファイルには末尾のカンマが任意で使えると便利だろう)。しかし、これらは構文の問題であり、データにも問題がある。例えば、適切な整数型がないこと、InfinityやNaNがないこと、Unicode(およびASCII)以外の文字セットをサポートしていないこと、適切なオクテット文字列型がないことなどだ。