WindowsでWSL2 + IntelliJ IDEA の Scala 開発環境を作ろうとしたらハマった


はじめに

普段は Mac で開発をしていて、Windows は遊びにしか使ってなかったんですが、せっかく WSL2 があるならそれも使ってみようと思って、 Scala の開発環境でも作ろうかなと思ったら若干ハマったので、僕がやったことを書き残そうと思います。

想定読者

  • WSL2 の環境はできている人
  • IntelliJ IDEA を一発起動して、別でターミナルを起動したくない人
  • IntelliJ IDEA を普段 Windows 以外の環境で使っていて、Windowsでも環境作っとこうかな~って人
  • 経験則でいいから、どうやったら動くのか知りたい人

書かないこと

  • WSL2 とはなんぞや
  • Scala とはなんぞや
  • sbt/JDKとはなんぞや
  • IntelliJ IDEA とはなんぞや
  • その他専門的なこと
  • なぜ動かなかったのか、なぜ動いたのかの理論的なこと

予防線

あんまりそれぞれの用語の定義については気にしていないので、文章としておかしいところは多々出てくると思います。

何をやりたくて、何にハマったのか

普段は、Mac を使っていて、開きたいプロジェクトのディレクトリに移動して、 idea . を打って IntteliJ IDEA を起動してからは、そのまま IntelliJ IDEA の1画面で諸々を完結させていました。

なので、最初にやりたかったのは以下のようなことです

  • idea で IntelliJ IDEA を起動したい
  • IntelliJ IDEA くんには、WSL2 の中で apt-getcurl で取得しておいた JDK や sbt を使ってほしい
  • IntelliJ IDEA くんの中で開くターミナルは、WSL2(僕の場合 ubuntu)であってほしい

さすがに IntelliJ IDEA 自体は Windows に入れることは仕方がないとして、「まぁ実行ファイルに WSL からパスを通して、あとはよしなに JDK やら何やら選んでくれるやろ~」と思ってました。

WSL で JDK と sbt を準備して、「さ~て、あとはWindows側からInteliJ IDEAを起動して、 wsl のディレクトリに入ってプロジェクトを作ればうまく動くやろ!」と思ってやってみたところ、

cannot run program \\wsl$\Ubuntu\...

だのなんだのといって、 なんか全然うまく動かなかった わけです。

何をしたら動いたのか

僕が色々試して、最終的にたどり着いた答えは Windows に環境を構築すること です。

当初のイメージとしてやりたかったのは、

[WSL2] JDK, sbt, shell... ← [Windows] IntelliJ IDEA

だったわけですが、僕が実際に手軽に動かせたのは

[WSL2]shell → [Windows] JDK, sbt, IntelliJ IDEA

だったわけです。伝わらないですよね、これから説明します。

何が困ったか

なんかわかりませんが、とりあえず Windows にインストールした IntelliJ IDEA は WSL2 でインストールしたJDKを検出はするものの、読み込めませんでした。

IntelliJ IDEA で プロジェクト作成をするときに、検出された JDK を選択できると思いますが、そこに (WSL) と書いてあるやつは軒並みアクセスできなかったっぽく、詰みました。

詰んだかどうかの判断については、 build.sbt のシンタックスハイライトが崩壊していたらまぁ詰んでるでしょう。

とりあえず動くまでにやったこと

WSL2 に入れていた Java 関連のパッケージを全削除

sudo apt-get remove "regexp"

をして、具体的には正規表現の部分を openjdk-* 的な感じで全部消しておきました。
そもそもインストールした覚えがない人はしなくて大丈夫です。

JDKをインストールしましょう

debug とついてないリリースをダウンロードして、.zip を解凍したフォルダの bin/ にパスを通すと良いです。
Windows の環境変数については適当にググってやってみてください。
その後、コマンドプロンプトで set を打ったときに Path=... の中に指定したものがあれば多分うまくいっています。
もっというと、java -version でエラーが出なければとりあえず多分うまくいってます。