第2回 EclipseのVEでSWTアプリを作る
(前編)

米持幸寿
2005/11/17


米持先進技術工房 @IT分室では、テクノロジー・エバンジェリスト 米持幸寿氏が、J2EEの最新技術情報を提供します。最新技術の中身をいち早くキャッチアップしたい読者のためのコーナーです。

 EclipseのVisual Editor(以下VE)は、Javaのユーザーインターフェイス用のパネルを編集するためのWYSIWYGエディタです。もともとはIBM WebSphere Studioの一機能でしたが、現在はeclipse.orgにてオープンソース化されています。

 Visual Editor は、Eclipse SDK(Software Development Kit)に追加するJava開発用のツールです。AWT、Swing、SWTの3種類のUIツールキットに対応しています。

 今回から2回に分けて、VEを使ってSWTアプリ(パネル)を作成する手順を紹介しましょう。

SWTとは何か

 SWTは、Eclipseの最もコアとなるウィンドウ・ツールキットです。ウィンドウ・ツールキットとは、ウィンドウ・システムにおける基本的なUI部品のセットです。

 ウィンドウ・システムは通常、単純にウィンドウを管理・表示するだけの機能を提供します。ただし、それだけだとウィンドウは「後ろに隠れているウィンドウをクリックしたら前に出る」というような基本動作をしてくれません。ウィンドウ・アプリケーションは、そういった処理をマウスイベント処理などを適切に行うことで個別に行わなければなりませんし、すべてのウィンドウの描画は、描画用のグラフィックAPIで行わなければなりません。

 そこで、ウィンドウ・システムにはすべてのウィンドウに共通の機能をアドオンして追加しています。例えば、ウィンドウの枠をドラッグして大きさを変えられたり、タイトルバーをドラッグして移動したり、といった機能です。このような機能を提供するウィンドウ・システムの要素を「ウィンドウ・マネージャ」といいます。Windowsの場合はWindows自身がウィンドウ・マネージャーの働きをします。OS/2の場合はPM(プレゼンテーション・マネージャー)です。Linuxの場合は非常に多くのウィンドウ・マネージャーがあり、提供しているディストリビューターによって違いますが、Motifというのが有名であり、今日ではGNOMEが多いでしょうか。

 さらに、ウィンドウ・システム全体で共通に使える、一般的な動作をするウィンドウの種類(ウィンドウクラスといいます)をあらかじめ用意して、再利用できるようにしています。このウィンドウクラスのセットを、一般的に「ウィンドウ・ツールキット」といいます。一般的に、フレームウィンドウ、ダイアログボックス、テキストフィールド類、ボタン類、リストやテーブル、ツリー表示などの部品が用意されています。

 これらのウィンドウは、ユーザー・インターフェイス(UI)をつかさどるソフトウェア部品と考えられることから、UIコンポーネントと呼びます。

 Win32やOS/2のPM-APIなどのようなネイティブのAPIには、あらかじめウィンドウ・ツールキットが提供されています。Linuxなどに採用されているX Windowなどでは、X11R6ライブラリや、Motifウィジェットといったツールキットがあります。

 Javaには次の2つのウィンドウ・ツールキットがあらかじめ用意されています。

図1 AWTの部品
Javaでは、コアのライブラリに Abstract Window Toolkit(以下AWT)が用意されています。java.awtライブラリに含まれています。
AWTは、非常にシンプルなAPIで、使うのは簡単ですが、機能が低く、描画などの性能も低く、見た目も良くないなど、あまり高度なウィンドウ・システムには向きません

図2 Swingの部品
Java2からSwingライブラリというツールキットが追加されました。ライブラリはjavax.swingです。Swingでは、AWTにはなかったラジオボタン、パスワードフィールド、スライダー、コンボボックス、ツリー、テーブル、プログレスバーといった部品を加えることで、高度なウィンドウ・アプリケーションが作れるようになりました

 Javaのウィンドウ・ツールキットとして標準で提供されているAWTとSwingですが、共通の欠点があります。それは、どちらのウィンドウ・ツールキットもPureJava(すべてのウィンドウ処理をJavaで行う)という設計のため重く、描画をすべてJava上で行うので、見た目が良くない、ということです。

