連載
» 2004年02月21日 00時00分 UPDATE

Eclipse徹底活用(7):EclipseによるSWTアプリケーションの作成 (1/4)

[金子崇之, 岡本隆史,NTTデータ]

 SWT(Standard Widget ToolKit)とは、Eclipseプロジェクトから提供されているGUI作成用ツールキットです。頭文字「W」のウィジェット(Widget)という単語は、プログラマの間では広く使われている用語で、ボタンやメニュー、スクロールバーといったユーザーインターフェイス(UI)のコンポーネント(構成要素)のことを指します。

 本稿では、SWTの解説と、Eclipseを用いたSWTアプリケーションの作成方法について実践を踏まえて紹介します。

 本文中では、Eclipseのバージョンを2.1.2、Eclipseインストールディレクトリをc:\eclipseとして記述しています。Eclipseのバージョンが上がると、プラグインのディレクトリ名などが変わることがありますので、ご注意ください。

SWTの特徴

 SWTはもともと、米IBMがIDE(統合開発環境)であるEclipse用に開発したツールキットです。Eclipseがオープンソースとして提供されたのに伴い、IDEとともにEclipseプロジェクトから提供されるようlになりました。

 SWTの特徴は以下のとおりです。

(1)軽快な動作
SWTはJNI(Java Native Interface)経由でOSのネイティブAPIを呼び出しているため、軽快に動作します。Eclipse自身もそのUIがSWTで作成されています。Eclipseがここまで広く普及した理由には、SWTの軽快な動作によるところが大きいでしょう。

(2)プラットフォーム・ネイティブなルック&フィール
UIの描画のためにOSのネイティブAPIを呼び出しているため、プラットフォーム・ネイティブなアプリケーションと同様のルック&フィールを実現することができます。

(3)Pure Javaではない
JNIを使用しているため、Pure Javaではありません。そのため、プラットフォームごとにSWT用の共有ライブラリが必要となります。とはいうものの、現状Windows、Linux、Solaris、QNX、AIX、HP-UX、Mac OSX、Windows CEといった幅広いOSにSWTはポーティングされています。さらに、SWTのライセンスは再配布を可能にしていることを考慮すると、Pure Javaではないといっても大きな問題にはならないでしょう。さらに、プログラミング上の注意点としては、各ウィジェットが持つdisposeメソッドが挙げられます。SWTのウィジェットはPure Javaではないため、一般的なJavaオブジェクトのように、確保したリソースがGCによって開放されません。ウィジェットを破棄するときにはdisposeメソッドを明示的に呼び出す必要があります。

(4)アプリケーション・コードはプラットフォーム非依存
アプリケーションは、ShellやButtonなどのSWTのクラスを使用して開発されます。ShellやButtonは、ネイティブAPIを持つクラス「OS」や「Callback」「COM」を通じて共有ライブラリを呼び出し、OSに対し描画を依頼します。アプリケーションからのネイティブAPIの呼び出しは全てJava VM、SWTによって隠蔽されます。そのため、SWTを使用して開発されたアプリケーションは、プラットフォーム非依存となります。ソースファイルだけではなく、従来通りクラスファイルも移植性があります。また、基本的なウィジェットはプラットフォーム非依存ですが、SWTではプラットフォーム固有の技術も利用することが可能です。例えばWindowsでは、IEをActiveXのコンポーネントとして画面に貼り付ける、というような処理もSWTにより行うことができます。

arch.gif

(5)Eclipseのプラグイン開発に必要
EclipseはSWTを用いて実装されているため、Eclipseを拡張するプラグインを開発するためにはSWTが必要です。プラグイン開発では、JFaceというSWTを利用して実装された拡張ツールキットを使用することもできます。この場合でも、JFaceはSWTを完全には隠蔽しないため、SWTの知識が必要となります。

(6)Eclipseと同じ柔軟なライセンス
SWTはEclipseと同じCPL(Common Public License)で配布されています。そのためSWTを使用したアプリケーションのソースコードを公開する義務は無く、ライセンス上の制限(商用利用不可など)もありません。

 このように、Pure Javaではないという点や、現状ではRADツールが数少ないというマイナス面はあるものの、Javaでのクライアントアプリケーション作成においては、その動作速度が非常に魅力的です。

Visual Editor Project発足

現在、SWTのRADツールとしていくつかの商用プラグインが存在していますが、Swing用のツールと比較すると数が少なく、また無料で使えるものは機能も十分とは言えない状況です。

しかし、Eclipseプロジェクトが2003年11月18日に発表したVisual Editor Projectの発足により、この状況は一変する可能性があります。

Visual Editor Projectとは、オープンソースのビジュアルGUI開発環境を作成および提供するプロジェクトです。このプロジェクトでは現在、Swingに対応したリファレンスGUI開発環境を提供しています。そしてSWTにも対応していく予定です。

このVisual Editorは、Eclipse本体と同様にIBMから提供されたソースコードをベースとして開発が始まっています。また、IBMだけではなく、Advanced Systems Concepts、Canoo、Instantiations、Red Hatなども、SWTサポートの実現のためにリソースを提供する予定です。

また始まったばかりのプロジェクトですが、このプロジェクトの成果により、GUIの開発においても、オープンソースのツールのみで商用IDEと同等の生産性を実現できるようになるでしょう。

