こんにちは。システムインテグレーション部の遠藤です。

みなさん、Scalaってご存じですか?
今日はScalaのHelloWorldについて書きたいと思います。

■Scalaとは

Scalaとは、オブジェクト指向言語と関数型言語の特徴を融合したプログラム言語です。

Twitterのインフラの一部がScalaで書かれていることで有名ですよね。

最大の特徴としては、Javaの仮想マシン(JVM)上で動作することでしょうか。

Scalaで書かれたプログラムソースはコンパイルするとJavaのclassファイルと同等のものになりますので、Javaのプログラムを使用ことができ、逆に、JavaからScalaのプログラムを使用することもできます。

■Scalaを利用するための準備

それではScalaのHelloWorldを実現するために、準備をしましょう。

1.Javaの確認

Scalaを利用するにはJDK1.6以上がインストールされている必要があります。
Javaのインストールなどは割愛させていただきますが、確認だけしておきましょう。

コマンドラインツールにて、下記のように出力されればOKです。

$ java -version
java version “1.6.0_65”
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)

$ javac -version
javac 1.6.0_65

2.Scala本体のダウンロード

下記ページから好きなバージョンのtgz、もしくはzipをお使いの環境に合わせてダウンロードし、任意のディレクトリに解凍してください。
http://www.scala-lang.org/index.html

ここでは、「scala-2.10.3」で進めます。
http://www.scala-lang.org/download/2.10.3.html

3.環境変数への登録

Javaと同じで、環境変数への登録が必要です。
こちらもお使いの環境に合わせて、Javaと同じ様に設定してください。

例は、Mac OS Xの「~/.bash_profile」に設定しています。
$ vim ~/.bash_profile
export PATH=$PATH:/Users/任意のディレクトリ/scala-2.10.3/bin

  4.インストール確認

コマンドラインツールにて、下記のように出力されればOKです。

$ scala -version
Scala code runner version 2.10.3

これでScalaのインストール完了です!

■Scala REPLの起動

REPLとは、Read Eval Print Loopの略で、コマンドライン上でScalaのコードを対話形式で実行出来るものです。
ちょっとした動作確認等に重宝します。

では、コマンドラインにて、下記のコマンドを入力し、REPLを起動しましょう。

$ scala
Welcome to Scala version 2.10.3 (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_65).
Type in expressions to have them evaluated.
Type :help for more information.

scala>

■HelloWorld

それではさっそく、ScalaのHelloWorldを実行してみましょう。
REPLを起動している状態で、下記のコマンドを入力してください。

scala> println(“HelloWorld”)
HelloWorld

いかがでしょうか?
めでたく、コンソールに「HelloWorld」と表示されました。

ついでに、Scalaはすべての物を関数、あるいはオブジェクトとして扱います。
コマンドラインに、下記のように数式を入力してみて下さい。

$ 1 + 1
res0: Int = 2

res0という文字に注目して下さい。
実は、このres0とは、今「1 + 1」と入力して定義された「1 + 1の計算結果を返す関数」なのです。

では、この関数を実行してみましょう。

$ println(res0)
2

いかがでしょうか?
コンソールに出力するprintlnの引数に、1 + 1の関数res0を渡した為、res0の戻り値である2が返却され、コンソールに出力されました。

■Scalac

ScalaのHelloWorldは完了ですが、せっかくですのでScalaのソースファイルを作成して実行してみましょう。

下記のようなソースファイルを作成して下さい。
※object名とファイル名は違っていても問題ありません。

$ vim HelloWorldScala.scala

object HelloWorld {
  def main(args: Array[String]) :Unit = {
    println("Hello World")
  }
}

簡単に処理内容を説明させてもらいますと、1行目でオブジェクトとなるHelloWorldを定義しており、当該オブジェクトの中にはmain関数が存在します。
main関数はJavaで言うmainメソッドと同じですが、Scala特有のUnit型を返却します。
Scalaではすべての処理において返却値を返しますが、返却値が無い場合の為に(Javaで言うvoidを使う場合)、Unit型という返却値が無い返却値が実装されています。

ちなみに、こちらをJavaで書いた場合は下記の様になります。

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}

さて、次に、下記のようにしてコンパイルします。
この辺はJavaと同じですね。

$ scalac HelloWorldScala.scala

では、今作成したプログラムを実行してみましょう。下記のようにコマンドを入力し、実行して下さい。

$ scala HelloWorld
Hello World

以上です。

いかがでしたでしょうか?ScalaはJavaとの親和性が非常に高く、その点はセットアップのやり方からも見て取れますね。
今後、Scalaを利用する上で無くてはならないSimple Build Tool(sbt)等の紹介もさせて頂く予定ですので、是非お楽しみに!