メニューボタン
IBMi海外記事2009.10.20

RDiを拡張してソフトウェア開発ツールキットを強化する

ウィム・ジョングマン 著

SQLによるRPGアプリケーションの簡素化

PDM、SDA、SEUの代わりとなるIBMの新しいソフトウェア開発用ツールキットを既にお試しになった部署も多いでしょう。このツールキットは元々WebSphere Development Studio Client for i (WDSCi)として登場しましたが、今はRational Developer for i (RDi)と呼ばれています。

RDiをワークベンチとして使用するのであれば、ちょっと微調整を加えてみたくなるでしょう。さらにこの新しいツールキットの中で使用したくなるようなたくさんの気の利いたユーティリティがあるのにお気づきになるでしょう。この連載記事ではRDiを微調整して拡張する方法について説明します。私は(最新の)バージョン7.5を使用しています。IBMがリモート・システム・エクスプローラ(RSE: Remote System Explorer)を改良したため、ここで私がご紹介するコードは古いバージョンのワークベンチでは正しく動作しません。[ヘルプ/RDiについて]メニューをクリックすれば、ご自分がお使いのワークベンチのバージョンを確認することができます。これから説明をする際には変更箇所を示すようにします。3回の連載記事の中では、コードをご紹介する前にその基礎をなす理論について説明します。この連載の第1回目である本稿では、Javaを使った開発経験がありRDiを使ったことがある開発者を対象としています。しかし、i OSとRDiの違いについては適宜触れますので、経験豊かなプログラマであれば私の説明をご理解いただけるはずです。

拡張

PDMを拡張するのはとても簡単です。ユーザー・オプションを選択し、自作のプログラムを添付すれば後はPDMに任せておけばよいのです。ユーザー・オプションのパラダイムはPDMに実にうまくフィットします。それは、アクションがすべからくサブファイル・オプションまたはコマンド・キーを基本としているからです。ユーザー・オプションはRDiの本質的な部分でもありますが、RDiを「拡張」しているようには見えません。ユーザー・オプションを使用するのはワークベンチに対して機能を容易に追加できるものの気の利かない方法で、RSEの中でのみ有効です。

i上でプログラムを呼び出すのは難しくはありませんが、プログラムとどのようにやり取りするのかを理解するのは簡単ではありません。確かに皆さんはJavaの使用経験があるので、新しいJava仮想マネージャ(JVM: Java Virtual Manager)を起動してそこでいろいろできるのかもしれませんが、これでは強固なインテグレーションとはいえません。RDiをツールの主要な部分としたい、あるいはRDiと同じようなリッチ・クライアント・プログラムをRDiとは関係なく自分で記述したいのであれば、本稿が手がかりとなるでしょう。最初のうちは、このテクノロジーを理解するには辛抱が必要です。しかし要領さえつかんでしまえばその見返りは大きいでしょう。RDiをSDKに変換してRDi自身を拡張する方法を説明し、同時に、RDiのリッチ・クライアント機能についても吟味します。

理論:EclipseとLEGO

EclipseはRDiクライアントの基礎をなすものでありJavaのリッチ・クライアントを構築するのに理想的なプラットフォームです。リッチ・クライアントとはウェブ・ブラウザ上ではなくPC上で実行されるプログラムです。リッチ・クライアントはすべて同じコードを必要とするので、まったくゼロから構築するのではなく基本要件を提供してくれるフレームワークからスタートするのが賢明です。リッチ・クライアント・アプリケーションの標準的なビルディング・ブロックには、メニュー・システム、ヘルプ・システム、情報を表示させるためのビュー、クリック可能になっているアイコンあるいはステータスバーなどがあります。Eclipseはこうしたビルディング・ブロックのすべてをリッチ・クライアント・プラットフォーム(RCP: Rich Client Platform)というフレームワークで提供しています。RCPはLEGOのブロック・ビルディング・フォーマットのようにプログラマがビルディング・ブロックを入手してそれらのブロックをクリックしてまとめることでまったく新しいアプリケーションを形成できるようなシステムを提供しています。そしてLEGOシステムの場合とまったく同様に、完成させてもまた他の人がやってきて「完成したアプリケーション」にさらに他のレンガを持ってきてそれを拡張することができます。

実践:自分の開発環境を構築する

まず初めに、私たちはこれからアプリケーション開発の新しいフィールドに入っていくのであることを理解しておきましょう。カスタマイズ可能な開発環境の特徴として、事が悪い方に向かう可能性があるということがあります。たとえば、必要なコードをダウンロードするときに間違えるとRDi 7.5をインストールしたことが無駄になってしまう場合があります。そのようなことは99.9%起こらないと思いますが、それでもなおRDi 7.5を再インストールする準備はしておいてください。あるいは実運用の目的に使用していないマシン上にRDi 7.5をインストールするようにしてください。

