Friday, June 1, 2012

Clojure入門「とりあえず使ってみる」

こんにちは。ニャンパスでプログラムを書いている清水(@yuushimizu)です。

このブログでは、主にニャンパスが普段使っている技術(ClojureやMongoDBなど)についての解説やチュートリアルをゆるふわに書いていく予定です。よろしくおねがいしますー。@tnoborioに昨日突然ブログを書けと言われました><

今回はClojureを実行してみるまでについて軽く書きます。

Clojureって?

「Clojure」はLisp系のプログラミング言語のひとつです。

Lisp系の言語には「Common Lisp」や「Scheme」などがありますが、それらの言語と比べたときのClojureの大きな特徴として「JVMで動作する」ということが上げられます。JVMで動作するので、Javaの標準ライブラリやJava向けに書かれたライブラリ(Apache Commonsとか)を使うことができます。実際、Clojureの文字列はJavaのStringになっていて、リストやベクターもJavaのListインタフェースを実装していたりします。また、Clojureで書いたクラスをJavaから使うことも可能です。

その他には、不変なデータ構造を多用することや、標準で遅延シーケンスが組み込まれていることもClojureの特徴と言えます。

Javaと比べると、コードを短く書くことができ、さらにマクロにより冗長さを減らせることや、クラスや関数を実行時に作ったり変更したりできることが違いとして上げられます。関数を値として扱えるため、Javaではクラスが必要だった処理を、Clojureではすごく簡潔に書くことができます。

例えばリストをソートするときにJavaでは以下のように書いたりしますが

Collections.sort(list, new Comparator<integer>() {
  public int compare(final Integer n, final Integer m) {return n - m;}
});

Clojureでは以下のようにすごく短く書けます。

(sort < list)

かっこいいですね!

他にJVMで動作する言語では「Scala」が最近流行っている気がします。Clojureは動的な言語ですが、Scalaは静的な言語です。どっちもJVMで動作するというだけで、言語としては離れたところにあるので比べられない感じです。ちなみに僕はClojureよりCommon Lispが好きです。

Clojureを動かしてみる

Clojureのインストールは簡単です。この記事ではMac OS X (Lion)上で動かす想定で書いていますが、だいたいのLinuxでも動くハズ。

Leiningen

Clojureのプロジェクト管理ツールに「Leiningen」というものがあります。これを使うとClojureを使うのが超簡単になります。「Leiningen」は「らいにんげん」と読むそうです。

Leiningenは http://leiningen.org/ からダウンロードできます。インストール方法は「Install」のところに書いてあります。

  1. Download the lein script というリンクからスクリプトファイル(lein)をダウンロード
  2. それをパスの通ったところに置く
  3. 実行権限を付ける
これでインスートル完了です。

REPLの実行

とりあえずClojureを使ってみるには

lein repl

というコマンドを実行します。ちょっと時間がかかりますが起動すると

user=> 

上記のようなプロンプトが表示されます。試しに

user=> (+ 7 6 5)

と打ち込んでみると

18

と表示されるハズです。REPL(Read-Eval-Print Loop)を使うとちょっとしたコードを対話的に実行することができます。

REPLはデバッグや落書きに便利ですが、コレだけでは開発できません。普段はLeiningenを使ってプロジェクトを作って開発しています。とりあえず今回はここまでにして、次回はその辺りを解説する予定です。

No comments:

Post a Comment