社内勉強会向けのネタです。数回の記事に区切って書きます。Scalaの開発環境の準備についてです。今回は開発環境の準備ということで、JDKとsbtのインストールについて記述します。

筆者は趣味でしかScalaを使用したことないのでこの記事はいつも以上にアレです

JDKについてはこちらのきしださんの記事が詳しいです。私はScala関西Summitでこの記事と同様のきしださんの講演を聞いてからAdoptOpenJDKを使うようにしています。

AdoptOpenJDK


4年のLTS版があるOpenJDKの一種です。詳しい説明は前述のきしださんの記事をご参照ください。

インストール

AdoptOpenJDKにアクセスし、左下のInstallationを選択します。

別ページに遷移するのでバージョンとJVMとOSを選択します。今回は現時点で最新のScala2.12.8を使うのでOpenJDK11を選択してください。

以下、上記ページにコマンドが表示されるので割愛します。パスを通して、正常にインストールされたことを確認します。

なお、JVMのバージョンとScalaのバージョンの互換性については下記に記載されています。

Version compatibility table

sbt


Scalaのビルドツールです。これでREPLとかもできます。下記からダウンロードしてください。

sbt DOWNLOAD

とりあえずsbtシェルを起動してみましょう。

なにもディレクトリがないところでsbtコマンド実行するとtargetディレクトリとかできるので一時ディレクトリを作成して、そこでsbtコマンドを実行することをお勧めします。

ビルド定義もプロジェクトディレクトリもない旨のメッセージが表示されますが、今回はそのままcでcontinueしてください。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
C:\Users\N.Yoshinori\tmp>sbt
[warn] Neither build.sbt nor a 'project' directory in the current directory: ...
c) continue
q) quit
? c
OpenJDK 64-Bit Server VM warning: Ignoring option MaxPermSize; support was removed in 8.0
OpenJDK 64-Bit Server VM warning: Ignoring option MaxPermSize; support was removed in 8.0
[warn] No sbt.version set in project/build.properties, base directory: C:\Users\N.Yoshinori\tmp
[info] Loading settings for project global-plugins from idea.sbt ...
[info] Loading global plugins from C:\Users\N.Yoshinori\.sbt\1.0\plugins
[info] Updating ProjectRef(uri("file:/C:/Users/N.Yoshinori/.sbt/1.0/plugins/"), "global-plugins")...
[info] Done updating.
[info] Set current project to tmp (in build file:/C:/Users/N.Yoshinori/tmp/)
[info] sbt server started at local:sbt-server-0b000747288a8c9b882e
sbt:tmp>

しばらくするとsbtシェルが起動します。

REPL

これ以降の記事では使いませんが、とりあえずREPLを使ってみます。sbtシェルが起動した状態でconsoleと入力して下さい。

1
2
3
4
5
6
7
8
sbt:tmp> console
[info] Updating ...
[info] Done updating.
[info] Starting scala interpreter...
Welcome to Scala 2.12.7 (OpenJDK 64-Bit Server VM, Java 11.0.1).
Type in expressions for evaluation. Or try :help.

scala>

これでREPLが立ち上がったのでHello worldと打ち込んでください。

1
2
scala> println("Hello world")
Hello world

REPLについてはここまでです。

つづく