ScalaでPlayなアプリをHerokuにデプロイした作業ログ

Scalaのインストール

体に流れる名古屋の血が、Scalaをすべしと騒ぐので。ウソです。

例によって作業ログ系。はじめはScalaインストールして、PlayでHello Worldしてみるか〜ぐらいだったのが、途中でHerokuがScala+Playに対応してると知ったのでデプロイまでいってみました。

バージョン管理スクリプトを見つけたので、こちらを拝借してインストール。わりと何事もなくインストールできます。

% nvm install 2.9.2
Trying to installing version of 2.9.2.
…
Installed directory is /path/to/.svm/scala-2.9.2
Do you want to change current runtime version to 2.9.2? y/N: y
currently version is 2.9.2

% scala
Welcome to Scala version 2.9.2 (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_33).
Type in expressions to have them evaluated.
Type :help for more information.

scala>

.zshrcには下記のパスを追記しています。

## svm
export SCALA_HOME=~/.svm/current/rt
export PATH=$SCALA_HOME/bin:$PATH

sbtもインストール

sbt is a build tool for Scala and Java projects that aims to do the basics well. It requires Java 1.6 or later. Home · harrah/xsbt Wiki

sbtは、Scalaプロジェクトの標準的なビルドツールだそうで。横着してbrewで入れてるので難なく一発で入ります。

% brew install sbt

sbtの中に必要なランタイム含まれてるみたいだし、ひょっとしてsvmでscalaインストールのくだりは余分だった?

Play Frameworkを入れてみる

Download — Playframeworkから、適当な安定版を落としてきて、~/lib/play-2.0.3に展開します。

.zshrcには下記を追記して、展開したパッケージの直下にあるplayコマンドにパスを通します

## play2 framework
export PATH=$PATH:$HOME/lib/play-2.0.3

Playアプリケーションを作成

早速アプリケーションを初期化してみます。

% play new HelloPlay2
       _            _
 _ __ | | __ _ _  _| |
| '_ \| |/ _' | || |_|
|  __/|_|\____|\__ (_)
|_|            |__/

play! 2.0.3, http://www.playframework.org

The new application will be created in /path/to/HelloPlay2

What is the application name?
> HelloPlay2

Which template do you want to use for this new application?

  1 - Create a simple Scala application
  2 - Create a simple Java application
  3 - Create an empty project

> 1

OK, application HelloPlay2 is created.

Have fun!

初期化されたので、これをrunするとdevelopment実行、startするとproduction実行となるそうです。

# development
% play run

# production
% play start

実行してみると分かりますが、developmentだとアレコレこうやったらページ追加できるよAPI docsはここだよ、というようなWelcomeページが表示されます。productionだとシンプルにYour new application is ready.とだけ表示されます。

Herokuにデプロイ

今回はあまりアプリケーションをいじらずに、ちゃっちゃとHerokuにデプロイしてみます。早速Procfileを作成します。

% echo 'web: play start' > Procfile

Gitを初期化します。

% git init 
% git add .
% git commit -m "initialize"

Herokuアプリを初期化します。

% heroku create hello-play
Creating hello-play… done, stack is cedar
http://hello-play.herokuapp.com/ | git@heroku.hello-play.git
Git remote heroku added

デプロイ(push)しちゃいます。

% git push heroku master
% heroku oepn

できました。これで成功していれば、heroku openでブラウザにデプロイしたアプリケーションの画面(何もいじっていなければYour new application is ready.)が表示されているはずです。

ちなみに、Play Framework関係なしなScalaプロジェクトのデプロイについては、Heroku公式のGetting Started with Scala on Heroku | Heroku Dev Centerで、紹介されています。まじめにやるならsbt使いこなせないと厳しそうだな〜。

Herokuラクチンでいいなあ

相変わらず何か作る気はないんですが、ちょっと触ってみてラクチンで良かったです。heroku使っておけば、nodeとscalaの簡単なアプリは試せますし、もちろんrubyもいけるので、何かの折には楽しく遊べそうです。

お暇な方は、nodeとscalaの学習環境として、軽く手習いしておくとおもしろいんじゃないでしょーか。

自分は簡単な読み書きレベル(たぶん今のRuby程度)のためにScalaをちょいちょい触ってみる予定。息抜きレパートリーの一環ということで。