Scalaユーザの間ではよく知られた存在であるScastieはOSSで、自分でソースをクローンしてくると手元で動かすことができる。自宅サーバで動かすことができないか試してみたところ割とあっさり動いたので手順のメモ。
Scastie
今更説明するまでもないが、Scastieはオンラインで動作するScalaのIDEみたいなやつで、だいたいなんでも動かすことができる。「IDEみたいなやつ」と書いたのは、ファイルを保存したりプロジェクトを組むといった上等な機能があるわけではなく、あくまでブラウザで手軽にScalaのコードを試すくらいに留まっているためである。とはいえこのくらいでもネットで見たコードサンプルをすぐ動かせるから非常に便利。
手元で動かす
手元で動かすのは案外簡単。より詳しい手順はCONTRIBUTING.md
に記載されているのでこれを参照すること。
yarn
が使える環境にしておくsbt
を起動するstartAll
する
これだけで各種のライブラリ類が落ちてきて、すぐ動くようになる。デフォルトの設定では、http://localhost:8080/
にWebサーバが立つ。
もちろん自宅サーバで動作させているので、公式のインスタンスよりも数段速い。動作のテンポはかなり快適だ。ただし、 自宅サーバの中で動作するので当然だが、危ないコードを実行させると怖い。
と思っていたら、Scastieは実際にプロジェクトが走るsbtサーバと、そのフロントエンドである箇所を分離した設計になっていて、sbtサーバだけdocker環境内に隔離して動かすこともできるようだ(デフォルトでは、全て筒抜けになっている)。
Docker環境下で動かす
筒抜けだとヤバいコードを動かしたときに大変なことになるので、またもやCONTRIBUTING.md
を参考にDocker環境で動作させてみる。まずはsbtサーバだけ動かす。
$ docker run \ --network=host \ -e RUNNER_PORT=5150 \ -e RUNNER_HOSTNAME=127.0.0.1 \ -e RUNNER_RECONNECT=false \ -e RUNNER_PRODUCTION=true \ scalacenter/scastie-sbt-runner:`git rev-parse --verify HEAD`
別窓でwebサーバ+フロントエンドを実行する。
$ sbt > ~server/reStart;client/fastOptJS/startWebpackDevServer
するとsbtサーバだけDocker環境に隔離された状態で動作させることができる。
あとは良い感じにDNSなどを整備すればオレオレScala実行環境を作ることができそう。
このあたりのconfをいじったら良い感じにホスト名を変更できそう。
社内便利サーバみたいな扱いで立てると便利かもしれない。