興味尽きないプログラミングの話など

プログラミングメモ


とりあえずClojureを触ってみる [090411,412]

JavaVM上で動く言語にClojureというものがあることを知りました。Lispライクな言語でOpenGLのサンプルも紹介されていることから興味をもちました。

早速MacOSX上にインストールしてみました。まず、Clojure本体を以下のサイトからダウンロードします。

HTTP://clojure.org/

右上downloadをクリックしてダウンロードのページを開きます。4月11日はこのページがなかなか開きませんでした。開いたらclojure_20090320.zipをダウンロードします。最新版があればそれをダウンロードしましょう。

これを解凍します。私の場合StuffitExpanderを使用して解凍しました。フォルダclojureができます。このフォルダをユーザのディレクトリに移動しておきましょう。

フォルダclojure中にclojure.jarというファイルがあります。

この段階でターミナルを起動して次のコマンドを試してみます。[1]のURLをご覧ください。ユーザディレクトリには自分のホームディレクトリ名で置き換えます。

java -cp /Users/ホームディレクトリ名/clojure/clojure.jar clojure.lang.Repl

画面に次のようなプロンプトが現れます。ページ[1]の例を試してみましょう。

user=>

和を求めます。

user=> (+ 1 2 3)
6

swingのダイアログウィンドウを表示させてみます。

(. javax.swing.JOptionPane (showMessageDialog nil "HelloWorld"))
nil

この場合ダイアログウィンドウが表示されます。もちろんHelloWorldとメッセージが表示されます。

コントロールキー+Dで終了します。

user=> ^D

次にOpenGLのサンプルを試してみましょう。OpenGLをJavaから利用するためのライブラリJOGLを使用します。

JOGLをダウンロードします。[2]のURLをご覧ください。

Overviewの枠の下にCurrent release build(JSR-231 1.1.1)という項目があるのでクリックします。自分OSに合わせたものをクリックしてダウンロードします。私の場合、jogl-1.1.1-macosx-universal.zipをクリックしてダウンロードしました。

同様にしてStuffitExpanderを使用で解凍しました。フォルダjogl-1.1.1-macosx-universalにフォルダlibがあるので拡張子jarとjnilibのファイルをこれをデバイスのハードディスク中のライブラリ>java>ExtensionsとたどってExtensionsフォルダ中に移動しておきます。ディレクトリは/Library/Java/Extensionsとなります。

サンプルは[3]のURLをご覧ください。二つサンプルがありますが最初のものを使用します。コピーして自分の使用しているエディタにはりつけglsample.cljとでも名づけて保存しておきましょう。ホームディレクトリにこのファイルがあるものとして次のコマンドで実行してみます。ユーザディレクトリには自分のホームディレクトリ名で置き換えます。

java -jar /Users/ホームディレクトリ名/clojure/clojure.jar glsample.clj

四面体が揺れています^^

これだけでも十分インパクトがありました。これからClojureで遊んでみようかと考えています。

ところがjoglのフォルダ中にあるUserguide.htmlによれば、Javaフォルダ中のExtensinosフォルダにjoglのライブラリのファイルを置かないように勧めています。どうも、いろいろコンフリクトの原因となるようです。

そこでJavaフォルダ中のExtensinosフォルダに置いた拡張子jarとjnilibがついたjoglのファイルを移動します。移動先として私はホームディレクトリにjogl-1.1.1フォルダを作り、その中にlibフォルダを用意しそこに移動しました。

もちろんjoglをダウンロード後解凍してできたフォルダをホームディレクトリに置くだけでもかまいませんが、フォルダ名に注意して扱ってください。

それからホームディレクトリにある.bash_profileに次の2行を付け加えました。

export CLASSPATH=/Users/ホームディレクトリ名/jogl-1.1.1/lib/jogl.jar:/Users/ホームディレクトリ名/jogl-1.1.1/lib/gluegen-rt.jar:/Users/ホームディレクトリ名/clojure/clojure.jar
export DYLD_LIBRARY_PATH=/Users/ホームディレクトリ名/jogl-1.1.1/lib

CLASSPATHにjoglとclojureのライブラリの設定を行い、DYLD_LIBRARY_PATHにはnativeライブラリ(拡張子jnilibのファイル)のパスを設定しています。

Windowsの場合も同様の設定になりますが、DYLD_LIBRARY_PATHの代わりにPATHでjoglのDLLファイルが入ってるディレクトリまでのパスを設定しています。

それからターミナルを起動し直すと、インタープリタの例は次のコマンドで実行できるようになります。

java clojure.lang.Repl

そしてOpenGLのサンプルは次のコマンドで実行できます。

java clojure.main glsample.clj

この方が簡単で気持ちいいですね^^;

上記の文章ではフォルダとディレクトリという言葉が出てきますが、フォルダがGUIで見た時の表現としているだけで、ディレクトリと同じものと考えてもらってかまいません。

なおClojureに関してはYasuto TAKENAKA氏のClojure Japan[4]が参考になります。

[1] http://clojure.org/getting_started
[2] https://jogl.dev.java.net/
[3] http://lifeofaprogrammergeek.blogspot.com/2009/04/opengl-in-clojure.html
[4] http://sites.google.com/site/clojurejapan/