Scala(スカラ、SKAH-lah)はオブジェクト指向言語と関数型言語の特徴を統合したマルチパラダイムのプログラミング言語である。名前の「Scala」は英語の「scalable language」に由来するものである。
Scalaのロゴ | |
パラダイム | オブジェクト指向言語、関数型言語 |
---|---|
登場時期 | 2003年 |
設計者 | Martin Odersky |
開発者 | LAMP/EPFL, Scala Center |
最新リリース | 3.4.0 / 2024年2月29日 |
型付け | 強い静的型付け |
主な処理系 | Scala |
影響を受けた言語 | Java, Haskell, Standard ML, OCaml, Smalltalk, Erlang |
影響を与えた言語 | Java, Chisel, F#, Kotlin, Flix |
プラットフォーム | Linux, Windows, Mac, JVM, JavaScript, Android |
ライセンス | Apache 2.0 |
ウェブサイト | The Scala Programming Language |
拡張子 | .scala |
主にJavaプラットフォーム(Java仮想マシン)上で動作し、既存のJavaのプログラムと容易に連携させることができる。
対応プラットフォーム
また、過去には下記のプラットフォームもサポートしていたが、現在は開発が中断している。
Scalaは2001年にスイス・ローザンヌにあるスイス連邦工科大学 (EPFL) 教授のマーティン・オーダスキーによって設計された。マーティン・オーダスキーはFunnelという、関数型プログラミングとペトリネットとを合わせたプログラミング言語の開発に携わっていた。オーダスキーは過去にJavaの総称型(ジェネリクス)とjavacの開発に携わった事があった。
Scalaは2003年の暮れに内部で公開された後、2004年の始めにJavaのプラットフォームにリリースされ、2004年の6月に.NETのプラットフォームに公開された。Ver2.0は2006年3月にリリースされたが、.NETのサポートは2012年に中止になった。
2021年5月12日、コードネームdottyと呼ばれていたコンパイラを抜本的に再設計して作られたScala 3がリリースされ、多くの機能が追加された。
また、現在も活発に開発が続けられている。
主に以下のような特徴がある。
「文字列の中に'a'という文字が存在するか判定する」という例を挙げる。
手続き型言語的なコードを書くと以下のようになる。
def hasLowerCaseA(s: String): Boolean = { for (i <- 0 until s.length) { if (s(i) == 'a') return true } return false }
上のコードは、添え字を使わずに、次のように書くことができる。
def hasLowerCaseA(s: String): Boolean = { for (c <- s) { if (c == 'a') return true } return false }
上のコードは、トレイトscala.collection.Traversable
を使って、次のように書くことができる。
def hasLowerCaseA(s: String) = s.exists(_ == 'a')
典型的な関数型言語では再帰をよく使う。再帰に置き換えると以下のようになる。
def hasLowerCaseA(s: String, i: Int = 0): Boolean = { if (i == s.length) return false if (s(i) == 'a') return true return hasLowerCaseA(s, i + 1) }
Scalaの部分関数 (partial function) は数学における同名の概念をもとにして生まれた機能である。具体的には、定義域が制限された関数に相当する。以下は [-1, +1] の範囲で2乗を計算する部分関数の例である。
val myPartialSquare: PartialFunction[Double, Double] = { case x if -1 <= x && x <= 1 => x * x } println(myPartialSquare(-0.5)) // 0.25 println(myPartialSquare(0.9)) // 0.81 println(myPartialSquare.isDefinedAt(1)) // true println(myPartialSquare.isDefinedAt(-10)) // false println(myPartialSquare(1.1)) // MatchError
Martin Oderskyによると、Scala開発の動機は2つの仮説による。
TwitterがバックエンドをRubyからScalaに2009年に移行したのを初め、大型のソフトウェアでの利用例がいくつか存在する。
以下の統合開発環境が Scala をサポートしている。括弧内の数字は 2019 Scala Developer Survey での複数回答ありでの利用している人の割合。
Scala をベースにしたプログラミング環境として Kojo がある。
Apache Maven や Gradle などの Java 汎用のビルドツールも利用可能だが、Scala 向けのビルドツールとして以下の物がある。括弧内の数字は 2019 Scala Developer Survey での複数回答ありでの利用している人の割合。
Scala 用の主なWebアプリケーションフレームワークとして以下の物がある。
This article uses material from the Wikipedia 日本語 article Scala, which is released under the Creative Commons Attribution-ShareAlike 3.0 license ("CC BY-SA 3.0"); additional terms may apply (view authors). コンテンツは、特に記載されていない限り、CC BY-SA 4.0のもとで利用可能です。 Images, videos and audio are available under their respective licenses.
®Wikipedia is a registered trademark of the Wiki Foundation, Inc. Wiki 日本語 (DUHOCTRUNGQUOC.VN) is an independent company and has no affiliation with Wiki Foundation.