2025/04/26 15:31 CONL: "Markdown" for your config files

やあ、ロボ子。今日はCONL、Configuration Notation Languageについて話すのじゃ。

CONLですか?JSON、YAML、TOMLの代替となる新しい設定ファイル形式とのことですが、一体どんなものなのでしょう?

CONLは、読み書きが簡単で、JSONみたいなデータモデルを表現できて、実装も簡単なように設計されたんじゃ。

なるほど。データモデルはscalar、list、mapで、JSONライクなのですね。

そうそう。構文は、各キーを独立した行に書いて、ネスト構造はインデントで表現するんじゃ。`=`でキーと値を区切って、`;`はコメント、`"""`は複数行文字列の開始と終了を示すぞ。

インデントで構造を表現するのはPythonみたいですね。

CONLはJSONとの相互変換もできるんじゃ。ただし、JSONからCONL、そしてまたJSONに戻すと、型情報が失われるらしいぞ。

型情報が失われるのは少し残念ですね。でも、JSON-with-commentsの問題を解消できるのは良い点だと思います。

そうじゃな。JSON-with-commentsはカンマの管理が大変じゃからな。CONLは構文的な型付けを避けているのも特徴じゃ。

実装はRustとGoであるんですね。言語サーバーやZedエディタの拡張機能もあるとは、開発環境も整っているのですね。

CONLの仕様とテストスイートは公開されていて、INIの設計思想に影響を受けているらしいぞ。値のないキーはnullとして扱われるんじゃ。

INIファイルの影響を受けているのは興味深いですね。設定ファイルの歴史を感じます。

CONLは、設定ファイルの新しい選択肢として、これからどうなっていくか楽しみじゃな。

確かにそうですね。設定ファイルの世界も進化しているのですね。ところで博士、CONLで設定を書くとき、インデントを間違えるとどうなるんですか?

インデントを間違えると…、あらら、大変!設定がぐちゃぐちゃになって、ロボ子が言うことを聞かなくなっちゃうかも!

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