11
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Scalaの実行環境構築方法とsbtの使い方

Last updated at Posted at 2021-03-14

環境

$ docker --version
Docker version 20.10.5, build 55c4c88
$ docker-compose --version
docker-compose version 1.28.5, build c4eb3a1f

実行環境構築(簡略版)

次の docker-compose.yml を作れば終わりです。hseeberger/scala-sbt イメージには latest タグがないので、きちんと指定する必要があります。

version: '3'
services:
  scala:
    image: hseeberger/scala-sbt:8u222_1.3.5_2.13.1
    tty: true
    volumes: [".:/work"]

実行環境構築(詳細版)

Docker Hub にある hseeberger/scala-sbt イメージを使って構築するのがいいと思います。こちらのイメージは 1,000 万以上のダウンロード数と 148 個のスターを獲得しており、Scala を動かす環境としては安心できると思います。

sbt というのは、Scala プロジェクトの作成やパッケージ管理、ビルドを簡単に行うためのツールセットです。おそらく Scala でのデファクトスタンダードだと思います。

次の docker-compose.yml を作成します。tty: true を設定している理由は、コンテナの端末に入る必要があるからです。volumes: [".:/work"] の意味は、docker-compose.yml の存在するディレクトリを、コンテナ内の /work ディレクトリにマウントするという意味です。

version: '3'
services:
  scala:
    image: hseeberger/scala-sbt:8u222_1.3.5_2.13.1
    tty: true
    volumes: [".:/work"]

上記ファイルを作成後、次のコマンドを実行して Docker コンテナを立ち上げます。

docker-compose up -d

立ち上げたあと、docker ps を実行してコンテナ ID を確認します。

$ docker ps
CONTAINER ID   IMAGE                                     ...
ec9c762bf36a   hseeberger/scala-sbt:8u222_1.3.5_2.13.1   ...

コンテナ ID を確認後、次のようにコマンドを実行してコンテナ内に入ります。プロンプトが root@ec9c762bf36a:~# に変わると成功です。

$ docker exec -it ec9c762bf36a bash
root@ec9c762bf36a:~# _

/work ディレクトリに移動して、先ほど作成した docker-compose.yml があることを確認します(簡略化のために、プロンプトの表示は # に省略しています)。

# cd /work
# ls
docker-compose.yml

このディレクトリとホスト側のディレクトリは同期しているため、この中で作成したファイルは両方から閲覧、修正できます。

これで環境が整いました。sbt --version コマンドを実行して sbt が使えることを確認します。

# sbt --version
sbt version in this project: 1.3.5
sbt script version: 1.3.5

sbt の使い方

公式ドキュメント(日本語)はこちらにあります。

次のコマンドを実行するとプロジェクトを作成できます。sbt/scala-seed.g8 というのは、おそらく GitHub の URL のパス部分を表すのだと思います。実体はこちらだと思います。

# sbt new sbt/scala-seed.g8

上記コマンドを実行すると、プロジェクト名をどうするかについてだけ聞かれます。何も入力せずにエンターキーを押すことで、デフォルトの名前が使用されます。

プロジェクトの作成が終わると、現在のディレクトリに scala-seed-project という名前のディレクトリが生成されます。

このディレクトリに移動後、sbt コマンドを実行します。これにより、sbt のシェルが立ち上がります。初回実行時は立ち上がるのに数分ほどかかります(たくさんの .jar ファイルがダウンロードされる)が、2回目以降はすぐに立ち上がります。

# cd scala-seed-project
# sbt
...
sbt:Scala Seed Project> _

このシェル内で run を実行すると、プロジェクトがビルドされて実行されます。シェルに入らずとも sbt run を実行することでプロジェクトのビルドと実行が可能ですが、この方法だと毎回 Java VM の立ち上げが行われるため時間がかかるとのことです(うろ覚え)。

ファイルを編集するたびに毎回 run を実行するのは面倒です。sbt では、コマンドの頭に ~ をつけるだけで、「~ の後にあるコマンドを、ファイル内容が変わるたびに実行する」というふうにしてくれます。具体的には、ファイルを編集するたびに run コマンドを実行したい場合は ~run を実行します。

> ~run
1. Waiting for source changes in project root... (press enter to interrupt)
_

sbt のパッケージ管理

sbt では、パッケージの追加をコマンドだけで行うことはできません。build.sbt というプロジェクトのルートにあるファイルを編集することでパッケージの追加、修正を行います。

このあたりはまだ調べ切れていないため、時間があるときに調べようと思います。

11
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?