
第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上で行うので、見た目が良くない、ということです。
|
|
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のビルド(バージョン)によって前提となるもののバージョンが違いますので、気を付けてください。
- Java
Runtime Environment 1.4.2以上
各社(IBM、Sun、BEA)から提供されているJREがリストされています。
- Eclipse build
eclipse-SDK-3.1.1
- EMF
Build 2.1.1
- GEF
Build 3.1.1
- VE
Build 1.1.01
EMF(Eclipse Modeling Framework)は、Eclipse上でさまざまなエディターを作るときに、エディター上のモデル情報を共有するための強力なフレームワークです。VEがビジュアルエディターとソースコードエディターとの間で画面の設計情報を共有するために利用しています。
GEF(Graphical Editing Framework)は、Eclipse上でグラフィカルエディターを作るためのフレームワークです。エディター上でドラッグ&ドロップ可能な部品を表示し、線で結合するようなツールを作る手助けをします。
- JVMおよびEclipseのモジュールをダウンロードします
- Javaはそれぞれのインストール手順に従ってインストールしてください
- ダウンロードした各ZIPファイルを適当なディレクトリに展開します
- 展開すると、中にはpluginフォルダとfeaturesフォルダがあります。このそれぞれのフォルダの中身を、Eclipse本体がインストールされた場所の同じ名前のフォルダ下にコピーします
- 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/ |
米持先進技術工房−@IT分室 バックナンバー
| Java Solution全記事一覧 |
ホワイトペーパー(TechTargetジャパン)
- Android NDKでJNIを使用してアプリを高速化するには (2010/3/17)
C/C++やOpenGL ESといったネイティブコードを使うためのNDKとJNIを紹介し、その使い方や注意点を徹底解説します - 調査の難しい「OutOfMemoryError」事例、5選 (2010/3/11)
Java開発者が避けて通れないメモリ不足エラーの基本的な問題切り分け方法と発生につながる事例、対処法を解説 - 究極の問題解析ツール、逆コンパイラJD-Eclipseとは (2010/3/8)
ライブラリ内で例外が発生! そのクラスのソースコードを調べたい!! 自動で逆コンパイルしてくれる無料Eclipseプラグインがあります - いまさら聞けない「Webサービス」の常識 (2010/2/26)
昨今では企業システムでも使われる「Webサービス」の概念やJava標準のJAX-WSを紹介しJBoss WSでサンプルを作成
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
| 「いつかは壊れるサーバ」そんな故障に 迅速で安価に手軽に対応する方法とは? New! |
| 「特権ユーザー」の事件を防げ! 万能権限を持つユーザーの管理方法とは? New! |
| 仮想環境の構築とデータ保護の特効薬?! 実績と信頼性の高いパッケージで安心運用 |
| 仮想環境のバックアップもこれまでどおり 「まるごと取ってまるごと戻す」簡単運用 |
| おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |
| その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |
| 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |
| 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | TomcatやJBossなどAPサーバ環境に関する 情報を集約! “業務”用APサーバ大百科 New! |
| ◆ | 一気に解説! 最新のクラスタストレージ 「RAIDを超えたストレージ基準」……など New! |
| ◆ | クラウド的ユーザー体験の変化は脅威か? 仮想化技術を使いこなす運用管理術を紹介 New! |

| ◆ | 上司や部下、部署内メンバーとの情報共有 を“ガラッ”と変えるコラボツールとは? New! |
| ◆ | おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| ◆ | 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |

| ◆ | Twitterのアカウントはなぜ突破された? メールによる新手の攻撃手法とその対策 |
| ◆ | もう仮想化のお試しフェイズは終わりだ! Hyper-V 2.0が基幹システムも仮想化 |
| ◆ | 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |

| ◆ | クライアント企業から求められる人材 ⇒IT技術と経営戦略を併せ持つ「戦略家」 |
| ◆ | .NET編集長が実践する「技術情報検索術」 サンプル・コードを簡単に探す“技”は? |
| ◆ | 業務効率と情報セキュリティ対策を両立! 手間なく確実に機密情報を守る方法とは? |

| ◆ | 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |

| ◆ | 【CTC事例】約30の基幹システムを統合! 膨大なバッジジョブを制御した方法は? |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |
| ◆ | その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |











