minimize

事業拡大のため、新しい仲間を募集しています。
→詳しくはこちら

Scala の歴史や基本概念、インストール方法など。

概要

Scala の開発デザインが始まったのが 2001年で、最初の公式リリースは 2003年。
再デザインして次にリリースしたのが 2006年で、Scala v 2.0 と呼ばれている。
2011年12月現在のバージョンは 2.9.1 final。

2003年と言えば、まだ Java が 1.4 だった頃。
Java が並列性関連のパッケージを導入したのは 1.5 から。
おそらくだが、Scala v2 は Java5 に対応した版なのだろう。
Scala v2 の動作環境は、Java5 以降。

概念

Java と Scala の関係

まず最初に、非常に重要なことをおさらいしておく。
Scala はプリコンパイラであり、Scala で記述されたソースコードはコンパイルされて
Java の class ファイルになる。

つまり、Scala 内から自由に Java のクラスを使うことができる。
また、Java のコードからも自由に(いくつかの制限はあるが) Scala のクラスを呼び出すことができる。

これは非常に大事なことだ。
Scala 上から Java の無数のライブラリを使えるし、
Scala で作ったライブラリを(Scalaを使っていない)通常の Java プログラムから利用することができる。

object, class, trait

Scala の class は、Java の class と同じ。

object とは、Java で言えば Singleton Class にあたる。Scala ではこれを言語レベルでサポートしている。
つまり object は常に一つであることが保障され、従って new は出来ず、
定義した全ての関数は静的関数となり、どこからでも呼び出せる。

trait は Java の Interface に似ているが、こちらは実装も含むことが可能だ。
つまり、疑似的ではあるが多重継承のようなことが実現できる。

ちなみに Scala には static というキーワードは存在しない。
その代わりに object を使おう。

メソッドと変数

Java では両者には明確な違いがあったが、Scala では全てをオブジェクトとして扱うので
これらの区別は無い。ただし、定義上の区別はある(定義キーワードが異なる)。
ちなみに Scala では、メソッドではなく「関数」と呼ぶ。
そう。Method ではなく、Function と呼ぼう。関数型言語っぽくね。

オブジェクト

Scala では、以下のものをオブジェクトとして扱う。

もちろん、この中で一番インパクトのあるのは関数だ。

Scala に無いキーワード

static, break, continue.

インストール、Hello World

Scala のダウンロードページ から最新のファイルをダウンロードするだけ。
インストールディレクトリの直下に bin ディレクトリがあるから、ここにパスを通せば良い。

まずは動かしてみよう。

HelloWorld.scala

object HelloWorld {
  def main(args: Array[String]) {
    println("Hello, world!")
  }
}

Scala のファイルの拡張子はそのまま「scala」となる。
ちなみに、Java のようにクラス名とファイル名を合わせる必要は無いそうだ。
まぁしかし、同じにしておいて何の問題も無いので合わせておこう。

> scalac HelloWorld.scala
> scala HelloWorld

これでプログラムが走る。Java とおんなじだ。
ちなみに短いコードでもコンパイルにはそれなりに掛かる。
これは Scala の初期化処理が重いからだ。

fsc(Fast offline compiler) というものも用意されている。
これを使うと、一回目の起動でデーモンが走りそこでコンパイルをするようになるので
二回目以降のコンパイルが早くなる。