🥰
Scala の環境構築チートシート
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