Appleがシステム構成のためのプログラミング言語「Pkl」をオープンソースでリリース
![](https://i.gzn.jp/img/2024/02/05/apple-pkl/00_m.png)
Appleがシステム構成を作成するためのプログラミング言語である「Pkl(ピックル)」をオープンソースとしてリリースしました。Pklで構成を記述することで、必要に応じてJSONやYAMLのほか、Kotlin、Ruby、JavaScriptなどの形式で自由に出力することが可能とのことです。
Pkl :: Pkl Docs
https://pkl-lang.org/index.html
![](https://i.gzn.jp/img/2024/02/05/apple-pkl/snap5100.png)
apple/pkl: A configuration as code language with rich validation and tooling.
https://github.com/apple/pkl
システム構成を記述する際にはJSONやYAML、プロパティリスト(plist)などの静的言語を用いる場合が多いものの、表現力に限界があってコードが頻繁に繰り返されたり、独自の検証を提供しないために構文エラーが発生しやすかったりなどの問題が発生しています。
こうした問題に対応するために特別なロジックを追加する補助ツールなどを利用すると、時の経過と共に複雑で難解なコードが生成されてしまいます。一方で、KotlinやRuby、JavaScriptなどの汎用(はんよう)言語を使用するという解決策も考えられますが、あくまでも汎用言語であり構成の記述に使用するのは扱いにくいもの。
Pklは宣言型で簡単に読み書きできるという静的言語の強みとクラスや関数、条件文、ループなどの汎用言語の機能を組み合わせ、さまざまな構成を分かりやすく記述できるようにしたプログラミング言語です。
例えば下図のようなPklを考えます。
![](https://i.gzn.jp/img/2024/02/05/apple-pkl/snap5101_m.png)
上のPklを元に、JSON形式で出力すると下図の通り。
![](https://i.gzn.jp/img/2024/02/05/apple-pkl/snap5102_m.png)
一方YAML形式だと下図のようになります。このように、必要な形式に応じて柔軟に出力を変更可能とのこと。
![](https://i.gzn.jp/img/2024/02/05/apple-pkl/snap5103_m.png)
Pklでは「host」「port」という2つの変数を定義するだけなら下図のようにシンプルに記述できます。
![](https://i.gzn.jp/img/2024/02/05/apple-pkl/snap5105_m.png)
JavaやKotlin、Swift、Goなどの言語へも出力可能。
![](https://i.gzn.jp/img/2024/02/05/apple-pkl/snap5106_m.png)
IntelliJ、Visual Studio Code、Neovimのプラグインと拡張機能がリリース済みとなっており、IDEの入力支援を受けることもできます。
![](https://i.gzn.jp/img/2024/02/05/apple-pkl/snap5107_m.png)
また、豊富な型と検証システムを利用することでアプリケーションのデプロイ前にエラーを検出可能。
![](https://i.gzn.jp/img/2024/02/05/apple-pkl/snap5108_m.png)
Appleは「JVM」「Swift」「Go」「Kubernetes」について「すぐに使える」サンプルをGitHub上で提供しているので、利用を考えている人は確認してみてください。
・関連記事
プログラミング入門にピッタリなビジュアル言語「Pickcode」が登場、PythonやJavaScriptなどのより高度なプログラミング言語への移行を促進 - GIGAZINE
世界初の高水準言語「Fortran」が考案から約70年経ってもいまだに使用されている理由とは? - GIGAZINE
1959年に開発されたプログラミング言語「COBOL」が抱える現代の問題にIBMはどう立ち向かっているのか? - GIGAZINE
「1つのプログラミング言語を学んだら別の言語も簡単に習得できる」という説は本当なのか? - GIGAZINE
プログラムのコードを読む時に活性化される脳の領域は言語処理と同じではない - GIGAZINE
「プログラミング言語ランキング:2023年1月版」をソフトウェア開発者分析企業が発表 - GIGAZINE
・関連コンテンツ