Shibuya.lisp TT#5 で発表しました

Emacs Lispのある生活」というタイトルで、主にClojureで作ったプレゼンソフトの話をしてきました。

Clojureで作ったプレゼンソフト"Prejure"はgithubにアップロードされています。GitHub - hayamiz/prejure: Just for fun. 発表後にid:higeponさんとid:yuum3さんにコードの行数を聞かれたので調べてみたところ、だいたい全部で700行くらいでした。多くの部分はJavaAPIを使ってGUIの部品を構築したり描画処理をしているコードに費やされているので、純粋にClojure的なコードは200〜300行程度なのではないかと思います。

会場を提供して頂いたECナビさん、Shibuya.lisp TT運営の皆さん、どうもありがとうございました。

Prejure

今回作ったプレゼンソフトPrejureの名前は、"Presentation with Clojure"の略です。プレゼンテーション作成はDSL(Domain Specific Language)によるプログラミングであるという思想を出発点として、チューリング完全であるプレゼン記述言語が欲しいと思い作成しました。このへんについては、スライドで詳しく述べています。

Prejureを作る時間のほとんどはJavaの描画APIとの格闘であり、それによってできたプリミティブな関数をClojureを使って組み上げていくのはさほど苦労しませんでした。とはいえClojureの苦手とするような処理のパターンが見えたり、clojure-contribに欲しい関数もいくつかでてきたので、後日適当に実装してパッチを投げようかと考えています。

あと、(たしかgaraemonさんから?) Prejureで動画再生をしたいというリクエストがあって、「動画再生のJavaコンポーネントがあるならやります」と答えたのですが、Java Media Frameworkというものがあるようです。これを使って簡単に動画再生ができるようなら、Prejureに動画再生機能を載せるのはそう難しくないと思います。

物を作っての発表は久々でしたが、やはり自分の作った物について喋るのはたのしいですね。

異常なClojure流行

今回のTTでは、やたらClojureの発表が多く、また参加者の方の中でもClojureを使っているという人が多かったです。これだけClojureが流行っているのは、やはりShiroさん効果なんでしょうか。僕もShiroさんに影響されてClojureを始めた口ですが。

Clojure自体はInfoQの記事で知ったので、存在自体は1年以上前から認知していました。しかしそのときは、STMやその他並列プログラミングに関する美辞麗句を読んで「ちょっと胡散臭いなあ」と思い、いつか試そうと思って忘れていました。そこにきて、ShiroさんがClojureの本を翻訳すると聞いて皆が騒ぎはじめたので、なんだなんだと思ってClojure本を手にとってみたのがClojureを始めるきっかけとなりました。

発表の中でも述べていますが、Clojure関数型言語であり、「immutableは善、mutableは悪」という思想のある言語で、できるだけ良いもの(immutableなオブジェクト)を使うようにうまく設計されている言語であると思います。この"Clojureバブル"の後にどの程度固定ユーザーが残るのかは未知数ですが、数あるLisp語族の中でもある程度の地位を得られる言語に成長してゆくのではないかと僕は思っています。