##きっかけ
現在、自社製品の開発からは離れてフロントエンジニアとして活動しています。
開発をしていた頃は主にサーバーサイドのPHPエンジニアでした。
PHPは学習コストがあまりかからないので非常に便利でした。
開発の現場を離れた今、PHPをゴリゴリ調べる事もなくなり、たまには違う言語でもやってみようと思い、流行り?の関数型言語+お堅い言語をやってみようと思いScala+PlayFrameworkにチャレンジする事にしました。
##sbt
Scalaでいろいろ調べてると必ず出てくる単語。おそらく必須ではないだろうけど、やたら出てくるので調査。
https://www.scala-sbt.org/
https://ja.wikipedia.org/wiki/Sbt
The interactive build toolだそうです。ようするにビルドツールですね。
ひとまずsbtが使える環境を準備します。今回はこちらのdockerイメージを利用しました。
https://hub.docker.com/r/hseeberger/scala-sbt/
シンプルに以下のコマンドを実行するとコケます。。。
$ docker run -it --rm hseeberger/scala-sbt
docker: Error response from daemon: manifest for hseeberger/scala-sbt:latest not found: manifest unknown: manifest unknown.
latestバージョン無いよということで、バージョン指定で起動してみます。
$ docker run -it --rm hseeberger/scala-sbt:8u242_1.3.8_2.12.10
これで無事に起動できます。sbtコマンドも正常に動作しているようです。
root@79794023720c:~# sbt -h
Usage: sbt [options]
-h | --help print this message
-v | --verbose this runner is chattier
〜略〜
##PlayFramework
とりあえず動かしてみます。
https://www.playframework.com/getting-started
Try the Hello World Tutorialからzipをダウンロードし、該当のディレクトリへ移動します。
移動後、以下のコマンドでコンテナを起動します。
$ docker run -it --rm -v $PWD:/app -p 9000:9000 hseeberger/scala-sbt:8u242_1.3.8_2.12.10 bash
コンテナの中に入ったあと以下のコマンドを実行。なにやらビルドが始まります。
# cd /app
# sbt run
ビルド完了後、ブラウザでアクセスします。
http://localhost:9000
要調査
一度コンテナを落として再度コンテナ起動&コマンド実行をしたら何故かエラーで落ちる。。。
# cd /app
# sbt run
[error] sbt.compiler.EvalException: Type error in expression
[error] Use 'last' for the full log.