Leiningenで簡単Clojureプロジェクト

Programming Clojureの訳本がもうすぐ出るということで、ここ数日盛り上がり気味のClojure。Amazonに出たので、即注文。

Clojureには、Javaで言うMavenに相当するツールで「Leiningen」というのがある。
http://github.com/technomancy/leiningen
これを使えば、依存ライブラリのダウンロードから、スタンドアローンのjar生成まで一気にやってくれる。

インストール

公式サイトの説明そのままだけど、インストール方法。

# シェルスクリプトをダウンロードしてパスの通ったところに置く。
$ wget -O /usr/local/bin/lein http://github.com/technomancy/leiningen/raw/stable/bin/lein
# 実行権限をつける。
$ chmod a+x /usr/local/bin/lein
# ~/.m2/の下にleiningenがインストールされて、すぐに使えるようになる。
$ lein self-install

Clojureを単体でインストールするよりも簡単かも。

(ただし、Windowsのbatはまだないので、自力でインストールする必要がある。)

プロジェクト作成

lein new [project-name]

これで、[project-name]の下に project.cljとREADME、src/[project-name].cljができる。

あとは、[project-name].cljにclojureのプログラムを書くだけ。

他のライブラリを使いたければ、適当なのをhttp://clojars.org/で探してきて、project.cljの中に書く。
大抵は、:dependenciesのところに [グループID/アーティファクトID "バージョン"]と書くだけで大丈夫。
普通のMavenリポジトリも使える。

サンプル:

(defproject myproject "0.0.1-SNAPSHOT"
  :description "hogehoge"
  :dependencies [[org.clojure/clojure "1.1.0-alpha-SNAPSHOT"]
                 [org.clojure/clojure-contrib "1.0-SNAPSHOT"]
                 [compojure "0.3.2"] ;ClojarsにあるCompojureを使う。
                 [jfree/jfreechart "1.0.13"]] ;JBossのリポジトリにあるやつを使う。
  :reposotiries [["jboss" "http://repository.jboss.com/maven2/"]]
  :main myproject ;これを指定してやると、myproject.cljの(def -main [] ...)の箇所が
                  ;スタンドアローンjar(下記)でのエントリポイントになる。

普通のMavenリポジトリも使えるため、このへん→http://mvnrepository.com/で適当に探してもよい。
JBossのリポジトリhttp://repository.jboss.com/maven2/とかなら、Web系の最新のライブラリが手に入る。

スタンドアローンjar作成

依存するライブラリを全部まとめて、一つのjarファイルに固めて配布できる。
JavaがインストールされているWindows上にコピーして、ダブルクリックすると、project.cljの:mainで指定したnamespaceの(def -main [] ...)から実行が始まるファイルを作ることができる。

; (project.cljに:mainを指定した上で)
lein uberjar

これで、[project-name]-standalone.jarが生成される。

REPLの実行

もちろん、REPLもできる。

lein repl

とやれば、依存するファイルにclasspathを全部通したREPLを使うことができる。
楽ちん過ぎる。

その他

  • コマンド一発(二発?)でClojarsに自分の作ったライブラリを上げることができるらしい。
    • 社内ローカルにclojarsサーバを立ててライブラリを共有する、みたいな使い方もできそうなので試してみたい。
    • やれることはmavenと一緒だが、簡単さが重要。