【スカラ】

Scala(スカラ) とは?

💡 関数型とオブジェクト指向の「いいとこ取り」言語
📌 このページのポイント
JVM上の言語エコシステム JVM(Java Virtual Machine) どの言語もJVMのバイトコードに変換されて実行 Java オブジェクト指向 1995年〜 Scala 関数型 + OOP Apache Spark Akka / Play Kotlin Android公式言語 2011年〜 Clojure 関数型 Lisp系 関数型 オブジェクト指向
JVM上で動作する言語エコシステムとScalaの位置づけ
ひよこ ひよこ

Scala って Java と何が違うの?JVM で動くなら同じようなもの?

ペンギン先生 ペンギン先生

JVM で動くから Javaライブラリは全部使えるんだけど、Scala は関数型プログラミングの機能が言語レベルでしっかり組み込まれてるのが大きな違いだよ。Java だと冗長になるコードが Scala だと数行で書けることも多いんだ

ひよこ ひよこ

関数型プログラミングってどういうこと?

ペンギン先生 ペンギン先生

データを変更せずに新しいデータを作る「イミュータブル」な考え方や、関数を引数に渡したり返り値にしたりする「高階関数」が基本だよ。Scala では val で不変変数を宣言するし、map や filter といった操作でデータをパイプラインのように処理できるんだ

ひよこ ひよこ

Apache Spark って Scala で書かれてるんだ!

ペンギン先生 ペンギン先生

そうだよ。Spark は大量のデータを複数のマシンで分散処理するフレームワークで、Scala で書くのが一番自然に使えるんだ。数テラバイトのデータも効率よく処理できるから、データエンジニアリングの現場では Scala は必須スキルに近いよ

ひよこ ひよこ

学習コストは高いの?

ペンギン先生 ペンギン先生

正直、Java だけやってきた人には最初のハードルはあるね。暗黙の型変換(implicit)や高度な型システムは独特だけど、基本的な部分から始めれば徐々に慣れるよ。最近の Scala 3 では文法がかなりシンプルになって学びやすくなったんだ

ひよこ ひよこ

おもしろい!Scala が向いてるのはどんなプロジェクト?

ペンギン先生 ペンギン先生

ビッグデータ処理はもちろん、Akka を使った高並行処理システムや、Play Framework でのWebアプリ開発にも強いよ。Twitter(現X)や LinkedIn など大規模サービスの裏側で Scala は長年活躍してきた実績のある言語だね

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Scala」って出てきたら「JVM上で動くデータ処理に強い関数型+OOP言語」と思えればだいたいOK!
📖 おまけ:英語の意味
「Scalable Language」 = スケーラブルな言語
💬 小さなスクリプトから大規模システムまで「スケール」できる言語という意味が込められてるよ
← 用語集にもどる