今年の目標の一つに、
Scalaの習得
がありまして。年末年始に本を一冊読んで雰囲気は分かったので、環境を作ろうと思い立ちました。
Scala
がJVM
上で動くのは知っていましたが、JDK
をインストールしたくないなぁという邪な気持ちになったので、Docker
等駆使して開発環境作れないか試しました。
結果的にIntelliJ IDEA
使ったほうが楽、という結論に至りましたが、そこまでで試したことを残しておきます。
環境
Visual Studio Code
でScala
開発できないかなぁ、というのが当初想定です。開発時にIntelliSense
は動かしたいところです。
また、ローカルにsbt
等のインストールは避ける、という方針も立ててみました。
環境 | バージョン等 |
---|---|
OS | Windows 10 64bit 1809 |
Visual Studio Code | 1.30.2 |
Docker | 2.0.0.2 |
Docker(VSCode拡張機能) | 0.5.2 |
PowerShell | 6.1.2 |
なお、Docker
はDocker for Windows
を使用しており、Hyper-V
上で動作しています。既にインストールされている前提です。
当記事のコマンドはVSCode
のターミナルでPowerShell
を使って入力しています。
筆者能力
Scala
やったことないScala
の本を一冊読んで、試していきたいJava
は仕事で使ったPlay framework
使っていて、若干sbt
を見たことはあるDocker
かじり始め
今回やろうとしていることに対する知識が欠けています。なので、試行錯誤しながらやりました。
Dockerイメージの取得
公開されている、こちらのイメージを使用しました。書いてある通り
docker pull hseeberger/scala-sbt
でローカルに落とします。同時にopenjdk
のイメージも落ちてきます。
Dockerの起動
Visual Studio Code
を使っています。
単にイメージを起動するだけならVSCodeでの操作でよいのですが、WindowsローカルフォルダとDockerゲストのフォルダを同期させる場合は、コマンドで起動します。
-v
オプションで、フォルダを紐づけています。*1
docker run -it --rm -v C:\dev\scala\dock:/root hseeberger/scala-sbt
この状態で、Linux
のコマンドは使えます。また、sbt
の起動も行えます。
Scalaソースをビルドする
前述の通り、フォルダ同期しているため、Windowsの環境(Docker起動時に指定したパス)にScala
のソースを作ればよいです。
フォルダは、[src] - [main] - [scala]と掘ります。
main.scala
に、以下のソースを書きます。
object Hello { def main(args: Array[String]): Unit = { println("Hello World!") } }
そして、Docker
のコンソールで
sbt run
と入力します。
初回は環境準備等でものすごく時間がかかるので、待ちましょう。すると、
ビルドが終わり、実行されてHello World!
と表示されました。問題なく実行できています。
最終的に、VSCode
上ではこんな感じで開発できます。
達成できなかった点
これで、ローカルにJDK
もsbt
も無い状態で開発は可能になりました。
しかし、IntelliSenseが効かず、ヘルプ等も見れません。初心者にはしんどい環境です。
これを何とかする方法を模索したのですが、そもそもDocker
上で動いているものに対してJAVA_HOME
等へのパスを解釈する手段が無い以上、無理だと判断しました。
諦めてローカルにいろいろ入れる
インストール物
環境 | バージョン |
---|---|
OpenJDK | 11.0.2 |
IntelliJ IDEA | 2018.3.3(Community Edition)*2 |
一応sbt
も入れましたが、使いません。今回は省略します。
手順(公式)
ここ見るだけでいいです。要するに、
とすれば動くよ、とのことです。
recommended for beginners
とのこと。
OpenJDK
せっかくなので、OpenJDK
で試します。
その時点の最新をダウンロードし、わかりやすいフォルダに格納します。C:\dev\openjdk\jdk-11.0.2
に置きました。
環境変数
まず、JAVA_HOME
を
C:\dev\openjdk\jdk-11.0.2
と、先ほど中身を置いた場所にします。次に、Path
環境変数に
C:\dev\openjdk\jdk-11.0.2\bin
のように、上記パスの下のbin
を追加します。
IntelliJ IDEAインストールから、Scala動作まで
これは上記リンクからたどるほうが正確です。
このような記事も参考にさせていただきました。私が書いても内容なぞるだけになります。大変助かりました。ありがとうございます。
結果的に動きました。
その他:試したいこと
この記事書いている際に分かったのですが、ENSIME
というものを入れると、VSCode
上でも開発できるそうです。
そのうち試します。公式は以下。
その他Scala情報
こういうの本当に助かります。公開されているの、懐が深いなと思います。
おわりに
Scala
始めるなら、とにかくIntelliJ IDEA
入れましょう、ということです。
Java
界隈は環境設定のハードルが高い印象が強いですが、楽に環境作れました。
もっとも、Docker
もデバッグ環境を固定する、という意味では役に立ちそうです。使い方次第だと思いました。
試行錯誤の中で学ぶことも多いですし、Docker
周りは忘れやすいので、備忘を兼ねて記事にしました。