InfoQ

News

Scala 2.8 ベータ1リリース

作者 Mirko Stocker , 翻訳者 南 伸二 投稿日 2010年2月4日 午後3時2分

コミュニティ
Java,
Ruby
トピック
IDE,
言語,
プログラミング
タグ
JVM,
Releases,
Scala

原文(投稿日:2010/01/27)へのリンク

プログラミング言語Scalaの作者達は長く待たれていたScala 2.8の最初のベータをリリースした。 

2.7.7に対して大量のバグフィックスと多くの新機能を含んでいます。このベータは今後数ヶ月のうちにリリースされるはずの2.8.0最終バージョンの基礎となるものです。

(2.7.7からの)バージョン番号のわずかな増加からは、この言語に対して行われた変更の数の多さを適切に理解することはできない。残念ながら、Scala 2.8は2.7ブランチとバイナリ互換ではない。

新機能のいくつかの例は以下の通りである(包括的なリストはリリースアナウンスを参照のこと): 

再設計されたコレクションライブラリ

Scalaのコレクションライブラリは完全に再設計された。今や新しいコレクションを実装するのがより簡単になっているだけでなく、ユーザは(ほぼ後方互換であるにもかかわらず)その恩恵に気づくだろう。Daniel Sobral氏がScala-Userメーリングリストでこのことについて以下のように発言している: 

Scala 2.7は"Map"を返す"map"を"Map"からつくるのに必要な力を持ち合わせていませんでした。このようなことができるようにすることがScala 2.8における新しいコレクションライブラリの主な理由なのです。

新しいコレクションに関してはScalaウェブサイトのこのエントリでさらに知ることができる。 

名前付き引数とデフォルト引数

Scala 2.8は他にも新しく名前付き引数とデフォルト引数のような新しい言語機能を提供している。名前付き引数は呼び出されたメソッドの仮引数の名前に対して割り当てを行うものである: 

def resize(width: Int = 800, height: Int = 600) = { ... }
resize(width = 120, height = 42)

 名前付き引数とデフォルト引数は連携して動く; ある特定のパラメータをその名前を使って取り出し、それ以外のパラメータに対してはデフォルトを使うようにすることもできる: 

resize(height = 42) 

これらの新機能は他の新機能でも利用されている:ケースクラスはメソッドのパラメータの現在の値をデフォルトにするようなコピーメソッドを持つ。名前付き引数を利用してコピーされたインスタンスの値を選択的に変更することができる。これについてはScalaウェブサイトで示されている。 

改善された対話型インタープリタ

Scalaの対話型インタープリタはずっと強力になり、パッケージ、クラス、メンバのタブ補完がサポートされた。この機能はリフレクションを利用しており、Scalaコードに対してだけでなくJavaコードに対しても機能する。Arjan Blokzijl氏によるブログポストでこの新機能についてより詳細に調べられている。 

改善されたEclipseプラグイン

Scala Eclipseプラグインの新バージョンはScala 2.8とともにリリースされるだろう。JDTとの統合はぐっと改善された;新しいビルドマネージャはずっと高速により信頼できるコンパイルを実行する。Scalaプラグインの主要開発者であるMiles Sabin氏によるプレゼンテーション (PDF)では、昨年行われた作業についてのさらなる詳細が示されている。

InfoQはMiles氏と話し、IDEの現状と将来についてより知ることができた。IDEは新しいバージョンのScalaのサポートを実現してリリースされるだろうが、Scala 2.7もサポートするのか? 

IDEは現在本質的にコンパイラとつながっています ... IDEの意義に影響を与えやすい機能の全てを動かしているのはコンパイラなのです。2.8より先のリリースに対して複数のバージョンをサポートするように依存性をわずかに緩めることは可能でしょうが、残念ながらこれまでのバージョンに対しては不可能です。今のところ、2.7と2.8のそれぞれのストリームでの作業に対して別々のEclipseインスタンスを作成することをおすすめします。