図3 SWTの部品
図4 SWTのコンテナ

 SWTは、EclipseのベースとなるEclipse独自のウィンドウ・ツールキットです。機能は、Windows、X-Windowの共通部分を抜き出したようなものとなっています。このツールキットの特徴は、PureJavaではなく、ネイティブAPIを使うことにあります。例えば、Windows上でSWTを使う場合、Win32に存在するウィンドウ部品はWin32によって動作します。Linuxで動作させる場合、X-Window(実際には、GTKというライブラリ)に存在する部品はGTKによって動作します。SWTに存在し、ネイティブAPIに存在しないウィンドウ部品(例えば、Linux上でのツリー表示)は、PureJavaでエミュレートします。

 このような構造をしているため、SWTのウィンドウ部品はネイティブAPIの部品そのものですので、非常に性能が良く、見た目もきれいです。Eclipseの成功には、SWTの存在が欠かせなかったといえるでしょう。

 Eclipseが発表されてから、このSWTをJavaのデスクトップアプリケーション(ウィンドウ・システム上で実行されるソフトウェアという意味)に使いたいというニーズが高まり、Eclipseの最低限の実行環境のみを分離したEclipse RCP(リッチ・クライアント・プラットフォーム)ができました。これは、リッチクライアントアプリケーションを作るために利用できるEclipseのランタイムです。

Eclipse SDKとVEのインストール

 この記事の執筆時点では、VEのバージョンはv1.1.01が最新ですので、これを使って手順などをご紹介します。以前のものに比べると、かなり使いやすくなっています。v1.1.01はEclipse 3.1を前提とするため、Eclipse 3.1を使います(Eclipseの最新バージョンはEclipse 3.1.1)。

 Eclipseのセットアップは、「連載:Eclipse3.1を使おう」を参照してください。

 VEの最新のビルドは、EclipseのVEのサイトから入手可能です。

 VEを動作させるには、同時にいくつかのプラグインをインストールする必要があります。VEのビルド(バージョン)によって前提となるもののバージョンが違いますので、気を付けてください。

 EMF(Eclipse Modeling Framework)は、Eclipse上でさまざまなエディターを作るときに、エディター上のモデル情報を共有するための強力なフレームワークです。VEがビジュアルエディターとソースコードエディターとの間で画面の設計情報を共有するために利用しています。

 GEF(Graphical Editing Framework)は、Eclipse上でグラフィカルエディターを作るためのフレームワークです。エディター上でドラッグ&ドロップ可能な部品を表示し、線で結合するようなツールを作る手助けをします。

  1. JVMおよびEclipseのモジュールをダウンロードします
  2. Javaはそれぞれのインストール手順に従ってインストールしてください
  3. ダウンロードした各ZIPファイルを適当なディレクトリに展開します
  4. 展開すると、中にはpluginフォルダとfeaturesフォルダがあります。このそれぞれのフォルダの中身を、Eclipse本体がインストールされた場所の同じ名前のフォルダ下にコピーします
  5. eclipseフォルダの「eclipse.exe(Windowsの場合)を実行すると、Eclipseのワークベンチが起動します

 ところで、VEは、IBM Rational Application Developer(RAD)などの一部のベンダー製品にはあらかじめインストールされています。

 今回はここまでです。次回はVEを使ってSWTのパネルを作成します。

筆者プロフィール
米持幸寿(よねもち ゆきひさ)
1987年に日本アイ・ビー・エム入社。メインフレームOS、ミドルウェアの障害対応、障害解析ソフトウェアの開発、ワークフローシステム開発、オブジェクト指向開発、Web開発などを経験。2000年より、ソフトウェアのテクノロジー・エバンジェリストとして活動中。


米持先進技術工房
テクノロジー・エバンジェリストとして活躍する米持氏が主催する、J2EEの最新技術情報を提供するWebサイト。
http://www-6.ibm.com/jp/developerworks/tips/ytech/

 


Java Solution全記事一覧



Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間