gaucheyライブラリ
今日はShibuya.lispのHackathonがあったようです。東京には行けなかったんですが、時間中(13:00 - 17:30)は時間をとってリモートで勝手に参加させてもらってました。時間中はひたすらClojureを書いていました。gaucheyという、GaucheにバンドルされたライブラリをClojureへ移植したライブラリを作っていました。
動機
ClojureはJVM上で動くLispなので、Javaのクラスにも簡単にアクセスすることができます。もちろん、Javaの標準ライブラリも使いたい放題です。また、clojure-contribというユーザのコントリビューションライブラリもあり、ClojureやJavaの機能をより便利に使うことができるようになっています。
ところで、ここしばらくClojureを使っているんですが、「Clojureで日常の細々としたスクリプトをサクッと書いてやろう」という気にはあまりなりません。「起動時間が遅い」というのも一因かもしれませんが、個人的に1番の障壁になっているのは「書くのが面倒臭い」ことだと思います。
Javaのクラスを使うといろいろなことができるようになるのはいいんですが、いちいちXXFactoryを作ってYYBuilderを作ってなんて回りくどいやりかたをするのはあまりスクリプト向けではないなと感じます。一方で、clojure-contribでは、せっかくClojureがもっている階層的なネームスペースが効果的に使われず、大小さまざまな機能が渾然として、どのネームスペースに何が定義されているのか分かりにくいという印象があります。そのため、「こういう機能を探したい」と思ったときに見つかるまでに時間がかかり、やっぱり面倒だなぁと感じてしまいます。
じゃあ、スクリプトをサクッと書くためには何が必要なのか、というのを真面目に考えるのは難しいですが、既存の使い勝手のいいものを真似することはできそうです。ちょうど、Clojureのお隣、Schemeの処理系には「スクリプトインタプリタとしての使い易さに重点を置い」た開発を標榜しているGaucheがあります。これまでGaucheでスクリプトを書いたときに書きやすかったこと、また、ライブラリが整理されていることなどから、Gaucheのライブラリをパクってみたらいいんじゃないか、と思ったのがgaucheyを作ろうとしたきっかけでした。