萌えハッカーニュースリーダー

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

出典: https://beza1e1.tuxen.de/config_levels.html
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

それはセミコロン!いつも文句なしに終わらせてくれるからな!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search