Scala + Playframeworkを試してみる
仕事で本当にちょっとしたアプリを作成するのにScalaを使いたくて、Scala + Play2 Frameworkを試してみた。 なので時間をかけたくないという前提です。最新のScala 2.12.8 + Play2 Framework 2.7.x を試した結果は途中までやって諦めました。でも結構時間かかったので最後にそのログを残しておく(>_<) 実際に作成したアプリでは最新バージョンは使用していないです。。
用意
こちらにアクセスし、Starting the projectのScalaのファイルを落として展開する。 https://www.playframework.com/documentation/2.6.20/HelloWorldTutorial
IntelliJのプロジェクト作成でsbt(Play2.xではない)を選択し、versionは2.6.20を選択して作成。
プロジェクト構成を、↓のリンク通りに作成する https://www.playframework.com/documentation/2.6.20/Anatomy この時、公式のStartingProjectのフォルダからコピーする形にすると良い。不要なものもいくつかあるため、最小構成なら消すと良い
build.sbt
name := "Play2Sample2" version := "0.1" scalaVersion := "2.12.8" lazy val root = (project in file(".")).enablePlugins(PlayScala) libraryDependencies ++= Seq( guice )
build.properties
sbt.version = 1.2.7
plugins.sbt
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.6.20")
プロジェクト構成
実行
Intellij なら sbt shellからrunコマンドを実行してhttp://localhost:9000にアクセス
補足
多分これが一番楽だと思います。素直に公式(推奨?)のsbt new playframework/play-scala-seed.g8
を使うべきかと
まだ理解していないが、とりあえずサンプルの中で必要なのクラスはModuleクラスだけかな。Filterクラスはapplication.confのplay.filters.enabledの記述から消してしまえばクラスも消して良いはず
プロジェクトを作ってみただけなので今度は試してみたい。
諦めたログ
Scala + Playframeworkの作成手順
こちらを参考にしつつ
プロジェクト作成
sbtはインストール済みなので、
mkdir newProject cd newProject sbt new playframework/play-scala-seed.g8
を実行する。
…ログを見るとScala2.10とかがDLされてる…?意図しているのは2.12.Xあたりなのでこれはよろしくない。
project/build.propertiesの作成
sbtのバージョンを指定してあげる(sbtが最適な(?)Scalaのバージョンを選択してくれる模様。調査と理解不足)。
mkdir project echo "sbt.version=1.2.7" > project/build.properties sbt new playframework/play-scala-seed.g8 : : : name [play-scala-seed]: new-project-name organization [com.example]: com.github.souki-paranoiast
これでOK
実行
sbtを起動
cd new-project-name sbt
初回ダウンロードの後にsbtが起動するので
run
そして、http://localhost:9000/ にアクセス。 動かない。
Unexpected exception IOException: Cannot run program "javac" (in directory "C:\Program....."): CreateProcess error=2, 指定されたファイルが見つかりません。
この原因は、Windows10環境のGit Bushでシンボリックリンクを使用していたからだと思う。起動する際にちゃんとした絶対パスで飛んだらこのエラーは無くなった。
IO error while decoding C:\Users... \ReverseRoutes.scala with UTF-8: C:\Users... \ReverseRoutes.scala (指定されたファイルが見つかりません。) Please try specifying another one using the -encoding option
別のエラーが出た。UTF-8で読み込めと言われているっぽい。 sbtの起動に関して諸々問題がある模様↓とかで他にも言及されている。
とりあえずの解決策で言うと、インストール先(ここではデフォルトのはず)に、以下のファイルがあり、
C:\Program Files (x86)\sbt\conf\sbtconfig.txt
末尾とかに以下の1行を追加してあげればOK。
-Dfile.encoding=UTF-8
…OKなんだけど、GitBush と コマンドプロンプトで実行結果が異なる。
コマンドプロンプトなら動くので、UTF-8になるのでこちらで進める。
sbt run
を実行。動かない。
疲れてきた。 ここまでログ。 多分もう少し粘ればできたんだろうけど。