普段ScalaはIntelliJを使って読んだり書いたりしています。 ですがIntelliJはモリモリとメモリを食べるので、他のエディタとの併用が貧弱な私のマシンでは非常に厳しいという問題がありました。 コードを読みたいだけの時にIntelliJを開くのをためらうほどです。
そこでずっと軽量なVSCodeでScalaのコードをいい感じに見れるものないかなと探していました。 以前はensime を使っていたのですが、更新が止まりそれと同時に使わなくなりました。
当時それ以外の選択肢が見つかっていなかったので諦めていましたが、Metalsというプロジェクトを見つけました。
現状自分がVSCodeを使ってScalaで開発するなら(実際には現時点まだまだRead向け?)、これ一択かなぁと思えるほど良かったので紹介します。
詳しい内容は公式のDocumentを参照してください。
インストール方法は他のVSCodeの拡張を入れるのと同様、検索画面に Metals
と入力するか、Scala (Metals) - Visual Studio Marketplace からダウンロードします。
インストール直後はMetalsの依存パッケージなどがダウンロードされるので回線状況によっては10分ほど放置する時間が出来そうです、待ちましょう。
インストール後 build.sbt
のあるディレクリを開くとプロジェクトのimportうながすダイアログが表示されるのでimportしましょう。
ダイアログを拒否してしまった場合はコマンドパレットを開いて Metails: Import build
します。
初回のimportでMetalsが依存しているBloopのダウンロードなども行われるため若干時間がかかりますが、これも待ちましょう。
ここまで済ませる快適なScalaリーディング環境が手に入ります。
例えばマウスオーバーでJavadocの内容が確認できたり、Macだとコマンドキーを押してマウスオーバーでピーク、クリックで定義ファイルへジャンプできたりといった、機能はもちろん
コード補完もバッチリ行なってくれます。
割と使えそうな感じではありますが、Run/Debug
出来るよと書いてあるけどAzure Functionsのリモートデバッグに今の所成功していません…
この辺りは要調査タスクとして残しておきます。
また例えばIntelliJだと
val boolValue = true boolValue match { case true => ??? case false => ??? }
みたいに書くと、これは if
で書き直すといいんじゃない?みたいにSuggestしてくれますが、もちろんそんなものはないし、Optimize importみたいなものもありません。
ガッツリVSCodeで開発するぞ、というユースケースには若干向かないんじゃないかなと思っています。
パッとどんなロジックだったかなとか読んで確認する、という場合には向くんじゃないでしょうか。