第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/ |
Java Solution全記事一覧 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|