IntelliJ IDEAでScala 3(Dotty)を使用する

Scala 3 (Dotty 0.26.0-RC1)
最終更新:2020年10月5日

[AD] scalapediaでは記事作成ボランティアを募集しています

この記事では、IntelliJ IDEAにおいてScala 3(コードネーム:Dotty)を使用する方法を解説します。

IntelliJ IDEAでScala 3を使うには、Early Access Programを活用する

IntelliJ IDEAの通常版はまだScala 3をサポートしていませんが、Early Access Program(後述)を活用すると、Scala 3サポートが有効化されたパブリックβテスト中のScalaプラグインを使用することができます。

これまでの経緯

IntelliJ IDEAはかつてDottyをサポートしていたものの、長らくアップデートを放置していました。

Dottyは次期Scalaのプロトタイプです。
つまりScala 3を作るための叩き台です。

Dottyのサポートはなぜアップデートされずに放置されていたのでしょうか。
それは、Dottyの進捗があまりに流動的で不透明だったためです。

かつては、Dottyが実際にScala 3になるかどうかは未確定でした。
DottyがScala 3にならない可能性があるならば、IntelliJ IDEA ScalaプラグインがDottyの更新に追従してアップデートを提供する必要性は下がります。
IntelliJ IDEAの開発元であるJetBrainsがDottyのサポートに対して消極的になるのも無理はありませんね。

しかしながら、先日の発表により、Dottyが正式にScala 3として採用されることが決定しました。
そのため、今回、IntelliJ IDEAによるDottyサポートも復活する運びとなったわけです。

Scala 3の正式リリース前ゆえ、あくまでベータ版としての不完全なサポートではあるものの、これによってだいぶScala 3を使用しやすくなりますね。

ScalaプラグインのNightlyビルドを使用して、Scala 3サポートを有効化する

さて、早速IntelliJ IDEAでScala 3のサポートを有効化してみましょう。

IntelliJ IDEAのEarly Access Programを利用する

まずはIntelliJ IDEAのEarly Access Programを活用します。
これはScalaプラグインのNightlyビルドを使用できるようにするために必要です。

以下のEarly Access ProgramのページからIntelliJ IDEAのUltimate版もしくはCommunity版をダウンロードします。

あるいは、Toolbox Appを使用してインストールする方法もあります。

外部リンク:Toolbox App - JetBrains

ScalaプラグインのNightlyビルドを使用するよう設定する

そしてIntelliJ IDEA ScalaプラグインのNightlyビルドを使用して、Scala 3サポートを有効化します。

設定画面を開きます。

左ペインで、 Languages & Frameworks の中の Scalaを選択します。

右ペインのUpdatesタブを開きます。

Update Channelは「Nightly Builds」を選択します。

さいごにCheck Nowを押下して最新版にアップデートしておきましょう。

これでIntelliJ IDEAでScala 3を使用できるようになりました。

IntelliJ IDEAでScala 3を使用できることを確認する

早速、Scala 3で新たに追加された機能を使ってみましょう。

Scala 3のプロジェクトを新規に作成する

まずはIntelliJでScala 3のプロジェクトを新規に作成してみます。

メニューバーのFile -> New -> Projectをクリックすると、以下のダイアログが開きます(macOSの場合です。他のOSでは適宜読み替えてください)。

右ペインには安定版の頃にはなかった「Dotty」が追加されていることがわかります。

「Dotty」を選択して「Next」を押下して次の画面に移ります。

ここではプロジェクト名を設定するよう求められるので、お好みのプロジェクト名をつけてください。

「Finish」を押下すると、プロジェクトが開きます。

Scala 3の機能を使用してみる

それでは、実際にScala 3の機能が使えるのかどうかを試してみましょう。

サンプルコードを作成する

IntまたはStringの値を受け取ってメッセージの文字列に変換して出力するメソッドを定義してみます。

Scala 3において追加された機能である合併型(Union Type)を使用すると、このメソッドを以下のように定義することができます。

def message(arg: Int | String) = s"Hello! world $arg"

それでは、作成したプロジェクトの中のMainオブジェクトを以下のように変更します。

object Main { def message(arg: Int | String) = s"Hello! world $arg" def main(args: Array[String]): Unit = { println(message("Scala 3")) println(message(3)) } }

画面上では以下のようになっています。
これでサンプルコードの作成は完了です。

サンプルコードを実行する

それでは、このプログラムを実行してみましょう。

右上のツールバーの「Add Configuration」をクリックして、以下のダイアログを開きます。

左上の「+」ボタンを押しましょう。

「+」ボタンを押すと、以下のメニューが開きますので、「sbt Task」をクリックします。

新しくsbtタスクが作成されるので、右側の設定項目を埋めます。

ここではNameを「intellijDotty」とします。

また、Tasksには「run」と入力しておきます。

以上で「OK」を押してダイアログを完了します。

そしてウィンドウ右上の「Run intellijDotty」をクリックし、Mainオブジェクトを実行します。

最終的に以下のように出力されればOKです。

Hello! world Scala 3 Hello! world 3

Scala 3のサポートを外して元に戻すには

先の設定画面において「Nightly」から「EAP」または「Release」を選択し直すことにより、Scalaプラグインは安定版に戻ります。

また、Scalaプラグインのリポジトリからプラグインをダウンロードし再インストールすることによっても復元することができます。

参考リンク

サイト内検索