今日の目標
Play Flameworkを触ってみる
使ったもの
- TypeSafe Activator 1.3.7
- Windows 8.1
参考
Play Frameworkとは
Play Framework(プレイ・フレームワーク)は、ScalaとJava言語で書かれたオープンソースのWebアプリケーションフレームワークである。Model View Controller (MVC) アーキテクチャを採用しており、設定より規約やホットリローディング、エラーのブラウザ上への表示といった方針により、開発者の生産性を上げることを目的としている。
初版は2007年。最近まであまり聞いたことがなかったので新しいものなのかな、と思ってましたが、意外と古かったことに驚き。
ではスタート
準備
まず、TypeSafe Activatorが必要だということなので、zipを落として任意の場所に展開しましょ
う(使ったもの参照)。
展開したActivatorがあるディレクトリを環境変数に設定します。
PATH=【Activatorを展開した場所(activator.bat等があるフォルダを指定する)】
テンプレートでアプリケーションを作成する
まずはコマンドプロンプトでテンプレートを使ってアプリケーションを作成します。
> activator new my-first-app play-java

次に、作ったフォルダ内に移ってActivatorのUIを起動してみます。UIからでなくてもアプリケーションの起動等はできるようですが、せっかくUIあるので使ってみようかと。
> cd my-first-app
> activator ui

Listeningが表示され、8888ポートで受け付けますよーと出てます。案内の通り、localhost:8888にアクセスします。

きたきた~!
灰色のスペースにRunと書かれているボタンっぽいのが見えると思います。これを押すと、アプリケーションが起動します。

そしてhttp://localhost:9000のボタンをポチリと押すと、アプリケーションがブラウザに表示される、と!

表示された!
Eclipseプロジェクトに変換する
Eclipseを主に使っているので、Eclipseプロジェクトに作成したアプリケーションを変換してみたいと思います。
まずは、Activatorの左メニューからCodeを選択します。すると、右側にBrowse your app’s codeというのが出てきてますね。その下に、ボタンが2つ並んでおり、Create Eclipse projectとCreate IntelliJ projectがあります。Eclipseを使う場合は、もちろんCreate Eclipse projectを選択します。

するとBuild tasksがたくさん走り、最後がSuccessfully created Eclipse~と出たら完了です。フォルダの中を見てみると、.project等おなじみのファイルが作られていますね。

Eclipseを開いて、ファイル->インポート->既存プロジェクトをワークスペースへを選択します。

少し修正してみる
本当に気持ち程度Eclipseで修正します。
okの中を変えただけです。

アクションは play.mvc.Result 型の値を返し、これはクライアントへ送信される HTTP レスポンスを表しています。上記の例では、ok は コンテントタイプ text/plain のレスポンスボディを含む、ステータス 200 OK のレスポンスを生成します。(Playframeworkガイド)
okの意味は200 okの意味なんですね。ほかにもFotFoundとかinternalServerErrorとか、Webアプリでたまに見かけるエラーのレスポンスが設定できるみたいです。
ちなみにファイルの内容が変わるとActivatorのコンパイルが走ります。(嫌な人はActivatorのBuildメニューにあるCompile on file changeをoffにしてください)

こんな感じでした。
エラーにつまずくと、何が起きているのかがわからないので不便。中で何を使っているのか、何してるのかくらいは知っておいたほうが良さそうだなあ、と思いました。(でもActivatorの中とか把握できそうにないから困る)
Playframeworkはガイドが充実してますね。日本語ガイドあるのは幸せ。
そして、いろいろ動かしているとメモリ4GBの私のPCさんだと結構辛いな…と思った本日でした。Eclipseが固まる固まる…。Playframeworkはメモリとの戦いだった。
本日のエラー
最初、テンプレートでアプリケーション新規作成する手順をUIでやっていたのですが、うまくいかなかったので晒しときます。
アプリの新規作成(activator new)をせずに、> activator uiを実行。
テンプレートからHello Play Framework(Java Only)を選択。

作成場所を選択して、完了ボタンをポチリ。しばらく待っていると…

Failed to load sbt configurationと出てます。
左メニューからBuildを選択してログを見てみると、Build.sbtでなぜかエラーが出てます。

この原因がわからないまま。とりあえずコマンドプロンプト上でアプリケーションを作成し、それをUIで管理するという方法に切り替えました。



