【意訳】Heroku上でPlayFramework + Scalaアプリケーションを実行する
誤訳・誤植等ありましたら、@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へ移行してくれました。クール!
何か質問あれば、教えてください。
Latest post:
- OpenWhiskのScala sbtプロジェクトのgiter8テンプレートを作った
- OpenWhisk+Scalaで作るServerless Architectureとっかかり
- BluemixにPlayframeworkアプリケーションをデプロイする
- sbt、Giter8を統合するってよ
- Scala 2.12.0でSAM型