クリスマスを目前に控えて,Sacla IDE のバージョン 2.0 が リリースされた。Scala IDE プロジェクト は Miles Sabin 氏が立ち上げ,その後 Typesafe が参加することによって製品レベルに達した Scala 開発環境だ。
現在の Scala IDE 2.0 は Scala IDE 1.x 環境から分岐して,基本部分の Scala コンパイラが,IDE 自体の使用するコード補完および拡張機能を改善したものに変更されている。2011 年の1年間を通じたベータ版テスト実施を経てリリースされた最初の製品版により,Eclipse 3.6 上の Scala サポートが実現された。なお 3.7 は公式にはサポート外で,細かな問題がいくつかあるものの使用は可能だ。
新機能としてはコード補完 (implicit 拡張を含む),型推論のホバリング表示,プロジェクトの依存性を考慮した再コンパイル,Maven など既存ツールセットとの統合などがある。IDE が提供する開発環境の統合部分を既存の Eclipse Java デバッガと組み合わせることにより,Scala 言語が Java 開発者たちのものになる。
プロジェクトが scala-ide として GitHub に移行してから 22回のフォークが行われ,いくつか プル要求 が提出された。このことからも GitHub 移行が,コミュニティの参加を促す上で有効であったことが分かる。
InfoQ では Scala IDE のプロジェクトリーダである Iulian Dragos 氏にインタビューを行った。最初の質問はバージョン 1.0 と 2.0 との大きな違いに関するものだ。
Iulian Dragos: ユーザ視点からは,信頼性と応答性です。エディタと Scala プレゼンテーションコンパイラの相互動作をすべての面で作り直しました。ひとつのアクションが完了するまでの間,エディタが無応答にならないようにしたのです。コード補完とハイパーリンク,それからタイプ入力中のエラー報告が,今回のリリースで注力した部分です。
依存関係を持った複数のプロジェクトをサポートするために,新しいプロジェクトビルダも用意しました (Sbt の依存性トラッキングエンジンをベースにしています)。今回のリリースは,あらゆる規模の Scala プロジェクト開発を容易にするものだと自負しています。私たち自身も IDE 開発に使用していますし,Scala チームは Scala コンパイラ (110Kステップ以上) をこれで開発しています。
InfoQ: SBT や Maven のような自動ビルドツールへの適合性については,どのようになっていますか?
Iulian Dragos: Sbt と Maven にはどちらもプラグインが用意されていて,Eclipse プロジェクト定義をエクスポートすることができます。Eclipse ワークスペースにプロジェクトをインポートするだけで,セットはすべて完了します。
InfoQ: リファクタリングとクイックフィックスとしては何がサポートされているのでしょう?
Iulian Dragos: 実を言うと,2.0 のリファクタリングサポートが非常によくなったのは,Mirko Stocker 氏の貢献によるものなのです。ローカル変数の抽出とインライン化,メソッドの抽出,名称の変更,インポートの整理などがサポートされています。クラクラスパス (classpath) 上にあるクラスについては,不足しているインポートを追加するクイックフィックスも利用できます。
InfoQ: Java プロジェクトに依存する Scala プロジェクト,その逆,あるいは Java と Scala コードの混在するプロジェクトなどは扱えるのでしょうか?
Iulian Dragos: それらの組み合わせはすべてサポートされています。
InfoQ: Scala IDE の今後のロードマップはどのようなものでしょう?
Iulian Dragos: Typesafe の IDE チームが作成中ですが,ロードマップについてはコミュニティとも議論したいと考えています。その結果次第ですので,ここで正確なことは言えません。
どのオープンソースプロジェクトもそうですが,誰でも実装に参加することができますし,それが優れた機能であれば採用するつもりです。実際に 'implicit highlight' のような優秀なコントリビュートもあります。また Matt Russell 氏は,文法の強調表示 (semantic highlighting) の開発に取り組んでくれています (識別子の種類 - class/trait/val/var などを基準として,異なるスタイルを適用する機能です)。前者はすでに,2.1 ナイトリービルドに取り込まれています!
開発チームとして次に取り組みたい機能は,Scala デバッガの改良 (現在は Java デバッガ上で Scala コードを使う方法しかありません),アクションベースの Scala コード構造 (テストフレームワークランナのような) を実装する必要のあるプラグイン開発者のための API 整理,コード検索 (参照検索のような) などです。Scala インタプリタ用のもっとよい UI 開発も計画中です。これは多くのユーザから要望を受けている機能のひとつでもあります。
InfoQ: IDE に2つのバージョンがあるのはなぜでしょう?
Iulian Dragos: Scala IDE では,すべての構文処理機能を Scala コンパイラに依存しています。例えばタイプしたとき,エラーが赤いアンダーラインで表示されるのもそのひとつです。一貫性を保つためには,同じコンパイラを使用しなければなりません。Scala 2.8 を使用しているプロジェクトには 2.8 のプラグインを使う必要があります。2.9 Scala コンパイラに "2.8 互換性モード動作" のようなコンパイラスイッチはありませんから,Eclipse プラグインにも 2.8 あるいは 2.9 コンパイラを含めなければならないのです。
InfoQ: プロジェクトにパッチを提出する場合,同意書 (contributor agreement) は必要ですか?
Iulian Dragos: はい。 このプロジェクトでは Scala ライセンスを採用しています。コントリビュータの同意書も Scala プロジェクトと同じです。 誰でも簡単にコントリビュートできるようにしようと努力しています。たくさんの人々が参加してくれると嬉しいですね。2.0 リリースに先立って,私たちは開発者資料の整理に多くの時間を費やしてきました。まずはその 開発者資料 の出来映えを見て,そしてぜひ参加してください!
Scala IDE はすでにダウンロード可能である。2つの異なるバージョンがある (それぞれ特定の Scala バージョンに対応している) ので,インストール用の更新サイトも2つ用意されている。Scala IDE をインストールするには,既存の Eclipse インスタンスにその (両方ではなく) どちらかを追加すればよい,
- Scala IDE 2.0 - Scala 2.8版: http://download.scala-ide.org/releases-28/stable/site
- Scala IDE 2.0 - Scala 2.9版: http://download.scala-ide.org/releases-29/stable/site
Scala IDE の新バージョン,あなたはどう思うだろうか?