Rich Ajax Platform: 第 1 回 概要

Eclipse による Web 2.0 の構築

Ajax (Asynchronous JavaScript + XML)、そして Web 2.0 の概念は、Web ベースのアプリケーションにライブ感を与える手法として開発コミュニティーに広く普及しています。RAP (Rich Ajax Platform) は、そんな Ajax 対応の Web アプリケーションを Eclipse 開発モデルを使って構築するための手段です。この記事では RAP の概要として、RAP 開発環境のセットアップ手順を説明し、デモを披露します。そして最後にわかりやすいサンプル・アプリケーションを紹介して記事を締めくくります。

Chris Aniszczyk, Software Engineer, IBM

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



Benjamin Muskalla (bmuskalla@innoopract.com), Software Engineer, Innoopract Informationssysteme GmbH

Benjamin MuskallaBenjamin Muskalla は、ドイツ・カルルスルーエにある Innoopract Informationssysteme のソフトウェア開発者兼コンサルタントです。彼は RAP (Rich Ajax Platform) プロジェクトのコミッターとして、主にワークベンチ実装に取り組んでいます。また、Eclipse プラットフォームにも積極的に貢献しています。



2007年 10月 23日

RAP プロジェクトの狙いは、開発者が Eclipse 開発モデルを使用してリッチ・インターネット・アプリケーションを構築できるようにすることです。「Eclipse 開発モデル」とは具体的に何を意味するのかと言うと、RAP では開発者が Java™ ライブラリーと Eclipse API を最大限活用してブラウザー・ベースの Ajax アプリケーションを構築できるようにしますが、その手段として、Web 対応の SWT、JFace、そして Eclipse Workbench の実装を提供するということです。この記事では、単純なサンプル・アプリケーションを用いて RAP を紹介します。

2 ステップのみのセットアップ

RAP のセットアップは至って簡単です。必要なステップは 2 つだけで、最初のステップで RAP をダウンロードし、そして次のステップで Eclipse が RAP を使うように構成します。

ステップ 1: RAP をダウンロードする

Eclipse.org から RAP を入手してください。その際には、最新の安定したマイルストーンを選ぶことをお勧めします。この記事では 1.0 リリースを使用しました。RAP ターゲット・プラットフォームが含まれるアーカイブ・ファイルをダウンロードしたら、ディレクトリーを選択してそこにファイルを解凍します (図 1 を参照)。ここで選択するディレクトリーは重要です。なぜなら、このディレクトリーが次のステップでターゲット・プラットフォームを設定するときに使用するディレクトリーとなるからです。

図 1. RAP ターゲット
RAP ターゲット

ステップ 2: ターゲット・プラットフォームを設定する

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 と Google Web Toolkit との違い

GWT (Google Web Toolkit (GWT)) と RAP はどちらも Java を使ってリッチ・インターネット・アプリケーションをコーディングできるという点では似ていますが、この 2 つには大きな違いがあります。それは、GWT はクライアント上で動作する一方、RAP は主にサーバー上で動作するという点です。サーバー上で動作する RAP では、すべての Java API にアクセスし、OSGi を介して有名な Eclipse プラグイン・モデルを利用することができます。また Eclipse の観点からすると、GWT はスタンドアロンの SWT アプリケーション (単なるウィジェット・ツールキット) のようなものですが、RAP では Web アプリケーションに RCP スタイルの手法を適用できるという違いがあります。


デモ

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 の起動構成
RAP の起動構成

これでブラウザーを立ち上げて http://localhost:8000/rap?startup=controls にアクセスすると、コントロールのデモが表示されるはずです (図 4 を参照)。このデモは、SWT Examples のセットに含まれる有名な ControlExample に基づいています。

図 4. RAP のコントロールのデモ
RAP のコントロールのデモ

サンプル・アプリケーション

ここからは、PDE に用意された RCP (Rich Client Platform) テンプレートに基づく 2 つの例を見ていきます。

Hello World の例

Hello World は、従来から決まって使われるプログラミング・サンプルです。まず始めに、単純な RAP アプリケーションを実行させるのに必要な作業から取り掛かります。

図 5. RAP バージョンの Hello World
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 の例

よく知られた RCP Mail のサンプル・アプリケーション (図 6 を参照) は、ほとんど変更を加えなくても RAP 環境 (図 7 を参照) で実行することができます。この例から、ワークベンチの概念 (特にビュー、パースペクティブ、エディター) は RAP 内でも使用できることがわかるはずです (各概念のマッピングについては表 1 を参照)。この RCP Mail のサンプル・アプリケーションと前のサンプル・アプリケーションのソース・コードを入手して、いろいろと手を加えてみてください。

表 1. RAP と RCP の比較
RAPRCP
OSGi(サーバー側)OSGi
SWT (Standard Widget Toolkit)RWT (RAP Widget Toolkit)
JFaceJFace
ワークベンチWeb ワークベンチ
図 6. RCP Mail の例
RCP Mail の例
図 7. RAP Mail の例
RAP Mail の例

まとめ

この記事では単純なサンプル・アプリケーションとデモを用いて RAP を紹介しました。RAP では、Eclipse で培った今までのスキルを生かしてリッチ・インターネット・アプリケーションを作成することができます。さらに、デスクトップ (RCP) とブラウザー (RAP) の両方で再利用できるようにコードを構成することもできます。要するに、RAP によって Eclipse がブラウザーと Web 2.0 の仲間に加わったということです。


ダウンロード

内容ファイル名サイズ
Sample codeos-eclipse-richajax.zip52KB

参考文献

学ぶために

  • 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 ゾーンを参照してください。

製品や技術を入手するために

議論するために

  • Eclipse に関する質問を投じる最初の場所として、Eclipse Platform newsgroups があります (このリンクをクリックすると、デフォルト Usenet ニュース・リーダー・アプリケーションが起動され、eclipse.platform が開きます)。
  • Eclipse newsgroups には Eclipse を利用し、拡張することに関心を持つ人達のために、さまざまなリソースが用意されています。
  • developerWorks blogs から developerWorks コミュニティーに加わってください。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Open source
ArticleID=270203
ArticleTitle=Rich Ajax Platform: 第 1 回 概要
publish-date=10232007