本文へジャンプ

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


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

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

  • 閉じる [x]

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

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

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


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

  • 閉じる [x]

IBM Lotus Domino 開発者のための IBM WebSphereポートレット開発

Joachim Dagerot (jd@dagerot.com), System Architect and Technical Lead, Strand Interconnect
Joachim Dagerot is a system architect and technical lead for Strand Interconnect. He has been involved in worldwide intranets that serve more than 130 million users. These days, he primarily focuses on Web development, with particular interest in accessibility and standard compliance. In his spare time, he develops Web services and blogs at domino.dagerot.com. You can reach Joachim at jd@dagerot.com.

概要: IBM Lotus DominoとIBM WebSphere Portalに、独自のポートレットを構築するときの、設計手法および開発手順の違いを比較します。この記事では、より大きな自由度と柔軟性を持つIBM Rational Application Developer for WebSphere Softwareの使い方についても解説します。

日付:  2007年 3月 13日
レベル:  中級 この記事の原文:  英語
アクティビティー: 2021 ビュー
お気軽にご意見・ご感想をお寄せください: 


IBM WebSphere Portalには、外部接続、統合、およびインターネット/イントラネット・ツール用のさまざまな役に立つポートレットがバンドルされています。しかし、バンドルされているこれらのポートレットでは対応できないケースもしばしばあり、このような場合は独自のポートレットを作成しなければなりません。この記事でIBM Lotus DominoとIBM WebSphere Portalの設計手法を比較することにより、経験を積んだLotus Domino開発者が、IBM WebSphere Portalまたは他のJSR(Java Specification Request)168互換J2EE(Java 2 Platform, Enterprise Edition)ポータル用のポートレット開発を始める際の手助けになります。

この記事は、Lotus Dominoに精通し、IBM Rational Application Developer for WebSphere Softwareを使用してポートレットを作成したい熟練のIBM Lotus Domino開発者の方を対象としています。リレーショナル・データベースをともなうJavaプロジェクトは本質的に複雑であるため、クライアント開発を開始する前に、データベース、JSF(JavaServer Faces)、およびポートレットに関して学習することをお勧めします。Lotus Dominoテクノロジーに関する経験と知識があり、Java言語に習熟していることを前提として説明を進めます。また、Rational Application Developerのユーザー・インターフェースを理解しているものとします。それでは、Rational Application DeveloperでJSR 168 JSF対応ポートレット・プロジェクトを新規作成し、Webパースペクティブに切り替えたところから始めましょう。画面は図1のようになっているはずです。


図1. 新規作成したJSR 168 JSF対応ポートレット



IBM Lotus DominoとIBM WebSphereソフトウェアでのパフォーマンスの比較

WebSphere Portalを対象としたRational Application Developerでの開発スピードは、Lotus Domino環境で慣れているスピードほど速くありません。たとえば、実稼働環境では、小さなスペル・ミスの修正、色の変更、あるいはLotus Dominoで可能なその他の簡単かつ迅速な修正を行うことができません。また、非常に時間がかかる作業もあります。たとえば、Lotus Dominoのビューの列で幅広く使用されている「値をアイコン表示」機能を用いると、ユーザーがアプリケーションを使用するときに優れた機能を素早く提供できますが、ポートレットで同様の機能を開発するには時間がかかります。

一方、IBM WebSphere PortalはJSFをサポートします。これには、優れた機能があります。たとえば、JSFのdatatableコンポーネントを使用すると、Lotus Dominoの埋め込みビューに似たものを、データ・ソースから直接またはJavaオブジェクトの任意のリストから作成できます。Lotus Dominoでは、サード・パーティーのデータ・ソースに接続し、データを取得するアプリケーションを開発するには時間がかかります。エージェント、フォーム、およびビューが関与するからです。また、Lotus Dominoの埋め込みビューではコンテンツをプレゼンテーションから切り離すのは困難ですが、JSFコンポーネントの特性により、プレゼンテーションとコンテンツを混在させることは不可能なので、より良いアーキテクチャーが得られます。