さて、ここまではご理解いただけているでしょうか。では新しいワークスペースから始めましょう。まずRDiを起動して[ファイル/ワークスペースの切り替え/その他...]を選択します。新しいワークスペース・ディレクトリを作成するようプロンプトが表示されます。すべてのワークスペースを一緒にしておくと便利です。私の場合はすべてのワークスペースを自分のホームディレクトリ内に[Workspaces]という分かりやすい名前を付けたディレクトリに保存しています。皆さんもこれを真似すると良いかもしれません。ワークスペース・ディレクトリを作成したら、ワークスペース・ディレクトリのロケーションを作成することができます。図1に示すように、ホームディレクトリまたは選択したディレクトリ内に[Workspaces\RDi Article\]を作成してください。

RDiには優れたツールがたくさん集められていますが、残念なことにIBMはEclipse SDKの非常に重要なパーツを含めませんでした。したがって、まず初めにこれらのパーツをインストールする必要があります。これには[ヘルプ]メニューから[ソフトウェアの更新...]を選択します。まず[インストールされているソフトウェア]タブをクリックし、[Eclipseプラットフォーム]の後にバージョン番号がついている行を探してください。このバージョン番号の最初の部分を覚えておいてください。おそらく「3.4.1」となっているはずです。[利用可能なソフトウェア]タブをクリックし、[利用可能なソフトウェアの最新バージョンのみ表示]のチェックを外し、[既にインストールされているアイテムも含む]にチェックを入れます。そして検索ボックスに「rcp」と入力します。「Eclipse RCP」と「Eclipse RCP Plug-in Developer Resources」を探してください。もしこの2行が見当たらないときは[サイトの追加...]ボタンを使用してhttp://download.eclipse.org/eclipse/updates/3.4というアドレスのサイトを追加してください。[利用可能なソフトウェア]に上記の2つの行が見つかったら、それを選択して[インストール...]をクリックし、画面通りに進んでください。この2つの行が「Eclipse Platform」のバージョン番号と一致していることを確認してください。私のマシンにインストールされているのは(皆さんの場合もおそらく同様だと思いますが)Eclipse 3.4.1をベースとしています。図2を見て画面と比べてみてください。「Exlipse Platform」のバージョン番号より高いバージョンや低いバージョンのソフトウェアは選択しないでください。インストーラーがダウンロードを開始したらコーヒーでも飲んで待っていてください。

実践:RCPアプリケーションの例を作成する

EclipseとRDiはプラグイン開発環境(PDE: Plug-in Development Environment)と呼ばれているツール群と一緒になっています。RCPウィザードを起動するとRCPアプリケーションの例を作成することができます。RDiを起動してCTRL+Nを押すと[新しいウィザード]ダイアログが開きます。このダイアログには何か「新しいもの」を作る際に使用するあらゆるウィザードが含まれています。

「プラグ」というタイプが書いてあるボックス中で[プラグイン・プロジェクト]ウィザードを選択し、[次へ]をクリックします。プロジェクト名として「com.remainsoftware.test」と入力してください。これはプラグインの命名規則(ドメイン名を逆にしてプラグイン名をつける)に従ったものです。[次へ]を選択して表示されたページで「リッチ・クライアント・アプリケーションを作成しますか」という質問に対して[はい]をクリックしもう一度[次へ]をクリックします。利用可能なテンプレートの中から「RCPメール・テンプレート」を選択して[完了]をクリックします。続いて表示されるダイアログ(関連するパースペクティブをオープンする)で[はい]を選択するとプラグインの開発に有用なビュー群が表示されます。

エディタ・エリアに表示されるフォームの中に、「テスト」というセクションがあります(図3)。「Eclipseアプリケーションの起動」というリンクを探してクリックします。すると図4に示すようなスタンドアローンのRCPアプリケーションが起動され、いくつかのメーリング・アプリケーション用のフレームワークとして使用することができます。

これをEclipseアプリケーションまたはRDiアプリケーションだとわかる人はいませんが、このアプリケーション例とRDiは共にEclipse RCPという同じフレームワークを共有しています。皆さんもRCPをアプリケーションのベースとして使用することができます。

理論:プラグイン

EclipseやRDiを拡張するにはプラグイン(別名バンドルとも呼ばれている)を作成しなければなりません。RDiの機能はすべてプラグインとして提供されていて、大まかに言えばライブラリと比較することができます。プラグインは常に他のプラグインに依存しており、これはライブラリ・リスト中のライブラリと同様です。RDi用のプラグインの見ごたえのあるリストはRDiをインストールした箇所の「SDP70Shared/plug-ins」ディレクトリまたは「SDPShared/plug-ins」ディレクトリにあり、これを表示させることができます。プラグインはコードのどの部分を他のプラグインに見えるようにするか、他のプラグインのどの部分に依存するかを定義します(図5)。これはファイルMANIFEST.MF中のプラグインのMETA_INFディレクトリで定義されています。

