Clojure

[トップ][一覧][最近の更新]

このページには、筆者がClojureを使った際のおぼえがきを書く。



前提条件

開発環境構築

windowsを前提とする。

  1. 適当にJDK(Java SDK)をインストールしておく。
  2. http://clojure.bighugh.com/ から、Clojure Boxをダウンロードしてインストールする。以上。

Google App Engineを使う

http://code.google.com/intl/ja/appengine/docs/java/gettingstarted/installing.htmlhttp://tnoborio.blogspot.com/2010/01/clojure-compojure-on-google-app-engine.htmlhttp://elhumidor.blogspot.com/2009/04/clojure-on-google-appengine.html と2chのClojureスレを見ながら行った手順をまとめた。

  1. GAEのアカウントを取っておく。登録時のメールアドレスとパスワードは忘れないようにする事
  2. https://appengine.google.com/ にログインして「Create an Application」を押し、作りたいアプリの初期設定を行っておく。この辺については適当にGAEの解説ページを探して読んでおく事
  3. http://code.google.com/intl/ja/appengine/docs/java/gettingstarted/installing.html に書いてある通り、App Engine Java SDKをダウンロードし展開し、適当な場所に設置し、pathを通しておく
  4. antをインストールする
  5. Compojureを生成する
    1. http://github.com/weavejester/compojure/downloads から一式をダウンロードし展開し、適当な場所に設置する
    2. Google App Engineはファイルアップロード機能を殺さないとエラーになるらしいので、それに対応する為に以下の修正を入れる
      --- src\compojure\http.clj.orig Wed Jan 13 13:25:14 2010
      +++ src\compojure\http.clj      Mon Feb 22 04:23:55 2010
      @@ -14,6 +14,6 @@
       (immigrate
         'compojure.http.helpers
         'compojure.http.middleware
      -  'compojure.http.multipart
      +  ;'compojure.http.multipart
         'compojure.http.routes
         'compojure.http.servlet)
      
    3. compojure.jarを生成する
      ant deps
      ant
      
  6. appengine-cljを生成する。尚、本家のは更新されてないし、現在のappengine-java-sdkのバージョンとも合わないので、本家のものではなく、ブランチのものを使う。
    1. http://github.com/snewman/appengine-clj の「Download Source」から一式をダウンロードする
    2. 展開し、適当な場所に設置する
    3. antでjarファイルを生成する
      ant jar
      
  7. サンプルプロジェクトを、 http://github.com/duelinmarkers/guestbook-clj からダウンロードし、展開し、リネームし、適当な場所に設置する
  8. 以下の設定ファイルをいじる
  9. build.xmlを編集する。例によって手適用する事。
    --- build.xml.orig      Mon Apr 27 21:17:56 2009
    +++ build.xml   Tue Mar  2 03:53:29 2010
    @@ -1,12 +1,13 @@
     <project name="guestbook-clj" basedir="." default="test">
    
       <property environment="env" />
    -  <property name="sdk.dir" location="../appengine-java-sdk-1.2.0" />
    +  <property name="sdk.dir" location="../appengine-java-sdk-1.3.1" />
       <property name="classes.dir" value="war/WEB-INF/classes" />
       <property name="lib.dir" value="war/WEB-INF/lib" />
       <property name="src.dir" value="src" />
       <property name="test.dir" value="test" />
    -  <property name="compojure.dir" value="/Users/hume/dev/compojure" />
    +  <property name="compojure.dir" value="../weavejester-compojure-e40c29e" />
    +  <property name="appengine-clj.dir" value="../snewman-appengine-clj-1e90d95" />
    
       <import file="${sdk.dir}/config/user/ant-macros.xml"/>
    
    @@ -29,9 +30,9 @@
       </target>
    
       <target name="copyjars">
    -    <copy file="${sdk.dir}/lib/user/appengine-api-1.0-sdk-1.2.0.jar" todir="${lib.dir}" />
    +    <copy file="${sdk.dir}/lib/user/appengine-api-1.0-sdk-1.3.1.jar" todir="${lib.dir}" />
         <copy file="${compojure.dir}/compojure.jar" todir="${lib.dir}" />
    -    <copy file="/Users/hume/dev/tw/g/appengine-clj/appengine-clj.jar" todir="${lib.dir}" />
    +    <copy file="${appengine-clj.dir}/appengine-clj.jar" todir="${lib.dir}" />
         <copy todir="${lib.dir}">
           <filelist dir="${compojure.dir}/deps" files="clojure.jar clojure-contrib.jar commons-io-1.4.jar commons-codec-1.3.jar" />
    
  10. antでmakeする
    ant
    
  11. 試しに実行してみる
  12. GAEサーバに反映する
  13. 実際のurlにアクセスして、ちゃんと機能している事を確認する
  14. 機能する事が確認できたので、これをベースに好きにいじりまくる

尚、GAEは結構癖のある環境なので、他のサイト等でちゃんとバッドノウハウを確認しないとはまるポイントが多いので(バージョンの上げ忘れや、デフォルトバージョンの設定し忘れとか)、自分で探して確認しておく事。

CheatSheet

続きはあとで

不満点

感想

その他

TODO


最終更新 : 2010/05/02 14:38:02 JST