みんなScala書いてる?ScalaはJVM言語なのでコンパイルが当然必要なのと、sbtを起動するのがちょっと面倒で試行錯誤が大変なんだよね。
Scastieっていう便利なオンラインREPLもあるんだけど、もちろんちょっと時間がかかるし、IDEじゃないから補完とか効かないし、なにより業務で使うようなセンシティブなコードを入力できないんだよね。一応Scastieはオープンソースだからローカルで走らせることもできるんだけど、面倒だよね。
そんな中、たまたまMetalsのことを調べていたら id:tanishiking24 の Scala の開発環境構築 2021 - たにしきんぐダム を読んだんだよね。
読んだ当初はへ〜ッて感じで流してたんだけど、 VSCode + Metals を使うと Worksheetっていう機能が使えるっぽい。ちょっと試してみたけどめちゃくちゃ便利なので、Scala書いてる人全員に教えてあげたい。隠れた名機能だよ。
Worksheet
Worksheetは以下のことができる。
- 普通にScalaのコードを書くときのように補完などが動作する
- Worksheet file に書いた記述は全部上から順に評価され、実行結果がオーバレイされる
- PythonのJupyter NotebookとかGoogle Colaboratoryを想像してもらえると良いと思う!!
- Worksheet fileのコード本体と実行結果とを合わせてコピーできる
- ブログに貼り付けるときにめちゃくちゃ便利!!!!!!
順に説明してあげるから今すぐ使ってほしい。Worksheetを使うには、 Command + Shift + P
でcommand palletteを表示して Metals: New Scala File...
を選び・・・
Worksheet
を選んで、ファイル名を指定してやればいい。
Scalaのコードを書くときのように補完などが動作する
Worksheetファイルを作成すると、早速 import
とかができる状態になるので、適当なパッケージを使ってコードを書ける状態になる。もちろん補完も動作するし、動かないコードには赤線が付く。
Worksheet file に書いた記述は全部上から順に評価され、実行結果がオーバレイされる
めっちゃ便利ポイント1。普通のREPLだと毎度実行しないと結果が反映されないし、同時に1つの式しか評価できないのだけれど、Worksheetは保存するたびに全内容が実行され、式の右側にその実行結果がREPLのように表示される。
実際の画面を見てもらうと想像が付きやすいだろう:
これがとにかくありがたく、保存→実行の手間が省かれて、保存だけで勝手に全部実行されるので最高。緑色の箇所にホバーすると、勝手にPretty-printしてくれたりもする。
Worksheet fileのコード本体と実行結果とを合わせてコピーできる
便利ポイント2。こういう書き捨てのコードを書くときって、最終的にブログに貼り付けたり、他人に説明したり、Stack Overflowに投げたりするときだと思うんだけど、この機能を使うとコードと実行結果とを一緒にコピーすることができる。
実行方法は、エディタ上部の Copy Worksheet output
ボタンを使うか、Command paletteから同名の機能を呼び出せば良い。
これを適当な場所で貼り付けると・・・
この時点でめちゃくちゃ便利なんだけど、最近ちょっと話題の Polacode - Visual Studio Marketplace ってやつを使うと、これを良い感じの画像にできて便利だ(テキストデータは消えちゃうけど)。
資料作成のために綺麗なコードの画像が欲しいときはこれで十分だろう(なんかPolacodeの調子が悪くてガバってるけど、本当はもっと良い感じになるはずだ)。
みんな使ってくれ!!!
これからブログ記事でScalaのコードスニペットを貼り付けたいときは絶対にこれを使うと思う。みんなも使ってみてくれよな!!!