「Eclipse Xtend」とは
「Eclipse Xtend」は、Java仮想マシン上で動作する新しいプログラミング言語です。、Eclipseプロジェクトによって開発されたもので、Javaと同様に静的な型を持つ言語であり、Javaコードを生成するコンパイラを備えています。
XtendはEclipseプラグインの1つである「Eclipse Xtext」を利用して開発されました。Eclipse XtextはJavaによるDSL(ドメイン固有言語:Domain Specific Language)の開発を容易にするためのフレームワークおよびツールキットで、これを使えばオリジナルのプログラミング言語を簡単に作成することができます。それだけでなく、Eclipse Xtextで新しい言語を作った場合には、Eclipseの開発サポート機能がその新言語にも適用できるというメリットがあります。
たとえばエディタのシンタックス・ハイライトや、コード補完、コードヒントなどの機能が、新言語によるコーディングでも利用できます。もちろん、独自に定義したキーワードに対しても有効です。その他に利用できる機能としては、名前のリファクタリングやimportの自動設定、クイック・フィックス機能、アウトラインビュー、インクリメンタル・コンパイルなどがあります。その他の細かな機能についてはこのページを参照してください。
Eclipse Xtextの成果物であるXtendでは、これらの開発サポート機能をそのまま使えるということであり、これがXtendの最大の強みになっています。Xtendのプログラミング言語自身の機能としては、次のような特徴が挙げられます。
- Javaと同じ型表現(クラス型、プリミティブ型、配列、Genericsの型パラメータなど)を持つ
- 高度な型推論によってコード量の削減が可能
- インターフェースがなく、すべてをクラスとして定義する
- クロージャのサポート
- 演算子オーバーロードのサポート
- 拡張メソッドのサポート
- テンプレート式のサポート
- 高機能なswitch文
- アクセッサメソッド無しにプロパティへアクセス可能
- 多重ディスパッチのサポート
注目したいのは、クロージャやプロパティへのアクセスなど、現在のJavaにはないさまざまな機能を多数備えている点です。XtendのコンパイラはJavaコードを生成します。このコードは通常のJavaプログラムから呼び出せるので、Javaアプリケーションのコードの一部分をXtendに置き換えることもできます。Xtendは、Javaアプリケーション開発にクロージャーなどの便利な機能を導入する、開発ツールの1つとしての側面を持った言語とも言えるわけです。
Xtendのインストール
すでにEclipseを導入済みであれば、Xtendは更新サイト(Eclipseマーケットプレース)経由でインストールすることができます。また、公式サイトにはXtendを含むEclipseパッケージが配布されています。ここではマーケットプレースからインストールする方法を紹介します。
まず、メニューから[ヘルプ]-[マーケットプレース]を選択してマーケットプレースのダイアログを開きます。ここで「Xtend」のキーワードで検索すると、図1のように「Eclipse Xtend」が見つかるはずなので、[インストール]ボタンをクリックします。
図2のようにインストールするパッケージが表示されるので、「Eclipse Xtend」および「Xtend2 SDK」にチェックが入っていることを確認して[次へ]をクリックします。
ライセンス条項が表示されるので、「仕様条件の条項に同意します」のほうにチェックを入れて[完了]をクリックすればインストールが実施されます。
チュートリアル・プロジェクトの作成
インストールが完了すると、新規プロジェクト作成ウィザードからXtendのチュートリアル・プロジェクトが作成できるようになります。図3のように、新規プロジェクトウィザードで[Xtend]-[サンプル]-[Xtend Tutorial]を選択することで、チュートリアル・プロジェクトが作成されます。
この時点でビルド・エラーが発生している場合には、プロジェクトのクリーン(メニューから[プロジェクト]-[クリーン]を選択)を実施すれば直るはずです。
チュートリアルにはXtendに用意された特徴的な機能のサンプルプログラムが含まれています。Xtendのコードはsrcフォルダのxtend.tutorial.basicsパッケージ以下にある拡張子.xtendのファイルです。また、Xtendのコードから生成されたJavaコードはxtend-genフォルダに格納されます。
xtend-genフォルダにあるJavaコードは単体で完結したものになっているので、普通のJavaクラスと同じ要領でインポートして使用することができます。試しに「Xtend11_ModularizationMain.java」を実行してみましょう。実行結果は図5のように表示されます。
拡張子からも明らかですが、コードを見ると内部で「Xtend11_」から始まる名前のクラスを使っていることがわかります。これらのクラスはXtendコードから生成されたものです。次回は、Xtendの主要な機能をサンプルコードとともに見ていきましょう。