バイナリー・モジュールを使ってチーム環境での Rational Application Developer を最適化する

この記事は、プロジェクトの一部をソース形式で保持し、それ以外の部分をバイナリー形式で保持することで、IBM® の Rational® Application Developer で日々行うオペレーションの多くをスピードアップする方法について解説します。

Gary Karasiuk (karasiuk@ca.ibm.com), Rational Application Developer Performance Analyst, IBM Toronto Lab

Gary KarasiukGary Karasiuk は IBM Toronto Laboratory の Rational Application Developer Performance Analyst です。連絡先は karasiuk@ca.ibm.com です。



Jason Sholl (jsholl@us.ibm.com), Software Engineer, IBM

Jason ShollJason Sholl は IBM Raleigh Laboratory で Rational の J2EE (Java 2 Platform, Enterprise Edition) ツールに関する業務に従事しています。



2007年 6月 19日

アプリケーションの規模が大きくなってくると、アプリケーション全体をワークスペースにソース形式で保持することは現実的ではなく、望ましくないかもしれません。大きなワークスペースは、百を超えるプロジェクトを含む可能性があります。すべての開発者が、これらのプロジェクトの 1 つ 1 つを毎日変更する必要性は非常に低いと言えます。もっと適切な方法として、今後変更しようとするプロジェクトあるいはモジュールのみをソース形式で保持し、使用中のプロジェクトあるいはモジュールは、バイナリー形式で保持する方法があります。こうすることによって、IBM® Rational® Application Developer のメモリー・フットプリントを大幅に削減でき、また一般的な開発作業の多くを大幅にスピードアップすることができます。このようにしても、相変わらずバイナリー・プロジェクトの中でソースコードを見ることができ、また頻繁に利用する Open Declaration (F3) など、大部分の生産性オペレーションを行うことができます。

例えば、私達が使用する顧客ワークスペースの 1 つをビルドするための時間は、ワークスペース全体がソース形式の場合には 27 分です。一方、大部分のモジュールがバイナリー形式の場合には、ビルド時間は 3 分以下に短縮されます。この例の詳細については、この記事の最後にある、「実際のテスト」のセクションを参照してください。

この記事は、皆さんの環境の中でバイナリー・モジュールを利用するための方法を、順を追って説明します。ここでは前提として、皆さんが EAR プロジェクトを開発しており、ソース・コントロールを使用しているものとします。この記事は、Rational Application Developer バージョン 7.0.0.3 以降に適用されます。新規の共有 EAR ファイルは、バージョン 7.0.0.3 よりも前のバージョンではサポートされていません。

ここで説明するヒントの多くは、Rational® Software Architect や Rational® Software Modeler、Rational® Web Developer など、他の IBM Rational 製品にも適用することができます。

手順

基本的な慣習として、ある任意の時間にプロジェクトのサブセットを変更するのは 1 人の開発者のみです。彼らは、やはりアプリケーションのすべての部分をソース形式で見る必要があるかもしれません。彼らが変更しようとするプロジェクトのリストは変更される可能性があります。つまり任意の時点で、変更できるプロジェクトのリストに追加が行われるかもしれません。

基本的な方法は非常に単純です。

  • まず、ソースコードを含めて完全なアプリケーションを含む、EAR ファイルから始めます。
  • この EAR ファイルをインポートすると、これがベースになります。この EAR ファイルは通常、毎晩、あるいは毎週のビルド・プロセスから作られます。
  • 次にソース・コントロールから、今後変更すると思われるプロジェクトあるいはモジュールをインポートします。

サンプル・アプリケーション

この記事では、実際に動作するサンプルを使います (「ダウンロード」を参照)。このサンプルには、J2EE (Java™ 2 Platform, Enterprise Edition) アプリケーションを開発する際によく見られる、下記の主なプロジェクト・タイプがすべて含まれています。

  • SampleEAR: EAR そのものであり、SampleThirdParty.jar という、サードパーティーのバイナリー JAR (Java Archive) ファイルを含んでいます。
  • SampleEJB: EJB プロジェクトのサンプル
  • SampleEJBClient: EJB プロジェクトのサンプルのクライアント部分
  • SampleWeb: Web プロジェクトのサンプル
  • SampleUtility: ユーティリティー・プロジェクトのサンプル

通常、アプリケーションにはもっと多くのプロジェクトがあるかもしれませんが、このサンプルでは J2EE プロジェクトの主なタイプを含めるようにしています (図 1)。

図 1. サンプル・アプリケーション
サンプル・アプリケーション

EAR を作成する

