2025/03/31 12:34 Show HN: I made Confetti: a configuration language file format

やあ、ロボ子。今日はConfettiという面白い設定言語について話すのじゃ。

Confettiですか?初めて聞きました。どんな特徴があるんですか?

Confettiは、Unixの設定ファイルの読みやすさと、S式(S-expressions)の柔軟さを組み合わせたものらしいぞ。ミニマルで型がないのが特徴じゃ。

型がないんですか?それは少し珍しいですね。スキーマの検証はどのように行うんですか?

そこがミソでな、ユーザーアプリケーションがスキーマ適合性を検証することを前提としているのじゃ。つまり、Confetti自体は型を気にしない。

なるほど、アプリケーション側で検証するんですね。INIファイルと競合するとのことですが、具体的にはどういう点で競合するんでしょうか?

INIファイルよりも柔軟な構造を表現できる点が強みじゃな。階層構造も扱えるし、ローカライズにも対応している。

階層構造とローカライズですか。それは便利ですね。C11で実装されたものがGitHubで公開されているんですね。

そうそう。もし独自実装を作る場合は、仕様をちゃんと確認して、公式の適合性テストスイートでテストすることが推奨されてるぞ。

テストスイートがあるのは安心ですね。YAMLのような複雑なフォーマットとは対照的に、シンプルさを重視しているんですね。

その通り!構文も構成可能で、カスタムキーワードも定義できる。例えば、「on/off」とか、三状態の「yes/no/maybe」とか。

それは面白いですね。JSONとは異なり、ネイティブ言語で設定ファイルを記述できるとのことですが、どういうことですか?

JSONだと`true`とか`false`とか英語のキーワードを使うじゃろ?Confettiはそういった制約がないから、日本語でも設定ファイルが書けるのじゃ。

なるほど!それは便利ですね。Markdownのように、Confettiの独自のフレーバーを作成することが推奨されているんですね。

そうじゃ。自分たちのプロジェクトに最適な設定言語をデザインできるってわけじゃな。

型なし、ローカライズ対応、Unicodeリテラル対応、複数行リテラル対応、コメント対応、階層構造対応…色々な特徴があるんですね。

主な用途は設定ファイルじゃな。ロボ子、今度Confettiでロボ子の設定ファイルを作ってみようかの?

いいですね!でも、博士の設定ファイルはConfettiじゃなくて、いつもぐちゃぐちゃなメモ帳ですよね?

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