PklファイルからJSONファイルを生成する

技術

Pklとは

PklとはPkl形式のファイルから、jsonやxmlといった形式のファイルを生成することができるプログラミング言語です。
Appleが開発をしました。
今回はjsonファイルを作成してみるところまでを行おうと思います。
筆者はwindowsを使っているので、dockerでの作業を想定しています。

参考: 公式ドキュメント

vscodeに拡張機能を導入

vscodeの拡張機能があるので導入していきます。
拡張機能は.vsixファイルとして配布されています。
まず、 こちらから.vsixファイルをダウンロードします。
vscodeの作業ディレクトリで下記を実行します。
バージョンは執筆時のものなので注意してください。

code --install-extension pkl-vscode-0.15.0.vsix

拡張機能をいれることで、シンタックスハイライト、括弧の補完、コードのスぺニットが効くようになります。

参考: vscodeの拡張機能に関するPklのドキュメント

開発環境構築


まず,PklのCLIをインストールします。
公式ドキュメントにはmacOSかlinuxのインストールコマンドが記載されています。
筆者の環境はwindowsなのでdockerにubuntu環境を作成してインストールすることにしました。
一応、docker-composeを利用します。

Dockerfile

FROM amd64/ubuntu:latest

RUN apt-get update && apt-get install -y \

    curl \

    && rm -rf /var/lib/apt/lists/*

# Pklのインストール

RUN curl -L -o /usr/local/bin/pkl https://github.com/apple/pkl/releases/download/0.25.2/pkl-linux-amd64

# Pklの実行権限付与

RUN chmod +x /usr/local/bin/pkl

WORKDIR /src

COPY . /src

# コンテナを動かし続ける
CMD ["tail", "-f", "/dev/null"]

docker-compose.yaml

version: "3.8"
services:
  app:
    build: .
    volumes:
      - .:/src

コンテナを起動します。

docker-compose up --build

PklファイルからJSONファイルを生成

公式ドキュメントのチュートリアルのBasic Configurationを参考に、PklファイルからJSONファイルを生成することを目指します。
まず、Pklファイルを作成します。

sample01.pkl

name = "hoge"
id = 123

コンテナ内で下記を実行します。

pkl eval sample01.pkl

下記が得られることを確認します。

name = "hoge"
id = 123 

指定のファイルで出力するには下記のようにします。
-fの後ろに出力したい形式をいれます。
xmlやyamlも出力できます。

pkl eval -f json sample01.pkl

json形式で出力されたことを確認します。

{
  "name": "hoge",
  "id": 123
}

出力されるjsonのファイルもできます。
オプションに-o と出力先をいれます。

pkl eval -f json -o ./sample01.json sample01.pkl

sample01.jsonが生成されます。

複数ファイルを一つのファイルにまとめることも可能です。
デフォルトはYAML Streamのセパレーターです。

sample02.pklを作成します。


sample02.pkl

isExist = true

下記を実行します。

pkl eval -f yaml -o ./sample03.yaml sample01.pkl sample02.pkl

下記のyamlファイルが生成されます。

sample03.yaml

name: hoge
id: 123
---
isExist: true

参考:

おわりに

本記事を読んでいただきありがとうございました。
今回はPklファイルから、JSONファイルを生成するところまで行いました。
これ以外にもコマンドやオプションがありました。
s例外にもGoやJavaなどの言語の中で、利用もできるみたいなのでそちらも今後触れたらと思います。