誤訳・誤植等ありましたら、@modal_soulまでリプライいただけるとありがたいです。


ScalaでPlay Frameworkアプリを構築するのが最近流行っているようです。理由としては、これまでのJVMベースのWebアプリよりも簡単に構築、デプロイできることです。ScalaでPlayアプリの構築とHerokuへのデプロイをやってみましょう。


Step1) Play Frameworkをインストールします(バージョン1.2.3以上をインストールしてください)。


Step2) Play Scalaモジュールをインストールします。

play install scala

Step3) ScalaサポートしたPlayアプリを作成します。

play new playwithscala --with scala

Step4) アプリケーションをスタートします。

cd playwithscala
play run

Step5) ブラウザでアプリケーションを開きます。

http://localhost:9000

とても簡単ですね。Heroku上にデプロイする前に、カスタムmodel, view, controllerを追加してもう少し味付けしてみましょう。


Step1) app/models/Widget.scalaを新規作成して、以下を記述します。

package models
 
case class Widget(id: Int, name: String)

Step2) app/views/Widget/list.scala.htmlファイルを新規作成して、以下を記述します。

(widgets: Vector[models.Widget])
 
<!DOCTYPE html>
<html>
    <body>
        @widgets.map { widget => 
            Widget @widget.id = @widget.name</br>
        }
    </body>
</html>

Step3) app/controllers/WidgetController.scalaを新規作成して、以下を記述します。

package controllers
 
import play._
import play.mvc._
 
object WidgetController extends Controller {
 
    import views.Widget._
    import models.Widget
 
    def list = {
        val widget1 = Widget(1, "The first Widget")
        val widget2 = Widget(2, "A really special Widget")
        val widget3 = Widget(3, "Just another Widget")
        html.list(Vector(widget1, widget2, widget3))
    }
 
}

Step4) 以下のURLを表示して、動きを確認しましょう。

http://localhost:9000/WidgetController/list

動きましたね。それにサーバーのリロードも不要でした。URLを少しきれいにしましょう。conf/routeファイルを修正して、”Application.index”を”WidgetController.list”へ変更します。

GET     /                                       WidgetController.list

簡単にできましたが、ついでに友達にも見せたいですね。Herokuへデプロイしましょう。


Step1) Linux, MacもしくはWindowsに、Herokuコマンドクライアントをインストールします。

Step2) コマンドラインからHerokuへログインします。

heroku auth:login

Step3) Herokuは、アプリケーションのデプロイにgitを使うので、.gitignoreファイルを作成して、以下を記述します。

/modules
/tmp

Step4) gitリポジトリを作成して、ファイルを追加し、コミットします。

git init
git add .
git commit -m init

Step5) Herokuにアプリケーションを新規作成します。

heroku create -s cedar

これで、Heroku上に新しいアプリケーションを規定し、アプリケーションへのランダムな名前/のURLを割り当てます。

Step6) アプリケーションをデプロイします。

git push heroku master

アプリケーションがアセンブルされ、Heroku上にデプロイされます。

Step7) ブラウザでアプリケーションを開きます。

heroku open

ジャジャーン!これでPlay + Scala アプリがクラウド上で実行されました。

JavaOneで、これをBill Venners(ScalaTestの作者)に見せたら、scalatest.orgのWebサイト(Play + Scalaのアプリ)をHerokuへ移行してくれました。クール!

何か質問あれば、教えてください。