Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pkl-lang で「charites の目標としていたこと」を達成できるのではないか #404

Open
hfu opened this issue Feb 26, 2024 · 13 comments
Assignees

Comments

@hfu
Copy link
Contributor

hfu commented Feb 26, 2024

あとで書く

@yuiseki
Copy link
Collaborator

yuiseki commented Feb 27, 2024

なるほど!

Apple、コンフィグレーション生成用の静的型付き言語「Pkl」をオープンソースで公開、単一コードからJSONやYAML、XMLなどを生成 - Publickey
https://www.publickey1.jp/blog/24/applepkljsonyamlxml.html

@hfu
Copy link
Contributor Author

hfu commented Feb 27, 2024

まず、module がどのように動くか確認してみました。
https://dev.to/hfu/stylejson-from-apple-pkl-1-4j5j

@hfu
Copy link
Contributor Author

hfu commented Feb 28, 2024

少し進めてみました。Apple Pkl の Language の学習をしながら進めています。
https://dev.to/hfu/stylejson-from-apple-pkl-2-20mf

@hfu
Copy link
Contributor Author

hfu commented Mar 2, 2024

最初の動くバージョンを作ることができました。とりあえず、water だけです。
https://dev.to/hfu/stylejson-from-apple-pkl-3-456p

@yuiseki yuiseki self-assigned this Mar 5, 2024
@hfu hfu changed the title Apple Pkl で「charites の目標としていたこと」を達成できるのではないか pkl-lang で「charites の目標としていたこと」を達成できるのではないか Mar 5, 2024
@hfu
Copy link
Contributor Author

hfu commented Mar 5, 2024

Apple Pkl は pkl-lang と表記したら素直そうなので、イシューのタイトルを書き換えました。

@yuiseki
Copy link
Collaborator

yuiseki commented Mar 8, 2024

実際のコードを確認したいので、hfuさんのリポジトリにもリンクさせてください

@yuiseki
Copy link
Collaborator

yuiseki commented Mar 9, 2024

自分でも触ってみました

任意のJSONファイルをpklに変換するものを用意しました

使い方

pkl eval src/convert-json.pkl -p input=PATH_TO_JSON > PATH_TO_PKL

これでいくつかのstyle.jsonファイルを変換してみました

@yuiseki
Copy link
Collaborator

yuiseki commented Mar 9, 2024

pkl-langのメリット・デメリット

メリット

  • moduleを定義し、importやextend可能
    • 再利用性が高まる
  • 文法と型を定義することで、静的にエラーを検出可能
  • チューリング完全なプログラミング言語でもある
  • サポートされている任意のフォーマット、プログラミング言語で出力可能(JSONはその一つにすぎない)

デメリット

  • ドキュメントや事例が少ない
  • 汎用的と言いつつ分野が偏っている
  • 大規模言語モデルは知識カットオフされているため、このような新しいプログラミング言語はうまく扱えないかもしれない
    • infinite-tinyllama で学習させれば良さそう?
      • コードの断片を大量に集める必要がある

ファーストインプレッションはこんな感じでした

@yuiseki
Copy link
Collaborator

yuiseki commented Mar 9, 2024

Dynamic importができない、、、 Javaの世界観を思い出しつつ弄り続けていたらできた

@yuiseki
Copy link
Collaborator

yuiseki commented Mar 9, 2024

@yuiseki
Copy link
Collaborator

yuiseki commented Mar 9, 2024

Note:

  • style.jsonにおいては、厄介なことに、記述する順番が重要になってくる(後勝ちで描画される)
    • 名前の順にimportしていくと崩れるので注意が必要

@hfu
Copy link
Contributor Author

hfu commented Mar 10, 2024

共有いただいた情報を参考にして、東京首部のベクトルタイルをローカル完結でホストし、positron ベースの style.json を pkl-lang で生成する形を作りました。

https://github.com/optgeo/tkl

positron から生成したタイミングでの positron.pkl の行数は 2264 行程度でしたが、構造を入れ始めて現在 2119 行まで圧縮できています。うまく構造を入れて、できれば 1500 行を切るようにしていければと思っており、いろいろ試していきたいと思っています。

@hfu
Copy link
Contributor Author

hfu commented Mar 12, 2024

#406@smellman からも参入意向をいただきました!
引き続き、pkl-lang をうまく使っていければと思います。

#406 では、「pkl-lang って、単一言語で完結しているのがクールです」という話をしました。charites の場合には「YAMLとJavaScript」を使う形だったけれど、pkl-lang では、@yuiseki に示していただいたとおり、処理系も pkl-lang で書けるところがクールだと私は思います。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants