lotus notes/dominoを使った rss配信アプリケー...

21
® Lotus Technical Update Workshop © 2004 IBM Corporation Lotus Notes/Dominoを使った RSS配信アプリケーションの実装解説 2006年3月8日 日本アイ・ビー・エム システムズ・エンジニアリング株式会社 Notes/Domino Group 大川 宗之

Upload: others

Post on 04-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

®

Lotus Technical Update Workshop

© 2004 IBM Corporation

Lotus Notes/Dominoを使ったRSS配信アプリケーションの実装解説

2006年3月8日

日本アイ・ビー・エム システムズ・エンジニアリング株式会社

Notes/Domino Group

大川 宗之

Lotus Technical Update Workshop

2

目次

RSS解説

DominoによるRSS Feed化

• RSSとは何かを把握し、情報配信における重要性を理解する。• DominoでRSS Feed対応させる手法を学び、実際のアプリ、配信要件に合わせた最適な設計ができるようになる基礎を作る。

このセッションの目標

IBM Software Group | Lotus software

特記事項

本資料の記載内容は、正式な IBM のテストやレビューを受けておりません。内容について、できる限り正確を期すよう努めてはおりますが、いかなる明示または暗黙の保証も責任も負いかねます。本資料の情報は、使用先の責任において使用されるべきものであることを、あらかじめご了承ください。

掲載情報は不定期に変更されることもあります。他のメディア等に無断で転載する事はご遠慮ください。

本資料の著作権は日本アイ・ビー・エムにあります。非営利目的の個人利用の場合において、自由に使用してもかまいませんが、営利目的の使用は禁止させていただきます。

IBM は IBM Corporation の商標。Lotus は IBM-Lotus の商標。

その他、記載された社名および製品名は、それぞれ各社の商標または登録商標です。

Lotus Technical Update Workshop

3

RSS概要

Syndicate this site

概要概要

RSSとは、Webサイトの情報(メタデータ)を簡易に表現したXMLファイルを指す。サイトの説明、更新日時、最近追加された各文書のタイトル・サマリー・URLなどを格納する。RSSの提供を“RSS Feed”と呼ぶ。RSSには、フォーマットの違いや歴史的な理由により、以下の3つの解釈がある。

RDF Site SummaryRich Site SummaryReally Simple Syndication

RSSとは、Webサイトの情報(メタデータ)を簡易に表現したXMLファイルを指す。サイトの説明、更新日時、最近追加された各文書のタイトル・サマリー・URLなどを格納する。RSSの提供を“RSS Feed”と呼ぶ。RSSには、フォーマットの違いや歴史的な理由により、以下の3つの解釈がある。

RDF Site SummaryRich Site SummaryReally Simple Syndication

目的目的

サイト閲覧者に「更新情報」を配信する。

Blogサイト、ニュース系サイトなどの更新頻度の高いサイトで提供される。リアルタイム性の高いデータ配信にも適している(例:天気予報、株価速報など)

サイト閲覧者に「更新情報」を配信する。

Blogサイト、ニュース系サイトなどの更新頻度の高いサイトで提供される。リアルタイム性の高いデータ配信にも適している(例:天気予報、株価速報など)

効果効果

ユーザーは、RSSリーダーを使用して定期的にRSSをチェックすることにより、自動的に最新情報を得られる。

ユーザーは、自分の興味のある分野・トピックのRSSだけを選択してRSSリーダーに登録できる。RSS提供側は、メールマガジンのようにユーザー情報を管理する必要がない。共通のデータフォーマットが定義されることにより、サイト間のデータ連携が容易になる。

ユーザーは、RSSリーダーを使用して定期的にRSSをチェックすることにより、自動的に最新情報を得られる。

ユーザーは、自分の興味のある分野・トピックのRSSだけを選択してRSSリーダーに登録できる。RSS提供側は、メールマガジンのようにユーザー情報を管理する必要がない。共通のデータフォーマットが定義されることにより、サイト間のデータ連携が容易になる。

Lotus Technical Update Workshop

4

RSS概要 ‒ RSSによる情報配信

News系サイト - A

記事

RSS

RSSリーダー

記事

記事

Blog - A

記事

RSS

記事

記事

Blog - B

記事

RSS

記事

記事

News系サイト - B

記事

RSS

記事

記事

RSS

記事サマリー記事サマリー記事サマリー記事サマリー

最新記事のチェック最新記事のチェック

RSSを定期的に取得RSSを定期的に取得• RSSのパース•記事サマリーの表示•ポップアップ通知•記事のキーワード検索• ティッカー表示• etc

• RSSのパース•記事サマリーの表示•ポップアップ通知•記事のキーワード検索• ティッカー表示• etc

通常は記事の追加と同時にそのメタ情報がRSSに反映される。通常は記事の追加と同時にそのメタ情報がRSSに反映される。

Lotus Technical Update Workshop

5

RSS概要 ‒ RSSリーダーの種類

クライアント・タイプ

サーバー・タイプ

専用クライアント・タイプ

プラグイン・タイプ

ケータイ用

デスクトップツール・タイプ

メーラーと同等の3ペインインターフェースを持つものが多い。

通常は、RSSに記述されているlinkを読み込み、ブラウザでインライン表示させる機能を保有している。

タスクバーに常駐し、更新があった場合お知らせしたり、ティッカー表示したり、デスクトップに表示したりする。

ブラウザやメーラーに組み込むタイプ。

Mozilla Thunderbird など、RSS読み込み機能を統合したメーラーが存在する。フリーでノーツ用もある。

ブラウザの場合、プラグインとして統合させ、主にブラウザのブックマークバー/サイドバーなどから利用する。ツールバー的に、RSS読み込み機能を統合したブラウザも存在する。(Mozilla Firefox ライブブックマーク, IE7.0も対応予定)

i-Mode用のリーダーがフリーで提供されている。

Webサイトに事前にRSSフィードを登録し、ブラウザーでアクセスするとRSSリーダー的に機能する。

Lotus Technical Update Workshop

6

RSS概要 ‒ 専用クライアントタイプのUI

各RSS Feedがフォルダーで管理されているペイン。

各RSS Feedがフォルダーで管理されているペイン。

左の画面で選択したRSS Feedが配信している記事の一覧。

左の画面で選択したRSS Feedが配信している記事の一覧。

上の画面で選択した記事を表示。上の画面で選択した記事を表示。

Lotus Technical Update Workshop

7

RSS概要 - RSSを利用したイントラネット像

RSS Feed

RSS Feed

RSS Aggregator

My BlogBlog Owner

RSS Feed

RSS Reader

Ping通知

My BlogBlog Owner

RSS Feed

BlogsBlog Portal

RSS Feed

My BlogBlog Owner

RSS Feed

My BlogBlog Owner

RSS Feed RSS Feed

Web Server

RSS Feed

Groupware

RSS Crawling

InternetInternet

カテゴリ単位のRSS配信

ナレッジ、業務情報の自動配信

Lotus Technical Update Workshop

8

RSS仕様 ‒ バージョン

RSSの歴史と進化

RSS 0.9 (RDF Site Summary→ Rich Site Summary)

Netscape社開発。RDFをベース。自社ポータル”My Netscape”で利用するために開発。0.91で完全に仕様変更。RDFベースを廃止し、「サイトの更新情報配信」に特化した独自のXML形式になった。

RSS 1.0 (RDF Site Summary)

RSS-DEVワーキンググループで開発。RDFベースであることが特徴 (0.9と同系列)。

基本的なコアな機能はRSSで定義し、高度な機能は名前空間を用いて拡張させる方針(複雑)

RSS 2.0 (Really Simple Syndication)

0.9x系の後継。(0.91-0.94までの全てのフォーマットの互換性を保証している)

理解しやすい。

名前空間のサポートにより拡張可能。

対応させるバージョンの選択指針

日本では、RDFベースの 1.0 系が主流

海外では、0.9x-2.0系が主流

ただし、最近のツール(リーダー、パーサー)は両方サポートしていることが多く、両者の変換は難しいものでもないため、それほど気にする必要はない。

Lotus Technical Update Workshop

9

RSS仕様 ‒ 歴史と進化

1999 RSS0.9がNetscape社によって開発。自社ポータル”My Netscape”にて利用

RSS0.9-1.0系(RDF) RSS0.9x-2.0系(non-RDF)

RSS0.91がNetscape社によって公開。RDFベースではない形で生成された。

RSS0.91がUserLand Software社によって公開される。2000

RSS1.0がRSS-DEVワーキンググループによって開発。RDFベースとして基本機能を提供し、拡張機能は名前空間を利用する。 RSS0.92がUserLand Software社によって公開される。

RSS0.93がUserLand Software社によって検討される。

RSS0.94がUserLand Software社によって検討される。

RSS2.0がUserLand Software社によって公開される。

2001

2002

2003

Lotus Technical Update Workshop

10

RSS仕様 ‒ 基本フォーマット

ベースはXML

channel要素

サイト自体のメタ情報を表す。

RSS1.0/2.0共に1つ存在する。それぞれ定義出来る要素は似ているが異なる。

個々のメタ情報を記述するために、title, link, descriptionを必須子要素として記述する。

item要素

個々の記事を表す。

1.0では、<rdf:RDF>ルートノードの下に複数定義する。<channel>と並列する位置づけになる。

<title> <link>を記述。任意で<description> (要約)を記述。

2.0では、<channel>の中に複数定義。

<item>内の全ての子要素は任意。 <title> <link> <description>や、<author> <category>などが存在。

本文配信について

本文全体を規定する要素は存在しないため、description要素に含まれる「概要」が基本的には全てとなる。descriptionに本文全体を含んではいけないという規定はなく、配信側での方針次第となる。

全文配信を明示的に行いたい場合は、contentモジュールを使って拡張する。

Lotus Technical Update Workshop

11

RSS仕様 ‒ バージョン1.0概略

Channel要素

<rdf:RDF>の下に1つ定義

title/link/descriptionを定義し、サイトの基本情報を記述

目次としてitems要素に下記itemにマッチする内容を記述。実体としては、リソースに対するリンク

Item要素

Channelの下に定義

複数の定義が可能(制限はないが互換性のため15までを推奨)

title/link/(descriptionなど)を定義して、個別エントリを記述

各itemは、channel要素のitemと1対1構成

定義にないもの

更新日などは定義にないので、一般的にはDublin Coreなどのモジュールを利用して拡張する。

<?xml version="1.0"? encoding="utf-8"><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">

</rdf:RDF>

<?xml version="1.0"? encoding="utf-8"><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">

</rdf:RDF>

<channel><title>全社文書管理システム</title><link>http://www.xxx.com</link><description>これは・・・・・・</description>

<items><rdf:Seq>

</rdf:Seq></items>

</channel>

<channel><title>全社文書管理システム</title><link>http://www.xxx.com</link><description>これは・・・・・・</description>

<items><rdf:Seq>

</rdf:Seq></items>

</channel>

<rdf:li>

<item><title>test</title><link>http://www.xxx.com/data1.htm</link><description>test desu</description>

</item>

<item><title>test</title><link>http://www.xxx.com/data1.htm</link><description>test desu</description>

</item>

Lotus Technical Update Workshop

12

RSS仕様 ‒ バージョン2.0概略

Channel要素

<rss>の下に1つ定義

title/link/descriptionを定義し、サイトの基本情報を記述

必要に応じてpubDate/language/copyrightなどを記述

Item要素

channelの中に定義

複数の定義が可能

title/link/descriptionなどを定義して、個別エントリを記述

item数に制限なし。

定義にないもの

更新日などは定義にないので、一般的にはDublin Coreなどのモジュールを利用して拡張する。

