本文へジャンプ

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


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

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

  • 閉じる [x]

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

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

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


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

  • 閉じる [x]

Lotus Notes 8.5.1 新搭載のコンテナ・フレームワークを用いたコンポジット・アプリケーション開発

Lotus Notes 8.5.1 の新機能を用いたコンポジット・アプリケーションの開発手法を説明します

佐藤 淳 (acchan@jp.ibm.com), Lotus テクノロジー開発, WPLC Business Partner Technical Enablement/ソフトウェア開発研究所
佐藤 淳はソフトウェア開発研究所のLotus テクノロジー開発に属し、WPLC (Lotus + WebSphere Portal) 製品に対応したソリューションやアプリケーションの開発に取り組んでいる ISV/BP 様の技術支援を行っています。先日 IT Media にインタビュー記事が公開されたのですが、寄せられた質問・感想は服装に関する事のみで肝心の内容については何もなく落ち込んでいます。

概要: IBM Lotus Notes は 2007 年にリリースされたバージョン 8 スタンダード版で、実行環境のベーステクノロジーに Eclipse RCP を採用しました。これにより、従来の LotusScript や式言語 などを利用して作られた Notes アプリケーション (NSF アプリケーション) だけでなく、Java で作られた Eclipse Plug-in 形式のアプリケーションも実行可能になりました。さらに、Notes アプリケーションやJava アプリケーション、またはそれらの断片をコンポーネントとして利用し、それらを組み合わせることで実現されるコンポジット・アプリケーションの利用も可能になりました。これにより、アプリケーション開発者やパワーユーザーは業務効率を大幅に向上するデスクトップ・アプリケーションを、既存のコンポーネントを組み合わせることで簡単にLotus Notes 上に構築することが可能になりました。しかしながら、既存アプリケーションのコンポーネント化は決して容易なものではなく、高い技術スキルと多くの手順が必要とされていました。また、複数ページから構成されるようなアプリケーションをコンポーネント化することも困難でした。このような問題を解決するのが Lotus Notes 8.5.1 で提供されるコンテナ・フレームワークです。本稿では、そのコンテナ・フレームワークの解説と利用方法を、具体例を交えながら説明します。

日付:  2010年 1月 08日
レベル:  初級
アクティビティー: 3801 ビュー
お気軽にご意見・ご感想をお寄せください: 


コンテナ・フレームワークとは

IBM Lotus Notes 8 以降のスタンダード版 (以下、Lotus Notes と表記することでスタンダード版を示します) を用いてコンポジット・アプリケーションを開発する際には、既存のアプリケーションやその断片をいかに簡単かつ迅速に再利用するかが、開発工数削減および利用促進を実現するための要素となります。既存の Notes アプリケーションを再利用する場合、今までの手法では、他のコンポーネントとの連携用ロジックの実装と、WSDL ファイルを用いたインターフェースの宣言が必要でした。既存の Java アプリケーションを再利用するときも、同じようにインターフェース宣言やその実装が必要でした。また、Web アプリケーションを再利用する際、その Web アプリケーションが複数ページから構成されているような場合、ある特定のページだけに連携用のロジックを実装し再利用することが困難な場合もありました。これは Web アプリケーションだけでなく、他のテクノロジーによって作られたアプリケーションを再利用する際も同様です。これらの要因により、既存アプリケーションをコンポーネント化する作業には多くの時間を要するため、コンポジット・アプリケーション開発の敷居が高くなっていました。この問題を解決するために、Lotus Notes 8.5.1 では既存のアプリケーションに追加の実装や宣言を一切加えることなくコンポーネント化を実現する、コンテナ・フレームワークと呼ばれる機能が提供されました。コンテナとは、名前の通りアプリケーションの入れ物で、既存のアプリケーション自身をカスタマイズせずに、簡単な設定のみでコンポーネント化することを可能にします。Lotus Notes 8.5.1 では、以下の 4 つのコンテナが提供されています。

  • Lotus Notes 文書コンテナ – Lotus Notes アプリケーション内でデザインされているフォームに格納されたNotes 文書、またはそのフォーム自身をコンポーネントとして再利用する際に利用するコンテナ。
  • Lotus Notes ビューコンテナ – Lotus Notes アプリケーション内でデザインされている Notes ビューをコンポーネントとして再利用する際に利用するコンテナ。
  • Symphony Spreadsheet コンテナ – Lotus Symphony で利用可能な表計算アプリケーションをコンポーネントとして再利用する際に利用するコンテナ。
  • 管理対象ブラウザー – Web アプリケーションをコンポーネントとして再利用する際に利用するコンテナ。

