レベル: 初級 佐藤 淳 (acchan@jp.ibm.com), Lotus テクノロジー開発, WPLC Business Partner Technical Enablement/ソフトウェア開発研究所, IBM
2009年 4月 24日 2009年1月に Lotus Notes/Domino の最新バージョンである IBM Lotus Notes (以下 Notes) / Domino (以下 Domino) 8.5 がリリースされました。Domino サーバーには CPU の使用率低減や、ディスク I/O の低減、NSF アプリケーションの圧縮機能の強化など、TCO の大幅な低減に貢献する新機能が数多く含まれています。クライアント製品である Notes クライアントには、こちらの記事でも紹介されているように、ローミング機能の強化や、組織、企業を超えての効果的な情報共有を行うためのコラボレーション機能が数多く含まれ、インフォメーション・ワーカーの生産性向上に大きく貢献するクライアント製品へと進化しています。また、サーバー、クライアントの双方に、アプリケーション開発者にとって魅力的な新機能も数多く提供されています。本稿では IBM Lotus Notes/Domino 8.5 で提供されているアプリケーション開発に関する新機能を、具体的な例を示しながら紹介します。
IBM Lotus Notes/Domino 8.5 におけるアプリケーション開発環境
IBM Lotus Notes/Domino 8.5 (以下 ND 8.5) には、ディスク使用率や CPU 使用率の低減など、ハードウェア資源の有効利用により TCO の低減を実現するための機能強化および新機能や、日々の業務における生産性をより高めるためのコラボレーションを実現する新機能が数多く提供されています。それらに加えて、アプリケーション開発のための機能も大幅に強化されています。本稿では ND 8.5 の提供する数多くの新機能の中でも、特にアプリケーション開発のための新機能を詳しく紹介します。具体的には、Eclipse をベーステクノロジーに採用し大きな進化を遂げた Lotus Domino Designer (以下 Domino Designer)、Domino サーバー上で Web 2.0 テクノロジーを利用したリッチな Web アプリケーション開発を実現する Lotus Domino XPages (以下 XPages)、および Lotus Notes 8 から採用された次世代デスクトップアプリケーションである Composite Application に関する Lotus Notes 8.5 での新機能を紹介します。
はじめに、Eclipse をベーステクノロジーに採用し大きな進化を遂げた Domino Designer を紹介します。(図1)
図1. Eclipse をベーステクノロジーに採用した Domino Designer 8.5
Domino Designer 8.5 がベーステクノロジーに Eclipse を採用した主な理由として以下の 4点があげられます。
- 統合開発環境として発展した Eclipse が提供している高度なエディタ機能の再利用
- ユーザー・エクスペリエンスの向上
- プラグイン・モデルによる高い拡張性、柔軟性の実現
- Portal アプリケーションの開発ツールである Rational Application Developerなど、他の Lotus 製品用開発ツールとのプラットフォームの統一化
特にエディタ機能に関しては、従来の Domino Designer では LotusScript および @ 関数以外の開発言語については専用のエディタ機能が提供されておらず、Domino Web アプリケーション開発時における JavaScript によるコーディングや、Java によるエージェントのコーディング時などに開発生産性を下げる要因となっていました。今回のリリースでは、後述のXPages を用いて Domino Web アプリケーションを開発する際に使用する JavaScript エディタに Eclipse ベースの高度なエディタが採用され、開発生産性の向上に大きく貢献しています。また、将来のリリースでは LotusScript 用のエディタや Java 用のエディタなども Eclipse ベースのエディタに置き換えられ、Domino Designer はより使いやすい開発環境へと進化する予定になっています。
Domino Designer が Eclipse ベースになったことで、従来の Notes アプリケーション開発時の操作感が損なわれてしまうのではないかと心配する開発者もいるかもしれませんが、実際には、従来の Notes アプリケーション開発時に行うフォームの設計やビューの設計などに関する機能は、従来の操作感をそのまま保った形で提供されています。これにより、Notes アプリケーション開発者は従来の Notes アプリケーション開発のスキルや経験をそのまま生かしながら、新たな技術によって、より高度なアプリケーション開発を行うことができるようになりました。Eclipse をベースとした Domino Designer 8.5 では Notes アプリケーションである NSF ファイルを Eclipse が標準機能として提供しているJava 開発用などのパースペクティブでも扱うことができます。その際に NSF ファイルは Eclipse 上で 1 つの仮想プロジェクトとして扱われ、フォームやビューなどの設計要素は、そのプロジェクトを構成する個々の仮想ファイルとして扱われます。またNSF ファイル中に外部の Java ライブラリやリソース・ファイルを組み込み、 NSF アプリケーション内で利用することも可能になっています。この仕組みを利用して提供された Domino Designer 8.5 のもっとも大きな新機能の一つがXPages です。 Domino Designer が Eclipse ベースになったことにより、プラグインによる拡張性が格段に向上し、XPages の機能を取り込むことが可能となりました。このように Domino Designer 8.5 では従来の Domino Designer の持つ機能や特性を生かしながら、より高度なアプリケーション開発を行うための機能が提供されるようになりました。
Lotus Domino XPages の解説
Lotus Domino XPages (以下、XPages) は IBM Lotus Domino 8.5 から提供された、Domino サーバー上で Web 2.0 技術を取り入れたリッチな Web アプリケーションを開発するためのテクノロジーです。従来のDomino Web アプリケーションの開発においては Domino Designer に Web 画面専用のデザイン機能などが提供されておらず、NSF アプリケーションに HTML のコード埋め込むための機能であるパススルー HTML などを利用して開発する必要がありました。そのため、リッチな Web アプリケーションを開発するためには非常に高度な技術スキルが必要でした。しかし、XPages では従来の NSF の持つフォームやビュー、エージェントなどの設計要素を有効に再利用しつつ、Web に特化した画面を作成することが可能になりました。また、その画面を作成するための高度なデザイナー機能も Domino Designer 8.5 の一つの重要な機能として提供されています。XPages は JavaEE アプリケーションのユーザー・インターフェースを簡単に開発するための Web アプリケーション・フレームワークである JSF (JavaServer Faces) をベーステクノロジーとして利用しています。JSF はJava Community Process で定義された標準技術です。XPages は JSF をさらに簡略化、抽象化し、アプリケーションをXML マークアップ言語を利用して定義します。Domino Designer 8.5 では、その XML を WYSIWYG で編集するための機能を、XPages のビジュアルなデザイナー機能として提供しています。これによって、JSF をベースとしながらも、アプリケーション開発者は JSF を利用していることを一切意識することなく、Lotus Domino 上で JSF ベースのリッチな Web アプリケーションを開発することができるようになりました。
XPages でDomino Web アプリケーションを開発する際は、アプリケーションである NSF ファイル内に新たに追加された XPages 用の設計に Web アプリケーションの設計要素を追加します。開発作業は、画面を定義するためのコントロールの配置、配置されたコントロールのプロパティの設定、ロジックの実装、という流れで行います。画面を構成するコントロールには以下の3種類が用意されています。
- コア・コントロール – エディット・ボックス、ボタン、リッチテキストエディタなどのユーザー・インターフェースを定義するための最小単位のコントロールです。
- コンテナー・コントロール – コア・コントロールの組み合わせをひとまとめにして扱ったり、テーブル形式、ビュー形式などの表示を行ったりするためのコントロールです。ページ内での部分更新やスタイルシートの適用、テーマの定義の際などにも利用される重要なコントロールです。
- カスタム・コントロール – コア・コントロールやコンテナー・コントロールの組み合わせを、新たなコントロールとして再利用可能にするコントロールです。アプリケーション内で繰り返して利用されることが想定されるコア・コントロールやコンテナー・コントロールの組み合わせを、カスタム・コントロールとして扱うことで開発生産性の向上を支援します。
図2. XPgaes で利用できるコントロール
XPages の画面デザインは、これらのコントロールを組み合わせて配置することで定義を行います。次にそれぞれのコントロールに対してプロパティを設定します(図3)。
図3. プロパティの設定画面
プロパティの設定によって、配置したコントロールの細かな設定や定義を行うことができます。たとえば、XPages で作られた画面に入力された値を NSF アプリケーションのフォームに格納するためのデータ・バインディングや、画面の見た目を整えるためのスタイルシートの適用なども、プロパティの設定で簡単に行うことができます。特に Web アプリケーション開発時の実装で苦労することの多いデータの妥当性検証、タブ・オーダーの設定、アクセラレーター・キー(ショートカット・キー)の設定なども、このプロパティで容易に定義することができます。このように XPages ではコントロールの配置と、配置したコントロールのプロパティを設定するだけでリッチな見た目と機能をもった Web アプリケーションを Lotus Domino サーバー上に簡単に作成することができます。その他にも、Web 2.0 技術の代表格である AJAX (Asynchronous JavaScript + XML) を利用したタイプ・アヘッドやページの部分更新の設定もコーディングなしでプロパティの設定のみで簡単に定義することができます。
コントロールを配置して画面を作成したら、次はロジックの実装です。XPages ではロジックを実装するための仕組みとして、サーバー・サイド JavaScript、クライアント・サイド JavaScript、およびシンプル・アクションの3つを用意しています。シンプル・アクションとは、ページの遷移やデータの保存などの Web アプリケーションを開発する際によく利用するロジックを、コードを書かずにウィザード形式で実現することができる機能です。シンプル・アクションでは用意されていない複雑なロジックを実装する際に利用するのがスクリプト言語になります。XPages ではスクリプト言語として サーバー・サイドJavaScript とクライアント・サイド JavaScript をサポートしています。厳密にはサーバー・サイドにおけるロジックの実装には JSF の式言語 (JavaServer Faces Expression Language) も利用可能ですが、本稿では割愛しサーバー・サイド JavaScript のみを説明します。クライアント・サイド JavaScript の実装は実行時に Web ブラウザが持つ JavaScript のインタープリタが利用されるため XPages に特化したメソッドは提供されていませんが、Web ブラウザで実行可能な JavaScript のメソッドはすべて利用することができます。サーバー・サイド JavaScript は XPages 用に用意された Lotus Domino サーバー上の ECMA 262 準拠のインタープリタで実行されます。NotesSession や NotesDocument などのNotes オブジェクトにアクセスするためのメソッドが用意されており、従来の NSF アプリケーションと同様のバックエンド処理を行うことができます。また、NSF 内に格納されているエージェントにアクセスし、実行することも可能になっています。その他に Lotus Domino サーバー上にある Java クラスにもアクセスすることもできるため、カスタム Java ライブラリを経由して Lotus Domino サーバー以外のサーバーと連携したDomino Web アプリケーションの作成も可能です。従来のNotes アプリケーション開発者に多用されてきた @ 関数もサーバー・サイド JavaScript 内で利用することができるようになっています。 このように、シンプル・アクションやスクリプト言語を用いて XPages にロジックを実装することで、Domino サーバー上にリッチな Web アプリケーションを作成する事ができます。XPages を利用したアプリケーションの例として、製品の一部として提供されているディスカッション・テンプレートがあります。このテンプレートをインスタンス化し Web ブラウザからアクセスすると、ND 8.5 より前のバージョンで提供されているディスカッションアプリケーションとは異なる、 XPages でデザインされた見た目、操作感を体験することができます(図4)。
図4. XPages でデザインされたディスカッション・データベース
以上のように、XPages によって従来のLotus Domino サーバー上では実現が難しかったリッチな Web アプリケーションを実現できるようになり、Lotus Domino サーバーを利用できるシーンが大きく広がっています。より詳細な XPages によるアプリケーション開発手法は次回以降の記事で紹介します。
Composite Application に関連する新機能
IBM Lotus Notes 8 から利用可能となった Composite Application ですが、IBM Lotus Notes 8.5 (以下 Notes 8.5) では、Composite Application をより容易に実現するための便利な新機能が数多く提供されています。特に Generic Containersは Composite Application をより容易にかつ素早く開発することを可能にします。Lotus Notes 8.5 では Generic Containers をWeb ブラウザ・コンポーネントに適用したBrowser Container のみの提供ですが、順次 Notes View Container、Symphony Spreadsheet Container、Host On-Demand Container などがダウンロードなどによって提供される予定です。本稿では Notes 8.5 の製品標準機能として提供されている Browser Container を用いた Composite Application 開発を紹介します。Browser Container は既存の Web アプリケーションを Composite Application のコンポーネントとして再利用するためのコンテナーであり、コンテナー上の Web アプリケーションの Document Object Model (DOM) にアクセスすることで他のコンポーネントとの連携を実現することができます。また、一般的な Web アプリケーションは複数のページを遷移する形で作られているため、Composite Application のコンポーネントとしては汎用的な再利用は難しかったですが、Browser Container では Landmark 機能を用いることでこの問題を解決し、汎用的な再利用が可能になっています。
Browser Container を用いた Composite Application 開発の流れを、具体的な例を示しながら解説します。ここでは、メールボックスと 2つの Browser Container を使い、Property の Publish/Receive の両方を利用したサンプルを作成します。まず、Notes クライアント上で – Blank Composite Application – テンプレートを用いて Composite Application 用の NSF を作成し、その後 Composite Application Editor (以下 CAE) で作成した NSF を開きます。 Lotus Notes 8.5 の CAE は図5のようになります。サイド・バーへのコンポーネントの配置が可能になったり、利用可能なコンポーネントしてGeneric Containers が用意されたりしていることが確認できます。図5では Browser Container 以外のダウンロード可能な Generic Containers も導入済みになっています。
図5. Lotus Notes 8.5 の Composite Application Editor
まず、右側にある Component Library から中央の作業ペインに Browser Container をドラッグ & ドロップで配置します。次に、配置したコンポーネントの Component Properties を編集します。Component Properties の設定画面で、Component Settingsタブを開いてデフォルトの URL を指定します。この URL には、Browser Container が起動された際に最初に表示したいWeb ページを指定します。ここでは IBM の Web サイト内に構成されている IBM Lotus Connections の Profile ページであるhttp://www.ibm.com/profiles に設定します。(図6)
図6. Component Properties の設定画面と Initial URL の設定
次に、Advanced タブに移動し、Wiring 可能なProperty を追加します。今回のサンプルでは、他のコンポーネントから検索用のキーワードを受け取るための searchString、および Browser Container 上で表示される Lotus Connections 内の Blog の URL を Publish するための blogURL の 2つを追加します。また、追加 Property が Wiring 可能とするため左端の Wireable にチェックを入れます。(図7)
図7. Wiring 可能な Property の追加
以上で、配置した Browser Container は 2 つの Property を持つコンポーネントとなりました。次に、用意した 2つの Property の詳細設定を行います。設定画面の Landmark s タブに移動し、表示される Web ページの目印となる Landmarks の設定、およびその Landmarks が設定された Web ページでの Property の扱いの設定を行います。Landmark “https://www.ibm.com/profiles/*” の Web ページでは検索キーワードを Receive する、Landmark “https://www.ibm.com/profiles/html/*” のページではページ内に記載されている blog の URL を Publish する、と設定します。検索キーワードに関しては、Property を受け取ったら Web ページ上で内部 ID として “ss_name” を持つ、検索キーワード入力用 Input Box に受け取った値をセットするよう設定します。これにより、受け取ったキーワードを用いて Profile の検索を行うことができるようになります。次に、検索結果のページが完全に読み込まれた際に、ユーザー情報からそのユーザーの持つ Blog の URL を blogURL として publish するように設定します。設定を行った画面は図8のようになります。
図8. Landmarks および Property の詳細設定画面
Web ページ内の特定フィールドの値を Property として Publish する際には、Web ページの DOM の中でどの部分がその値を表しているのかを XPath を利用して指定する必要があることに注意してください。以上で、1つ目のコンポーネントの設定が完了になります。
次に、右の Component Library からもう一つ Browser Container を配置します。先ほどと同じステップで、今度は Property として Receive した値を URL としてセットし、そのページを開くように設定を行います。設定を行った設定画面が図9になります。Property の名前として receiveURL を利用しています。
図9. 受け取った URL を開く Browser Container の設定
次に、Component Library から Notes Mail View を配置します。最後に配置したコンポーネントを Wiring し Composite Application として連携するように設定します。Wiring 画面を開き、Notes Mail View の Common name changed から Profile を表示している Browser Container の Set searchString に Wire します。次にProfile を表示している Browser Container の Set blogURL からもう 1つのBrowser Container の Set receiveURL を Wire します。 以上、2 本のWiring を施すと図10のようになります。
図10. Wiring 設定画面
CAE を閉じて動作を確認します。Notes Mail View にてメッセージを選択すると、選択されたメッセージの差し出し人名が Profiles の検索フィールドに自動的にセットされます。(図11)
図11. 差し出し人名が Web アプリケーションのフィールドに自動セット
次に、名前検索ボタンをクリックし検索結果が表示されると、そのページ内に記載されている Blog の URL が画面右上の Browser Container に渡され、その Blog ページが表示されます。(図12)
図12. Blog URL で指定されたページが表示される
以上のように、Generic Containers を利用することで既存のアプリケーションを再利用した Composite Application を素早く作成することができます。また、この Generic Containers を使用した際には、従来はコンポーネント同士を Wiring する際に必須であった双方のインタフェースを定義した wsdl ファイルが不要になります。Lotus Notes 8.5 からは内部的に Property to Property という新しい形式の Wiring がサポートされるようになり、wsdl ファイルを作成しないでもコンポーネント同士のwiring が可能になっています。Property to Property Wiring を利用するためには、新規に提供されているAPI の PropertyBrokerListenerクラスを用いて実装を行います。コンポーネントは自身で動的に Property の定義を行うことができ、Property の Publish/Receive 時のアクションは上記の API を用いて行う形になります。この仕組みを利用することで、特定のアプリケーションに特化した Generic Containers を作成することも可能です。
また、Lotus Notes 8.5 では Lotus Notes 8.0.1 から提供されている LiveText 機能と Composite Application との連携機能も強化されています。先ほど作成した URL を受け取ってページを開く Browser Container を利用し、LiveText を利用して URL を受け取り、その URL を開くといった連携も可能です。その際の Wiring の方法は図13のようになります。
図13. LiveText との連携設定
Web Site として認識された LiveText と Set URL を Wiring した状態になり、LiveText をクリックすると Browser Container でその URL のページを開くことが可能になります。Composite Application として、コンポーネントが組み合わされていることが前提になります。
以上のように、Lotus Notes 8.5 ではプログラミングによるコンポーネント開発を行わなくても既存のアプリケーションを再利用した Composite Application の開発が可能になり、LiveText を用いた柔軟なコンポーネント間の連携も可能になるなど、Composite Application をより身近に利用してもらうための新機能が追加されています。
まとめ
Lotus Notes/Domino 8.5 ではアプリケーション開発に関する多くの新機能が提供されており、企業の生産性を高めるためのアプリケーションの実現が可能になっています。Domino XPages によって、リッチな Domino Web アプリケーションの開発が可能となり、Generic Containers や Live Text 連携の強化などの新機能によって、より簡単に Composite Application を実現することができるようになっています。これらの新機能を用いて、従来の Lotus Notes/Domino で蓄えられた資産を再活用しながら、新たなアプリケーションの開発にも取り組んでいただけることを願っています。
参考文献
著者について  | |  | 佐藤 淳はソフトウェア開発研究所のLotus テクノロジー開発に属し、IBM Lotus Notes/Domino や IBM Lotus Sametime, IBM WebSphere Portal など、さまざまな Lotus 製品に対応したソリューションやアプリケーションの開発に取り組んでいる ISV/BP 様の技術支援を行っています。昨年から developerWorks で Blog をやっていますが、積極的なネタ提供には読者のあつーいコメントが必要だなと日々感じている今日この頃です。 |
記事の評価
|