採用に向く条件
選ぶ理由
- 関数型 + OOP を高い水準で融合
- 強力な型システムと表現力
- Spark などビッグデータ基盤で実績
プログラミング言語
Martin Odersky / 2004年登場
JVM 上で関数型とオブジェクト指向を高い水準で融合した言語。型システムが強力で、大規模データ処理(Apache Spark)やバックエンドで使われる。
基本情報
選定ガイド
採用する理由と、事前に受け入れるべきトレードオフを分けて確認します。
採用に向く条件
事前に確認する条件
向いている用途
詳しい解説
Scala は、関数型プログラミングとオブジェクト指向を一つの言語で融合させた JVM 言語です。2004 年に Martin Odersky が公開しました。Java と同じ仮想マシン上で動き、既存の Java 資産を活かしつつ、より簡潔で安全な書き方ができることを狙っています。
横にスクロール
Scala の核心は、表現力の高さと厳密な型システムの両立です。値が書き換わらないイミュータブルなデータと関数の組み合わせを基本に、副作用の少ないコードを簡潔に書けます。
// データを変換して合計する(関数型らしい連結)
val total = List(1, 2, 3, 4)
.filter(_ % 2 == 0) // 偶数だけ残す
.map(_ * 10) // 各要素を10倍
.sum
型を細かく表現できるため、誤った使い方をコンパイル時に弾きやすいのが強みです。
given(型クラス的な抽象)など、ライブラリ設計に強い機能を持つ。Scala 3 で構文と型システムが整理された。| 観点 | Scala | Java | Kotlin |
|---|---|---|---|
| 基盤 | JVM | JVM | JVM ほか |
| 志向 | 関数型+OOP・高い抽象 | OOP・堅実 | 簡潔な OOP・実用重視 |
| 型システム | 非常に強力 | 標準的 | 実用的 |
| 代表分野 | データ基盤(Spark) | 企業システム全般 | Android・サーバー |
関数型の概念と豊富な機能が重なり、他人のコードが暗号のように見えることもあります。チームでは使う機能の範囲を決めると読みやすさを保てます。コンパイルが遅めでビルド待ちがテンポを乱すため、インクリメンタルビルドやモジュール分割で緩和します。
総じて Scala は、関数型と OOP を強力な型システムで融合した JVM 言語で、Spark を中心とするデータ基盤や堅牢な大規模システムで選ばれます。
言語選定
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
ビッグデータ処理(Apache Spark)
型付け: 静的・強い型付け(強力な型推論) / 実行方式: JVM(+ Scala.js / Native) / パラダイム: 関数型 + オブジェクト指向の融合
強力な型システムと表現力
学習コストが高い
最初の一歩
object Main extends App {
println("Hello, World!")
}公式ドキュメント