Hack #232: Clojure開発環境を整える
Posted at 2011/09/25ツイート
こんにちは、ujihisaです。Vancouverでは空前のClojureブームが発生しており、毎週のようにClojure勉強会があり、Vim使いやEmacs使いが集結しています。
問題1
Clojureでシンタックスハイライトや自動インデントを行いたい。
解決1
VimClojureというプラギンをインストールします。
https://github.com/jondistad/vimclojure
なお、g:clj_highlight_builtins
を設定すると標準関数のハイライトが、またg:clj_paren_rainbow
を設定すると括弧の対応が虹色に美しく輝き、便利です。筆者は以下のようにして両方とも利用可能にしています。
~/.vimrc
:
let g:clj_highlight_builtins = 1
let g:clj_paren_rainbow = 1
問題2
改行するたびにyankしている文字列が消える?
解決2
VimClojureをアンインストールするか、頑張ってパッチを書きます。
VimClojureには深刻なバグがあり、インデントを調整するたびにyankしている文字列が完全に破壊されます。
問題3
Clojureのコードを即座に実行し、結果を別バッファに表示しつづけたい。
解決3
quickrunを用います。もしclj
というコマンドを持っていれば、ファイルタイプがclojureであるバッファに対してquickrunは無設定で動作します。
https://github.com/thinca/vim-quickrun
問題4
quickrunに時間がかかりすぎる。
解決4
JVMの立ち上げ時間とライブラリの読み込み時間がとても長いのが原因です。Clojure処理系を立ち上げたままにしておくことで、劇的な高速化が実現できます。そのための道具としてNailGunとJarkがあります。筆者のオススメはJarkです。
https://github.com/icylisper/jark
Jarkをインストールしたら、まずはJarkサーバを立ち上げましょう。vimshellなどで
$ jark vm start
として事前にJarkサーバを立ち上げ、そしてquickrunします。OSを終了するときまで、すなわちVimを終了するときまで、Jarkサーバを終了する必要はありません。
quickrunは既にjarkに対応していますので、無設定でいきなり使えるはずです。
以下に感動的なベンチマーク結果を載せます。
(println "hello")
とだけ書いたコードをclj
とjark
のそれぞれでtime
コマンドで比較してみたところ、それぞれ
-
clj
1.40 real 2.09 user 0.15 sys
-
jark
0.19 real 0.11 user 0.06 sys
となりました。実験はかなりパワフルなiMacを用いて行ったので、一般的な初代MacBook Airなどのマシンで行うと、さらに顕著な差が出るでしょう。
ujihisaもどる
blog comments powered by Disqus