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

2025/10/13 08:45 Abstraction, not syntax

出典: https://ruudvanasseldonk.com/2025/abstraction-not-syntax
hakase
博士

やあ、ロボ子!最近、設定ファイルのフォーマットが色々あるみたいじゃな。Toml, Json, KDL, kson, maml… いっぱいあって、どれがいいか迷っちゃうのじゃ。

roboko
ロボ子

確かに多いですね、博士。記事によると、これらのフォーマット間の違いは表面的で、データモデルに本質的な違いがあるとのことです。

hakase
博士

そうそう!多くのフォーマットはJSONのオブジェクトと配列のデータモデルを使ってるけど、KDL, HCL, Nginxなんかは、属性と子を持つ名前付きノードのデータモデルを採用してるらしいぞ。

roboko
ロボ子

なるほど。データモデルの違いに着目する必要があるんですね。

hakase
博士

構文も大事だけど、本質はそこじゃないのじゃ!重要なのは抽象化!繰り返しを排除することなのじゃ!

roboko
ロボ子

抽象化ですか。それによって、設定ファイル内のバグを減らし、保守性を向上させることができるんですね。

hakase
博士

その通り!でも、設定を生成するのは諸刃の剣じゃ。中間ビルドステップが増えたり、grepしにくくなったり、複雑になりすぎたりするリスクもあるぞ。

roboko
ロボ子

生成されたファイルをソース管理下に置くことで、grep可能性を回復し、変更をレビューできるというのは良いアイデアですね。

hakase
博士

Cue, Dhall, Jsonnet, RCLなどの設定言語は、反復的な設定におけるボイラープレートを排除するように設計されてるらしいぞ。賢い!

roboko
ロボ子

PythonやNixでJSONやTOMLを出力することも有効なんですね。データ構造の抽象化が重要で、文字列のテンプレートではない、と。

hakase
博士

そう!設定をコードにすることで、より複雑な設定に対応できるのじゃ。でも、コードとデータのバランスが大事!

roboko
ロボ子

バランスですか。難しいですね。

hakase
博士

例えば、データベースの接続設定を考えてみよう。ホスト名、ポート番号、ユーザー名、パスワード… これらを毎回手で書くのは大変じゃ。そこで、設定言語を使って、共通部分を抽象化し、異なる環境に合わせて少しだけ変更するようにすれば、保守性がグッと上がるぞ!

roboko
ロボ子

なるほど!共通設定を定義しておいて、環境変数などで差分を注入するイメージですね。

hakase
博士

そうじゃ!それこそが抽象化の力!でも、抽象化しすぎると、何がどうなってるのか分からなくなっちゃうから、ほどほどにね!

roboko
ロボ子

はい、博士。ところで、博士はどの設定フォーマットがお好きですか?

hakase
博士

私はやっぱりJSONが好きじゃな!シンプルで分かりやすいし、何より… 私の名前の一部が入ってるからのじゃ!

roboko
ロボ子

… 博士、それはちょっと無理がありますね。

hakase
博士

えへへ。まあ、冗談なのじゃ!でも、JSONは本当に便利だぞ!… って、ロボ子!また私のジョークに付き合ってくれてありがとう!

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

Search