Scala
この記事でインストールしているバージョンは古くなっている可能性もあります。最新バージョンに読み替えて利用するようにしてください。
想定環境
OS:Mac
Scala:2.13.6
Java と sbt のインストール
Scala を使うには Java と sbt が必要になります。バージョン管理ツールを2つ紹介しますが、どちらを使っても構いません。
SDKMAN
Java と sbt どちらもこれ一つでインストールできるので、 anyenv を使っていないのであればこちらがおすすめです。
anyenv + jenv + sbtenv
anyenv ですべて管理したい人向けです。
JDK と バージョンについて
無償JDKとして広く利用されていたAdoptOpenJDKはEclipse Adoptiumプロジェクトに移管されることが公表されており、2021/8/13にはそのサブプロジェクトであるEclipse Temurinプロジェクトから新たなJDKがリリースされました。今回はこちらのJDKを利用します。
また、Java には LTS バージョンが設定されており、このバージョンのみをサポートしているライブラリも多いです。特段の理由がなければ、最新版ではなく 8 や 11 といった LTS バージョンをインストールするのが良いと思います。
SDKMAN
SDKMAN のインストール以下のコマンドを実施するだけです。
下記コマンドを実行してバージョンを確認してみます。 sdk-man-init.sh
の実行は .bash_profile
等の末尾に追加されているので、次からはターミナルを開いた時に自動実行されます。
バージョン管理ツールがインストールできたので、 Java と sbt をインストールします。
Java は 8系と 11系が LTS なので、どちらかをインストールします。選択肢が多いのですが、前項で述べた通り Temurin を選択します。
sbt はとりあえず新しいバージョンを入れておけば良いと思います。
ディレクトリ内で特定のバージョンを有効にするには、 sdk env
コマンドを利用します。
すると .sdkmanrc
ファイルが生成され、デフォルトでカレントバージョンが設定されるので、これを利用したいバージョンに変えればOKです。ただ、コメントにもあるように ~/.sdkman/etc/config
の sdkman_auto_env
を true
にしなければ自動的に適用されないので設定しておきましょう。
ちなみに Metals を使ったプロジェクトの場合、 sbt のバージョンに関しては project/build.properties を参照してくれるため、バージョン指定は不要です。
anyenv + jenv + sbtenv
anyenvを利用する場合、java, sbtのバージョン管理ライブラリはそれぞれjenv, sbtenvを利用することになります。jenvはrbenvやnodenvと違って言語のインストール機能は持っていないため、JDKは手動でインストールし、jenvに読み込ませる必要があります。
環境構築の流れは以下の通りです。
anyenvのインストール
JDKのインストール
jenvのインストール&設定
sbtenvのインストール&設定
anyenvのインストール
SDKMANではなくこちらの手順を選択している方は既にインストール済みの方が多いと思いますので、詳細な手順は割愛します。新規にインストールする方はanyenv公式のREADMEに沿ってインストールしましょう。
JDKのインストール
jenv公式で推奨されている通りHomebrewでインストールを行います。2021/9/14現在temurinからリリースされているJDKは16系が最新となりますが、先述のとおり今回はLTSである11系をインストールします。つまり最新版以外のJDKをインストールする必要があるため、複数バージョンを扱えるようにしてくれるhomebrew-cask-versionsをインストールします。
インストール可能なJDKを検索するとtemurin11
が表示されるようになりますので、これをインストールします。複数のJavaバージョンを切り替えて利用したい場合、ここで必要な分だけインストールしておきましょう。
これでJDKのインストールは完了です。
jenvのインストール&設定
anyenvの通常の使い方に沿い、以下コマンドでjenvをインストールします。
jenvのexportプラグインを有効化しておきましょう。
インストールしたJDKのHomeディレクトリをjenvに認識させます。複数のJDKをインストールした場合はそれぞれ実施しましょう。ここで認識させたJDKがjenvのバージョン切り替え対象に加わります。
jenvで利用するバージョンを指定します。
これを行うと実行したディレクトリに.java-version
というファイルが生成されます(中身は指定したバージョン番号だけ記述されたシンプルなファイルです)。このディレクトリに移動した際にはjenvがこれを読み込み、指定されたjavaのバージョンが自動的に参照されるようになります。
shをリセットすると、先ほど有効化したexport
プラグインにより環境変数JAVA_HOMEも設定されます。
以下を実行すると、.java-version
ファイルが存在しないディレクトリでデフォルトで適用するバージョンを設定することができます。必要があれば設定してください。
これでjenvのインストールと設定は完了です。
sbtenvのインストール&設定
以下コマンドでsbtenvをインストールします。
sbtのインストールを行います。バージョンはSDKMANの項と同様に1.5.5をインストールする場合、以下のようにします。複数バージョンのsbtを切り替えて利用したい場合、ここで必要な分だけインストールします。
※ gpgが必要
といったエラーが表示された場合、インストールしてsbtの公開鍵を設定してから再実行してください。
インストール完了後、jenvの時と同様に利用するバージョンのsbtを設定します。
以上でanyenv + jenv + sbtenvの環境設定は完了です。
IDE の設定
以前は Scala といえば IntelliJ だったと思うのですが、最近は Metals という Language Server が出てきており、Metals を使えば Visual Studio Code や Emacs などエディタを選ばずに Scala の開発ができるようになっているようです。
Visual Studio Code + Metals
scalameta.metals
という extension をインストールするだけです。
extension は Scala プロジェクト以外は有効化されないはずですが[1]、私の環境では ruby のワークスペースなどにも .metals ディレクトリが出来てしまいました。基本は disable にしておいて、Scala のワークスペースでだけ手動で enable にするのが良いと思います。
VS Code のサポートについてはこちらに詳しく書かれています。
https://scalameta.org/metals/docs/editors/vscode/
参考文献
[1] 公式サイト に次の記載あり。The extension activates when the main directory contains
build.sbt
orbuild.sc
file, a Scala file is opened, which includes*.sbt
,*.scala
and*.sc
file, or a standard Scala directory structuresrc/main/scala
is detected.
本サイトの更新情報は、Twitterの株式会社プレセナ・ストラテジック・パートナーズエンジニア公式アカウントで発信しています。ご確認ください。
最終更新