Java環境内のエージェントでのソートおよびフィルターの実行は高価であり、Lotus Domino開発者は他のビューまたはフォルダーを作成することを好む傾向があるので、サーバーはバックグラウンドでデータをソートできます。しかし、これが過度のサーバー・ロードを招く結果となり、indexerタスクが追いつかないときに予期せぬ動作が発生することがあります。一方、WebSphere PortalでJDBC(Java Database Connectivity)を使用したリレーショナル・データベースへの接続は高速であり、SQLの特性により、特にコストを増加させることなく異なるソートおよびフィルターを実行するSQL照会を書くことができます。言うまでもありませんが、Webサービスに対する組み込みサポートが十分であるため、WebSphere PortalはSOA(サービス指向アーキテクチャー)アプリケーションにたいへん適しています。


文書からリレーショナル・データベースの移行

熟練したLotus Domino開発者が他のプラットフォームでの作業を開始するとき、最も困難なことはリレーショナル・データベースとLotus Notesデータベースがどのように対比するのかを理解することです。リレーショナル・データベースの詳細な動作を説明することはこの記事の目的ではありませんが、ここでは概要について簡単に触れておきましょう。

リレーショナル・データベースの構造

適切に構成されたリレーショナル・データベースには、必要なデータの検索に関連して使用するいくつかのテーブルがあります。例として、アカウント・マネージャーの登録簿を見ることにしましょう(表1および表2参照)。CONTACTSテーブルにはすべての個人情報が含まれ、COMPANIESテーブルには会社に関する情報が含まれています。CONTACTSテーブルのCOMPANY列はCOMPANIESテーブルのIDX列を指しているので、2つのテーブルは関係づけられて(結合されて)います。


表1. CONTACTSテーブル
IDXFIRSTNAMELASTNAMECOMPANY
0AdamAdamson2
1JoeSmith1
2WilliamJones2
3AndersAnderson1

表2. COMPANIESテーブル
IDXCOMPANYNAMEPHONE NUMBER
0Acme Inc(555)123 456 7
1Dagerot AB(345) 875 578
2Citrus ltd(677) 6876 6876

次のSQL照会を使用すると、名、姓、および会社名が含まれるデータのリストを取得できます。

select firstname, lastname, company from contacts, companies
where contacts.company = companies.idx
一般に、Lotus Dominoアプリケーションで同じことを実行するには、いずれかのデータが更新されたときに会社データをユーザー文書にコピーします。これにより、ユーザー・データと同じビューに会社データを表示できます。あるいは、ビューのリストが重要でない場合は、ユーザーが文書を開いたときに一連の@DbLookupコマンドを実行します。この場合、会社の詳細情報とユーザーの詳細情報の両方をビューにリストすることは不可能です。

この例をより複雑にするために、各マネージャー、つまりユーザーが複数のアカウントを担当できるようにします。この場合は、3番目のテーブル(Linkテーブル)が役に立ちます(表3、4、および5参照)。表5に示したCOMPANYMANAGERテーブルは、マネージャーと会社の関係を指定します。


表3. MANAGERテーブル
IDXFIRSTNAMELASTNAME
0AdamAdamson
1JoeSmith
2WilliamJones
3AndersAnderson

表4. COMPANYテーブル
IDXCOMPANYNAMEPHONENUMBER
0Acme Inc(555) 123 456 7
1Dagerot AB(345) 875 578
2Citrus ltd(677) 6876 6876

表5. COMPANYMANAGERテーブル
MANAGERCOMPANY
00
01
12
22

たとえば、Adam Adamsonが担当しているアカウントを見つけてみましょう。この場合は、リスト1に示すようなSQL照会を使用します。


リスト1. アカウントを識別するSQL照会
select c.companyname, m.firstname, m.lastname
from manager m
inner join companymanager cm on m.idx = cm.manager
inner join company c on c.idx = cm.company
where m.idx = 0


Lotus Dominoアプリケーションでは、これらの関係が含まれていないため、この情報を見つけることはより難しくなります。おそらく、定期的または変更が発生するたびにマネージャー文書と会社文書の移し替えが必要となり、遅かれ早かれデータの整合性が失われる可能性があります。


Lotus DominoアプリケーションとWebSphereアプリケーションの設計要素の比較

