sbtをインストールする

現実のScalaアプリケーションでは、Scalaプログラムを手動でコンパイル1することは非常に稀で、標準的なビルドツールであるsbtというツールを用いることになります。ここでは、sbtのインストールについて説明します。

Javaのインストール

Scala 2.12や2.13ではJava 8以降が必須なので、もしJavaがインストールされていなければ、まずJavaをインストールしましょう。 Javaのインストール方法の詳細はここでは省略します。 ScalaとJavaのそれぞれのバージョンの互換性に関しては、以下のScala公式サイトのページを見てください。

https://docs.scala-lang.org/overviews/jdk-compatibility/overview.html

Mac OSの場合

Mac OSの場合のsbtのインストール方法として主に

の2つありますが、sdkman!の方がおすすめです。

sdkman!を利用する方法

まずはsdkman!をインストールします。

$ curl -s "https://get.sdkman.io" | bash      # sdkmanのインストール
$ source "$HOME/.sdkman/bin/sdkman-init.sh"   # sdkmanの初期化(shellの再起動でも可)
$ sdk version                                 # パスが通っているかの確認

インストールしたsdkman!を利用してsbtをインストールします。

$ sdk install sbt # sbtのインストール
$ which sbt       # sbtがインストールされているかの確認

とすれば、Mac OSにsbtがインストールできます。

Homebrewを利用する方法

Homebrewを用いる方法でも可能です。

$ brew install sbt

でインストールでき、楽ですが、新しすぎるJDKがインストールされてしまうという問題があります。 https://github.com/scala-text/scala_text/issues/566

Windowsの場合

Windows公式のwingetコマンド、あるいはchocolateyコマンドを使ってインストールすると楽です。

wingetを使う場合はWindows Powershellを開いてください。winget searchコマンドで最新のバージョンを確認できます。

winget search sbt
sbt  sbt.sbt <latest version>      winget

あとはwinget install sbt -v <version>コマンドで指定したバージョンのsbtをインストールできます。

chocolateyはWindows用のパッケージ マネージャで活発に開発が行われてます。chocolatey のパッケージにはsbtのものもあるので、

> choco install sbt

とすればWindowsにsbtがインストールされます。

Windows/Mac OSの場合で、シェル環境でsbtと入力するとバイナリのダウンロードが始まればインストールの成功です。sbtがないと言われる場合、環境変数へsbtへのPATHが通っていないだけですので追加しましょう。Windowsの環境変数は「システムのプロパティ」から編集できます。

Windowsキーとrキーを同時に押してC:\Windows\System32\systempropertiesadvanced.exeを入力します。

環境変数の設定ショートカット

これが上手くいかない場合は、Windowsキーとrキーを同時に押し、sysdm.cplを入力して「システムのプロパティ」画面を開きます。

「システムのプロパティ」の「詳細設定」のタブを開き、ウィンドウの下の方にある「環境変数」ボタンを押して環境変数の設定画面を開きます。

環境変数にPATHが存在する場合は、PATHを編集してsbtのインストール先(例えばC:\sbt\bin)を追加します。環境変数にPATHが存在しない場合は新しくPATH環境変数を追加して同じくsbtのインストール先を指定します。

Linuxの場合

sdkman! を利用するのが楽で使い勝手がいいでしょう。sbtのドキュメント でも利用を薦められています。

$ curl -s "https://get.sdkman.io" | bash      # sdkmanのインストール
$ source "$HOME/.sdkman/bin/sdkman-init.sh"   # sdkmanの初期化(shellの再起動でも可)
$ sdk version                                 # パスが通っているかの確認

とすればLinuxにsdkman!がインストールされます。続いてインストールしたsdkman!を利用してsbtをインストールしていきます。

$ sdk install sbt # sbtのインストール
$ which sbt       # sbtがインストールされているかの確認

とすればLinuxにsbtがインストールされます。

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.13.8 (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.13.8"

としてやると良いです。この*.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/scala-text/scala_text/issues/122
3. 具体的にはこれを書いている2022年2月時点の最新版であるsbt 1.6.2。

results matching ""

    No results matching ""