InfoQ

InfoQ

News

マイブックマーク

ブックマークするためにログイン または 会員登録 する

ブックマークされました!

ブックマークがエラーになりました。もう一度お願いします。

Scala 2.8 ベータ1リリース

作者 Mirko Stocker , 翻訳者 南 伸二 投稿日 2010年2月4日

セクション
デベロップメント,
設計/アーキテクチャ
トピック
IDE ,
Java ,
Ruby ,
プログラミング ,
言語
タグ
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ベータを手に入れ、バグや問題点を報告して"数ヶ月のうちに"準備されるはずの最終リリースに向けて、修正されるようにしよう。

特集コンテンツ一覧

GAE開発の落とし穴

Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します

イベントレポート:「Coqチュートリアル#1」

去る1月12日、定理証明支援系ツールCoqの初心者向けチュートリアルが開催さ れた(http://kokucheese.com/event/index/23667/)。今後も2月2日 (http://kokucheese.com/event/index/23744/)、2月9日、2月16日と引き続き開 催されていく予定である。本記事では、開催の様子をレポートする。

Javaの未来についてのNeal Gafter氏とのディスカッション

Choosing Options

Neal Gafter氏はOracleによるJava買収の影響に関する議論、Javaにセグメンテッドスタックやメタオブジェクトプロトコルを追加することについての主張、そしてJavaとC#との比較について話をしてくれた。

Google Dartのエッセンス:アプリケーションの構築、スナップショット、Isolate

GoogleはVMをともなう新しい言語であり、JSコンパイラでもあるDartをプレビューした。 InfoQはDartのアプリの構築に貢献する文法の裏側を探った:スナップショット、Isolate、モジュール方式

CSPベースのモデル検査ツール「Process Analysis Toolkit」

本記事ではCSPベースの「マルチドメイン・モデル検査ツール」である、PAT(Process Analysis Toolkit)について紹介する。モデル検査は、形式手法(Formal Method)という方法論を基礎とする技術であり、複雑さが増大しながらも安全性を求められる、現在のソフトウェア開発の状況に対する処方箋の1つとして注目されている手法である。

Jenkinsによる継続的インテグレーションのススメ(4) ~CloudBeesでJenkinsをサービスとして使う~

前回まで、Jenkinsの幾つかの側面に注目して解説をしてきました。シリーズ最後の今回は、Jenkinsをサービスとして使う方法を紹介します。

書籍『抽象によるソフトウェア設計-Alloyではじめる形式手法-』の紹介

Alloyは、MITにて開発された仕様記述言語であり、ツールによる自動解析を使い、インクリメンタルに形式仕様が書けることが特長である。筆者らはAlloy開発者による、Alloyを使った形式手法入門書を翻訳、今夏にオーム社より刊行した。本記事では、Alloyの簡単な概要と、翻訳書『抽象によるソフトウェア設計』(「Alloy本」)を紹介する。

Windows デバイスで開発するタッチユーザーインターフェイス

スマートフォンを中心としたマルチデバイスにおけるタッチユーザーインターフェイスへの対応は、既に必須の項目となりつつある。本記事では、Windows デバイスにおける UX のベースとなっている「メトロ」というデザイン言語を掘り下げながら、既存環境を意識しつつもどのようにタッチユーザーインターフェイス開発に取り組んでいくべきであるかについて解説していく。