SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

Eclipse RCPとSpringによる実用的なシッククライアントの構築

シッククライアントのGUI構築の省力化

  • このエントリーをはてなブックマークに追加

Eclipse RCP(Rich Client Platform)はシッククライアントアプリケーションを構築するためのフレームワークとして急速に普及しつつあります。本稿では、Eclipse RCPとSpringを活用する方法を解説します。

  • このエントリーをはてなブックマークに追加

はじめに

 世間ではWeb 2.0やRIA(Rich Internet Application)が大流行していますが、投資家向けに機能豊富なWebフロントエンドを構築したとしても、本当に必要なものがシッククライアント(thick-client)の機能である場合には役に立ちません。私の以前の投稿『シッククライアントを配備するためのJavaアプリケーションサーバー基盤の構築』では、従来のJava Webサーバーアーキテクチャを活用してシッククライアントを簡単に配備する方法を紹介しました。

 しかし、RIAの流行を避けて実用的なシッククライアントソリューションを構築するためには、実際にどうしたらよいでしょうか。その答えとなるのがRCP(Rich Client Platform)です。RCPは、Javaデスクトップアプリケーションの世界にフレームワークの概念を持ち込むものです。J2EE/Java EEの世界には以前から数多くのフレームワークが存在し、そこでベストプラクティスの標準化が行われてきました(Spring、Struts、WebWorkなどが良い例です)。今ようやく、Javaデスクトップの世界でもその経験が生かされようとしています。

 RCPは、アプリケーションのスケルトン/シェルと、このシェルに基づいて独自のアプリケーションを構築する際に利用できるモジュールベースのAPIを提供します。メニュー、ツールバー、各種ビューの作成など、基本的な部分はすべてRCPが処理してくれるので、一から作成する必要はありません。自動的に処理してくれる環境があるならば、わざわざ自分でフレームワークを動かす理由はないでしょう。

 本稿では、前回の記事で構築したサーバーに接続するシッククライアントインターフェイスを構築する方法を解説します。Eclipse RCPベースのシッククライアントを構築し、その後でEclipse RCPとSpringを統合します。

必要な環境

  • Eclipse 3.1.2
  • MyEclipse 4.1.1
  • Java SE 5(およびその実用的な知識)
  • サーブレットコンテナまたはJ2EEサーバー(このチュートリアルではTomcat 5.5+を使用)
  • Spring 1.2+(およびその実用的な知識)
  • サンプルコード
補足説明1 Springを入手する
 Spring Frameworkをまだ入手していない場合は、ダウンロードしてインストールしてください。私はSpring1.2.8を選びました。本稿の執筆時点ではこれが最新の安定したリリースでした。必要になるサードパーティライブラリが入っているので、Spring Framework with dependenciesをダウンロードすることをお勧めします。また、リソースとしてソースとjavadocもダウンロードしてください。ダウンロードし終えたら、ファイルを解凍してください。

Eclipse RCPを選ぶ理由

 さて、Javaに初めて触れる方や長いこと遠ざかっていた方のためにお伝えしますが、Eclipseの人気は史上最高です。人気だけでは成功が保証されないというものの、数百万人のユーザー、非常に活発なコミュニティ、高い評判、そしてIBMの支持は悪いものではありません。また、今も数多くのアプリケーションがEclipse RCPベースで開発されているので、手製のフレームワークよりもはるかにしっかりとしたテストが行われると考えてよいでしょう。

 では、始めましょう。

新しいEclipseプラグインプロジェクトを作成する

 次の手順に従って、リッチクライアントアプリケーション用の新しいEclipseプラグインプロジェクトを作成します。

  1. Eclipseで新しいプラグインプロジェクト「EclipseTradeClient」を作成します。このプラグインのフォーマットをEclipseバージョン3.1とし、[Create an OSGi bundle manifest]チェックボックスがオンであることを確認します(図1を参照)。[Next]をクリックします。
  2. 図1 新しいプラグインプロジェクト
    図1 新しいプラグインプロジェクト
  3. [Plug-in Content]画面はデフォルトのままとします。ただし、[Would you like to create a rich client application?]で[Yes]が選択されていることを確認します(図2を参照)。[Next]をクリックします。
  4. 図2 リッチクライアントアプリケーションの作成を選択する
    図2 リッチクライアントアプリケーションの作成を選択する
  5. テンプレートで、[RCP application with a view]を選択し、[Next]をクリックします。
  6. RCPアプリケーションのプロパティを入力し(図3を参照)、[Finish]をクリックします。プラグイン開発のパースペクティブに移動することを確認するプロンプトが表示されます。[Yes]をクリックします。
  7. 図3 RCPプラグインプロジェクトウィザードの最後の画面
    図3 RCPプラグインプロジェクトウィザードの最後の画面
  8. これでプロジェクトの作成は終了です。「plugin.xml」をまだ開いていない場合は開きます。図4に示す画面が表示されます。
  9. 図4 Plugin.XMLの概要
    図4 Plugin.XMLの概要
    Eclipseプラグインに初めて触れる場合は、「plugin.xml」の一番下のタブをよく使うことを覚えておきましょう。[Overview]タブから分かるように、Eclipseリッチクライアントアプリケーションを実行/デバッグすることができます。
  10. EclipseTradeClient/src/eclipseTradeClientパッケージを展開し、EclipseのRCPウィザードによって自動的に作成されたクラスを確認します。Eclipseエディタで、[All Extensions]タブをクリックし、図5のように最上位の各ノードを展開します。
  11. 図5 Eclipseで生成されたクラスとすべての拡張エントリ
    図5 Eclipseで生成されたクラスとすべての拡張エントリ

 Applicationクラス、Perspectiveクラス、およびViewクラスの拡張エントリに注意してください。EclipseのRCPの中心は「plugin.xml」ファイルなので、[Extensions]タブを選択し[Add...]ボタンをクリックするだけで新しいコンポーネントを追加できます(Eclipseによって自動的に提供されるクラスの一覧については、「補足説明2 Eclipseによって生成されるクラス」を参照)。

