Activatorを使わないPlay Framework 2チュートリアル

 PlayFramework2
2015.06.29

だいぶ枯れてきたPlay Framework 2。本家サイトにあるチュートリアルでは、基本的にはTypesafe Activatorを使っていますが、これを使ってPlay 2アプリのスタブを作るとプロジェクトルートに activator, activator-launch-1.3.5.jar みたいなファイルが作られて少し気持ち悪いですね。

 

というわけで今回はActivatorを使わずにPlay Framework 2を動かします。ブラウザで”Hello World”が表示されることがゴールです。

0. 環境などの前提

今回の記事は

を利用して書かれています。

 
(HomebrewがなくてもPlayは利用できますが、sbtのインストールやパスの管理などは面倒くさいので Homebrew の利用がオススメです。インストールされているHomebrewのバージョンは $ brew -v で確認できます)

1. sbtのインストール

sbt はScalaでタスクを記述できるビルドツールです。Typesafe activatorも内部ではsbtを利用しています。

$ brew install sbt

2. プロジェクトを作成する

Typesafe Activator はまるっと必要になりそうなファイル群を作ってくれましたが、今回はすべて手作業で作ります。 一つずつ進めていきます。

まずはプロジェクト用のフォルダを作りましょう。

$ mkdir my-first-app-without-activator
$ cd my-first-app-without-activator

次に、以下の構成になるようにディレクトリ・ファイルを作っていきます。

app/controllers/Application.scala
build.sbt
conf/application.conf
conf/routes
project/build.properties
project/plugins.sbt

2-1. まずは必要なディレクトリを作成

$ mkdir -p app/controllers
$ mkdir -p conf
$ mkdir -p project

2-2. project/plugins.sbt

resolvers += "Typesafe repository" at "https://repo.typesafe.com/typesafe/releases/"
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.4.1")

2.4.1 のところは利用するPlayのバージョンを書きます。
https://repo.typesafe.com/typesafe/releases/ から取得されるPlayのバージョンは、基本的にはその時点の最新版のはずです。
Play Framework 2のダウンロードページに記述されているバージョン番号を指定しておけば問題ないでしょう。

 

2-3. project/build.properties

sbt.version=0.13.8

0.13.8 はHomebrewでインストールしたsbtのバージョンを指定します。

 

2-4. build.sbt

name := "my-first-app-without-activator"

version := "1.0"

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

この例はアプリケーションをScalaで書く場合の例です。もしJavaで書きたい場合は、最終行末尾の PlayScala のところを PlayJava に変えましょう。

 

2-5. app/controllers/Application.scala

package controllers

import play.api.mvc._

object Application extends Controller {

	def index = Action {
		Ok("Hello World!")
	}

}

HTTP 200で”Hello World!”というテキストを返すコードです。

 

2-6. conf/routes

GET /  controllers.Application.index

HTTP GETリクエストを controllers.Applicationオブジェクトのindexアクションにルーティングする設定ファイルです。

 

2-6. conf/application.conf

 

こちらは中身は不要なのですが、ファイルがないと怒られてしまいますので空ファイルを作っておきましょう。

$ touch conf/application.conf

3. 動かしてみる

以上で準備は完了です。
activatorファイルのない気持ちのいいPlayプロジェクトを動かしてみましょう。

$ sbt run
Getting org.scala-sbt sbt 0.13.8 ...
(以下略)

(初回は)ここから依存するjarファイルのダウンロードが始まるので、けっこうな時間がかかります。
「こんなパッケージ使ってるのね〜」という気持ちで眺めると楽しいかもしれません。

 
(筆者の環境では20分強もかかってしましました。)

[info] p.a.l.c.ActorSystemProvider - Starting application default Akka system: application
[info] p.c.s.NettyServer - Listening for HTTP on /0:0:0:0:0:0:0:0:9000

(Server started, use Ctrl+D to stop and go back to the console...)

のようなメッセージが表示されたら準備完了です。

 

http://localhost:9000 にアクセスしてみましょう。

 

無事プロジェクトが動いていれば、ブラウザに”Hello World!”と表示されているはずです。

 

また、projectディレクトリ以下には見知らぬディレクトリ・ファイルが増えていますが、それらは sbt run コマンドを実行した結果なので特に気にする必要はありません。