第1印象では、Domino WebアプリケーションとWebSphereアプリケーションはどちらもHTMLを配布するので似ているように見えますが、JSFを使用しないことを選択すると、この類似性はなくなります。一方、アプリケーションでJSFを使用することを選択した場合、設計要素の作成、構成、および生成の各方法にいくつかの類似点を見つけることができます。具体例として、Lotus Dominoのダイアログ・リストに似ているIBM WebSphereコンボ・ボックス要素を調べてみましょう。

動的データの取り扱い

ドロップダウン・フィールドは、Lotus Dominoではダイアログ・リストと呼ばれ、WebSphereではコンボ・ボックスと呼ばれています。どちらのプラットフォームでも、リストの値をハードコーディングできます。Lotus Dominoで、ハードコーディングしたダイアログ・リストと動的な値を持つダイアログ・リストのプロパティー設定を図2に示します。


図2. Lotus Dominoに表示されたハードコーディングされた値および動的な値


JSR 168ポートレットを使用する場合は、JSFがコンボ・ボックスと呼ばれる同様のソリューションを提供します。動的な値を使用するときのコンボ・ボックスの構成方法を図3に示します。


図3. Rational Application Developerでのコンボ・ボックスの構成


JSFコンポーネントは、クライアントの右側のパレットにあります。図4に示すように、コンボ・ボックス・コンポーネントはFacesコンポーネント・カテゴリーにあります。


図4. 「パレット」パネルにあるコンボ・ボックス


動的データをJSFコンポーネントに渡すには、さまざまな方法があります。コンポーネントをJNDI(Java Naming and Directory Interface)データ・ソースに直接接続したり、管理対象Beanからフィードすることができます。Beanは、JSP(JavaServer Pages)ファイルがバックエンドと通信することを補助するJavaクラスです。値のリストを保持する簡単なBeanの例をリスト2に示します。


リスト2. Beanの例
package pagecode;
import java.util.ArrayList;
import java.util.List;
public class Items {

 private List items = new ArrayList();
 
 public Items() {
  this.getItems().add("My first value");
  this.getItems().add("My second value");
 }

 public List getItems() {
 
  return items;
 }

 public void setItems(List items) {
  this.items = items;
 }
}


上記のコードでは、Beanの初期化中に項目が追加されました。実際に使用されるコードでは、データベース、Webサービス、またはそれに類するものから、この情報がロードされます。

このBeanを使用するコンボ・ボックスを取得するには、このBeanを管理対象Beanにする必要があります。この作業は、左下にある「ページ・データ」パネルで行います。スクリプト記述変数のリストでsessionScopeオプションを右クリックし、「新規」->「JavaBean」を選択します。

管理対象Beanを構成した後は、使用するJSPファイルにこれを追加する必要があります。「ページ・データ」パネルから、エディター内のJSPページ上にBeanをドラッグします。コンボ・ボックスを選択し、項目Beanを右クリックすることにより、半自動的にBeanのデータをコンボ・ボックスにバインドできます(図5参照)。


図5. JSPファイルへの管理対象Beanの追加


図5からわかるように、管理対象Beanから直接テーブルを生成することもできます。これを行うには、管理対象BeanをJSPページまでドラッグします。図6に示すようなウィザードが表示されます。


図6. ウィザードを使用したJSPページへのデータの追加


もし、Beanがより複雑な型であるとすれば(たとえば、リストが、多数のプロパティーを持つ複雑な型のクラスで生成された場合)、表示したい任意の列をこのウィザードで選択できるでしょう。これは、Lotus Dominoでビューをフォームに埋め込むことに似ていますが、ウィザードの方がより大きな柔軟性を持っています。


プレビューおよびテスト実行

IBM Lotus Domino Designerを使用することの利点の1つとして、ほとんどすべての開発を1つのインストール済みクライアントで実行できる点が挙げられます。多くのアプリケーションは、実稼働環境に置かれる前に、ステージング・サーバーによってホストされる必要がありません。Lotus Domino Designerとそのプレビュー機能は、テストおよびデバッグの必要性を極めて適切に解決しています。Rational Application Developerは、最初にインストールされた時点では、この点が完璧ではありません。Rational Application Developer上に、テスト・サーバーをインストールする必要があります。これを行うと、ポータル・フレームワーク全体がローカルで実行され、実稼働状況に近い環境でアプリケーションをテストできます。(テスト環境のインストール方法を解説した記事については、「リソース」セクションを参照してください。)

