LoginSignup
17
8

More than 3 years have passed since last update.

ゼロから始めるScala (環境構築 mac)

Last updated at Posted at 2020-06-26

Scala をはじめよう

Scala とは?

プログラミング言語の1つ。

「オブジェクト指向」と「関数型プログラミング」の両方の性質を併せ持つ、というか、実現できるというか、両方できる二刀流。

Scalascalable language (拡張可能な/拡張可能性の高い 言語) に由来する。

Scala の「良さ」

  • オブジェクト指向と関数型プログラミングの両方を表現できる。
  • オブジェクトの「不変性」が意識された設計
  • 高いモジュール性
  • Java と互換性がある (Java のライブラリを使うことができる)
  • 非同期の計算ができる Future ライブラリを標準装備
  • 並列・分散プログラミングのためのライブラリ Akka がある

インストール on Mac

Homebrew を使うのが簡単だと思う。

環境構築は全部こいつでなんとかなる(気がする)。

探す

# scala (本体, しかし前提として Java が動く環境が必要 - 後述)
$ brew search scala
==> Formulae
scala        scala@2.11   scala@2.12   scalaenv     scalapack    scalariform  scalastyle
==> Casks
scala-ide

# sbt (scalaのビルドツール, 色々するのに便利なやつと思えば良い)
$ brew search sbt
==> Formulae
sbt                           sbt@0.13                      sbtenv

(前提として) Java をインストール

やはりHomebrew を使う。

AdoptedOpenJDK をインストールするのが良いっぽい。

AdoptedOpenJDKはJava大好きコミュニティ()により提供されているOpenJDKのバイナリ(だと思っている)。
Oracle経由でのインストールが、アカウント登録とか、自分でフォルダ配置するとか面倒になったので、変にこだわるよりは、これでサクッと入れてしまうのがコスト低いと思う...

# リポジトリの追加
$ brew tap AdoptOpenJDK/openjdk

# search
$ brew search openjdk

# install
$ brew cask install adoptopenjdk11

JAVA_HOMEのPATHを設定しよう

java_home コマンドでインストールされたディレクトリの場所を確認

$ /usr/libexec/java_home -v 11
/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home

$ なんたら/java_home -v 11して出てきた文字列を、環境変数JAVA_HOMEとしてPATHに追加

必要に応じて .bash_profile.bashrc などに記述する。

# .bashrc に書いた。
export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home
PATH=${JAVA_HOME}/bin:${PATH}

設定ファイルの再読み込み

# 以下、どちらか一方でOK
source ~/.bashrc
exec $SHELL -l

一応、チェックする。

$ java -version
openjdk version "11.0.7" 2020-04-14
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.7+10)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.7+10, mixed mode)

$ javac -version
javac 11.0.7

# コンパイル例
$ javac source.java

# 実行例 (.class を含めないように注意)
$ java Source

scala を入れる

(後述の)sbtだけでも良いが、一応書いておく。

# install
$ brew install scala

以上。

使ってみる

# REPL起動
$ scala

Welcome to Scala 2.13.3 (OpenJDK 64-Bit Server VM, Java 11.0.7).
Type in expressions for evaluation. Or try :help.
scala>
// 出力
scala> println("Hello scalalala")
Hello scalalala

// 演算1
scala> 1 + 2
val res1: Int = 3

// 演算2
scala> 3 * 6
val res2: Int = 18

// 演算3
scala> 8.0 / 2.0
val res3: Double = 4.0

// 終了
scala> :quit
// scala> :q でも OK
ソースファイル

拡張子は.scala

Main.scala
object Main {
  def main(args: Array[String]): Unit = {
    println("Hello scala program")
  }
}
  • コンパイルして実行
$ scalac Main.scala
$ scala Main
  • コンパイルしないで実行
$ scala Main.scala
  • REPLから実行
$ scala

Welcome to Scala 2.13.3 (OpenJDK 64-Bit Server VM, Java 11.0.7).
Type in expressions for evaluation. Or try :help.
scala> :load Main.scala

sbt を入れる

# install
$ brew install sbt

以上。

使ってみる

# REPL起動
$ sbt console
...
[info] Starting scala interpreter...
Welcome to Scala 2.12.10 (OpenJDK 64-Bit Server VM, Java 11.0.7).
Type in expressions for evaluation. Or try :help.

scala>

(あとは同じなので詳細略)

sbt でコンパイル, 実行

下準備として、何かフォルダを作っておくと良いと思います。
(名前はmyfolderとしましたが、なんでも良いです、対応する部分は読み替えてください)

$ mkdir myfolder
$ cd myfolder

myfolder下にソースファイルを書いて置きます。

HelloWorld.scala
object HelloWorld {
  def main(args: Array[String]): Unit = {
    println("Hello, Scala World!")
  }
}

myfolder下にsbtの設定ファイルを置きます

build.sbt
scalaVersion := "2.12.10"

scalacOptions ++= Seq("-deprecation", "-feature", "-unchecked", "-Xlint")

sbtを起動

[info] ...
sbt:myfolder>

runコマンドで実行

sbt:myfolder> run
[info] Compiling 1 Scala source to ...
[info] Running HelloWorld
Hello, Scala World!
[success] Total time: 1 s, completed 2015/02/09 15:44:44`

runコマンドでは、mainメソッドを持つオブジェクトを探して実行してくれるらしい。

というか、なんか日付がおかしい...??

参考

17
8
2

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
17
8