オルタナティブ・ブログ > The Grouchy Bug >

米国東海岸発、とあるソフトウェア開発者のよもやま話

IBM Project Vulcanと今後のクライアントUIテクノロジー(その2)

»

前回は、IBM Project Vulcanの概要についての話をしました。IBM Project Vulcanは、リッチクライアント(デスクトップクライアント)とウェブブラウザバージョンがあり、どちらも同じUIを表示することができます。


どうやって、リッチクライアントとウェブブラウザで同じUIを表示できるのか?
では、どうやって、リッチクライアントとウェブブラウザで同じUIを表示できるのでしょうか?
結論を言ってしまうと、これはUIをHTML/JavaScriptで作ることで同じUIを表示しています。どちらもHTML/JavaScriptでUIを作れば、同じUIが表示されるのは当然です。では、リッチクライアントではどのようにしてHTML/JavaScriptを表示しているのでしょうか。


Lotus製品とEclipse RCP
現在のIBM Lotus製品、Lotus Notes(コラボレーション)、Lotus Symphony(ワープロ、表計算、プレゼンテーション)、Lotus Sametime(メッセージング)は、すべてリッチクライアントベース、Eclipseベースです。EclipseはIBMによって開発されたオープンソースの統合開発環境(IDE)の一つであり、プラグイン次第で、Java, C/C++, Webアプリケーションなどの開発が可能です。Eclipse自体はJavaで作られています。EclipseからIDEのプラグインを除いたプラグインで、リッチクライアントやデスクトップアプリケーションを作成するのに必要な最小限のプラグインをEclipse RCP(Rich Client Platform)と呼びます。上記のIBM Lotus製品は、このEclipse RCPベースで作られています。

Eclipse RCPの中でも、特にUIを作るのに重要な3つのレイヤー(プラグイン)があります。一番下のレイヤーから、ウィジェットやコントロールがあるSWT(org.eclipse.swtプラグイン)、SWTをラップしたり、各種UIリソースをキャッシュするJFace(org.eclipse.jfaceプラグイン)、UIのエクステンションポイントを実装したり、ビューパートやパースペクティブを実装するEclipse UI(org.eclipse.ui.workbenchプラグイン)です。


SWT Browserクラスが重要なコンポーネント
この中で重要になってくるのが、SWTのBrowserクラスです。Browserクラスを使えば、リッチクライアントのウィンドウの中にMSIE(Windowsの場合)やMozillaやSafari(Mac OS Xの場合)を簡単に埋め込むことができます。例えば、

Browser browser = new Browser(parent, SWT.NONE);
browser.setText("<html><body>Hello World</body></html>");

というコードだけで、ウィンドウの中にブラウザを埋め込み、そのなかにHTMLでHello Worldと表示することができます。

Eclipse3.1では、Browserクラスにexecute()というメソッドが追加され、プラグインのJavaのコードから、埋め込まれたブラウザのHTML/JavaScriptコードを呼び出すことができるようになりました。そして、去年2009年の6月にEclipseのバージョン3.5がリリースされたとき、SWTにBrowserFunctionというクラスが新しく実装されました。これにより、埋め込まれたブラウザのHTML/JavaScriptコードから、プラグインのJavaのコードを呼び出すことができるようになり、ここで、初めて、埋め込まれたブラウザ内のHTML/JavaScriptコードとプラグインのJavaのコードを相互に呼び出すことが可能になったのです。

これらSWT Browserクラスの機能拡張により、Eclipseベースのリッチクライアントは、HTML/JavaScriptで、UIを作成できるようになり、ブラウザとプラグインでデータを受け渡すことができるようになりました。IBM Project Vulcanは、このような仕組みで、リッチクライアントとウェブブラウザで、どちらも同じUIを表示しています。


なぜウェブブラウザとリッチクライアントの2つのバージョンがあるのか?
ウェブブラウザのみ使うというのは、今のクラウドというトレンドからみれば自然のことです。アプリケーションがすべてブラウザベースなら、アドミニストレータはそれぞれのマシンにアプリケーションをインストールする必要がありません。

逆に、ウェブブラウザを使わずにリッチクライアントでHTML/JavaScriptを表示することには意味があります。これは、主にブラウザでできないことをやりたいと言った場合です。常にOSのAPIと、ブラウザ/HTML/JavaScriptのAPIには、できることに差があります。これらの差を埋めたいという場合に、リッチクライアントでSWTのBrowserクラスを使ったHTML/JavaScriptの表示というのも有効です。また、リッチクライアントでアプリケーションを作りたいんだけど、SWTやEclipseってむずかしいといった場合も、UIをなじみのあるHTML/JavaScriptで作成するということも可能です。また、Lotus Notesクライアントなどの既存のリッッチクライアントでもUIを表示したいといった場合にも有効です。


ということで
長くなってしまいましたが、クライアント(もしくはデスクトップアプリケーションの)UIの形態としては、UIはHTML/JavaScriptで書いて、埋め込みブラウザで表示するというのも1つのパターンになりえるというのがIBM Project Vulcanが示した数々の方向性の中の1つです。Lotus製品で使われているEclipse RCPは、実は、通常のデスクトップアプリケーションを作成するのにも非常に有効です。異なるOSのAPIを気にせずに、また細部の実装を気にせずに、デスクトップアプリケーションを作成できるのはEclipse RCPの強みです。

IBM Project Vulcanは今後さらに進化を続けることでしょう。IBM Project Vulcanは、Lotus製品全体のビジョンです。IBM Lotusでは、複数のいろんな開発チームがこのあたらしいビジョンに向けて、取り組み始めたところです。今後、どうなるか注目していただければと思います。

Comment(2)