Lisp Meet Up #13 に参加しました
1/23の夜開催されたイベント、Lisp Meet Up presented by Shibuya.lisp #13 に参加しました。
毎月やっているLisp Meet Upが1周年を迎えたのはめでたいですね。なわたさんと神田さんは表彰されていいと思う。
参加者
最初に自己紹介タイムがありました。使っているLispはClojureが一番多かったです。Common Lisp回なのにCommon Lisperは一番少なかったんじゃないかな。
Integralの紹介をしました
先日作ったCommon LispのO/RマッパーのIntegral について発表しました。30分くらい話したと思います。
既存のCLのO/Rマッパー「Postmodern」と比較し、より開発フローを意識していろいろ良い感じにやってくれるんだよ、という話です。
先日のブログエントリでは書かなかった、どのように実装されているか、という話を中心に話をしようと思っていたので、CLOSとMeta Object Protocolの話も多かったです。Clojure使いの多い会でやるべき話ではなかった……。
後で佐野さんに、「『classをmake-instanceする直前にslotを…』みたいにずっと横文字しゃべってた」って茶化されましたが、Common Lisperには評判が良かったので良しとします。
κeenさんのCIMの発表
前日にタイトルが明らかになったκeenさんの発表は、「Common Lisp Implementation Managerを作りました」という、自分の作ったツールの紹介でした。
CIMの読み方は「ちむ」だそうです。かわいいですね。
このツールは簡単に説明するとCommon Lisp for RVMで、CL処理系とそのバージョンを複数インストールして切り替えることができるもの。タイトル聞いたときから、もうこれが僕が欲しかったものだ!って感じです。
ライブラリを作っていると複数の処理系で試すのが結構面倒で、Jenkinsで自動テストを回すにしてもそれぞれの処理系のコマンドライン引数の差と苦闘しないといけない。SBCLは複数バージョンを同じ環境にインストールするのが面倒で、毎回手動で切り分けをやったりしていました。
この辺りをShellyでいくらか改善しようとしたんだけど、CIMのほうがぴったり需要に合っています。実装もShellyみたいにPerlが必要ではなく、Bourne Shellで書かれているのも良い。
まだバグも多いようですが、αリリース版を試したい方は以下のリポジトリのREADMEに使い方が書いてあります。
Common Lisp処理系について
休憩時間、ayato_pさんに「Common Lisp処理系は何がいいですか」と聞かれました。
隣にいた佐野さんはSBCLを使っておけばいいんじゃないか、と言っていましたが、僕はClozure CLを推しました。
「Common Lisp処理系は何がいいか、と聞く人は初心者だから、初心者が困らない処理系をおすすめしなければならない」と思っていて、SBCLはその点ではあまり親切ではありません。エラーメッセージがわかりづらかったり、ASDFでライブラリロードしたときに、Style Warning程度でコンパイルエラーになったりする。そのときはデバッガが立ち上がるから良い、というのはCommon Lispを既に書いている人の意見で、他の言語から来た人はデバッガが立ち上がると混乱するし怖いと思います。そういう理由で、聞かれたら大体Clozure CLをおすすめしています。
SBCLは簡単な型チェックをしてくれるし、何より高速なので、慣れてきたら移るか併用するのがいいかなと思います。
Rubyを追いかける
ayato_pさんがブログで書かれていますが、今回の発表の2つともにRubyの話が出てきました。僕のORMの発表ではActiveRecordが、κeenさんの発表ではRVMが比較として出されました。
言語の表現力や実行速度は確実に優っているのに、その人気度は遥かに引き離されているのは、Common Lispを普及したいと思っている人の悩みの種です。Lispを始めたいと思った人でも、最近はClojureに行ってしまう。今回の参加者のCommon Lisperの数を見ても、Common Lispは全く人気のある言語とは言えない。
ここからはMeet Upと関係無いし完全に私見ですが……もうカッコつけてる場合じゃないと思うんですよ。なりふり構わずRubyやClojureを追いかけないといけない。
特にClojureにはヒントがあると考えていて、なぜCommon LispではなくClojureを始める人が多いのか、採用する企業が日本でも増え始めたのかということを真剣に考えないといけない。Clojureを始める人がなぜLispの中でもClojureを選ぶのか。JVMに載ってるからという安心感もあると思いますが、モダンなLispだから、という理由も多くあると僕は推測しています。
CL21の評価は賛否両論でしたが、普段Common Lispを書かない人たちには「良い意味で当たり障りのない言語に見える」などそれなりに評判が良かったのは面白い反応でした。Common Lispも見せ方を変えるだけで反応は変わるのだな、と思いました。
一方でCommon Lisper達には「Rubyみたいな遅い言語になっちまうだろーが」とか「自分はこういうレイヤーは必要ないと思う」などボロクソに言われました。
この反応の差に、Common Lispを普及したいと思っている人は向き合っていかないといけないと思います。
おわりに
話はイベントに戻る……。
今回は2つとも発表がPracticalだったね、と佐野さんが言っていました。良いことです。この調子でもっとLispを盛り上げていきたいですね。
こちらのイベントレポートもご覧ください。