なぜ、いまScalaなのか?
TwitterがScalaを利用しているのは有名ですが、他にも位置情報を利用したfoursquareはScalaで構築されたLiftというWebフレームワークを利用していますし、GTDツールとして有名なRemember The MilkもScalaの利用を検討しているようです。
Scalaは、Java Virtual Machine(以下JVM)上で動くオブジェクト指向+関数型言語です。簡潔で柔軟な記述が可能であり、マルチコアを意識したライブラリがあり、JVMでのスケールメリットを享受できることが、これらの企業で採用に踏み切った理由であると考えられます。
Scalaは、非常にバランスの取れたプログラミング言語です。本連載では、Scalaの基本的な文法を解説しながら、オブジェクト指向と関数型言語を組み合わせたプログラミングスタイルについて、解説したいと思います。
対象読者
- ある程度プログラミング言語の知識がある方
- Javaは知っているが、Scalaも学んでみたいと思っている方
- 関数型言語に興味のある方
必要な環境
次の動作環境を想定しています。
- J2SE 6.0 JDK
- Scala 2.8.0.RC2
Scalaの特徴
Scalaは、さまざまな言語の特徴を取り入れた、ハイブリッドな言語仕様が特徴です。簡単に列挙します。
- Scalaは、JVM上で動作します。Scalaのソースコードをコンパイルすると、JVM上で実行可能なclassファイルになります。
- JVM上で動作する言語ですので、Javaのライブラリを利用したり、JavaからScalaのライブラリを呼び出したりと、相互利用が可能です。
- 対話型の実行環境(REPL)があります。Scalaは、動的言語ではなくコンパイルして実行するタイプの言語ですが、対話型の実行環境(REPL)によりコードを打ち込んで動作を確認しながらのプログラミングが可能です。
- オブジェクト指向と関数型言語の特徴を組み合わせています。Scalaでは、関数をオブジェクトとして扱うことができますし、高階関数も利用できるなど、関数型言語からさまざまな特徴を取り入れています。
- Scalaは静的型付け言語ですが、型推論によって型の記述を省略することができます。変数や関数の宣言時に、コンパイラが型を推論してくれるため、型の指定をいちいち行わなくてもよいのです。
- パターンマッチングという機能を利用することで、複雑な条件分岐を簡潔に記述することができます。
- 豊富なコレクションクラス(Array,List,Set,Map)が用意されており、高階関数を組み合わせてコレクションの操作が簡単に行えます。
- Trait(トレイト)という、実装を持つことができるインターフェイスを利用して、Mix-Inができます。
- 暗黙の型変換(implict conversion)などを利用して、DSL(ドメイン固有言語,Domain-Specific Language)を作成しやすくなっています。
- マルチコア時代を意識した、分散処理ライブラリ(Actorライブラリ)が用意されています。
他にもさまざまな特徴がありますが、少ない記述で柔軟なプログラミングができることを目指して設計されている言語と言えるのではないでしょうか。
開発環境の構築
本稿では、Scalaのバージョンとして、本稿執筆時点での最新版RCであるScala 2.8.0.RC2をもとにしています。現在はRC2ですが、Scala 2.8でさまざまな言語仕様が拡張されます。例えば、名前付き引数のサポートやパッケージオブジェクトなどです。簡単にScala 2.8で導入される機能を紹介します。
- コレクションライブラリの再設計
- 名前付き引数とデフォルト引数のサポート
- パッケージをimportすると自動的にimportされるパッケージオブジェクト。
- 限定継続のサポート
他にもさまざまな機能の追加やパフォーマンスの改善が行われていますので、今からScalaを始めようとする方には、2.8から入ることをお勧めします。
JDKのインストール
JDKは、「Java SE ダウンロード」より、OSに合わせたインストーラーをダウンロードしてインストールしてください。
Scala 2.8.0.RC2のインストール
Scala 2.8.0.RC2のインストールは、公式サイトにアクセスし、「Release Candidate」からプラットフォームに合わせた圧縮ファイルをダウンロードします。ダウンロードされたファイルを解凍し、解凍されたディレクトリ以下のbinディレクトリを実行パスに設定するだけです。
- Scala Distribution | The Scala Programing Language(http://www.scala-lang.org/downloads)
対話型実行環境(REPL)の起動
Scala 2.8.0.RC2のインストールが終わったら、コマンドラインから「scala」と入力してみましょう。次のようにREPLが起動すれば、インストールは正常に完了しています。
REPLを終了させるには「:quit」と入力します。