レベル: 初級 林田 憲昌 , ソフトウェアエンジニア, Lotus Notes クライアント, IBM
2008年 4月 25日 2008 年 3 月にリリースされた Lotus Notes 8.0.1 で新たに追加された機能の中でひときわ注目を集めているのが My Widgets と Live Text です。My Widgets および Live Text により、コンテキストに応じた情報を Web サイトや Notes アプリケーションから素早く取得することが可能になります。また、My Widgets と Live Text はパワーユーザーが用途に応じて自由に拡張することができるようになっており、さらには、互いの機能をうまく連携させることによって、その利便性を向上させることができます。本稿では、My Widgets と Live Text の拡張方法について具体的な例を示しながら解説します。
はじめに
2008 年 3 月にリリースされた Lotus Notes 8.0.1 では様々な新機能が追加されましたが、その中でもひときわ注目を集めているのが My Widgets と Live Text です。各機能の詳細については「IBM Lotus Notes 8.0.1 新機能技術概説」を参照してください。My Widgets および Live Text は、各ユーザーが用途に応じて自由に拡張することができるようになっており、そのためのウィザードなども用意されています。My Widgets と Live Text はそれぞれ異なる機能ではありますが、互いに密接な関係を持っており、作成時に連携を考慮することで利便性をより向上させることができるようになります。本稿では、My Widgets と Live Text の拡張方法について、具体的な例を示しながら解説していきます。
なお、My Widgets を利用する際には Widget ツールバーおよび My Widgets サイドバー・アプリケーションを使用しますが、これらはデフォルトでは非表示の状態になっています。Lotus Notes のメニューから「File」 -> 「Preferences...」 -> 「Widgets」で設定画面を開き(図1)、「Show Widget Toolbar and the My Widgets Sidebar panel」にチェックを入れると、図2のようにツールバーとサイドバーが表示されるようになり、My Widgets に関連する様々な機能を利用できるようになります。但し、読者の方が使用している環境の Lotus Domino のポリシー設定によっては、デフォルトの状態が異なったり、これらの機能自体を利用できなかったりする場合があります。My Widgets のデフォルト設定の詳細については InfoCenter の「Default out-of-box My Widgets behavior」を参照してください。
図1. My Widgets の設定
図2. Widget ツールバーと My Widgets サイドバー・アプリケーション
My Widgets の拡張
Lotus Notes 8.0.1 において Widget として表示させることができるのは、「Notes Views」、「Web Page」、「Feed」、「Google Gadgets」の4種類です。それぞれタイプの Widget をウィザードを使ってステップ・バイ・ステップ形式で作成することができます。本稿では、その中から、「Google Gadgets」と「Web Page」を用いた Widget の作成方法について説明します。残りの2種類の Widget も同じような手順で作成することができます。それらの詳細については InfoCenter の 「Configuring a widget using the wizards」を参照してください。
Google Gadget Widget の作成
4種類の Widget のうち、最も簡単に作成できるのが Google Gadgets を組み込むタイプの Widget です。Google Gadgets は、Google が提供する HTML と JavaScript で作成されたシンプルなミニ・アプリケーションで、Google Gadgets API や Google Gadgets Editor を用いて簡単に開発することができ、様々な Web ページやアプリケーションに組み込むことができることから、現在、幅広く普及しています。Web 上には世界中の開発者が作成した便利な Google Gadgets が多数公開されており、それらを利用することで簡単に Lotus Notes の機能を強化することができます。そこで、まずはこの Google Gadgets を用いたWidget を作成する手順について説明します。
はじめに、Lotus Notes の Web ブラウザで以下の URL を開き、Google Gadgets ディレクトリーを表示させます(図3)。
http://www.google.com/ig/directory?synd=open
図3. Google Gadgets ディレクトリー
ここでは YouTube を利用するための Google Gadget を Widget として追加してみることにします。検索ボックスに「Official YouTube Gadget」と入力して検索し、図4のような Gadget の説明ページを表示させます。この状態で、Widget ツールバーの「Configure a Widget from Current Context...」ボタンをクリックすると、Widget 作成ウィザードが開きます(図5)。ここでは「Google Gadget」を選択し、「Next」をクリックします。
図4. Official YouTube Gadget
図5. Widget 作成ウィザードで「Google Gadget」を選択
サービス規約の内容を確認し、同意した上で「Next」をクリックします(図6)。
図6. Google Gadgets Terms of Service
適当なコンポーネント名を入力し、「Display as a sidebar panel」を選択して「Finish」をクリックします(図7)。
図7. コンポーネントの設定
すると、サイドバー・パネルに「Official YouTube Gadget」が追加され、ビデオの検索や閲覧が可能になります(図8)。
図8.サイドバー・パネルとして追加されたOfficial YouTube Gadget
また、My Widgets サイドバー・アプリケーションを開くと、この「Official YouTube Gadget」が Widget として登録されていることも確認できます(図9)。これは、この Google Gadget を表示するための Widget が作成されたということを意味します。以上で Google Gadget を組み込んだ Widget の作成は完了です。
図9. Widget として登録された Official YouTube Gadget
Web Page Widget の作成
4種類の Widget のうち、最もよく利用されるのがWeb ページを表示する Widget でしょう。Web 上の様々なコンテンツを Widget として表示させることができるだけでなく、外部のコンポーネントからデータを渡すことでコンテンツの内容を動的に更新することもできます。これにより、コンテキストに応じた Web 上の情報に素早くアクセスすることができるようになります。ここでは、検索クエリーを外部コンポーネントからデータとして渡すことで、必要とする情報を取得できるようなWeb Page Widget を作成してみます。Lotus Notes 8.0.1 では、Widget を 「Web ページ全体から作成する方法」と、「Web ページ上のフォームから作成する方法」の2つのパターンが用意されています。
1. Web ページ全体から Widget を作成する方法 (HTTP GET を用いる方法)
現在、多くの Web サイトは URL にパラメーターを渡すことでコンテンツの内容を変化させることができるようになっています。例えば developerWorks のサイト内で「Lotus」というキーワードを使って検索を実行した場合、図10のような結果が表示されますが、この時に使用されている URL は以下のようなものです。
http://www.ibm.com/developerworks/search/searchResults.jsp
?searchType=1&searchSite=dW&searchScope=dW&query=Lotus&Search=Search
ここで注目すべき点は「query=Lotus」の部分です。HTTP GET メソッドを用いてリクエストを送信する際には、URLに「key=value」という文字列を付加することによって、サーバーにパラメーターを渡すことができるようになっています。developerWorks の検索の例では、「query」(検索クエリー)として「Lotus」という文字列を使った場合の検索結果を表示するようにサーバーにリクエストしている、と考えられます。従って、「Lotus」の部分を違うキーワードに変更した URL を使用すると、異なる検索結果を表示させることができます。このような、URL に付加するパラメーターによってコンテンツの内容を動的に変化させることができる Web サイトを利用することで、外部のコンポーネントと連動して情報を更新するような Widget を作成できます。以下に具体的な手順を示します。
まず、上述したような URL を持つ Web サイトを Lotus Notes のブラウザで開きます。ここではdeveloperWorks のサイト内で 「Lotus」を検索した結果を表示したページを使います。ページがロードされたら、Widget ツールバーの「Configure a Widget from Current Context...」ボタンをクリックします(図10)。
図10. developerWorks のサイト内を「Lotus」というキーワードで検索した結果を Lotus Notes のブラウザで表示
Widget 作成ウィザードが開くので、ここでは「This Web Page」を選択し、「Next」をクリックします(図11)。
図11. Widget 作成ウィザードで「This Web Page」を選択
使用したい Web ページを選択します。事前に Lotus Notes の Web ブラウザで開いていたページがデフォルトで選択されているので、そのまま「Next」で次に進みます(図12)。
図12. Web ページの選択画面
コンポーネントの設定を行います。ここで重要なのは「Component Settings」の部分で、選択した Web ページの URL にパラメーターとして付加されていた Key と Valueのセット一覧がリストアップされています(左が Key、右が Value です)。この一覧のうち、外部からデータを渡して動的にパラメーターを変更させたい Key と Value のセットを選んでチェックを入れます。ここでは検索クエリーとして使用する文字列を動的に変更したいので、Keyが「query」であるセットにチェックを入れます。Value にはデフォルトの値をセットすることもできますが、今回は空にします。パラメーターの設定が完了したら、一番下のラジオボタンの中から「Wire as an action」を選択し、「Next」をクリックします(図13)。
図13. コンポーネントの設定
次はアクションの設定で、Widget と外部コンポーネントとの連携方法について設定します。Widget では外部から受け取ることができるデータのことを Content と呼びますが、この設定画面の「What content do you want to use?」というセクションで、どのような種類の Content を受け取ることができるようにするのかを設定します。ここでは「Other content」の中から「Text Selection」を選択してみましょう。この場合、Lotus Notes 文書内で選択された文字列が Content となり、その文字列を Widget に渡すことができるようになります。各 Content は Property と呼ばれる属性を複数持つことができ、「Wire which content property to which component property?」のセクションで、渡ってくる Content のどの Property の値を Widget のパラメーターにセットするのかを設定します。「Text Selection」 Content の場合、「contents」という Property の値に選択された文字列がセットされているので、この文字列を Widget の 「query」というパラメーターの値にセットされるようにするために、「Content property」として「contents」を、「Component property」として「query」を選択します(図14)。最後に、この Widget が外部のコンポーネントから呼び出された場合に、デフォルトでどのように表示させるのかを設定します。サイドバー・パネル上に表示したり、新しいタブで開いたりといった動作を指定できるので、表示させる Web ページの内容によって適切なものを選択してください。ここでは「Floating Window」を選択します。以上で Widget の作成は完了です。
図14. Action の設定
My Widgets サイドバー・パネルを開くと、作成した Widget が追加されています(図15)。このパネル上から Widget のパラメーターの値を手入力することで動作確認を行うこともできます。Widget を選択し、右クリックメニューから「Open in」 -> 「表示方法 (Tab, Sidebar Panel など)」を選択するとパラメーター入力ダイアログが表示されます(図16)。ここでは「Python」と入力してみましょう。
図15. My Widgets サイドバー・パネルから Notes Widget を起動
図16. Widget に渡すパラメーターを手入力
すると、「Python」という文字列を使って developerWorks 内の検索を行った結果が表示され(図17)、この Widget が外部から渡されたデータによってコンテンツの内容を変化させることができるコンポーネントであることが確認できます。
図17. 手入力された「Python」という文字列を使って developerWorks 内の検索を行った Widget
また、この Widget は Lotus Notes 文書上で選択した文字列を渡すことができるように設定しましたが、そのような Widget がインストールされている場合、Lotus Notes 文書上で任意の文字列を選択してコンテキストメニューを表示させた際に、その文字列を渡すことができる Widget の名前がメニューとして表示されるようになります(図18)。
図18. Lotus Notes 文書上で文字列を選択し、Widget にデータとして渡すためのメニュー
このメニューを選択すると、選択されている文字列をデータとして受け取った Widget が起動します。図19の例では、Lotus Notes 文書内で選択されている「Lotus Domino」という文字列を使って developerWorks 内を検索した結果が Widget として表示されています。
図19. Lotus Notes 文書上で選択された「Lotus Domino」という文字列を使って developerWorks 内の検索を行ったWidget
2. Web ページ内のフォームから Widget を作成する方法 (HTTP POST を用いる方法)
Web ページの中には、フォームに入力した内容をサーバーに送信することによって、コンテンツの内容を変化させることができるようなページも数多く存在します。My Widgets では、そのようなページのフォームに外部コンポーネントから受け取ったデータを自動的に入力し送信することによって動的に情報を更新することができるような Widget を作成することができます。 以下にその手順を示します。
まず、フォームが含まれているページを Lotus Notes の Web ブラウザで開きます。ここでは Lotus Connections の Profile 検索を行うための「Person Search – Simple」フォームを使用します(図20)。フォームを含むページがロードされたらWidget ツールバーの「Configure a Widget from Current Context...」ボタンをクリックします。
図20. Lotus Connections の Profile を検索するためのフォーム
Widget 作成ウィザードが開くので、ここでは「From a form on this Web Page」を選択し、「Next」をクリックします(図21)。
図21. Widget 作成ウィザードで「From a form on this Web Page」を選択
ウィザード上に Web ページが読み込まれ、そのページ内のフォーム一覧がリストアップされます(図22)。「Form」リストの番号を選択すると、その番号に対応するフォームが下のプレビュー画面上でハイライトされます。このプレビューを見ながら使用したいフォームの番号を探し出して選択し、「Next」をクリックします。
図22. フォームの選択
選択したフォームの ID がリストされているので、チェックを入れます(図23)。これにより、外部から渡ってきたデータを、その ID を持つフォームにセットすることができるようになります。これ以降の設定については「Web Page全体から Widget を作成する方法」と同様ですので、そちらを参照してください。
図23. コンポーネントの設定
この Widget に Lotus Notes 文書上で選択した文字列を渡せるようにした場合、図24の例のように、Lotus Notes 文章内に含まれている人名を使って Lotus Connections の Profileを検索した結果を Widget として表示させることができるようになります。
図24. Lotus Notes 文書上で選択された「Norimasa Hayashida」という文字列を使って Lotus Connections の Profile 検索を行ったWidget
Widget と Live Text の連携
Live Text は、Lotus Notes 文章からある特定のタイプの単語を抽出してアンダーラインを引き、その単語から様々なアクションを実行可能にする機能です。Lotus Notes 8.0.1 では、デフォルトで英語の人名や地名、組織名といったタイプの単語を抽出することが可能になっています(図25)。
図25. Live Text によって抽出された人名と地名
Widget はこの Live Text によって抽出された単語を Content として受け取ることができるようになっています。ここでは、先ほど作成した Lotus Connections の Profile を検索する Widget に対し、Live Text によって抽出された人名を渡せるように設定してみることにします。まず、My Widgets サイドバー・アプリケーションから Profiles Search Widget を選択し、コンテキストメニューから「Configure a New Action」メニューを選択します(図26)。
図26. 「Configure a New Action」メニュー
アクションの設定画面が開くので、Content の種類として「Recognized Content」の「Person」を選択します(図27)。Live Text によって抽出されるContent は複数の Property を持っている場合があり、ここで使用する「Person」 Content も「person..email」 や「person.name」といった複数の Property を持っています。これは、「Person」という Content に対し、その人物に関連する付加情報(名前、メールアドレスなど)が Live Text によって複数セットされているということを意味します。このようなデータを受け取った Widget は、複数の値を同時に取り出し、それぞれの値を異なるパラメーターにセットするといったことも可能になります。ここでは 「person.name」 の値、つまり人名を Widget の「name」パラメーターにセットできるように設定します。
図27. Live Text によって抽出された 「Person」 Contentを選択した例
このように設定された Widget がインストールされている場合、Live Text によって「Person」であると認識された文字列上でコンテキストメニューを表示させると、「Person」 Content をデータとして渡すことができる Widget の名前がメニューとして表示されるようになります(図28)。このメニューを選択すると、抽出された人名をデータとして受け取った Widget を起動させることができます(図29)。以上のように、Live Text と Widget は簡単に連携させることができるようになっています。Widget に表示させたい情報は、例えば、地名であれば地図情報、組織名であれば株価情報、といったようにデータとして渡したい単語の種類によって異なるものと考えられますが、この連携機能によって常に最適な Widget を素早く呼び出すことができます。
図28. Live Text によって抽出された 「Person」 Contentのコンテキストメニュー
図29. Live Text によって抽出された「Jeff Eisen」という文字列を使って Lotus Connections の Profile 検索を行ったWidget
Live Text Recognizer の作成
Live Text において、単語を抽出するための認識エンジンは Recognizer と呼ばれており、前述したように、デフォルトでは英語の人名や地名、組織名を抽出するための Recognizer が用意されています。Lotus Notes 8.0.1 ではそれらに加えて、正規表現を用いた独自の Recognizer をユーザーが追加することが可能になっています。正規表現とは、ある文字列のパターンを表現するための表記法のことで、多くのテキストエディターやプログラミング言語でサポートされています。正規表現を用いることにより、例えば、大量のテキストの中からある特定のパターンにマッチする文字列を見つけ出すといったことが可能になります。このような正規表現を Live Text の Recognizer として用いることで、規則性のある文字列であれば、Lotus Notes 文書の中から抽出することができるようになります。なお、ここで使用できる正規表現は J2SE 5.0 で使用できる正規表現と同等のものです。詳細については java.util.regex.Pattern の JavaDoc を参照してください。
では、ここではYYYY/MM/DD の形式で表される日付(1977/8/24、2007/12/31など)を抽出できるような Recognizer を作成してみることにしましょう。この文字列のパターンにマッチするような正規表現としては以下のようなものが考えられます。
ここで、「\d」は0~9の半角数字、「{2,4}」はそれが2桁か4桁であるということを表します。つまり、「\d{2,4}」は2桁か4桁の数字であるということを表します。では、この正規表現を使った Recognizer を作成してみましょう。まずは My Widgets サイドバー・アプリケーションのメニューから「Manage Actions, Content, and Recognizers」を選択します(図30)。
図30. 「Manage Actions, Content, and Recognizers」メニュー
Widget Management アプリケーションが開くので、「Recognizer」タブを選択し、「New Recognizer...」ボタンをクリックします(図31)。
図31. Widget Management アプリケーション
Recognizer 名や使用する正規表現、この Recognizer によって抽出される文字列の Content Type を指定します。Content Type としてはデフォルトで提供されている「Person」や「Location」、「Organization」などを使用することもできますし、抽出したい単語の種類と合致するものがなければ新たに作成することもできます。ここで抽出したいのは日付であり、デフォルトでは用意されていないので、新たな Content Type を作成するために「New Type...」ボタンをクリックします(図32)。
図32. Recognizer の設定
適当なタイプ名を入力し、この Content Type を持つ Content に持たせることができる Property を追加します。ここでは、抽出したい YYYY/MM/DD という文字列の中から「年」・「月」・「日」の値を個別に取得できるようにするために、「date.year」、「date.month」、「date.day」という Property を持たせることにします(図33)。設定が完了したら、「OK」をクリックして Recognizer の設定画面に戻ります。
図33. Content Type の設定
Content Type として新たに作成した 「Date」 を選択し、使用する正規表現を入力します(図34)。ここで、正規表現のグルービングと呼ばれる機能を使うと、正規表現内の n 番目のグループにマッチした文字列を任意の Content Property にセットするといったことが可能になります。正規表現においては、「()」で括られた文字列がグループとなるので、先ほど示した日付を認識するための正規表現を少し改良し、以下のように変更します。
(\d{2,4})/(\d{1,2})/(\d{1,2}) |
この場合、「(\d{2,4})」にマッチした文字列が1番目のグループとなり、これは YYYY/MM/DD という文字列全体の中では「年」を表す部分なので、このグループ「1」にマッチした文字列が「date.year」にセットされるように「Groupings」の設定を行います。以下同様にして、グループ「2」の文字列が「date.month」に、グループ「3」の文字列が「date.day」にセットされるようにします。
図34. Recognizer の正規表現を設定
このような Recognizer を作成することで、Lotus Notes 文書内の YYYY/MM/DD 形式で記述された文字列が 「Date」 Type の Content として認識されるようになります(図35)。また、この Content のコンテキストメニューから「Display Date Properties」を選択することで、図36のように「年」・「月」・「日」の値がそれぞれ異なる Property にセットされ、個別に値を取り出すことができるようになっていることが確認できます。これにより、この Content を受け取った Widget は、「年」の値だけを取り出してパラメーターにセットしたり、「月」と「日」の値をそれぞれ異なるパラメーターにセットしたりといったことが可能になります。
図35. 作成した Date Recognizer によって認識された文字列
図36. 認識されたDate Content のProperty
まとめ
本稿では、Lotus Notes 8.0.1 から新たに登場した My Widgets と Live Text の拡張方法について具体的な例を示しながら説明しました。My Widgets と Live Text によって、コンテキストに応じたコンテンツに素早くアクセスすることが可能になりますが、表示させたい情報の内容は、ユーザーの好みや職務の内容によって大きく異なると考えられるため、使用したい Widget や Live Text Recognizer も個人によって千差万別である可能性があります。しかし、今回示したように、Widget はウィザード形式で容易に生成することができますし、Live Text Recognizer も多少技術に詳しい人であれば独自のものを作成することができるようになっているので、ユーザー・レベルで好みの Widget や Live Text Recognizer を揃えることができ、それによって個々の生産性を大幅に向上させることができるものと考えられます。また、作成した Widget や Live Text Recognizer は、メールで送信したり Widget カタログを使って共有したりすることもできるので、例えば、同じ部署の人にとって便利な Widget や Live Text Recognizer を作成し、配布することで、組織全体の生産性を向上させるといったことも可能かもしれません。興味を持たれた方は、ぜひ色々な Widget や Live Text Recognizer を作成してみて、自分や周りの人にとって便利な組み合わせを見つけ出してみてください。
参考文献
著者について  | |  | 林田 憲昌はソフトウェア開発研究所のWPLC開発部門に所属するソフトウェアエンジニアで、現在は主に Lotus Notes クライアントの開発に携わっています。Composite Application の Wiring ってパッチングみたいだなとか思ってしまうアナログシンセバブル世代です。 |
記事の評価
|