<?xml version=“1.0“ encoding="utf-8">?><rss>

</rss>

<?xml version=“1.0“ encoding="utf-8">?><rss>

</rss>

<channel><title>全社文書管理システム</title><link>http://www.xxx.com</link><description>これは・・・・・・・</description>

</channel>

<channel><title>全社文書管理システム</title><link>http://www.xxx.com</link><description>これは・・・・・・・</description>

</channel>

<item><title>test</title><link>http://www.xxx.com/data1.htm</link><description>test desu</description>

</item>

<item><title>test</title><link>http://www.xxx.com/data1.htm</link><description>test desu</description>

</item>

Lotus Technical Update Workshop

13

RSS仕様 - RSSの拡張(モジュール拡張)

モジュール拡張

RSSで定義されている情報(要素)だけでは、配信する情報として不足がある場合がある。(例:RSS1.0での最終更新日など)

そこで、不足する部分については、名前空間を使った拡張を実施する。

RSS1.0では、”Dublin Core”, “Syndication”, “Content”の3つが標準モジュール。

Dublin Core モジュール

文書情報として必要とされる基本要素15を定義している。RSSの拡張として最もよく使われるモジュールの1つ。

タイトル、作成者、トピック、要約、公開日など。

名前空間dcで定義する。<dc:date>など。

Syndicationモジュール

配信のための、更新間隔などを表す

Contentモジュール

サイトの実際のコンテンツをそのまま配信するためのモジュール。

RSS1.0/RSS2.0で利用可能

名前空間として拡張可能であれば利用可能。どちらでも拡張部分の文法は同じとなる。

RSS2.0では仕様にない要素であれば、拡張可能。

Lotus Technical Update Workshop

14

RSS Feed化 ‒ 方式比較

×QuerySaveなどにロジックを追加する必要がある。

○パフォーマンスを上げる為には、文書にRSS用のフィールドを追加する。

○パフォーマンスを上げる為には、文書にRSS用のフィールドを追加する。

既存アプリへの影響

◎リアルタイム性を高める為には、文書の作成と同時にRSSを更新する。

◎◎リアルタイム性

◎○×アクセス・パフォーマンス

×◎×メンテナンス性

×◎×構築ワークロード

文書やローカルディスク上に予めRSSを作成しておいて提供する方法。

作成日順に並んだビューを作成し、ビューの内容をRSS化して提供する方法。

Webエージェントの中でPrint文を駆使してRSSを吐き出す方法。

方式概要

事前生成方式ビュー方式Webエージェント方式

方式案比較項目

Lotus Technical Update Workshop

15

RSS Feed化 ‒ ビュー方式 ‒ 概要

作成日順に並んだビューを作成し、ビューの内容をRSS化して提供する。

ビュー上の個々の文書は、Item要素に変換する。

XMLヘッダ、RSS要素、Channel要素は、ページを作成して記述する。

ページにビューを埋め込み、RSSとして完成させる。

ページページ

Channel要素Channel要素

XMLヘッダ、RSS要素XMLヘッダ、RSS要素

</Channel></RSS></Channel></RSS>

埋め込みビュー埋め込みビュー

Item要素化された文書Item要素化された文書

Item要素化された文書Item要素化された文書

Item要素化された文書Item要素化された文書

注) RSS2.0の場合

ページにアクセス例) http://www.xxx.com/test.nsf/index.rss

RSSRSS

Lotus Technical Update Workshop

16

RSS Feed化 ‒ ビュー方式 ‒ ビュー設計

ビュープロパティ

RSSに含まれないようにヘッダーを表示しない。

“ビューの内容をHTMLとして扱う”にチェックする。

1列目

作成日を設定し、最新情報を表示するために降順でソートする。

RSSに含まれないように非表示に設定する。

2列目

Item要素を作成する計算式を設定する。

