2/20現在の状況で、WEBアプリのお勉強がてらタイトルのことをやってみたときのメモ
前提
以下の環境
- Mac Book Pro 2017
- Homebrew導入済
- git 導入済
- Herokuアカウント取得済
- IntelliJ インストール済
バージョン管理もしたいので 下記のブログにあるようにsvmを導入
yuroyoro.hatenablog.com
基本的にはgitクローンしとけばいい
git clone https://github.com/yuroyoro/svm.git
Scalaにupdate入ったなーというタイミングで更新(されてなかったらfork pull requestしような)して、再配置。配置箇所は一応使いやすいところ
/usr/local/bin/svm
とかにしておくといい。コピーした場合は chmod 755
しとくこと
Scalaのバージョン確認とインストール
公式サイトで最新バージョンの確認
https://www.scala-lang.org
svm install 2.12.8
これだけ。終わったら動作確認はこんな感じ
$ scala
Welcome to Scala 2.12.8 (Java HotSpot(TM) 64-Bit Server VM, Java 10.0.1).
Type in expressions for evaluation. Or try :help.
scala> :q
起動時にバージョンが表示されているので狙ったバージョンで起動できていることを確認。
REPLから抜けるには :q で。困ったら :help
sbtのインストール
brew install sbt@1
※ 参考リンク
sbt - Download
終わったら sbt about
で、バージョン確認(上記URLの最新になっているはず)
Play Frameworkを試してみる
こういうときは一度公式をちゃんと見よう!見ないでQiitaだけ見てたら古い記事の罠でEOLのものを使ってたりするからね!(しっかりハマりました)
Getting Started with Play Framework
任意のディレクトリで
sbt new playframework/play-scala-seed.g8
途中、下記を聞かれるが、気にしないでEnterで平気
This template generates a Play Scala project
name [play-scala-seed]:
organization [com.example]:
上で指定したディレクトリが作成されているので、移動してからsbt run
しばらく待ったああとに、起動したら
http://localhost:9000
にアクセスすれば、WelcomePageが表示される
作成したプロジェクトかをインポートするだけ。簡単!
IntellJでエラーページからソースコードへダイレクトに飛べるらしい。なので以下の設定をしておく
conf/application.confに以下を追加
play.editor="http://localhost:63342/api/file/?file=%s&line=%s"
build.sbt に以下を追加
fork := true // required for "sbt run" to pick up javaOptions
javaOptions += "-Dplay.editor=http://localhost:63342/api/file/?file=%s&line=%s"
反映されるか試してみる
app/views/index.scala.html
@()
@main("Welcome to Play") {
<h1>Welcome to Play!</h1>
<h2>Edit Sample</h2> <- 追加
}
終わったらhttp://localhost:9000 にアクセスしてみると変更が反映される
※ RELOADに数秒かかるので、ちょっとだけ待ったほうがいい
herokuにデプロイしてみる
まぁ、いつものやりかたで。(heroku create とかしてくやつ)
Not a supported Play version: 2.7.0. This plugin is compatible with: [PLAY_2_2_X, PLAY_2_3_X, PLAY_2_4_X, PLAY_2_5_X, PLAY_2_6_X].
Gradleでこのエラーが。まじで。最新サポートされてないじゃん
ハマったこと
PlayFrameworksのバージョン
バージョンが古いものとか新しいもので使うものが違ってた点。特に最新はsbtしか対応していないという点
HerokuがサポートしているPlayFrameworkのバージョン
2.6までだった。
最新が2,7でこれ使ってローカルとかやってたから、めっちゃハマった。最新使えないのはちょっと考えものか、もしくはある程度枯れた技術で安定稼働できるかという利点があるんだろうけど、とりあえず最新でやってみるか精神だとハマる
次のトライ
Heroku上で動かせるようにするを目標に、チュートリアルしてみる