🥰

Scala の環境構築チートシート

2021/12/23に公開

Java のインストール(必須)

Java の LTS バージョン, つまり java 8 (1.8), 11 または 17 を推奨.

system,os tool command note
linux/macos sdkman 1. curl -s "https://get.sdkman.io" | bash
2. sdk install java
linux/macos coursier 1. curl -fLo cs https://git.io/coursier-cli-"$(uname | tr LD ld)"
2. chmod +x cs
3. ./cs java --jvm <name>:<version>
cs java --available でインストール可能な Java を表示できる
debian apt sudo apt install openjdk-11-jdk
alpine apk apk add openjdk11
windows winget winget install -e --id Amazon.Corretto Microsoft.OpenJDK などでも可. winget search で検索できる.
windows sdkman on gitbash curl -s "https://get.sdkman.io" | bash
windows coursier 1. bitsadmin /transfer cs-cli https://git.io/coursier-cli-windows-exe "%cd%\cs.exe"
2. .\cs java --jvm <name>:<version>
windows choco choco install jdk11
windows scoop scoop install openjdk

以下のコマンドで java がインスコされているかチェックしましょう.

java --version

Scala CLI のインストール(推奨)

curl -fL https://github.com/Virtuslab/scala-cli/releases/latest/download/scala-cli-x86_64-pc-linux.gz | gzip -d > scala-cli
chmod +x scala-cli
sudo mv scala-cli /usr/local/bin/scala-cli
scala-cli --version

coursier のインストール(推奨)

coursier は以下の機能を提供する.

  • scala/java ライブラリの取得/キャッシュ/管理
  • scala/java アプリケーションのインストール/実行
  • java(jdk)のインストール・管理

Linux/MacOS

curl -fLo cs https://git.io/coursier-cli-"$(uname | tr LD ld)"
chmod +x cs
./cs setup

Arch Linux

pacaur -S coursier

FreeBSD

pkg install coursier

MacOS

brew install coursier/formulas/coursier
cs

Windows

bitsadmin /transfer cs-cli https://git.io/coursier-cli-windows-exe "%cd%\cs.exe"
.\cs setup

各種ツールのインストール(必要に応じて)

tool description note
ammonite repl, script runner repl や *.sc拡張子の scala script の実行などをサポートする. coursier install ammonite でインストールできる.
metals language server vs code の extension をインストールする. vs code で scala を書くならほぼ必須. *.worksheet.scala や ammonite の *.scもサポートしている
metals-vim language server vim で Scala のコードを編集するなら推奨. https://scalameta.org/metals/docs/editors/vim/
intelliJ IDE デファクト https://www.jetbrains.com/idea/download/
sbtn ビルドツール 以下で説明するsbtをデーモンで走らせて立ち上げを速くできる. sbt --client オプションに相当する. cs install sbtn でインストールできる.
mill ビルドツール sbtよりとっつきやすいらしい. coursier install mill でインストールできる.
almond jupyter カーネル jupyter notebook/lab で scala を使うときに必要

Javaのバージョン管理(推奨)

update-alternatives
usr/bin/java のリンク先を管理する.

sudo apt install software-properties
sudo update-alternatives --install /usr/bin/java java /path/to/your/bin/java <priority>
sudo update-alternatives --config java

以下のように coursier でインストールした java を管理できる.

update-alternatives --list java
$HOME/.cache/coursier/jvm/graalvm-ce-java16@21.1.0/bin/java
$HOME/.cache/coursier/jvm/openjdk@1.16.0/bin/java
/usr/lib/jvm/java-11-openjdk-amd64/bin/java

coursier

coursier java --available
coursier java --jvm <name>:<version>

sbt のインストール(必須)

system,os tool command note
Linux coursier 1. curl -fLo cs https://git.io/coursier-cli-"$(uname | tr LD ld)"
2. chmod +x cs
3. cs setup or cs install sbt
https://get-coursier.io/docs/cli-installation#linux-macos
Ubuntu apt 1. echo "deb https://repo.scala-sbt.org/scalasbt/debian all main" | sudo tee /etc/apt/sources.list.d/sbt.list
2. echo "deb https://repo.scala-sbt.org/scalasbt/debian /" | sudo tee /etc/apt/sources.list.d/sbt_old.list
3. curl -sL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x2EE0EA64E40A89B84B2DF73499E82A75642AC823" | sudo apt-key add
4. sudo apt update
5.sudo apt install sbt
https://www.scala-sbt.org/1.x/docs/Installing-sbt-on-Linux.html
Windows choco choco install sbt https://www.scala-sbt.org/1.x/docs/Installing-sbt-on-Windows.html
Windows scoop scoop install sbt https://www.scala-sbt.org/1.x/docs/Installing-sbt-on-Windows.html
Windows coursier 1. bitsadmin /transfer cs-cli https://git.io/coursier-cli-windows-exe "%cd%\cs.exe"
2. .\cs setup
https://get-coursier.io/docs/cli-installation#windows
Mac amd64 brew brew install sbt https://www.scala-sbt.org/1.x/docs/Installing-sbt-on-Mac.html
Mac arm64 - 1. download universal package from https://github.com/sbt/sbt/releases/download/v1.5.5/sbt-1.5.5.zip
2. unzip sbt-1.5.2.zip
3. sudo mv your/path/to/sbt/bin/sbt /usr/local/bin
Mac arm64 sdkman 1. curl -s "https://get.sdkman.io" | bash
2. sdk install sbt
https://stackoverflow.com/questions/66464412/install-scala-to-apple-silicon

テンプレートプロジェクト

project command
scala 2.x sbt new scala/scala-seed.g8
scala 3.x sbt new scala/scala3.g8
scala native sbt new scala-native/scala-native.g8

scala native プロジェクトには llvm と c/c++ ビルドツールが必要.

linux

sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)"

ubuntu

sudo apt install clang
sudo apt install libgc-dev # optional

MacOS

brew install llvm
brew install bdw-gc # optional
export CLANG_PATH=/path/to/clang-<version>
export CLANGPP_PATH=/path/to/clang++-<version>

あると便利なライブラリ

目的 ライブラリ link 備考
ファイルやプロセスの操作 os-lib https://github.com/com-lihaoyi/os-lib 扱いやすいシンタックスで python の os モジュールのような機能を提供する
json circe https://circe.github.io/circe/ 使いやすさを気にするならこれ
json jsoniter-scala https://github.com/plokhotnyuk/jsoniter-scala パフォーマンスを重視するならこれか↓のjawn を推奨
json jawn https://github.com/typelevel/jawn
http requests-scala https://github.com/com-lihaoyi/requests-scala Python の request モジュールに似た http client. 初心者にフレンドリー
http http4s https://github.com/http4s/http4s cats-effect,monix,zioなどの非同期ランタイムと合わせて使うための http client,server ユーティリティ. 関数型の思想が強い.
fp cats http://typelevel.org/cats/ 関数型のデファクトライブラリ. Scala のシンタックスをイイ感じに拡張してくれる.
futureの代わり cats-effect https://github.com/typelevel/cats-effect/ zio というライブラリもあるがこれは 非同期ランタイム+DI+エフェクトシステムの合体したフレームワークに近い. composability を重視するなら cats-effect を推奨. どちらも標準の Future より速い.
stream fs2 https://github.com/typelevel/fs2 ストリーム処理
ssg Laika https://github.com/planet42/laika Scala製のテキストマークアップ変換ツール. pandoc のように内部ASTを介してさまざまな文書フォーマットに変換できる.

Discussion