H2データベースとJSONを使用するために必要な、Leiningenを使ったプロジェクトファイルは結局次のようになりました。


(defproject myproject "1.0.0-SNAPSHOT"
  :description "FIXME: write"
  :dependencies [[org.clojure/clojure "1.2.0"]
                 [org.clojure/clojure-contrib "1.2.0"]
                 [ring "0.3.0"]
                 [com.h2database/h2 "1.2.142"]
                 [org.danlarkin/clojure-json "1.1"]
                 [compojure "0.4.1"]])

JSONを使うには、Compojure Demystified with an exampleでも説明されていますが、(:require [org.danlarkin.json :as json])して、

(defn json-response [data & [status]]
  {:status (or status 200)
  :headers {"Content-Type" "application/json"}
  :body (json/encode-to-str data)})

を定義し、(json-response {:id 1 :data "hoge"})のようにすればJSON形式で返せます。

以前(7,8年前)仕事でJavaScriptをUIでがりがり使っていたときは、とにかく面倒だという認識しかなかったです。それで、「HTMLをJavaScriptで操作するのは邪道だ。サーバで生成するのが王道」と思い込んで(?)いました。そのためあまりjQueryなどに食指が動かなかったです。でも、今回初めて試してみました。試してみるとなかなかおもしろいと感じました。Google Chromeを使えばJavaScriptのデバッグも余裕ですしね。今後いろいろ作るときは、フロントエンドはHTML+JavaScript、バックエンドはcompojureというのでOKかと感じました。やはり技術も徐々に成熟してきていますね(当たり前か)。

Comments