背景
以前からelectronのlisp版という認識でceramicをブクマだけはしていた。最新のbrightrayを利用するアプリの例が無いものかと思い、これを思い出した。
が、Emacsの設定すらかけない自分のlisp力ではceramicのREADME.mdだけでは動かせなかった。
うごかすには
common lispの処理系
common lispの何らかの処理系が必要。
自分はおそらく、数式処理のmaxima繋がりでsbclコマンドがHomebrew経由で入っていたのでこれを利用。
他にも、common lispの処理系はある模様。
quicklisp
quicklispとはlispのパッケージ管理システムの模様。node.jsでいうところのnpmっぽい印象。
用意したcommon lispの処理系にquicklispを入れる。
Until Ceramic is available from Quicklisp
この英文がよく分らないくらい英語力がないが、quicklispを入れた環境が必要と言っている模様。
sbclは、このquicklispのサイトで例が載っている処理系だったので、この通り実施。
ちなみに、quicklispは昔はsなしのサイトに置いてあったが、昨今の諸事情の為か、httpsでDL可能なので、こちらを利用した方が吉。
ceramic本体
そして、ようやくceramic本体が入れられる。
ちなみに、プロンプトはsbclのデフォルトだと、「CL-USER>」ではなく、「*」の模様。
2回目以降のceramicの動かし方
(ql:quickload :ceramic) (ceramic:interactive)
(ceramic:setup)は不要。これ実行するとElectronのDLが始まってしまう。
仕組み
lispはEmacsの設定すら未だに書けない程に明るくないが、どうやら、electron側で標準入力を監視して、そこにJSONが流れてくるとJSONの内容に応じて処理を行っている模様。
つまり、mrubyでelectronを開いて、標準入出力を取得できれば、同様の事が出来そうだった。
mrubyでelectronを操作できた件 pic.twitter.com/oem4YkUFTg
— kjunichi (@kjunichi) 2015, 9月 7
Link
まとめ
brightrayの動くサンプルかと思いきや、Electronをそのまま利用しており、当初の目的にはかなわなかったが、流行りの関数型言語でもあるlispに触ることが出来、経験が積めた。