Scalaプログラミング入門

Table of Contents

1 Scalaの概要

  • Martin Oderskyによる 関数型かつオブジェクト指向プログラミング言語
    • Java 1.1–1.4コンパイラの開発者
    • Pizzaの開発者 (Philip Wadlerと共同)
  • オープンソース
    • 活発に開発が行われている
  • 応用
    • Twitterの分散DBフレームワークGizzardはScalaで記述されている
    • Foursquare, Tumblr, LinkedIn, Amazon, VMWareなどでも利用されている
    • WebアプリケーションフレームワークとしてLift, Playなどがある
  • 言語の特徴
    • 関数型プログラミング言語とオブジェクト指向プログラミング言語の融合
    • 強力な型推論
    • 高階関数
    • Immutable Collections
    • Actorによる並行計算
  • 処理系の特徴
    • JVM(Java Virtual Machine)へのコンパイラ処理系
    • インタラクティブな実行環境(REPL)も用意されている
    • Javaのクラス・ライブラリをそのまま利用できる

1.1 注意

本Webページの作成には Emacs org-mode を用い, 数式等の表示は MathJax を用いています. IEでは正しく表示されないことがあるため, Firefox, Safari等のWebブラウザでJavaScriptを有効にしてお使いください. また org-info.js を利用しており, 「m」キーをタイプするとinfoモードでの表示になります. 利用できるショートカットは「?」で表示されます.

1.2 News!

Coursera でMartin Oderskyがオンラインレクチャーを実施中! こんな機会はめったにない! ぜひ登録して勉強してみよう!

1.3 参考リンク

2 インストール

2.1 Javaのインストール

Javaがインストールされている必要がある.

2.1.1 Windows系OSの場合

「コマンド プロンプト」を開いて,以下のコマンドを実行し, エラーが表示されないことを確認する

> java -version

2.1.2 Mac OS XおよびLinuxの場合

「ターミナル」を開いて,以下のコマンドを実行し, "command not found" のエラーが表示されないことを確認する.

$ java -version

2.2 Scalaのインストール

最新は Version 2.11 系であるが, ここでは Version 2.10 系をインストールする.

2.2.1 Windows系OSの場合

  1. http://www.scala-lang.org を開き Download をクリックし,さらに All downloads をクリック
  2. Version 2.10 系で現時点で最新の Scala 2.10.5 をクリック
  3. ウィンドウの一番下まで移動し,プラットフォームに対応するパッケージをダウンロード
    scala-2.10.5.zipWindows
  4. パッケージを展開する
    • 例えば C:\XXX というフォルダ内で展開したとする
    • C:\XXX フォルダ内に scala-2.10.5 というフォルダが作成される
  5. 「コンピュータ」を右クリックして「プロパティ」を開く
  6. 「コンピュータの詳細設定」の「環境変数」を開く
  7. 「ユーザ環境変数」に以下を登録する (PATH環境変数の設定が既にあれば,値の最後に「;」を付けて追加する)
    変数
    PATHC:\XXX\scala-2.10.5\bin

2.2.2 Mac OS XおよびLinuxの場合

  1. http://www.scala-lang.org を開き Download をクリックし,さらに All downloads をクリック
  2. Version 2.10 系で現時点で最新の Scala 2.10.5 をクリック
  3. ウィンドウの一番下まで移動し,プラットフォームに対応するパッケージをダウンロード
    scala-2.10.5.tgzMac OS X,Unix,Cygwin
  4. パッケージを展開する
    • 例えば /XXX というフォルダ内で展開したとする
    • /XXX フォルダ内に scala-2.10.5 というフォルダが作成される
  5. PATH環境変数に /XXX/scala-2.10.5/bin を追加する
    export PATH=/XXX/scala-2.10.5/bin:$PATH
    

以下はコマンドラインで上記のインストール作業を行う例 (bashの場合)

$ cd ~
$ curl -o scala-2.10.5.tgz http://downloads.typesafe.com/scala/2.10.5/scala-2.10.5.tgz
$ tar xvzf scala-2.10.5.tgz
$ echo 'export PATH=~/scala-2.10.5/bin:$PATH' >>.profile
$ . .profile

3 Scala REPLの起動

Scala REPLの起動方法を説明する.

  • REPLはRead Eval Print Loopの省略で,Scalaを対話的に利用するプログラムである.
  • REPLに入力した文は,コンパイルされてから実行されているため, 正確にはインタープリタではない.

3.1 Windows系OSの場合

「コマンド プロンプト」からscala.batと入力する.

> scala.bat
Welcome to Scala version 2.10.7 (Java HotSpot(TM) Client VM, Java 1.7.0_75).
Type in expressions to have them evaluated.
Type :help for more information.

scala> 1+2
res0: Int = 3

scala> (BigInt(1) to 100).product
res1: BigInt = 93326215443944152681......4000000000000000000000000
  • 最初の入力は,結果が出るまで少し時間がかかる.
  • 次の入力は,100の階乗を計算している.
  • 終了は Ctrl-D あるいは :quit と入力する.

3.2 Mac OS XおよびLinuxの場合

「ターミナル」あるいは「端末」からscalaと入力する.

$ scala
Welcome to Scala version 2.10.5 (OpenJDK 64-Bit Server VM, Java 1.7.0_75).
Type in expressions to have them evaluated.
Type :help for more information.

scala> 1+2
res0: Int = 3

scala> (BigInt(1) to 100).product
res1: BigInt = 93326215443944152681......4000000000000000000000000
  • 最初の入力は,結果が出るまで少し時間がかかる.
  • 次の入力は,100の階乗を計算している.
  • 終了は Ctrl-D あるいは :quit と入力する.

4 Scalaコンパイラ

Scalaコンパイラを用いるには, まずScalaのソースファイルを作成する.

まず,以下の内容のファイル Hello.scala を作成してみる.

1:  object Hello {
2:    def main(args: Array[String]) {
3:      println("Hello Kobe!")
4:    }
5:  }

Windows系OSでは,以下のようにコンパイルし,実行する.

> scalac.bat Hello.scala
> scala.bat Hello
Hello Kobe!

Mac OS XおよびLinuxでは,以下のようにコンパイルし,実行する.

$ scalac Hello.scala
$ scala Hello
Hello Kobe!

コンパイルせずに,REPL実行中にロードし実行することもできる.

scala> :load Hello.scala
Loading Hello.scala...
defined module Hello

scala> Hello.main(Array())
Hello Kobe!

その他,Scala開発ツールとして sbt あるいは Eclipse IDE 上のプラグインがあるが, ここでは詳細は紹介しない.

5 Scalaプログラミング入門の内容

本Webページ上部のメニューから以下を参照できる.

  1. Scalaでリスト処理
  2. Scalaで再帰プログラミング
  3. Scalaで複素数計算
  4. Scalaで素数ものさしを探す
  5. Scalaでエラトステネスの篩

また,本サイト内には以下のページがある.

Date: 2016-02-22 12:09:20 JST

Author: 田村直之

Validate XHTML 1.0