【スカラ】

Scala(スカラ) とは?

最終更新:
💡 関数型とオブジェクト指向を組み合わせる言語

関数型プログラミングとオブジェクト指向を組み合わせられる、静的型付けのプログラミング言語。JVM上でJavaのライブラリと連携でき、Scala.jsやScala NativeなどJVM以外の実行先もある。

📌 このページのポイント
コードの組み立て方を組み合わせる 一つの言語で、二つの考え方を使う 関数型の例 List(1, 2, 3) .map(_ * 2) 新しいリスト:2, 4, 6 オブジェクト指向の例 class Cat: def speak() = "にゃー" Scala 静的型付け・型推論 JVM版の実行先 JVM Javaの ライブラリ 連携
上の矢印は考え方の組み合わせです。下はJVM版の構成で、Scala.jsやScala Nativeなど別の実行先もあります。
ひよこ ひよこ
ScalaはJVMで動くならJavaと同じ?
ペンギン先生 ペンギン先生
実行基盤を共有できるけれど、別の言語だよ。Scalaはクラスやオブジェクトに加えて、関数を値として渡す機能などを組み合わせる。JVM版ではJavaのクラスやライブラリと連携でき、必要に応じてコレクションなどを変換するんだ。
ひよこ ひよこ
関数型の書き方って?
ペンギン先生 ペンギン先生
関数を引数や戻り値にしたり、元のデータを変更せず新しい結果を作ったりするよ。一方でScalaは、変更できる変数やオブジェクトも使える。すべてのプログラムが自動的に純粋な関数型になるわけではないんだ。
ひよこ ひよこ
valで宣言すれば中身も変わらない?
ペンギン先生 ペンギン先生
valは、その名前への再代入を禁止するよ。参照しているオブジェクトまで必ず不変になる意味ではない。たとえばvalで持つ変更可能なSetには要素を追加できる。不変にしたいデータは、その型や操作も選ぶんだ。
ひよこ ひよこ
Sparkを使うならScalaが必須?
ペンギン先生 ペンギン先生
ScalaはSparkで使える言語の一つだけれど、PythonやJavaなどのAPIもあるよ。Scala APIを使う場合は、SparkがビルドされたScala版との対応を確認する。Scala 3ならすべてのSpark構成でそのまま動く、とは考えないんだ。
ひよこ ひよこ
JVM以外でも使えるの?
ペンギン先生 ペンギン先生
Scala.jsはJavaScript向け、Scala Nativeはネイティブ実行向けだよ。実行先によって使えるライブラリなどが異なる。Webやデータ処理などの用途で、言語の機能、対応環境、チームの経験を合わせて選ぶんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Scala」って出てきたら「関数型とオブジェクト指向を組み合わせる静的型付け言語」と思えばだいたいOK!
📖 おまけ:英語の意味
「Scala / scalable」 = 拡張できる言語
💬 Scalaという名前はscalable(規模を広げられる)に由来するよ。小さなコードから大きなシステムまで表現する言語という考え方で、使うだけで処理性能が自動的に伸びる保証ではないんだ。

参考資料

← 用語集にもどる