sbtをインストールする
現実のScalaアプリケーションでは、Scalaプログラムを手動でコンパイル1することは非常に稀で、標準的なビルドツールであるsbtというツールを用いることになります。ここでは、sbtのインストールについて説明します。
Mac OSの場合
Mac OSの場合、Homebrewを用いて、
$ brew install sbt
でインストールするのが楽です。
Windowsの場合
chocolateyを用いるのが楽です。 chocolateyはWindows用のパッケージ マネージャで活発に開発が行われてます。chocolatey のパッケージにはsbtのものもあるので、
> choco install sbt
とすればWindowsにsbtがインストールされます。
Windows/Mac OSの場合で、シェル環境でsbtと入力するとバイナリのダウンロードが始まればインストールの成功です。sbtがないと言われる場合、環境変数へsbtへのPATHが通っていないだけですので追加しましょう。Windowsでの環境変数編集ツールとしては、 Rapid Environment Editorが非常に便利です。
REPLとsbt
これからしばらく、REPL(Read Eval Print Loop)機能と呼ばれる対話的な機能を用いてScalaプログラムを試していきますが、それは常にsbt console
コマンドを経由して行います。
sbt consoleを起動するには、WindowsでもMacでも
$ sbt console
と入力すればOKです。成功すれば、
[info] Loading global plugins from /Users/.../.sbt/1.0/plugins
[info] Set current project to sandbox (in build file:/Users/.../sandbox/)
[info] Updating {file:/Users/.../sandbox/}sandbox...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Starting scala interpreter...
[info]
Welcome to Scala version 2.12.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_45).
Type in expressions to have them evaluated.
Type :help for more information.
scala>
のように表示されます。sbt consoleを終了したい場合は、
scala> :quit
と入力します。なお、sbt consoleを立ち上げる箇所には仮のディレクトリを掘っておくことをお勧めします。sbtはカレントディレクトリの下にtargetディレクトリを生成してディレクトリ空間を汚してしまうからです。
ちなみに、このとき起動されるScalaのREPLのバージョンは現在使っているsbtのデフォルトのバージョンになってしまうので、こちらが指定したバージョンのScalaでREPLを起動したい場合は、同じディレクトリに build.sbtというファイルを作成し、
scalaVersion := "2.12.4"
としてやると良いです。この*.sbtがsbtのビルド定義ファイルになるのですが、今はREPLに慣れてもらう段階なので、この.sbtファイルの細かい書き方についての説明は省略します。
sbtのバージョンについて
この“sbtのバージョンについて”は、最新版を正常にインストールできた場合は、読み飛ばしていただいて構いません。
sbtはsbt --version
もしくはsbt --launcher-version
とするとversionが表示されます2。このテキストでは基本的にsbt 1.x3がインストールされている前提で説明していきます。
1.x系であれば基本的には問題ないはずですが、無用なトラブルを避けるため、もし過去に少し古いバージョンのsbtをインストールしたことがある場合は、できるだけ最新版を入れておいたほうがいいでしょう。また、もし0.13系以前のversion(0.13.16など)が入っている場合は、色々と動作が異なり不都合が生じるので、その場合は必ず1.x系の最新版を入れるようにしてください。
1. ここで言う"手動で"とは、scalac
コマンドを直接呼び出すという意味です ↩
2. ハイフンは1つではなく2つなので注意。versionの詳細について知りたい場合は、こちらも参照。 https://github.com/dwango/scala_text/issues/122 ↩
3. 具体的にはこれを書いている2018年1月時点の最新版である1.1.0。 ↩