play-clojure(Play 2アプリをclojureでつくる)その1


Play framework Advent Calendar 2014の19日目です。

しばらく間があいてしまってましたね。
ネタ投下します。

ここ1年くらい、新しい言語勉強としてclojureを使うことを心掛けてきました。

もともとPlay Javaを日々使っていたこともあり、これをミックスできないかと思い始め、play-clojureという企画をはじめてみました。

sbtには、sbt-clojure(https://github.com/Geal/sbt-clojure)というプラグインが存在しており、sbtを使ってclojureのコンパイルが可能になっています。

playは、sbt上で動いているのでこれを使うと面白いことができそうだというのがことの発端です。ScalaのパワーにClojureのシンプルさ!というわけです。

超簡単なhello worldを今回はやってみます。Play-Javaでプロジェクトを作成しおえた状態から始めます。

1. ビルド周りの定義

まず、build.sbtに下記を書きます

seq(clojure.settings :_*)

libraryDependencies += "org.clojure" % "clojure" % "1.5.1"

つづいて、project/plugins.sbtに下記を書きます

addSbtPlugin("com.unhandledexpression" % "sbt-clojure" % "0.1")

これでsbt-clojureの導入は終わりです。

2. コントローラの作成

app以下にclojureというディレクトリを用意し、その中にcontrollersというディレクトリを作成します。

そしてその中にmyController.cljというファイルを作成し、下記のように記述します。

(ns controllers.myController
  (:import (play.mvc Results))
  (:gen-class
    :methods [#^{:static true} [index [] play.mvc.Result]]
    :extends play.mvc.Controller))

(defn -index []
  (Results/ok "Hello world from Clojure!!"))

これでコントローラの記述はおわり。

3. routesにルーティングを記述

conf/routesに下記のようにルーティングを定義します。

GET     /                           controllers.myController.index()

以上で、作業は終了です。

$ sbt run

をすると、localhost:9000でアクセスすると、下記のような画面が表示されます!!

こんな感じでClojureでコントローラを書くことができました。

このシリーズのサンプルはここに今後まとめていきます。

karad/play-clojure
https://github.com/karad/play-clojure

Comments are closed.