"<item>" + "<title><![CDATA[ “ + Subject + “ ]]></title>" + "<description>” + Summary + ”</description>" + "<link>" + "http://t42r6srv1.t42.mune/" + @WebDbName + "/(RSSFeedView)/" + @Text(@DocumentUniqueID) + "</link>" + "</item>"

例)

Lotus Technical Update Workshop

17

RSS Feed化 ‒ ビュー方式 ‒ ページ設計

XMLヘッダ、RSS要素、Channel要素をハードコーディングする。

lastBuildDate要素などの可変の値に対しては、計算結果テキストを挿入する。

XMLヘッダ、RSS要素、Channel要素をハードコーディングする。

lastBuildDate要素などの可変の値に対しては、計算結果テキストを挿入する。

指定する埋め込みビューのプロパティ

・表示: “HTMLを使用”・表示する線: 文書数を指定する。・スクロールバーを無効・ヘッダは表示しない。

指定する埋め込みビューのプロパティ

・表示: “HTMLを使用”・表示する線: 文書数を指定する。・スクロールバーを無効・ヘッダは表示しない。

ページのプロパティ

・名前: xml,rssといった拡張子の名前をつける。・コンテンツタイプ: “text/xml”・文字セット: xmlヘッダで記述したものと一致させる。

ページのプロパティ

・名前: xml,rssといった拡張子の名前をつける。・コンテンツタイプ: “text/xml”・文字セット: xmlヘッダで記述したものと一致させる。

Lotus Technical Update Workshop

18

RSS Feed化 ‒ 日付データの扱い

RSSの各バージョンでは、日付を表現するフォーマットが決められている。

RSS2.0では、RFC822形式で表現する。 例) Fri, 15 May 03 13:15:30 +0000

RSS1.0では、W3Cの日付形式で表現する。 例) 2005-09-10T00:00:00+09:00

@関数では対応する関数が無いので、自作する。

例) 列式内でItem要素にRSS2.0(RFC822形式)で<pubDate>を加える。

vWeekDay := @Select(@Weekday(DateCreated);"Sun";"Mon";"Tue";"Wed";"Thu";"Fri";"Sat");vDay := @Text(@Day(DateCreated));vMonth := @Select(@Month(DateCreated);"Jan";"Feb";"Mar";"Apr";"May";"Jun";"Jul";"Aug";"Sep";"Oct";"Nov";"Dec");vYear := @Text(@Year(DateCreated));vTime := @Text(DateCreated;"S1T0");vRFC822Date := vWeekDay + ", " + vDay + " " + vMonth + " " + vYear + " " + vTime + " +0900";

"<item>" + "<title>" + Subject + "</title>" + "<pubDate>" + vRFC822Date + "</pubDate>" + "<description></description>" + "<link>" + "http://t42r6srv1.t42.mune/" + @WebDbName + "/(RSSFeedView)/" + @Text(@DocumentUniqueID) + "</link>" + "</item>"

Lotus Technical Update Workshop

19

RSS Feed化 - AutoDiscovery機能

Webページの中にRSSフィードが存在することを、自動的に知らせる機能

これまでは、ページ上の”RSS”というリンクを「人間が」探す必要があった。AutoDiscovery機能を併用することで、RSSリーダーに動的にRSSフィードがあることを知らせることが可能になる。

AutoDiscoveryの記述方法

HTMLのhead要素内に埋め込む

<link rel=“alternate” type=“application/rss+xml” title=“RSSフィードの名前”href=“RSSフィードのURL" />

RSS AutoDiscoveryの対応例

Firefoxでは、画面右下に、RSSの存在マークが付き、ライブブックマークへ追加させることが可能。

Lotus Technical Update Workshop

20

参考文献

RSS1.0 Spechttp://web.resource.org/rss/1.0/spec

RSS2.0 Spechttp://blogs.law.harvard.edu/tech/rss

Dublin Corehttp://web.resource.org/rss/1.0/modules/dc/

Syndicationhttp://web.resource.org/rss/1.0/modules/syndication/

Content modulehttp://web.resource.org/rss/1.0/modules/content/