宮本 隆志(みやもと たかし)
 SIer勤務。関数型プログラミング言語や形式手法に興味があり色々勉強中。"A Scala Tutorial for Java programmers"の和訳やScala勉強会(scala-beなど)での発表などScalaの普及活動を行っている。

 現在使用されているScala 2.7系に対して、2009年後半にβ版が公開されテスト中のScala 2.8系では大きな変更や数多くの興味深い機能追加が行われています。今回と次回はScala 2.8についての紹介を行います。

 なおScala 2.8は現在も開発中です。この記事は2009/12/24版のScala 2.8.0を元に執筆していますので、Scala 2.8の正式リリースまでに変更が加わる可能性があることを予めお断り致します。

Scala 2.8 について

 この記事を執筆している時点(2009年12月)におけるScalaの安定版は2.7.7 finalで、次のメジャーバージョンのScala 2.8はまだ2009年後半に開発版が公開されて以来、テスト中の段階です。現在市販されているScalaに関する書籍も2.7系準拠(例えば和訳された「Scalaスケーラブルプログラミング」はScala 2.7.2準拠)です。したがって現時点でこれからScalaを入門しようと考えている方はこれまで通り2.7系最新版を用いるのが良いですし、業務で使用する場合も当分の間は2.7系を使い続けるのが良いでしょう。

 では現時点で2.8系に注目すべき理由は何かというと、2.7系から2.8系への変更と機能追加が大きいからです。実際に、Scala 2.8ではなくScala 3.0と呼ぶべきではないか、との意見もかなりあったようです。

 Scalaは後方互換性方針として、deprecated指定されたものは次のメジャーバージョンまで使用可能、としています。したがって2.6でdeprecetaed指定されたものは2.8では非対応になります。ただしScala 2.7から2.8への変更は大きく、2.6系でdeprecatedなものを使っていない場合でも2.8系で必ずしもそのまま動作するとは限らず、その点を取り上げて、Scalaはまだenterprise-readyな言語とは言えない、と批判をしている人もいます。

 仮にプログラムに修正が不要だった場合でも、Scalaで書かれたライブラリについては2.7系と2.8系ではjarファイルの互換性は失われる見込みです。またScala 2.8ではJava 1.4のサポートが無くなり、J2SE5.0以上が前提となります。

Scala 2.8を試してみよう

 Scala 2.8を自分の環境に導入するのは簡単です。Scala公式サイトのNightly Buildsのページからscala-2.8.0.latest.zip (あるいは特定の開発バージョンのzipファイル)をダウンロードし適当なディレクトリ下でzipを展開します。展開して出来たディレクトリ名を環境変数のSCALA_HOMEに設定し、その下のbinディレクトリを環境変数PATHに追加します。コマンド行にて "scala -version" と入力してバージョンが2.8.0であることが確認出来れば導入完了です。

$ cd ~/scala2.8
$ unzip scala-2.8.0.latest.zip
$ export SCALA_HOME=/Users/miyamoto/scala2.8/scala-2.8.0.r20314-b20091224020328
$ export PATH=$SCALA_HOME/bin:$PATH
$ scala -version
Scala code runner version 2.8.0.r20314-b20091224020328 -- Copyright 2002-2010, LAMP/EPFL
$

Scala 2.8の情報源

 Scala 2.8での変更点に関しては英語ですが、公式サイトの"Scala 2.8 Preview"に記載されています。また、2009年6月にOdersky氏が招かれて話した内容が"Bay-Area Scala Enthusiasts (BASE) Meeting: What's New In Scala 2.8"としてまとめられています。

 より詳細な文書は公式サイトの"Scala Improvement Documents Library"にまとめられています。ただし残念ながら設計思想を説明したこれらのドキュメントは古く、実際のソースコードとの間で差異がある場合があります。

 変更点に関する情報はGoogleグループscala-tohokuの"Changes and improvements on Scala 2.8"に非常に良く集積されています。

 残念ながら日本語で書かれたScala 2.8に関するまとまった文章はありませんが、scala-tohokuのサイトには幾つかのトピックについての日本語による解説があります。