Play+ScalaでHello World

ChainZ(クリエイター)
いろいろやってます。

Playフレームワーク

PlayフレームワークはScala/Javaベースのウェブフレームワークである。他のWeb Frameworkと同じように、MVCでWebアプリを素早く構築でる。

Scala

Scalaというと、twitterが使っていて、パフォーマンスが高いというイメージが浮かぶぐらいだったけど、本格的にScalaについて興味が湧いてきたのはこのスライドを見たのがきっかけだった:http://www.slideshare.net/brikis98/nodejs-vs-play-framework-with-japanese-subtitles

Playをインストール

Playは公式サイトからダウンロードできる: https://www.playframework.com/download

ダウンロードしたファイルを解凍して、中に下記のファイルが入っている:

  1. activator
  2. activator.bat
  3. activator-launch-x.x.x(xはバージョン番号です)

このフォルダに移動し、コマンドで./activatorをすると、必要なライブラリがダウンロードしはじめる。

1
Getting com.typesafe.activator activator-launcher x.x.x ...

このフォルダを$PATHに追加すると便利

新規プロジェクト

./activator newをすると

1
2
3
4
5
6
7
8
9
10
11
12
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-akka-java-seed
  2) minimal-akka-scala-seed
  3) minimal-java
  4) minimal-scala
  5) play-java
  6) play-scala
(hit tab to see a list of all templates)
> 

テンプレートを選択してくださいって聞いてくる。Scalaを使うので、play-scalaを選択する。

次はアプリ名の入力。変な符号じゃなければなんでもいいんだが、この記事ではcocos-chanにする。

1
Enter a name for your application (just press enter for 'play-scala') cocos-chan

アプリ作成されたら、プロジェクトのフォルダに移動し、

1
./activator run

すると、パッケージをダウンロード始める。しばらく待ったら。

1
2
3
4
5
--- (Running the application, auto-reloading is enabled) ---

[info] play - 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...)

が表示される。おめでとう、Playフレームワークもうすでに動いている。ブラウザを開いてhttp://localhost:9000にアクセスするとPlayフレームワークのデフォルトページが表示される:

Playはデフォルトにポート9000を使うが、./activator "run 7777"みたいに起動する際にポートを変えることができる。

初回アクセスする時に、Playがソースをコンパイルするので、時間がかかる。ログを見ればわかる:

1
2
3
4
5
6
[info] Compiling 1 Scala source to /path/to/cocos-chan/target/scala-2.11/classes...
~~ ```

## Hello World

デフォルトのページが派手すぎるので、単調な`Hello World`してみる。`./controllers/Application.scala`を開いて

scala object Application extends Controller {

def index = Action {

Ok(views.html.index("Your new application is ready."))

}

}

1
2

scala object Application extends Controller {

def index = Action {

Ok("<h1>Hello World!</h1>").as("text/html");

}

} “`

に書き換えて、activator runすると:

しょぼいHello World!ができた!

感想

最近LinkedInのエンジニアの著書を読んでて、Scalaに興味を湧いてきたので、この記事を書いた。Hello Worldって実質的には確か何も意味ないけど、とりあえず動くと、これからやるぞ!というポジティブな気持ちになるので、大切だと思う

ちなみに、自分が何を勉強する際に、本を読むだけではなく、実際何かを作ることを通して勉強している。この記事で作ったcocos-chanというプロジェクトはまさにScalaを勉強するために作ったのだ。cocos-chan完成までの流れ、そしてScalaのことについて、こまめにブログで報告する予定。