RAP プロジェクトの狙いは、開発者が Eclipse 開発モデルを使用してリッチ・インターネット・アプリケーションを構築できるようにすることです。「Eclipse 開発モデル」とは具体的に何を意味するのかと言うと、RAP では開発者が Java™ ライブラリーと Eclipse API を最大限活用してブラウザー・ベースの Ajax アプリケーションを構築できるようにしますが、その手段として、Web 対応の SWT、JFace、そして Eclipse Workbench の実装を提供するということです。この記事では、単純なサンプル・アプリケーションを用いて RAP を紹介します。
RAP のセットアップは至って簡単です。必要なステップは 2 つだけで、最初のステップで RAP をダウンロードし、そして次のステップで Eclipse が RAP を使うように構成します。
Eclipse.org から RAP を入手してください。その際には、最新の安定したマイルストーンを選ぶことをお勧めします。この記事では 1.0 リリースを使用しました。RAP ターゲット・プラットフォームが含まれるアーカイブ・ファイルをダウンロードしたら、ディレクトリーを選択してそこにファイルを解凍します (図 1 を参照)。ここで選択するディレクトリーは重要です。なぜなら、このディレクトリーが次のステップでターゲット・プラットフォームを設定するときに使用するディレクトリーとなるからです。
図 1. RAP ターゲット
Eclipse PDE (Plug-in Development Environment: プラグイン開発環境) では、ターゲット・プラットフォームという概念を用いています。ターゲット・プラットフォームとは、一連のプラグインのみで構成され、開発を行う対象 (ターゲット) を表すものです。デフォルトでは、ターゲット・プラットフォームはその時点で実行している Eclipse インスタンスのプラットフォームに設定されます。つまり、開発中のプラグインは現在実行中のインスタンスで動作するようにデフォルト設定されるということですが、ターゲット・プラットフォームの素晴らしい点は変更が可能だというところにあります。そのため例えば、ターゲット・プラットフォームの対象を Eclipse V3.2 システムに設定したり、さらには別の製品のランタイムに設定することもできます (この巧妙な手段により、開発対象が何であろうと最新の Eclipse を使用することができます)。
ここでの開発対象は RAP プラットフォームなので、RAP プラットフォームをターゲットにしなければなりません。それにはターゲット・プラットフォームのプリファレンス (設定) (Window > Preferences... > Plug-in Development > Target Platform) をステップ 1 で RAP プラグインを解凍したディレクトリーに設定します (図 2 を参照)。
図 2. ターゲット・プラットフォームとしての RAP の設定
ターゲット・プラットフォームは正しく設定されました。これで RAP アプリケーションを開発できるようになりましたが、コードに取り掛かる前に単純なデモを紹介します。このデモで、RAP の機能を知ると同時に RAP ベースのアプリケーションを立ち上げる方法に慣れておきましょう。
RAP を使用する第一歩として、ここではデモを用います。RAP を操作するには、RAP を立ち上げるための起動構成を作成する必要があります。それにはまず、Run ダイアログを開き (Run > Open Run Dialog...)、OSGi フレームワークの起動構成を新規に作成してください。新しい起動構成を作成したら、VM 引数が -Dorg.osgi.service.http.port=8000 -Dosgi.noShutdown=true に設定されていることを確認します (図 3 を参照)。これらの引数によって、RAP がポート 8000 で自動的に起動し、起動直後に Eclipse がシャットダウンしないようにできます。
図 3. RAP の起動構成
これでブラウザーを立ち上げて http://localhost:8000/rap?startup=controls にアクセスすると、コントロールのデモが表示されるはずです (図 4 を参照)。このデモは、SWT Examples のセットに含まれる有名な ControlExample に基づいています。
図 4. RAP のコントロールのデモ
ここからは、PDE に用意された RCP (Rich Client Platform) テンプレートに基づく 2 つの例を見ていきます。
Hello World は、従来から決まって使われるプログラミング・サンプルです。まず始めに、単純な RAP アプリケーションを実行させるのに必要な作業から取り掛かります。
図 5. RAP バージョンの Hello World
RAP バージョンと RCP バージョンとの大きな違いは、プラグインの依存関係とアプリケーションのエントリー・ポイントにあります。プラグイン・マニフェスト (リスト 1 を参照) を見ると、異なる依存関係があることに気付くはずです。
リスト 1. RAP の Hello World の依存関係 (MANIFEST.MF)
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Helloworld Plug-in
Bundle-SymbolicName: rap.helloworld; singleton:=true
Bundle-Version: 1.0.0
Bundle-Activator: rap.helloworld.Activator
Require-Bundle: org.eclipse.rap.ui
Eclipse-LazyStart: true
|
org.eclipse.rap.ui への依存関係にお気付きでしょうか。これは、RCP ベースの標準 org.eclipse.ui プラグインと同様の RAP プラグインです。OSGi とImport-Package ヘッダーを熟知している場合は、特定のプラグインに依存する必要はまったくなく、必要なパッケージに依存するだけで構いません。しかし、RAP と RCP の両方で機能するようにコードを構成するには、この依存関係が重要になります。例えば、ワークベンチ・アドバイザーのコードを RAP の場合 (リスト 2 を参照) と RCP の場合 (リスト 3 を参照) とで見比べると、同じようなコードとインポートされたパッケージがあることがわかります。
リスト 2. RCP のワークベンチ・アドバイザー
import org.eclipse.swt.graphics.Point;
import org.eclipse.ui.application.ActionBarAdvisor;
import org.eclipse.ui.application.IActionBarConfigurer;
import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
import org.eclipse.ui.application.WorkbenchWindowAdvisor;
public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor {
public ApplicationWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) {
super(configurer);
}
public ActionBarAdvisor createActionBarAdvisor(IActionBarConfigurer configurer) {
return new ApplicationActionBarAdvisor(configurer);
}
public void preWindowOpen() {
IWorkbenchWindowConfigurer configurer = getWindowConfigurer();
configurer.setInitialSize(new Point(400, 300));
configurer.setShowCoolBar(false);
configurer.setShowStatusLine(false);
configurer.setTitle("Hello RCP");
}
}
|
リスト 3. RAP のワークベンチ・アドバイザー
import org.eclipse.swt.graphics.Point;
import org.eclipse.ui.application.ActionBarAdvisor;
import org.eclipse.ui.application.IActionBarConfigurer;
import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
import org.eclipse.ui.application.WorkbenchWindowAdvisor;
public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor {
public ApplicationWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) {
super(configurer);
}
public ActionBarAdvisor createActionBarAdvisor(IActionBarConfigurer configurer) {
return new ApplicationActionBarAdvisor(configurer);
}
public void preWindowOpen() {
IWorkbenchWindowConfigurer configurer = getWindowConfigurer();
configurer.setInitialSize(new Point(400, 300));
configurer.setShowCoolBar(false);
configurer.setShowStatusLine(false);
configurer.setTitle("Hello RAP");
}
}
|
RAP アプリケーションと RCPアプリケーションとの間のもう 1 つの大きな違いは、エントリー・ポイント (Java 言語での main(String[] args) メソッドのようなもの) です。RCP では、org.eclipse.core.runtime.applications 拡張ポイントで IApplication (Eclipse V3.3 より前は IPlatformRunnable として知られていたことに注意) を定義します。RAP でこれに相当するのは org.eclipse.rap.ui.entrypoint 拡張ポイントで、この拡張ポイントが定義するのは IEntryPoint です。RCP コンテキスト (リスト 4 を参照) と RAP コンテキスト (リスト 5 を参照) の典型的なエントリー・ポイントのコードを比較すると、類似点があることがわかります。いずれのコードでも、ワークベンチ・アドバイザーを実行するための表示とワークベンチを作成しています。
リスト 4. RCP アプリケーションのエントリー・ポイント (org.eclipse.core.runtime.applications)
public class Application implements IApplication {
public Object start(IApplicationContext context) throws Exception {
Display display = PlatformUI.createDisplay();
try {
int returnCode = PlatformUI.createAndRunWorkbench(display,
new ApplicationWorkbenchAdvisor());
if (returnCode == PlatformUI.RETURN_RESTART)
return IApplication.EXIT_RESTART;
else
return IApplication.EXIT_OK;
} finally {
display.dispose();
}
}
public void stop() {
final IWorkbench workbench = PlatformUI.getWorkbench();
if (workbench == null)
return;
final Display display = workbench.getDisplay();
display.syncExec(new Runnable() {
public void run() {
if (!display.isDisposed())
workbench.close();
}
});
}
|
リスト 5. RAP アプリケーションのエントリー・ポイント (org.eclipse.rap.ui.entrypoint)
public class Application implements IEntryPoint {
public Display createUI() {
Display display = PlatformUI.createDisplay();
PlatformUI.createAndRunWorkbench( display, new ApplicationWorkbenchAdvisor() );
return display;
}
}
|
よく知られた RCP Mail のサンプル・アプリケーション (図 6 を参照) は、ほとんど変更を加えなくても RAP 環境 (図 7 を参照) で実行することができます。この例から、ワークベンチの概念 (特にビュー、パースペクティブ、エディター) は RAP 内でも使用できることがわかるはずです (各概念のマッピングについては表 1 を参照)。この RCP Mail のサンプル・アプリケーションと前のサンプル・アプリケーションのソース・コードを入手して、いろいろと手を加えてみてください。
表 1. RAP と RCP の比較
| RAP | RCP |
|---|---|
| OSGi(サーバー側) | OSGi |
| SWT (Standard Widget Toolkit) | RWT (RAP Widget Toolkit) |
| JFace | JFace |
| ワークベンチ | Web ワークベンチ |
図 6. RCP Mail の例
図 7. RAP Mail の例
この記事では単純なサンプル・アプリケーションとデモを用いて RAP を紹介しました。RAP では、Eclipse で培った今までのスキルを生かしてリッチ・インターネット・アプリケーションを作成することができます。さらに、デスクトップ (RCP) とブラウザー (RAP) の両方で再利用できるようにコードを構成することもできます。要するに、RAP によって Eclipse がブラウザーと Web 2.0 の仲間に加わったということです。
| 内容 | ファイル名 | サイズ | ダウンロード形式 |
|---|---|---|---|
| Sample code | os-eclipse-richajax.zip | 52KB | HTTP |
学ぶために
-
Eclipse.org にアクセスして RAP (Rich Ajax Platform) の詳細を調べてください。
-
RAP ウィキで新しい機能と拡張ユース・ケースを調べてください。
- 「Eclipse オススメ情報リスト」を読んでください。
- developerWorks ですべての Eclipse 関連記事を調べてください。
- Eclipse の初心者は、developerWorks の記事「Eclipse Platform 入門」を読んでください。Eclipse の起源とアーキテクチャー、そしてプラグインで Eclipse を拡張する方法を学べます。
- IBM developerWorks の Eclipse project resources にアクセスして、Eclipse のスキルを磨いてください。
- ソフトウェア開発者を対象とした興味深いインタービューや討論については、developerWorks ポッドキャストをチェックしてください。
- Eclipse プラットフォームの紹介記事「Eclipse Platform入門」を参照してください。
- developerWorks の Technical events and webcasts で最新情報を入手してください。
- 無料の developerWorks On demand demos で、IBM およびオープンン・ソースの技術と製品機能を調べて試してみてください。
- 世界中で近日中に予定されている IBM オープン・ソース開発者を対象とした会議、見本市、ウェブ放送やその他のイベントをチェックしてください。
- オープン・ソース技術を使用して開発し、IBM の製品と併用するときに役立つ広範囲のハウツー情報、ツール、およびプロジェクト・アップデートについては、developerWorks Open source ゾーンを参照してください。
製品や技術を入手するために
- IBM Eclipse technology downloads at IBM alphaWorks で Eclipse 技術の最新ダウンロードを調べてください。
- Eclipse Foundation から Eclipse Platform およびその他のプロジェクトをダウンロードしてください。
-
IBM 製品の評価版をダウンロードして、DB2®、Lotus®、Rational®、Tivoli®、および WebSphere® のアプリケーション開発ツールとミドルウェア製品を使ってみてください。
-
IBM ソフトウェアの試用版を使用して、次のオープン・ソース開発プロジェクトを革新してください。ダウンロード、あるいは DVD で入手できます。
議論するために
- Eclipse に関する質問を投じる最初の場所として、Eclipse Platform newsgroups があります (このリンクをクリックすると、デフォルト Usenet ニュース・リーダー・アプリケーションが起動され、eclipse.platform が開きます)。
-
Eclipse newsgroups には Eclipse を利用し、拡張することに関心を持つ人達のために、さまざまなリソースが用意されています。
-
developerWorks blogs から developerWorks コミュニティーに加わってください。

Chris Aniszczyk は IBM Lotus の Eclipse コミッターとして、OSGi 関連の開発に取り組んでいます。最近主に専念しているのは、Eclipse のプラグイン開発環境 (PDE) を改善し、IBM Lotus 社内で Eclipse の支持者を増やすことです。 オープン・ソースの熱烈な支持者である彼は、オープン・ソースを広めることを専門としています。自身のブログでは Eclipse の魅力を説き、Eclipse Foundation の役員会では Eclipse コミッターの代表も務めています。ここをクリックすれば、彼は冷たい飲み物を口にしながら、オープン・ソースと Eclipse に関する議論にいつでも応じてくれます。
