【ぴくるす】

PKL(設定言語) とは?

最終更新:
💡 設定ファイルに「型」という鎧を着せる言語

Appleが開発・公開した、設定データを生成するための言語。型や値の制約、共通設定の再利用を記述し、評価時に検証してYAMLやJSONなどへ出力できる。

📌 このページのポイント
Pkl:設定を評価・検証して出力 設定と型・制約 port: UInt16 評価と検証 違反ならエラー YAML / JSON TOMLの場合 対応パッケージの レンダラーを利用 共通設定を再利用して差分を記述 共通モジュール 本番用・開発用に変更 出力後の設定項目も受け取り先に合わせる
設定の評価時に型や制約を検証し、形式に合わせて出力する
ひよこ ひよこ
ペンギン先生、Pklって何?YAMLじゃダメなの?
ペンギン先生 ペンギン先生
設定を記述して、YAMLやJSONなどのデータを生成する言語だよ。型や値の制約、繰り返しや共通設定の再利用を書ける。YAMLを使うツール向けにも、Pklで設定を組み立てて出力できるんだ。
ひよこ ひよこ
型チェックって、書いた瞬間に働くの?
ペンギン先生 ペンギン先生
基本は設定を評価するときの検証だよ。例えば年齢を0〜130の整数と定義すれば、負の数を指定して評価するとエラーになる。エディターの支援は便利だけれど、「書いた瞬間にすべてのミスが分かる」という保証ではないんだ。
ひよこ ひよこ
継承とかモジュール化ってどう使うの?
ペンギン先生 ペンギン先生
共通の設定や型を別のファイルに置き、それを参照して本番用・開発用の差分を記述できるよ。公式の例ではamendsで元のモジュールを変更している。同じ設定を何度もコピーする量を減らせるね。
ひよこ ひよこ
どんな形式にも、そのまま変換できるの?
ペンギン先生 ペンギン先生
YAMLやJSONへの出力があり、TOML用のパッケージを読み込んで出力する例もあるよ。ただし、出力形式と、受け取り先が求める設定項目は別の話。Dockerfileなど任意のファイルに自動対応すると考えず、必要なスキーマやレンダラーを確認しよう。
ひよこ ひよこ
Appleの製品だけに使うもの?
ペンギン先生 ペンギン先生
用途はApple製品に限られないよ。公式リポジトリにはKubernetes向けのテンプレートや複数言語の連携も案内されている。最初のオープンソース公開は2024年2月1日。設定の型が通ったあとも、環境に合う値かは別に確かめよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「PKL」って出てきたら「型チェックができる設定言語」と思えればだいたいOK!
📖 おまけ:英語の意味
「Pkl」 = Pickleと発音する設定言語の名前
💬 公式の初回公開記事は「pronounced Pickle」と案内しているよ。英語のpickleと同じ読み方で、ここでは設定データを生成する言語の名前だよ。

参考資料

← 用語集にもどる