補足説明2 Eclipseによって生成されるクラス
 Eclipseが自動的に生成するクラスは次のとおりです。
  • Application
  • このクラスは事実上のJavaメインクラスです。アプリケーションを起動すると、最終的にrun(Object args)メソッドが呼び出されます。
  • ApplicationActionBarAdvisor
  • このクラスを使って、ToolbarとMenuBarに追加するためのコードをリンクします。
  • ApplicationWorkbenchAdvisor
  • このクラスで実行する一番重要なことは、デフォルトにするパースペクティブを定義することです。この定義にはメソッドgetInitialWindowPerspectiveId()を使います。
  • ApplicationWorkbenchWindowAdvisor
  • メソッドcreateActionBarAdvisor()ApplicationActionBarAdvisorのインスタンスを作成します(ApplicationXXXAdvisorsという名前のクラスがたくさんありますね)。
  • EclipseTradeClientPlugin
  • これはメインのEclipseプラグインクラスです。ここで作成しているのは、最終的にはEclipseのプラグインです。
  • Perspective
  • これまでにEclipseの使用経験があり、Perspectiveが何かをご存知だとうれしいのですが、そうでなくても、PerspectiveがIPerspectiveFactoryを実装することはお分かりでしょう。javadocには、「パースペクティブファクトリは初期ページレイアウトとページの可視アクションを生成する」と書かれています。Eclipse IDEでPerspectiveを実際に確認するには、[Debug]、[Java]、[Plug-in Development]、[Java]など、右下隅にあるさまざまなPerspectiveをクリックするだけで十分です。また、Eclipseのメニューで[Window]-[Open Perspective]を使う方法もあります。基本的に、パースペクティブは同じ機能を持つビューをグループにまとめるためのレイアウトです。
  • View
  • ビューは基本的にコンポーネントを追加するパネル/パレットです。ビューを作成して1つの機能をカプセル化します。Eclipseでは、メニュー[Window]-[Show View]をクリックすると、IDEが提供しなければならないさまざまなビューが表示されます。例えば、Eclipseには、Package Explorer、Outline、JUnit、Antなどのビューがあります。
 要するに、階層的に表現すれば、ワークベンチはn個のパースペクティブを持つことができ、パースペクティブはn個のビューを持つことができる、ということです。

デフォルトのViewクラスをリファクタリングする

 このように、EclipseのウィザードはViewというクラスを自動的に作成しました。このままでは不便なので、次の手順に従って、このデフォルトのViewクラスをリファクタリングします。

  1. ビューの名前を変更するには、パッケージエクスプローラで「View.java」を右クリックし、[Refactor]-[Rename]と選択します。新しい名前として「ExplorerView」と入力し、[Preview]をクリックします。表示される画面で、PerspectiveクラスがView.IDではなくExplorerView.IDを使うようにリファクタリングされていることを確認します(図6を参照)。[OK]をクリックします。
  2. 図6 Viewクラスの名前をExplorerViewにリファクタリングする
    図6 Viewクラスの名前をExplorerViewにリファクタリングする
  3. 残念なことに、Eclipseのリファクタリング機能は、特にIntelliJの機能と比べると少し貧弱です。IntelliJでこのようなリファクタリングを行うと、指定されたクラスだけでなく、.xmlファイルに対してもリファクタリングが適用されます。余談ですが、これは、特にSpring、Hibernate、XMLなどの構成が重い環境で非常に役立ちます。
  4. 「plugin.xml」でリファクタリングを更新する場合は手動で行わなければなりません。「plugin.xml」を開き、[plugin.xml]タブをクリックします。Viewという拡張を探して、次のように更新します。
    name="ExplorerView"
    class="eclipseTradeClient.ExplorerView"
    id="EclipseTradeClient.explorerView">
    
    更新を終えたら、保存します(図7を参照)。
    図7 リファクタリングの追加作業 - Plugin.XMLを手動で更新する
    図7 リファクタリングの追加作業 - Plugin.XMLを手動で更新する
  5. リファクタリングに必要な作業は以上です――と言いたいところですが、まだ終わりではありません。初期化する静的変数IDをEclipseTradeClient.explorerViewに変更します。これは「plugin.xml」で先ほど設定したIDに対応します。
  6. これで、ようやくリファクタリングは終了です。では、すべて正しく変更されたかどうかテストしてみましょう。エディタで再び「plugin.xml」を開き、[Overview]タブをクリックします。[Launch an Eclipse application]をクリックすると、図8のような画面が表示されるはずです。
  7. 図8 [Eclipse Trade Client]画面
    図8 [Eclipse Trade Client]画面
  8. 次に、ノードの名前を変更します。クラスExplorerViewを開きます。内部クラスViewContentProviderを探し、メソッドObject getElements(Object parent)を変更して、"Watch List", "Order History"の文字列配列を返すようにします。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
アプリケーションにSpring Remotingを追加する

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Stephen Lum(Stephen Lum)

ロンドンの投資銀行の上級開発者。Javaのプログラミング経験は7年に及ぶ。SunのJavaプログラマ認定資格とOracleの開発者認定資格のほか、CPAの資格を持つ。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/528 2006/08/24 00:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング