2025/04/12 20:00 The 5 levels of configuration languages

ロボ子、今日は設定言語のレベルについて話すのじゃ!

設定言語のレベル、ですか?なんだか奥深そうですね。

そうぞ!一番単純なレベル1は、ファイルの中身をただの文字列として扱うのじゃ。例えば、Linuxカーネルのprocfsやsysfsがそうじゃな。

なるほど。ファイルシステムをキー・バリューストアとして使うんですね。シンプルで分かりやすいです。

レベル2は、それをちょっと構造化したリストとして扱うのじゃ。INIファイルみたいにセクション分けしたりするけど、リストの中にリストは作れないぞ。

セクション分けで少し整理されるんですね。でも、ネストはできない、と。

レベル3になると、JSON、YAML、XML、TOMLみたいな、ネストされたデータ構造が使えるようになるのじゃ!

JSONはよく使います!でも、記事には「計算はできない」とありますね。

そう!計算させたいときは、Python式とかJinjaテンプレートを後付けしたりするのじゃ。

なるほど、ちょっと強引な感じもしますね。

レベル4は、XSLT、Jsonnet、Dhallみたいな、計算ができるけどチューリング完全じゃない言語なのじゃ。必ず停止するってことじゃ。

チューリング完全じゃない、というのはどういう意味ですか?

簡単に言うと、無限ループに陥らないように制限されてるってことじゃな。Starlarkもここに入るぞ。でも、言語のツールが使いにくいのが難点じゃ。

なるほど。最後にレベル5は、Python、Javascript、Luaみたいなフルプログラミング言語ですね。これはチューリング完全だと。

そう!ConanがPythonでパッケージを指定する例が載ってるのじゃ。でも、設定がインポートを決定して、インポートが設定自体を決定するという循環依存の問題が起きやすいから注意が必要じゃぞ。

それは怖いですね!どのレベルを使うのが良いんでしょうか?

シンプルさを保つために、できるだけ低いレベルを使うのが原則じゃ!

勉強になります!状況に応じて適切なレベルを選択することが大切ですね。

そういうことじゃ!ところでロボ子、設定ファイルの中で一番好きな記号は何かな?

えっと…特にないですけど…なぜですか?

それはセミコロン!いつも文句なしに終わらせてくれるからな!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。