これらのコンテナはコンポジット・アプリケーション専用のアセンブリ・ツールである Composite Application Editor (CAE) から利用できます。CAE はインストール時の選択で導入することができる Lotus Notes に含まれている機能です。CAE のコンポーネント・パレットにはデフォルトで各コンテナが用意されており (図1)、ここから利用したいコンテナを選択し、中央部分にドラッグ & ドロップして配置することで使用可能となります。Lotus Notes 文書コンテナと Lotus Notes ビューコンテナ、そしてSymphony Spreadsheetコンテナはコンポーネント・パレットのコンテナ・カテゴリに、Web アプリケーション用のコンテナである管理対象ブラウザーはコンテナ・カテゴリではなく、ブラウザー・カテゴリに分類されています。


(図 1) Composite Application Editor で利用可能となったコンテナ

それでは、コンテナを利用して既存のアプリケーションをコンポーネント化する際の仕組みを説明します。コンテナは Notes 文書や Web アプリケーションなどを表示・実行する機能だけではく、現在コンテナ上で実行されているアプリケーションの状態 (表示内容) を特定する機能を持っています。これは Landmark Identifier と呼ばれるサービスで、例えばWeb コンテナである管理対象ブラウザーであれば、現在表示している Web アプリケーションのタイトルや URL を返します。同様に、Notes ビューコンテナや Notes 文書コンテナであれば Notes URL を、Symphony Spreadsheet コンテナであればシート名を返します。この Landmark Identifier から返される値は Landmark (ランドマーク) と呼ばれ、その名の通り他のアプリケーションと統合するポイントを示すための目印的な役割を担います。コンテナを利用したコンポーネント化では、ランドマークごとにインターフェースを定義することができます。このインターフェースは、コンポーネント間通信を管理するプロパティ・ブローカーに対して登録され、他のコンポーネントとのデータの送受信に利用されます。つまり、複数ページから構成されたアプリケーションであっても、それぞれのアプリケーションがある特定の状態になったときのみで有効なプロパティ・ブローカーへのアクセスを定義することができます。

それぞれのコンテナではランドマークの定義を直感的に行うことができる設定ツールを用意しています。図 2 は管理対象ブラウザーが提供する設定ツールです。


(図 2) 管理対象ブラウザーが提供するアクション定義用のツール