最近の会議レポートでは、Scala IDEが独自のリリーススケジュールを持つことにも言及されていたが、この裏にある意図は何なのか? 

2.8ストリームでは、IDEは以前持っていたよりも、ずっと安定した基盤の上に成り立っています。今より早く先に進むことができるようにすべきですし、メインのScalaツールチェインよりもずっと頻繁にリリースするという選択肢が必要なのです。

IDEの将来に対するあなたの計画はどのようなものですか? 

私のScalaツールに対する目標は、最低限Javaと同等のものにすることです。そうなるには道のりがありますが、到達できると思います。 
2.8最終リリースとともに、IDE専用のウェブを立ち上げたいと考えています。それは、新しいサイクルでのリリースに対する主要な情報源となり、存在はしているものの少々散在しているIDEに関するドキュメントやリソースを集約し、ユーザと開発貢献者が集まる中心となるようなものです。

もちろんEclipse IDEだけが2.8をサポートしているわけではない; NetBeansIntelliJの開発も進行中である。 

Scala Days 2010

4月15-16日に、Scalaの熱心な開発者達がScalaの生誕地、スイスのローザンヌにあるEPFLに集まり、"アイデアを交換し、ビジネス関係を形成し、同時にScalaに関わる最新の実践的および理論的開発を発見する"初めてのScala Days"が行われる。

Scala 2.8ベータを手に入れ、バグや問題点を報告して"数ヶ月のうちに"準備されるはずの最終リリースに向けて、修正されるようにしよう。

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
slashdot+
Hatena

特集コンテンツ一覧

アジャイルにおけるプロジェクトマネジャーの役割

この記事では最初に一般的に産業界でのプロジェクトマネージャーの役割について説明し、それから、アジャイルにおけるコーチ/ファシリィテーターの役割にあてはめてみます。

アレグザンダー祭りにて、James.O.Coplienが語るアジャイルとスクラムの源流とは

「パターン」と呼ばれる設計手法をご存知ですか?この建築の分野ではじまった設計の形式知化手法、および、使う人と作る人の対話のプロセスは、私たちソフトウェアの世界に援用されて1995年に「デザインパターン」という書籍で注目を浴びました。さらに、アジャイルと呼ばれる開発手法には、ユーザーといっしょに対話をしながら設計を進める「パターン」の思想が脈々と引き継がれているのです。

仮想パネル:ソフトウェアアーキテクチャの文書化について

この仮想パネルでは、特に、アジャイルソフトウェア開発環境におけるソフトウェアアーキテクチャの文書化について、Len Bass氏、Grady Booch氏、Paulo Merson氏、Eoin Woods氏に話を聞いた。

HTTPSコネクションの最初の数ミリ秒

HTTPSコネクションを確立するとき、一体何が起こっているのだろう。この記事では安全なコネクションを準備するためにクライアントとサーバの間でどのようなデータの交換が行われているのか、バイトレベルまで詳細に分析する。

Modular Java:動的なモジュール化

Modular Javaシリーズの第3弾は、動的なモジュール化、どのようにバンドルのクラスが解決され、どのように生成され、消滅するのか、どのようにお互いに通信するのかについて、議論する。

分散バージョン管理システムの詳細なガイド

分散バージョン管理システムへの関心や採用は増え続けています。この記事では、分散バージョン管理システムのコンセプトを紹介し、git、Mercurial、Bazaarの3つについて詳しく見てみようと思います。

Modular Java:それは何なのか?

ここ数年にわたって、Javaのモジュール化は活発に議論され続けている話題である。いくつかのJSRによってJavaの進化におけるモジュール化の必要性が示されている。モジュール化の意味するところは何で、なぜそれを気にかけるべきなのだろうか?

Modular Java:静的なモジュール化

Modular Javaシリーズの第2弾は、静的なモジュール化、バンドルの作り方、OSGiのエンジンにそれらをインストールする方法、バンドル間の(バージョン付き)依存性の設定のしかたなどについて扱う。