compojureなどの実験(その2)
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かと感じました。やはり技術も徐々に成熟してきていますね(当たり前か)。