EAR は通常、何らかの自動ビルド・プロセスを使って作成されます。典型的な場合では、大部分のユーザーは毎晩、あるいは毎週ビルドを行いますが、このサンプルでは手動で EAR を作成する方法を説明します。

  1. アプリケーションが EJB を含んでいる場合には、EAR をエクスポートする前に、EAR がデプロイメントできる状態になっていることを確認する必要があります。
  2. Export Shared EAR file ウィザードを使って EAR ファイルをエクスポートします (図 3)。
図 2. デプロイメントの準備をする
デプロイメントの準備をする
図 3. 共有 EAR ファイルをエクスポートする
共有 EAR ファイルをエクスポートする
  1. 図 3 を見るとわかるように、新しい共有 EAR ファイル・メニュー項目がヘルパー・プラグインによって追加されています。

注意

ヘルパー・プラグインをインストールしなかった場合には、あるいはこれを自動ビルド・プロセスの一部として組み込みたい場合には、以下の追加ステップを行う必要があります。(Export > Shared EAR file メニュー項目を使用している場合には、これらのステップを行う必要はありません。)

  1. Rational Application Developer V7.0.0.3 の中で、下記の 2 つの特別なファイルを、EAR をエクスポートした後に EAR に手動で追加します。
    • .settings\com.ibm.etools.j2ee.teamshare: マーカー・ファイルなので、内容は重要ではありません。空のファイルにならないように、ファイルの中に「marker」という単語を入れてあります。
    • .settings\org.eclipse.wst.common.component: ソース・ワークスペースの EAR プロジェクトに含まれているファイルである必要があります。
  2. これらの 2 つのファイルを、ファイルシステムの任意の場所にコピーします (図 4)。
  3. 次にファイル圧縮ユーティリティーを使って、これらの 2 つのファイルを EAR ファイルの中に圧縮します。そのためには次のようなコマンドを使います。
    > zip -r SampleEAR.ear .settings/*.

これで、この EAR ファイルは、オリジナル・ファイルと、手動で追加した 2 つのファイルを含んでいることになります (図 4)。

図 4. ワークスペースの中の変更された EAR ファイル
ワークスペースの中の変更された EAR ファイル

Importing the EAR

チーム環境では、各開発者は、それまでにエクスポートされた EAR ファイルをインポートすることから始めます。

  1. J2EE 画面で Import を選択します (図 5)。
  2. Import ウィンドウで、対象の Shared EAR file を選択します (図 6)。
  3. Shared EAR import ウィンドウで、矢印を使って、ファイル名とプロジェクト名、そしてターゲットのランタイム・サーバーを選択します (図 7)。
図 5. まず Import を選択する
まず Import を選択する
図 6. インポートしたいファイルを選択する
インポートしたいファイルを選択する
図 7. ファイル名とプロジェクト名、そしてランタイム・サーバーを選択する
ファイル名とプロジェクト名、そしてランタイム・サーバーを選択する
  1. SampleEAR プロジェクトを閉じ、そして再度開きます。(これは Rational Application Developer の同期バグを回避するためです。)
  2. プロジェクトを再度開くと、ワークスペースは図 8 のようになっているはずです。すべてのモジュールがバイナリー・モジュールであることが分かります。
図 8. プロジェクトをインポートした後の画面
プロジェクトをインポートした後の画面
  1. これでアプリケーションをデプロイして実行する準備ができました。

バイナリー・モジュールがソース・モジュールになるように切り替える

ベースは用意できたので、変更したいプロジェクトをインポートする必要があります。

  • Web モジュール
    1. ソース・コントロールから Web モジュールをインポートするための通常の方法を使います。例えばこの例では、私達はオープンソースの CVS (Concurrent Version System) を使いました (図 9 と 10)。
    2. 必要な変更を、その Web プロジェクトに加えます。これらの変更が実行中のアプリケーションに反映されます。
    3. もし必要であれば、他の人やビルド・プロセスが変更を利用できるように、ソース・コントロール・システムに変更をチェックインすることもできます。
図 9. CVS フォルダーの下の Projects from CVS を選択する
CVS フォルダーの下の Projects from CVS を選択する
図 10. CVS からチェックアウトすべきモジュールを選択する
CVS からチェックアウトすべきモジュールを選択する
  • EJB モジュール
    EJB (Enterprise Java™Beans) プロジェクトのための方法も、Web プロジェクトの場合と似ています。単純にプロジェクトをチェックアウトします。
  • ユーティリティー・プロジェクト
    ユーティリティー・プロジェクトのための方法も、Web プロジェクトの場合と似ています。単純にプロジェクトをチェックアウトします。

ソース・モジュールからバイナリー・モジュールに切り替える

ソース・モジュールからバイナリー・モジュールに切り替えるのは非常に簡単です。単純にワークスペースからソース・プロジェクトを削除し、そしてサーバーに対して再公開を要求します。これで、バイナリー形式のモジュールを使う状態に戻ります。

Web プロジェクトを削除するための対応策
IBM® WebSphere® Application Server は一部の Web ライブラリー・ファイルをロックするため、私達はその Web プロジェクトを削除できませんでした。下記はその解決方法です。

  1. WebSphere サーバーを停止してから Web プロジェクトを削除します。
  2. WebSphere サーバーを再起動したら、WAR (Web archive) ファイルのバイナリー・バージョンを使えるように、EAR も再起動する必要があります。

暫定的な修正

コードの変更は、ソース・コントロール・システムからプロジェクトをインポートしなくても可能です。ここで例として、皆さんが夜遅く作業しており、誰か他の人のコードを一時的に修正したい、としましょう。このコードをチェックインするつもりはなく、単純に、例えばコードのテストを終了するために、いくつか一時的な変更を行いたいとします。

任意のバイナリー・モジュールを、EAR から直接ソース・モジュールに変換することができます。

  1. 共有 EAR プロジェクトを右クリックし、そして Shared EAR > Extract Binary Modules to Projects を選択します (図 11)。
図 11. Extract Binary Modules to Projects (バイナリー・モジュールをプロジェクトに抽出する)
Extract Binary Modules to Projects (バイナリー・モジュールをプロジェクトに抽出する)
  1. 共有 EAR ファイル (この場合は SampleUtility.jar ファイル) に関連付けられたバイナリー・モジュールの隣のチェック・ボックスをチェックし、このファイルをプロジェクトの中に抽出します (図 12)。
図 12. 共有 EAR に関連付けられたバイナリー・モジュールを選択する
共有 EAR に関連付けられたバイナリー・モジュールを選択する
  1. インポート・アクションが終わると、変更をテストするための通常のソース・プロジェクトができています (図 13)。(ただし、このプロジェクトはソース・コントロール・システムのプロジェクトではないため、これらの変更をチェックインして保存することはできないことを忘れないでください。)
図 13. 通常のソース・プロジェクト
通常のソース・プロジェクト
  1. 変更されたソース・プロジェクトを使い終わったら、単純にそのプロジェクトを削除して、元のバイナリー・バージョンに戻ります。
  2. Shared EAR > Repackage Projects to Binary Modules アクションを使うと、モジュールのバイナリー・バージョンを、変更されたソース・プロジェクトで置き換えることもできます。

実際のテスト

私達が使用したワークスペースは、6 つの EJB モジュールと 5 つの Web モジュール、そして 29 のユーティリティー・プロジェクトを持っていました。そして、すべてのプロジェクトがソース形式の状態で、最初にクリーンなビルドを行いました。これを 3 GHz の Pentium 4 と 2 GB のメモリーを持つマシンで行いました。次に、1 つの Web プロジェクトを除いて、バイナリー・モジュールを使う方法に切り替えました。そして再度クリーンなビルドを行いました。この 2 つの異なる方法での測定結果が下記です。

表 1. 表題に見出しタグを使い、すべての列を左揃えにした表 (推奨のスタイル)

ソース・ワークスペースバイナリー・ワークスペース
経過時間29.9 分2.7 分
CPU 時間30.5 分3.9 分
読み取ったバイト数1.9 GB0.25 GB
ページ・フォールト443 K22 K
ピーク・ワーキング・セット931 MB318 MB

これを見るとわかるように、劇的に時間が短縮されています。


まとめ

この記事は、プロジェクトの一部をソース形式で保持し、それ以外の部分をバイナリー形式で保持することで、Rational Application Developer で日々行うオペレーションの多くをスピードアップする方法を説明しました。もし皆さんの環境で効果的だった他のヒントがあれば、ぜひともお知らせください。


ダウンロード

内容ファイル名サイズ
The sample application used for this article.SampleEAR.zip10KB

参考文献

学ぶために

製品や技術を入手するために

  • Rational Application Developerの無料の試用版をダウンロードしてください。
  • IBM 製品の試用版をダウンロードし、DB2® や Lotus®、Rational®、Tivoli®、WebSphere® などのアプリケーション開発ツールやミドルウェア製品を試してみてください。

議論するために

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Rational, SOA and web services
ArticleID=277988
ArticleTitle=バイナリー・モジュールを使ってチーム環境での Rational Application Developer を最適化する
publish-date=06192007