Lotus Domino Designerでページまたは他の設計要素を開発するときは、特定の設計要素をWebブラウザーまたはLotus Notesクライアントで開くことができます。

Rational Application Developerには、JSPファイルがどのように表示されるのを見るためのさまざまな方法が用意されています。実際の結果に近いWYSIWYG設計モードで作業したり、すべてのマークアップを表示し、100%のコントロールが可能なソース・モードで作業することができます。しかし、その中で最も優れているのがプレビュー・モードです。このモードはエディターに組み込まれていて、実稼働環境での表示と同様に、JSPを表示できます。Rational Application Developerによって提供される3つの設計モードを縮小して加工した概要を図7に示します。


図7. Rational Application Developer for WebSphere Softwareの3つの設計モード


ロジックの実行

Lotus Domino Designerでは、デフォルトのブラウザーでの「プレビュー」を選択すると、アプリケーション全体が起動され、アプリケーションをクリックで操作できます。WebQueryOpenエージェントおよびWebQuerySaveエージェントなど、すべてのエージェントが実行されます。実際に適用されないのは、アクセス制御リスト(ACL)だけです。

Rational Application Developerで、Lotus Domino Designerと同様の完全なテストおよびデバッグ機能を実現するには、ご使用のマシン上にインストールされたテスト・サーバーにポートレット全体をデプロイする必要があります。これを行うには、「プロジェクト・エクスプローラー」パネルでプロジェクトを右クリックし、「実行」->「サーバーで実行」を選択します。

これにより、ダイアログ・ボックスが表示され、ポートレットをデプロイするサーバーを選択できます。ほとんどの場合、ローカルにインストールされたテスト・サーバーを選択します。詳細を図8に示します。


図8. サーバーの選択

正しいサーバー・インスタンスを選択し、「完了」をクリックしてポートレットのテスト環境をスタートさせます。


デバッグ

Rational Application Developer for WebSphere Softwareなどの熟成したPure Java開発クライアントは、デバッグ機能が優れています。「ウィンドウ」->「パースペクティブを開く」->「その他」を選択し、「デバッグ」を選択することにより、「デバッグ」パースペクティブを開きます。Rational Application Developerの環境は図9のようになります。


図9.「デバッグ」パースペクティブへの移動


まとめ

IBM Lotus Dominoは、迅速なアプリケーション開発という観点ではいまだに比類なき存在ですが、IBM Rational Application Developerは自由度と柔軟性に優れています。このため、開発者は、Lotus Notesデータベースからリレーショナル・データベースを作成する代わりに、ユーザーおよびビジネス上の問題の解決に集中できます。この記事によって、Lotus Domino開発者の視点から、ポートレット開発のアプローチ方法とIBM WebSphere Portalでのポートレットの作成方法をご理解いただけることを望んでいます。


参考文献

学ぶために

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

議論するために

著者について

Joachim Dagerot is a system architect and technical lead for Strand Interconnect. He has been involved in worldwide intranets that serve more than 130 million users. These days, he primarily focuses on Web development, with particular interest in accessibility and standard compliance. In his spare time, he develops Web services and blogs at domino.dagerot.com. You can reach Joachim at jd@dagerot.com.

不正使用の報告のヘルプ

不正使用の報告

ありがとうございます。 このエントリーは、モデレーターの注目フラグが設定されました。


不正使用の報告のヘルプ

不正使用の報告

不正使用の報告の送信に失敗しました。


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=Lotus, WebSphere
ArticleID=341023
ArticleTitle=IBM Lotus Domino 開発者のための IBM WebSphereポートレット開発
publish-date=03132007
author1-email=jd@dagerot.com
author1-email-cc=

タグ

Help
このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。

スライダーバーを使用することで、より多く(少なく)タグを表示します。

人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。

マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。

このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。