i5の用語ではこれは次のように言っているのと同じです。「もしライブラリ・リストに追加されたら100個のプログラムのうちの10個だけに呼び出しを許可し、QSYSとQTEMPが両方含まれているライブラリ・リストだけにこのプラグインを追加すること。」RDiがプラグインの要件を満たすことができない場合はそのプラグインはアクティブにならず、RDiはそのプラグインなしで起動されます。

実践:マニフェスト・エディタを探検する

前述の実践セクションにかかれていたステップを実行したら、表示されるフォーム・エディタの[依存]タブをクリックします。このエディタは「マニフェスト・エディタ」と呼ばれ、MANIFEST.MF、plugin.xml、build.propertiesの3つのファイルを同時に編集することができます。このプラグインはorg.eclipse.uiとorg.eclipse.core.runtimeという他の2つのプラグインに依存している点に注意してください。このエディタをクローズした後は、作成したプラグインのMETA-INFディレクトリにあるMANIFEST.MFファイルをダブルクリックしてこのエディタを再度オープンすることができます。

さて図4に示した起動中のRCPアプリケーションをもう少し詳しく見てみましょう。2つのビューとアイコンバーに2つのアイコンがあるのがわかります。アイコンの上にマウスを持っていくと、特定のキーの組み合わせが使用できるという意味のツールチップが表示されます。また、アプリケーションをクローズしたり、アプリケーションの新しいインスタンスを起動したり、アプリケーションの情報を入手したりするメニュー項目もあります。

メニュー・バーとアクション・バーは生成された*Advisor Javaクラスで設定され、ビューのロケーションはPerspectiveクラスによって配置されます。このコードを調べてメニュー項目を外すなどの修正を加えてアプリケーションを再起動してください(図3)。

理論:Eclipseのマジック

マニフェスト・エディタの拡張ページを開くとEclipseがそのマジックをどのように提供しているかがわかります。EclipseとRDiの中には大量の拡張ポイントが提供されていて、独自のアクション・アイコン、メニュー項目、ビューなどを提供することができるようになっています。org.eclipse.ui.viewsというツリー項目を拡張した場合(図6)、小さなメール・アプリケーションに2つのビューが表示されます。メッセージ・ビューを選択すると以下のフィールドが表示されます。

  • id ― Eclipseがこのパーツを参照するのに使用するユニークなID(ビューやエディタはパーツとして参照されます)
  • 名前 ― ウィンドウのタイトルに表示される名前
  • クラス ― ビューのライフサイクルを制御しているJavaクラス。ViewPartをサブクラスとして持ちます。
  • カテゴリ ― このビューが「ビューの表示」ダイアログ(ウィンドウ/ビューの表示/その他)で表示される際のカテゴリ

「org.eclipse.ui.views」拡張ポイントを選択すると、「拡張ポイントの詳細を表示」リンクをクリックすることで拡張ポイントの全てのヘルプと例をオープンすることができます。ヘルプが表示されない場合はRDiのSDK部分がインストールされていないことになります(図2を参照)。

PHPがIBM iプラットフォーム上で初めて利用可能になったとき開発者がZend Studioを使用した主な理由は、Zend StudioがZend Coreランタイム・エンジンを開発したZend社から提供されていることと、IBM iを使用している顧客に無償で提供されたことです。Zend社の開発環境の最新版はZend Studio for Eclipseです。Zend Studio for Eclipseはその前身のZend Studioと同様に、IBM iを使用している顧客に対してzend.comのウェブ・サイトから無償で入手することができます。本稿では以降Zend Studio for Eclipse i5を簡単にZend Studioと記します。

今後

本稿ではEclipseとRDiの関係について説明しました。また、リッチ・クライアントを開発する必要がある場合のために、ソフトウェア・アプリケーションのベースとしてEclipseを使用する方法についてもご紹介しました。ここで紹介したEclipseのメール・アプリケーションの例でその方法を紹介しています。

次回はRDiの拡張可能性についてさらに調べます。RDiはモダンなIBM iショップの標準的な開発ツールであるため、RDiを拡張することは重要です。RDiにはたくさんの宝石がありますが、開発作業を効率的にするために自分で作成した気の利いたツールのすべてを入れておくことはできません。自分で作成したツールをRDiに組み入れることができるというのは貴重です。

Eclipseを拡張する、すなわちRDiを拡張するのは簡単ではありません。この両ワークベンチを拡張する方法を4日間で教えてくれるEclipse RCPのトレーニングを提供している企業もあります。このトレーニングを受講するには多少のJava経験とEclipse/RDiの使用経験が必要です。

あわせて読みたい記事

PAGE TOP