このプロジェクトの詳細については、Eclipse Visual Editor Plojectのサイト(http://www.eclipse.org/vep/)をご覧ください。


SWTの提供するコンポーネント

 GUIを持つアプリケーションを開発するには、使用するツールキットがどのようなコンポーネントを提供しているかを知っている必要があります。SWTで提供されているコンポーネント(ウィジェットやレイアウトなど)については、本記事の最後の「参考:コンポーネント」で紹介します。Java2標準のGUIコンポーネントであるSwingへの対応も比較として記述しておきますので、参考にしてください。

 なお、各コンポーネントの詳細については、Eclipseのメニューから[ヘルプ]->[ヘルプ目次]で表示されるヘルプウィンドウで、[Platform プラグイン・デベロッパー・ガイド]->[プログラマーズ・ガイド]->[Standard Widget Toolkit]配下のヘルプを参照してください。

SWTの使用方法

 SWTを使用するにはライブラリを入手する必要がありまが、Eclipseを使用して開発を行う場合には、Eclipse本体に付属するライブラリを使用することができます。

 SWTの利用には、以下の2つのライブラリが必要です。

SWTのJavaライブラリ
SWTのクラスが含まれているjarファイルが必要Windowsの場合、以下のjarライブラリが必要となる
C:\eclipse\plugins\org.eclipse.swt.win32_2.1.2\ws\win32\swt.jar

プラットフォームごとの共有ライブラリ
Windowsの場合は以下の共有ライブラリが必要となる
C:\eclipse\plugins\org.eclipse.swt.win32_2.1.2\os\win32\x86\swt-win32-2135.dll

 アプリケーションの配布の際には、アプリケーションのクラスファイル(またはjarファイル)、SWTのJavaライブラリ、プラットフォームごとの共有ライブラリをセットにして配布します。

 またEclipseを使用しない場合でも、EclipseのダウンロードページからSWT単体のライブラリを入手することができます。

 Eclipseのダウンロードページ(http://download2.eclipse.org/downloads/index.php)から、「Latest Release」の「2.1.2」をクリックし、「SWT Binary and Source」の中からプラットフォームに応じたファイルをダウンロードしてください。

SWT単体のライブラリをダウンロードできる「SWT Binary and Source」 SWT単体のライブラリをダウンロードできる「SWT Binary and Source」

SWT用のプロジェクトの作成

 SWTを用いた開発を行うにあたり、Eclipse上でSWT用のプロジェクトを作成します。SWT用、といっても特に難しいことはありません。上記で述べた必要なライブラリの設定を行います。

プロジェクトの作成と設定

 [ファイル]->[新規]->[プロジェクト]で[新規プロジェクト]ダイアログを開き、[Java]->[Java プロジェクト]を選択します。

画面 新規プロジェクト

 [次へ]をクリックし、表示されるページでプロジェクト名を入力します。今回は「swtPrj」と入力しました。

画面 プロジェクト名を入力

 [次へ]をクリックし、表示されるページでビルド設定を定義します。今回は以下のようにしました。

ソース・フォルダ swtPrj/src
デフォルト出力フォルダ swtPrj/bin
画面 ビルド設定を定義

 [ライブラリー]タブをクリックし、SWTのJavaライブラリを指定します。[外部 JAR の追加]ボタンをクリックし、表示される[JAR 選択]ダイアログで[SWTの使用方法]のところで述べたSWTのJavaライブラリを選択します。

画面 JAR 選択

 [終了]ボタンをクリックし、プロジェクトを作成します。

 プラットフォームごとに用意されている共有ライブラリは、SWTを使用したアプリケーションのコーディング時には必要とはなりませんが、起動時やデバッグ時には必要となります。「SWTの使用方法」のところで説明した共有ライブラリを、プロジェクトのディレクトリにコピーしてください。本稿では、C:\eclipse\plugins\org.eclipse.swt.win32_2.1.2\os\win32\x86\swt-win32-2135.dllをC:\eclipse\workspace\swtPrjにコピーしました。

 もし共有ライブラリのコピーを行いたくない場合には、アプリケーションの起動時にJava VMの引数オプションとして「-Djava.library.path=C:\eclipse\plugins\org.eclipse.swt.win32_2.1.2\os\win32\x86」を指定することでも実行できます。

SWTのソースの設定

 SWTのソースをSWTのJavaライブラリにひも付けしておくと、開発中にSWTのクラスのJavadocコメントがポップアップ表示されるので便利です。

 パッケージ・エクスプローラー上の[swt.jar]を右クリック->[プロパティー]でダイアログを開いてください。[Java ソースの添付]->[外部ファイル]を選択し「c:\eclipse\plugins\org.eclipse.platform.win32.source_2.1.2\src\org.eclipse.swt.win32_2.1.2\ws\win32\swtsrc.zip」を指定します。

画面 Java ソースの添付

 SWT単体でダウンロードした場合、ダウンロードしたアーカイブの中にswtsrc.zipが存在するので、それを指定すればよいでしょう。

       1|2|3|4 次のページへ

Copyright© 2016 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

編集部からのお知らせ

@IT編集部では、編集記者を募集しています。ご興味のある方は奮ってご応募ください。

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。