読者です 読者をやめる 読者になる 読者になる

あと味

たくさん情報を食べて、たくさん発信すると、あとになって味わい深い。

MacでClojureのセットアップ

Clojure

追記


手順が抜けて手落ちだったし、これとほぼ同じ事をもっとわかりやすく書いてある記事があったので、ものすごく恥ずかしくなってきました...

以下の記事を参照された方がいいです。ブックマークも以下の記事にしていただいた方がよろしいかと!

MacでClojure + Vim環境を作る - komagata

以下、書いた記事を一応残しておきます。

Macbook ProClojureのセットアップをしました。

特にVimClojureの導入が、調べてもなかなか簡単な方法がなくて大変だったので、試行錯誤しながら確認したベストな解決策をメモとして残しておきたいと思います。

環境

  • Mac
  • Vim
    • バージョンは7.3
    • homebrewでインストールしたもの *1
    • プラグインはNeoBundleで管理
  • Macのパッケージ管理
    • homebrewのみでMacPortsは使ってない

ちなみに、Javaの知識は皆無。

Clojure周りの整備手順

clojureのインストール

brew search clojureを実行するとclojureの文字があるので、clojureをインストールしました。

brew install clojure

brew install replするとどうのこうの言っているので、それもする。

brew install repl

ただ、これ、後述するleiningenをインストールすることで、lein replってコマンドがついてきて、そちらの方が確実に便利でした。ここは不要な手順かも。

clojure-contribのインストール

clojure-contribとはなんぞや?って状態でしたが、書籍とかにもclojure使う上では絶対あった方がいいらしいということですし、brew search clojureした時、一覧にあったので、homebrewでインストールしました。

brew install clojure-contrib

ログの中に、CLASSPATHを設定しろと言っているので、.bash_profileに追記します。 *2

export CLASSPATH=$CLASSPATH:/usr/local/Cellar/clojure-contrib/x.x.x/clojure-contrib.jar
leiningenのインストール
brew install leiningen

Javaのことはよくわからないのですが、プロジェクトで必要な依存ファイルとかを用意したり、標準的なディレクトリ構造を作るために、maven[n]というものを使うらしい。

leiningenはこれのClojure版らしいので、必要になりそうだと思ってインストールしました。replもついてるし、leiningenのプラグインもいろいろあるようです。

これは、確実にあった方が便利でした。

日本語の文字化け回避

日本語を出力する時に文字化けしたので、.bash_profileに以下を設定しました。

export _JAVA_OPTIONS=-Dfile.encoding=UTF-8

Java特有の現象はまだよくわかってません。

Vim周りの整備

VimClojureのインストール

VimClojureをインストールします。githubにあったので、NeoBundleを使ってインストールします。
.vimrcに以下を追記しました。

NeoBundle 'vim-scripts/VimClojure'

vimを起動しなおして、:NeoBundleInstallします。

VimClojureの設定

同梱されているREADME.markdownの書かれている通り、WantNailgunを設定するのと、:help vimclojure.txtに書いてあった、syntaxを全てONにしました。以下を.vimrcに設定します。

let vimclojure#WantNailgun = 1
let vimclojure#HighlightBuiltins = 1
let vimclojure#ParenRainbow = 1
let vimclojure#DynamicHighlighting = 1

カラフルで素晴らしいですね。

まだ、今日設定をしたばかりなので、他にも設定したくなる箇所が出てくると思います。 *3

nailgunクライアントのインストール

ClojureReplを使うためにnailgunクライアントというものが必要らしいです。README.markdownにも書いてあるのですが、「ってどれよ」状態だったのと、他にもいろいろ試行錯誤してみましたが、homebrewにあるnailgunを利用するのが最も簡単だということになりました。

brew install nailgun
nailgunのパスを設定

nailgunのパスを.vimrcに追記します。

let vimclojure#NailgunClient = '/usr/local/bin/ng'

ここまですると、:ClojureReplが動くはず。

!追記!

ここまでで動くと書いていましたが、勘違いでした。
nailgunサーバーも必要らしいです。起動していたのを忘れておりました。申し訳ありません...

nailgunサーバーのインストール

nailgunサーバー単体をインストールして利用するのがちょっと面倒そうだったので、leinのnailgunプラグインを導入しました。

lein plugin install org.clojars.ibdknox/lein-nailgun "x.x.x"

lein-nailgunのバージョンは、今回は1.1.1でしたが、以下で確認するのがいいと思います。

lein -hすると、nailgunというオプションが増えています。

使い方

ここまでくると、ようやくVimClojureが使えます。

まず、leiningenでプロジェクトを作ります。

lein new hogeproject

必要に応じて、project.cljを編集し、以下のコマンドでlein-nailgunを起動します。コマンドを実行する際のカレントディレクトリは、project.cljのあるディレクトリである必要があります。

lein nailgun

この後は、vimを起動して:ClojureReplが使えます。全く違うディレクトリでも問題ないです。

まとめ

VimClojureの導入は結構面倒でした。bitbucket版を入れてみたり、leinのng-serverプラグインを入れてみたり、いろいろしましたが、以上が割とすんなりいきそうな手順です。

VimClojureを導入したことで、Emacsへの羨望を少し抑えられそうです。

今度は、Compojureを使って何か作ってみます。

*1:確か、こちらを使わせてもらった気がする [https://gist.github.com/721952:title]

*2:バージョン番号はx.x.xではなく、これをコピペするのではなく、ログに表示されるものを設定してください

*3:当たり前のようにして書いてますが、NeoBundleも今日初めて使いました。