Scala IDE + Typesafe Activator + Play Framework

上記の組み合わせで動かしてみる。

Eclipse 4.4(Luna)で利用できるMilestone(正式リリース前の評価版)を今回は利用してみました。新しいもの好きなので・・・。

Eclipse

Eclipse Luna(4.4)を落とします。→Eclipse

Scala IDE

Eclipseのプラグインとして提供されます。(同封版もあり)→Scala IDE (Milestone)

Eclipse上からプラグインとしてインストールしてください。いくつかプラグインが出てきますが、まあソース以外全部インストールしておけば間違いないでしょう。

 Typesafe Activator

ダウンロードして解凍します。→Typesafe Activator

activator.bat(Windowsの場合)もしくはactivator(Linux等の場合)にパスが通っていた方が便利な気がするので通しましょう。

サンプルプロジェクトを作る

下記のコマンドを打ちます。Eclipseのworkspace内に作るのが良いでしょう。今回はplay-scala-quickstartを取ってみました。


$ activator new

Fetching the latest list of templates...

Browse the list of templates: http://typesafe.com/activator/templates
Choose from these featured templates or enter a template name:
1) minimal-java
2) minimal-scala
3) play-java
4) play-scala
(hit tab to see a list of all templates)
> play-slick-quickstart
Enter a name for your application (just press enter for 'play-slick-quickstart')

> slick
OK, application "slick" is being created using the "play-slick-quickstart" templ
ate.

サンプルプロジェクトをEclipseプロジェクトに変換する

下記コマンドを打ちます。


$ cd [プロジェクトのフォルダ]
$ activator eclipse

Activatorでplayコマンドを打つ場合は、だいたいplayをactivatorに置き換えてあげると良いみたいです。また、eclipseプロジェクトを作るのは以前はeclipsifyコマンドだったようですが、いつのバージョンからかeclipseになっていました。まあ、eclipsifyとか言いたいことは分かるけどeclipfy?eclipify?だっけ?とかコマンドが思い出せないのでeclipseで良いと思います。

Eclipseからプロジェクトをインポート

Package Explorerを右クリックしてImportを選びます。

Existing~をクリック。

さっきのプロジェクトフォルダを選び、Finishを押します。

バージョンを合わせる

importが完了してプロジェクトを開くと、いきなり多数のエラーが出て居ます。

IDEで指定されているScalaのバージョンが2.11ですがプロジェクトで指定されているscalaのターゲットが2.10になっているからのようです。どっちかに合わせましょう。今回は「新しいが正義」ということで、Scala2.11で動くようにbuild.sbtのバージョンを書き換えました。

play-slickのライブラリバージョンは以下の組み合わせだと良いみたいです。

Plugin version Play version Slick version Scala version
0.4.x 2.1.x 1.0.x 2.10.x
0.5.x 2.2.x 1.0.x 2.10.x
0.6.x 2.2.x 2.0.x 2.10.x
0.7.x 2.3.x 2.0.x 2.10.x
0.8.x 2.3.x 2.1.x 2.10.x/2.11.x
0.9.x (milestone) 2.4.x 2.1.x 2.10.x/2.11.x

table from play-slick

直したbuild.sbtはこちら。


name := """slick"""

version := "1.0-SNAPSHOT"

scalaVersion := "2.11.2"

libraryDependencies ++= Seq(
"org.webjars" %% "webjars-play" % "2.3.0-2",
"com.typesafe.play" %% "play-slick" % "0.8.0"
)

fork in Test := false

lazy val root = (project in file(".")).enablePlugins(PlayScala)

直したら以下コマンドを打って依存性解決&コンパイルしておきましょう。また、参照ライブラリ等も変わるのでもう一度eclipseし、プロジェクトをEclipseから開きなおします。


$ activator compile
$ activator eclipse

 コンパイルする

Eclipseからビルドすると普通にコンパイルできます。

 

もし、views.html下の名前解決に失敗する場合は、下記のRefresh ~というところにチェックを入れると直る…と思います。多分。色々やっている間に直ったので正直良くわかりません。

開発してみよう

じゃあ簡単に開発してみましょう。まずアプリケーションを起動しておきます。

$ activator run

ブラウザでhttp://localhost:9000/にアクセスすると下記のようになるのでApply this script now!します。このサンプルプロジェクトではH2をインメモリで使っているので、playを起動するたびこれが出てきます。

するとこうなります。猫DBですね。ネコを追加すると下に表示されます。

じゃあコイツが猫の年齢も記憶できるよう変更してみましょう。詳しいコードの変更箇所はこちらの記事をご覧ください。

Viewを書くときにちゃんとコード補完してくれます。えらい。

保存すると片っ端からEclipseがコンパイルしてくれます。コンパイルされたら勝手にデプロイされます。

ブラウザをリロードするともうできてる。すごい!偉い!