コンテナを使って既存のアプリケーションをコンポーネント化する際の流れを説明します。この操作にはCAEを使いますが、CAEの起動方法や使い方については後半の「コンテナ・フレームワークを利用したアプリケーション開発」の中で説明します。まず初めに、CAE 上で配置したコンテナにおいて、再利用したいアプリケーションを指定します。管理対象ブラウザーの場合は、再利用したい Web アプリケーションの URL を指定します。次に、他のコンポーネントと連携したいページにランドマークを設定します。例えば、My developerWorks のプロフィールアプリケーションを再利用したい場合、その URL (https://www.ibm.com/developerworks/mydeveloperworks/profiles/) を入力し、ここにランドマークを設定します。表示しているページにランドマークを設定する際には、図 3 の赤枠内のボタンをクリックします。


(図 3) ランドマークの設定ボタン

次に、ランドマークが設定されているページにおける、プロパティ・ブローカーとのインターフェースを定義します。まず、どのようなイベントが発生した時にプロパティ・ブローカーと通信するのかを定義します。イベントの定義にはツール上部にある旗のアイコンをクリックして選択します。コンテナによって用意されているイベントは多少異なりますが、通常以下の 4 種類が用意されています。

  • コンテンツの完了 – 対象となるアプリケーションがロードされた直後。
  • ビューを閉じる – コンテナ自体が閉じられたとき。
  • ビューの初期化 – コンテナ自体がロードされる直前。
  • データの変更 – パブリッシュ時は指定した部分のデータが変更されたとき、受信時はプロパティ・ブローカーからデータを受け取ったとき。

イベントが定義された後、そのイベントが発生した際に何を実行するのかを定義します。具体的には、イベントが発生した際に、プロパティ・ブローカーにデータを「パブリッシュ」するのか、プロパティ・ブローカーからデータを「受信」するのかを定義します。コンテナによっては、その特性を生かした別のアクションの定義も可能になっています。例えば、管理対象ブラウザーでは、「URL の設定」をアクションとして選択することができ、プロパティ・ブローカーから渡ってきた URL のページを即座に表示するといった事が可能になっています。イベントとアクションが定義されたら、最後に扱うデータを定義します。データの定義はそれぞれのコンテナによって異なり、使用できるデータは以下の表1のようになっています。


表 1. 各コンテナで使用できるデータ
 パブリッシュできるデータ受信できるデータ
Lotus Notes 文書コンテナ対象となる Notes 文書のフォームが保持しているフィールドに格納されている値。対象となる Notes 文書のフォームが保持しているフィールドに格納する値。
Lotus Notes ビューコンテナ対象となる Notes ビューのカラムの値、および式言語 (@ 関数) の返り値、またはその両方を組み合わせた値。Notes ビュー上で複数文書が選択された際に、「選択された文書の値すべてを送信する」、「選択された文書の値における最大値のみを返す」などのオプションを指定することも可能。受信はできません。
Symphony Spreadsheet コンテナ対象となる表計算ファイルのセルに格納されている値。複数のセルを選択し、利用することも可能。対象となる表計算ファイルのセルに格納する値。
管理対象ブラウザー対象となる Web アプリケーションが保持しているフィールドに格納されている値。および、XPath でアクセスできる DOM のエレメントに格納されている値。対象となる Web アプリケーションが保持しているフィールドに格納する値。および、XPath でアクセスできる DOM のエレメントに格納する値。

以上により、プロパティ・ブローカーに対するインターフェースの定義がコンテナに保持されます。このように、「指定されたアプリケーションの特定のページや状態 (ランドマーク) において、何 (イベント) が起きたら、何 (データ) を、どうするのか (アクション)」を定義することで、既存アプリケーションをコンポーネント化することができます。図 4 はMy developerWorks のプロフィールアプリケーションに対して、他のコンポーネントからプロパティ・ブローカー経由でデータを受信した際に、その値を検索フィールドにセットするという設定した例です。


(図 4) コンテナ上でコンポーネント化された Web アプリケーションの設定例

以上の設定により、CAE にて他のコンポーネントとの連携を実現するためのワイヤリングを行うことが可能となり、コンポジット・アプリケーションのコンポーネントとして利用することができるようになります。つまり、コンテナを利用することで、インターフェース宣言やその実装といった難しいコーディング作業を行うことなく既存アプリケーションをコンポーネント化することが可能になります。


コンテナ・フレームワークを利用したアプリケーション開発

前章では、コンテナ・フレームワークを利用して既存のアプリケーションをコンポジット・アプリケーション用のコンポーネント化する手順を説明しました。本章では、より実践的なコンテナの使用方法を、実際にコンポジット・アプリケーションを作りながら説明します。ここでは、Notes アプリケーションに格納されているデータを Lotus Symphony spreadsheet のセルに入力するコンポジット・アプリケーションを、Notes ビューコンテナ及び Lotus Symphony Spreadsheet コンテナを利用して実現する例を題材に説明します。事前準備としてディスカッションテンプレート (discussion8.ntf) から Notes アプリケーションを作成し、テストデータとして文書を複数作成してください。その際にカテゴリの値も使用するのでカテゴリにも値を入力してください。次に、コンテナを利用して、作成した Notes アプリケーションをコンポーネント化します。図 5 のように、「ブランクの複合アプリケーション」テンプレートを用いて、コンポジット・アプリケーションを格納するための Notes アプリケーションを作成します。


(図 5) コンポジット・アプリケーション用の Notes アプリケーション作成画面

次に、作成したコンポジット・アプリケーションを開き、Lotus Notes のメニューバーから「アクション」 -> 「アプリケーションの編集」を選択して Composite Application Editor (CAE) を起動します。CAE が起動したら、右側のコンポーネント・パレットから Lotus Notes ビューコンテナを選択し、中央部分にドラッグ & ドロップして配置します。Lotus Notes ビューコンテナが配置されたら、図 6 の赤丸で示した部分をクリックし、メニューから「コンポーネント・プロパティーの編集」を選択します。


(図 6) コンポーネント・プロパティーの編集の起動

コンポーネント・プロパティーの編集画面で、先ほど作成したディスカッション・アプリケーションの「すべての文書」ビューを表示するように設定します。Lotus Notes ビューコンテナでは、内部に表示するNotes ビューを Notes URL 形式で指定します。URLを手入力することも可能ですが、Notes URL を入力するテキストボックス右側にある参照ボタンをクリックすることで、指定したい Notes ビューを選択することも可能です。コンポーネント名やコンポーネントの説明も、必要に応じて入力します (図 7)。


(図 7) コンポーネント・プロパティーの設定

OK ボタンをクリックすると、作成したディスカッション・アプリケーションの「すべての文書」ビューが、配置した Lotus Notes ビューコンテナ内に表示されます。次に、コンテナ上部にあるツールを利用して、Lotus Symphony spreadsheet アプリケーションにデータを渡すために、プロパティ・ブローカーに対するインターフェースを定義します。この例では、Notes ビュー内で選択された文書のタイトルとそのカテゴリ、および文書が作成された日付をパブリッシュするように定義します。まず、コンテナ上部のツールにおいて、パブリッシュするデータの名前を定義します。このデータ名は任意でかまいませんが、ここでは「NotesViewData」とします。次に、データをパブリッシュする際の条件を定義します。ここでは式言語の返り値をパブリッシュしたいので「式」を選択します。最後に、実際にパブリッシュするデータを定義します。ここには式言語で「Subject + Categories + @Text(@Created)」と入力し、最後に右端の緑の歯車アイコンをクリックしてアクションを追加し、最後に最右端の丸矢印アイコンをクリックして追加したアクションを保存して設定を完了します(図 8)。


(図 8) Lotus Notesビューコンテナのプロパティ・ブローカーに対するアクションの定義

次に、データを受信する Lotus Symphony spreadsheet を作成します。CAE のコンポーネント・パレットから Lotus Symphony Spreadsheet コンテナを CAE 中央部、Lotus Notes ビューコンテナの下部にドラッグ & ドロップし配置します。次に Lotus Symphony Spreadsheet コンテナ上部のツールを利用してプロパティ・ブローカーから受け取った値を A1 セルから順番に入力するように定義します。基本操作は先ほどの Lotus Notes ビューコンテナと同様です。ここでは、プロパティ・ブローカーからデータを受け取った際に、spreadsheet アプリケーションのセル A1 から A10 までに値をセットし、そのためのデータを受信するプロパティ名を指定します。このプロパティ名も任意でかまいませんが、ここでは SymphonyNotesData に設定します(図9)。


(図 9) Lotus Symphony Spreadsheetコンテナのプロパティ・ブローカーに対するアクションの定義

以上で、Lotus Notes ビューおよび Lotus Symphony spreadsheet それぞれがコンポジット・アプリケーション用のコンポーネントとして利用可能になります。最後に、CAE のワイヤリング機能を用いて両コンポーネントが連携できるように設定します。Lotus Notes ビューコンテナからパブリッシュされる NotesViewData プロパティをマウスでドラッグし、Lotus Symphony Spreadsheet コンテナで受信する SymphonyNotesData プロパティにドラッグし、二つのプロパティをワイヤリングします(図 10)。


(図 10) ワイヤリング画面

以上でコンポジット・アプリケーションの開発は完了となります。設定を保存し、Composite Application Editor を閉じてください。最後に作成したコンポジット・アプリケーションを開き、動作確認を行います。Notes ビューコンテナ上に表示されているディスカッション・アプリケーションの文書を選択すると、選択された文書のタイトル、カテゴリ、文書の作成日時が Lotus Symphony spreadsheet アプリケーションの A1 セルに入力されることが確認できます。さらに、Notes ビュー上で複数文書を選択すると、選択された文書の情報が Lotus Symphony spreadsheet の A1 セルから順番に入力されます(図 11)。


(図 11) 完成したコンポジット・アプリケーション

以上のような操作で、Notes アプリケーションのデータを Lotus Symphony spreadsheet アプリケーションに書き出すコンポジット・アプリケーションが作成できます。このように、コンテナ・フレームワークを使用することで、既存のアプリケーションに手を入れず、コードも書かずにコンポジット・アプリケーションを開発することができます。


Property to Property ワイヤリング

最後に、コンテナ・フレームワークで使用されている Property to Property ワイヤリングについて説明します。従来、コンポジット・アプリケーションの開発を行う際には、それぞれのコンポーネントがプロパティ・ブローカーに対して、パブリッシュできるプロパティの定義、受信することができるプロパティの定義、そして受信した際に実行されるロジックを、あらかじめ WSDL 形式のファイルで定義する必要がありました。コンポーネント内で定義されたそれらの値は、コンポジット・アプリケーションを組み立てる際に動的に変更することができません。また、プロパティを定義する際にはネームスペースやデータの型も厳密に定義する必要があるため、実際にワイヤリング可能となるのは、事実上双方のコンポーネントが連携されることを前提に実装されている必要があり、自由度が低くなっていました。この従来型のワイヤリング方法は Property to Action と呼ばれています。それに対して Property to Property ワイヤリングでは、お互いのコンポーネントが持つインターフェースを WSDL ファイルを用いて厳密に定義する必要がなく、コンポーネント自体が動的にプロパティなどを定義することを可能にしています。これにより、コンポーネントは動的に定義されたプロパティ名を使ってプロパティ・ブローカーと通信することができます。各コンポーネントは PropertyBrokerListener インターフェースの実装を持つことで、 Property to Property ワイヤリングの利用が可能です。これまで解説してきたコンテナもこの仕組みを使って、プロパティ・ブローカーへのインターフェースをコンポーネント側で設定することを可能にしています。また、この仕組みを使うことで、新たなコンテナを作成することも可能です。PropertyBrokerListener インターフェースを実装して Property to Property ワイヤリングを可能にするコンポーネントの開発方法は IBM Composite Application Wiki で解説されています。


まとめ

Lotus Notes 8.5.1 からコンテナ・フレームワークが提供されたことによって、業務効率の向上を実現する次世代デスクトップ・アプリケーションであるコンポジット・アプリケーションの開発を、迅速かつ容易に行うことが可能となりました。コンテナは既存のアプリケーションにランドマーク、イベント、データ、アクションを定義することでコンポーネント化することができ、それらの定義はコンテナで提供されるツールで容易に行うことができます。このコンテナ・フレームワークを利用して、日常業務の効率を向上するコンポジット・アプリケーションの開発に取り組んでいただけることを期待しています。


参考文献

著者について

佐藤 淳はソフトウェア開発研究所のLotus テクノロジー開発に属し、WPLC (Lotus + WebSphere Portal) 製品に対応したソリューションやアプリケーションの開発に取り組んでいる ISV/BP 様の技術支援を行っています。先日 IT Media にインタビュー記事が公開されたのですが、寄せられた質問・感想は服装に関する事のみで肝心の内容については何もなく落ち込んでいます。

不正使用の報告のヘルプ

不正使用の報告

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


不正使用の報告のヘルプ

不正使用の報告

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


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
ArticleID=460237
ArticleTitle=Lotus Notes 8.5.1 新搭載のコンテナ・フレームワークを用いたコンポジット・アプリケーション開発
publish-date=01082010
author1-email=acchan@jp.ibm.com
author1-email-cc=

タグ

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

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

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

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

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