Appleは2月1日(現地時間)、新しいオープンソースのプログラミング言語「Pkl(発音はPickle)」を公開しました(公式ブログ)。
Pklはコンフィグレーションフォーマット(設定フォーマット)を生成するためのプログラミング言語で、Pkl形式から、JSON、YAML、プロパティ・リスト、その他の設定フォーマットを生成することができます。
Java、Kotlin、Swift、Goのコード生成をサポートし、IntelliJ、Visual Studio Code、NeovimといったIDEにも対応しています。
AppleはPklのユースケースとして、各種設定フォーマットの生成や、アプリケーション・ランタイムの構成をあげています。
JSON、YAML、その他のフォーマットの設定ファイルをPklで生成することで、冗長性を減らし、再利用、テンプレート化、抽象化を通じて保守性を高めることができます。JSON、YAML、XML、プロパティリストはすでにサポートされていて、他の構成フォーマット用のレンダラーを開発することもできます。設定スキーマには、自動デフォルト、強力なバリデーション、適切なエラーメッセージなどが準備されています。
例えばPkl形式の設定ファイルintro.pkl
は次のようになります。
name = "Pkl: Configure your Systems in New Ways" attendants = 100 isInteractive = true amountLearned = 13.37
pklコマンドを使用して、intro.pklからJSON形式の設定を生成することができます。
$ pkl eval -f json /Users/me/tutorial/intro.pkl { "name": "Pkl: Configure your Systems in New Ways", "attendants": 100, "isInteractive": true, "amountLearned": 13.37 }
また、設定ファイルを利用するツールやサービス、アプリケーションに組み込んで使用することもできます。Pkl を、JSONファイルを生成するために使用するのではなく、「ネイティブ」な構成ソリューションとして採用することで、最新の構成ライブラリから恩恵を受けることができます。現在はJVMランタイム、Swift、Go言語用の設定ライブラリが提供されています。
pkl-config-java for Java compatible languages
pkl-config-kotlin for the Kotlin language.
pkl-swift for the Swift language.
pkl-go for the Go language.
さらに、IntelliJ、Visual Studio Code、Neovim用のプラグインと拡張機能を提供しており、Language Server Protocolも近日中にサポートする予定です。これらのサポートにより、Pklを静的型付け言語と同じように簡単に記述することができるようになります。
プログラムを開発する場合、設定ファイルのフォーマット問題に頭を悩まされる場合があります。Pklがこの問題を解決できるのかRedditユーザーも注目しています。