【じぇいそんねっと】

Jsonnet とは?

最終更新:
💡 共通の設定を一か所に、違うところだけ書き分ける

Jsonnetは、変数や関数、オブジェクトの組み合わせを使って設定データを記述する言語。共通部分を再利用し、評価した結果をJSONなどとして出力する。

📌 このページのポイント
Jsonnet:共通部分から設定を組み立てる共通の設定変数・関数で再利用評価して出力開発用JSONdebug: true差分を反映本番用JSONdebug: false差分を反映コピーを増やさず、違いを書き分ける
設定を組み立てるイメージです。生成したJSONが利用先の要件を満たすかも確認します。
ひよこ ひよこ
普通のJSONと何が違うの?
ペンギン先生 ペンギン先生
JSONは値を記述する形式で、Jsonnetでは変数や関数も使えるよ。たとえば開発用と本番用の設定に共通の項目が多ければ、その部分を一か所で定義して使い回せるんだ。
ひよこ ひよこ
環境ごとの違いはどう書くの?
ペンギン先生 ペンギン先生
共通のオブジェクトを用意し、開発用にはdebugをtrue、本番用にはfalseにするといった形だよ。関数の引数で違いを渡したり、別ファイルから共通部品を読み込んだりもできる。何が共通で何が違うかを整理するのが大切なんだ。
ひよこ ひよこ
出力したものは普通のJSONになる?
ペンギン先生 ペンギン先生
JSONとして出力すれば、生成後のファイルはJSONを読めるツールへ渡せるよ。Jsonnetの変数や関数がそのまま残るわけではない。実装や出力の方法によって、複数のファイルなどを生成することもあるんだ。
ひよこ ひよこ
生成できたら設定は正しい?
ペンギン先生 ペンギン先生
JSONとして正しく出力できても、使うツールが必要とする項目や値に合うとは限らないよ。言語の評価時のエラーに加え、生成結果の確認や、対象システムの設定検査も必要になる。
ひよこ ひよこ
設定ファイルは全部これに変えるべき?
ペンギン先生 ペンギン先生
必須ではないよ。小さな設定ならJSONやYAMLを直接書くほうが分かりやすい場合もある。繰り返しが多いか、変更を追いやすいか、チームが生成の手順を理解できるかで考えよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Jsonnet」って出てきたら「共通部品からJSONなどの設定を組み立てる言語」と思えばだいたいOK!
📖 おまけ:英語の意味
「Jsonnet」 = JSONを拡張した設定データの言語
💬 JSONで書ける値に加え、変数や関数などを使って設定を組み立てられるよ。

参考資料

← 用語集にもどる