以下、図面を参照して、本願発明の実施形態を詳細に説明する。図1は、本発明の実施形態に係る、システム構成の一例を示す図である。尚、図1に示す各種端末の構成は一例であり、目的や用途に応じて様々な構成例があることは言うまでもない。
図1に示すように、本実施形態にかかる情報処理システムのイントラネット100には、クライアント装置101−1乃至101−3(以下、まとめてクライアント装置101とする)、内部HTTPサーバ102が設置されており、それら端末は、ローカルエリアネットワーク(LAN)103を介して相互に通信可能に接続されている。
また、クライアント装置101は広域ネットワーク104を介して、外部HTTPサーバ105−1乃至105−3(以下まとめて外部HTTPサーバ105とする)と相互に通信可能に接続されている。また、LAN103と広域ネットワーク104の間には不図示のファイアウォール装置が設置されており、あらかじめ決められた規則に従った通信制御処理が行われている。
それぞれのクライアント装置101には、図1に示す通りウェブブラウザアプリケーション111(以下ウェブブラウザ111とする)と、当該ウェブブラウザ111に機能拡張をするためのアプリケーションである拡張機能アプリケーション112(以下、機能拡張112とする)がインストールされている。クライアント装置101は、このウェブブラウザ111の機能により内部HTTPサーバ102や外部HTTPサーバ105等に接続する。また、拡張機能112は、ウェブブラウザ111によるデータの入出力を監視し、内部HTTPサーバとの間の通信内容を特定し、その通信内容に応じて後述する各種の処理を行うことになる。
内部HTTPサーバ102は、クライアント装置101を利用するユーザに対してウェブ電子スケジュールサービス(以下、内部スケジュールサービスという)を提供するためのサーバ装置であり、当該クライアント装置101からの要求に応じて会議等の予定の登録、修正、削除、閲覧処理などを行う。
また、外部HTTPサーバ105は、一般のサービスプロバイダに設けられているウェブサーバであり、内部HTTPサーバと同様、広域ネットワーク104を経由してアクセスしてきたクライアント装置101からの要求に応じて会議等の予定の登録、修正、削除、閲覧処理などを行うスケジュールサービス(以下、外部スケジュールサービスという)を提供する。その際にクライアント装置101から外部HTTPサーバ105には、それぞれの外部HTTPサーバ105で規定されたHTTPリクエストデータのデータ構成に従ったHTTPリクエストデータが送信されることになる。インターネット上で提供されている電子スケジュールサービスとして、例えば、米国Google社のGoogleCalendarがある。
図2は、図1に示すクライアント装置101のハードウェア構成の一例を示すブロック図である。
図2において、CPU201は、システムバス204に接続される各種のデバイスやコントローラを統括的に制御する。また、ROM203あるいは外部メモリ211には、CPU201の制御プログラムであるBIOS(Basic Input/Output System)やオペレーティングシステムプログラム(以下、OSとする)や、クライアント装置101が各種の処理を実行するための各種プログラムが記憶されている。
RAM202は、CPU201の主メモリ、ワークエリア等として機能する。CPU201は、処理の実行に際して必要となるプログラムやデータをRAM202にロードし、プログラムを実行することで後述する各種の動作を実現する。
また、入力コントローラ(入力C)205は、キーボード209や不図示のマウス等のポインティングデバイスからの入力を制御する。ビデオコントローラ(VC)206は、ディスプレイ装置210等の表示装置への表示を制御する。ディスプレイ装置210は、例えば、CRTや液晶ディスプレイ等で構成されている。これらは必要に応じて管理者が使用するためのものである。また、CPU201は、例えばRAM202内の表示情報用領域へアウトラインフォントの展開(ラスタライズ)処理を実行することにより、ディスプレイ装置210への表示を可能としている。
メモリコントローラ(MC)207は、ブートプログラム、OS、各種アプリケーション、フォントデータ、ユーザファイル、編集ファイル、各種データ等を記憶するハードディスク(HD)やフロッピーディスク(登録商標 FD)、或いはPCMCIAカードスロットにアダプタを介して接続されるコンパクトフラッシュメモリ等の外部メモリ211へのアクセスを制御する。本発明を実現するためのウェブブラウザ111や機能拡張112は外部メモリ211に記憶されており、必要に応じてRAM202にロードされることによりCPU201によって実行される。本発明に係わるウェブブラウザ111や拡張機能112が用いる定義情報及び各種情報テーブルは外部メモリ211に記憶されている。これらについての詳細な説明は後述する。
通信I/F(インターフェース)コントローラ(通信I/FC)208は、LAN103や広域ネットワーク104等のネットワークを介して外部機器と接続・通信するためのものであり、ネットワークでの通信制御処理を実行する。例えば、TCP/IPを用いたインターネット通信等が可能である。
図3は、クライアント装置101の機能構成を示す模式図である。図3に示すように、クライアント装置101は、スケジュールサービス定義情報設定手段311、リクエスト定義情報設定手段312、書き換えルール設定手段313を含む定義情報管理部310と、スケジュールサービスリクエスト取得手段321、リクエスト解析手段322、外部リクエスト生成・送信手段323を含む外部スケジュールサービス連携部320と、同期状態確認手段331、内部・外部スケジュール取得手段332、スケジュール差分解析手段333、外部リクエスト生成・送信手段334を含む外部スケジュールサービス同期部330を備えている。
スケジュールサービス定義情報設定手段311は、ウェブ電子スケジュールサービスのアクセス先と認証情報(詳細は後述する図15、図18)等のスケジュールサービス定義情報の入力を受け付け、スケジュールサービス定義情報テーブル341に設定(登録、修正、削除等)する。
スケジュールサービス定義情報設定手段311は、スケジュールサービス定義情報の入力を受け付けるため、例えば、図15に示すようなスケジュールサービス定義情報の入力画面1500をクライアント装置101のディスプレイ装置210に表示する。
図15は、クライアント装置101のディスプレイ装置210に表示されるスケジュールサービス定義情報の入力画面の一例を示す図である。
図15に示す入力画面1500では、スケジュールサービス定義情報として、アクセス先のスケジュールサービスを示す名称及びURL、当該スケジュールサービスを提供するHTTPサーバがイントラネット100に設置されているか(内部HTTPサーバ102であるか)、それともインターネット等の広域ネットワーク104に設置されているか(外部HTTPサーバ105であるか)を示す、「内部」または「外部」のロケーションの区分情報、当該スケジュールサービスを利用する際の認証情報であるアカウント名とパスワードなどの項目の入力を受け付けるためのコントロールが用意されており、クライアント装置101は、この入力画面1500を介して入力された各種のデータをスケジュールサービス定義情報として受け付ける。
図中、1501は、スケジュールサービス選択欄であって、既に登録済みのスケジュールサービスが選択可能に設定されており、ユーザは既に登録済みのスケジュールサービス定義情報の修正、削除を行う際に、修正、削除の対象となるスケジュールサービスをこの選択欄で選択する。1502は、スケジュールサービスの名称を入力・表示するためのコントロールである。また、1503は、スケジュールサービスを提供するHTTPサーバのアクセス先を示すURLを入力・表示するためのコントロールである。
1504は、スケジュールサービスを提供するHTTPサーバのロケーションの区分情報(「内部」または「外部」)を設定するためのラジオボタンである。また、認証情報1505には、スケジュールサービスを利用する際に用いられるアカウント名入力欄1505−1、及びパスワード入力欄1505−2が設定されている。また、追加ボタン1506は新規にスケジュールサービスを追加する際に、編集ボタン1507は既に登録済みのスケジュールサービスの内容を修正する際に、削除ボタン1508は登録済みのスケジュールサービスを削除する際に用いられるボタンである。
この入力画面1500を介してユーザより入力を受け付けたスケジュールサービス定義情報は、図18に示すスケジュールサービス定義情報テーブル341に登録されることになる。
図18は、本願発明で用いられるスケジュールサービス定義情報テーブル341の一例を示す図である。図18に示すように、スケジュールサービス定義情報テーブル341は、スケジュールサービスを一意に識別するためのID1801、及び、そのIDで特定されるスケジュールサービスに対応する、サービス名1802、URL1803、内部若しくは外部の区分情報を示すロケーション1804、当該スケジュールサービスを利用する際に認証情報として用いるアカウント名1805、パスワード1806のセットが記録されている。
例えば、ID1801が1のスケジュールサービスは、サービス名1802に「Office Schedule」、URL1803に「http://o-schedule.cgn.aaa.co.jp/s.cgi」、ロケーション1804に「内部」、アカウント名1805に「username」、パスワード1806に「password」が設定されていることが理解できよう。
図3の説明に戻る。図3に示すリクエスト定義情報設定手段312は、スケジュールサービス毎に当該スケジュールサービスで管理されるスケジュールデータを操作(追加・修正・削除等)するためのHTTPリクエストデータの構造と、データ内容を示すパラメータ情報(詳細は後述する図16、図19)の入力を受け付け、受け付けたそれら情報をリクエスト定義情報テーブル342に設定する。リクエスト定義情報設定手段312は、リクエスト定義情報を受け付けるため、たとえば図16に示すようなリクエスト定義情報の入力画面1600をクライアント装置101のディスプレイ装置210に表示する。
図16は、クライアント装置101のディスプレイ装置210に表示されるリクエスト定義情報の入力画面の一例を示す図である。
図16に示す入力画面1600には、リクエスト定義情報として、前記スケジュールサービス定義情報設定手段で定義されたサービスを示すサービス名、URL、操作種別を表すアクション、アクションを特定するための条件、リクエストパラメータやレスポンスデータとイベント項目の対応、同期対象のサービス名、同期時にイベントの内容を書換えるかなどの項目の入力を受け付けるためのコントロールが設定されている。そして、この入力画面1600を介して入力されたリクエスト定義情報は、図19に示すリクエスト定義情報テーブル342に登録されることになる。
図中1601は、リクエスト定義情報を設定するスケジュールサービスを選択するためのコントロールである。1602は、コントロール1601で選択されたスケジュールサービスを提供するHTTPサーバのロケーションを表示する表示欄であり、内部HTTPサーバ102の場合には「内部」、外部HTTPサーバ105の場合には「外部」と表示することになる。
追加ボタン1603は新規にリクエスト定義情報を追加する際に、編集ボタン1604は登録済みのリクエスト定義情報の内容を修正する際に、削除ボタン1605は既に登録済みのリクエスト定義情報を削除する際に用いられるボタンである。
1606はURL表示欄であって、コントロール1601で選択されたスケジュールサービスを提供するHTTPサーバのURL表示する表示欄である。
1607はアクション指定欄であって、当該スケジュールサービスに対するデータ操作を指定するためのコントロールである。1608は、1607で指定されたアクションに対応するHTTPリクエストのデータ通信を特定するための条件を入力・表示するためのコントロールである。1609は、各種イベント項目に対応する値が設定されるイベントパラメータを入力・表示するためのコントロールである。イベント項目としては、例えば、開始年、開始月、開始日、開始時、開始分、終了年、終了月、終了日、終了時、終了分、予定件名、詳細内容等があり、それらイベント項目に対応する値がHTTPリクエスト中のどのパラメータに設定されるかの情報を入力するためのコントロールである。
1610は、コントロール1601で内部スケジュールサービスが選択された場合に、当該スケジュールサービスと同期処理を行う外部スケジュールサービスを指定するためのコントロールである。1611は、外部HTTPサーバ105へのデータ同期処理の際に、後述する書き換えルールに従ったデータ変換を行うかを指定するためのチェックボックスである。また、1612は、当該アクションに係るHTTPリクエストをHTTPサーバに送信したのちにHTTPサーバより受信するレスポンスデータ定義情報を入力するための不図示の入力画面をディスプレイ装置210に表示させるために用いられるボタンである。
図19−1、図19−2は、本発明で用いるリクエスト定義情報テーブルの一例を示す図である。図19−1、図19−2のように、リクエスト定義情報テーブル342は、それぞれのID1901に対応するスケジュールサービスID1902、アクション1903、リクエスト条件1904、リクエストパラメータ定義1905、レスポンスデータ定義1906、処理定義1907が設定されている。
リクエストID1901には、リクエスト定義情報を一意に識別するための識別情報が設定される。サービスID1902には、対応するスケジュールサービスを一意に識別するためのサービスIDが設定される。アクション1903には、スケジュールサービスに対して要求する操作が設定される。例えば、新規のスケジュールデータの追加操作であるADD、登録済みのスケジュールの削除を要求するDELETE等が設定されることになる。
リクエストパラメータ定義には、開始年、開始日、終了年、終了日、内容等のイベント項目が、HTTPサーバに対して送信されるHTTPリクエストのどのパラメータ変数に定義されているかが設定される。例えば、図19−1のリクエストIDが1のデータの場合には、開始年がstartyearに、開始月がstartmonthに、・・・内容がDetailに、その他がOtherに設定されることを意味している。
レスポンスデータ1906には、HTTPサーバに対してHTTPリクエストの送信した結果、HTTPサーバから送信されるレスポンスデータのデータ構成が設定されることになる。処理定義1907には、内部スケジュールサービスで管理するスケジュール情報に変更が加えられた際に同期をとる外部スケジュールサービスのサービスID、実行アクション、内容の書き換えを行うか否かの情報が設定される。
図19−1は内部スケジュールサービスのリクエスト定義情報を示すもので、例えば、リクエストID1901が1のデータは、対応するスケジュールサービスID1902が1(図18に示すOffice Scheduleである)、リクエスト条件1903にURLがhttp://o-schedule.cgn.aaa.co.jpに一致し、パラメータ値にpage==scheduleaddかつ_Submit==’add’を持つという設定が、リクエストパラメータ定義1904に開始年=startyear、開始月=startmanth、・・・・内容=Detail、その他=Otherが、レスポンスデータ定義1906に「なし」が、処理定義1907には同期サービスが2、実行アクションとしてADDアクション、同期処理を行う際に書き換えルールに従って文字列変換を行うことが設定されている。
また、図19−2は、外部スケジュールサービスのリクエスト定義情報を示すもので、内部スケジュールサービスの場合と同様のデータが設定される。図19−1、図19−2に係るリクエスト定義情報342は、外部スケジュールサービス連携部320、外部スケジュールサービス同期処理部330の処理の際に用いられる。
図3の説明に戻る。書換えルール設定手段313は、後述するリクエスト解析手段322で特定したスケジュールデータを他の外部スケジュールサービスに対して設定(登録・修正等)する際に用いられる、文字列の書換えルールの入力を受け付け、書換えルールテーブル343に設定する。
書換えルール設定手段313は、書換えルールの入力を受け付けるために、例えば、図17に示すような書換えルールの入力画面1700をクライアント装置101のディスプレイ装置210に表示する。
図17は、クライアント装置101のディスプレイ装置210に表示される書換えルールの入力画面の一例を示す図である。
図17に示す入力画面1700には、書換えルールとして書換えルールを一意に示すID、書換え対象とするキーワード条件、キーワードの包含条件、条件に合致した場合の書換え文字列、設定したルールに一致しない場合のデフォルト処理指定、及び、デフォルト処理で書換えが指定された場合の書換え文字列の入力を行うための各種コントロールが設定されている。そして、この入力画面1700を介して入力された書換えルールは、図20に示す書換えルールテーブル343に登録されることになる。
図中1701は、書換えルールを一意に識別するルールIDが表示されるコントロールである。1702はキーワード条件入力欄、1703はキーワード包含条件入力欄であって、スケジュールの内容にどのようなキーワード(キーワード条件)どのような形で含まれている場合に当該書換えルールに従った文字列変換を行うかの条件(キーワード包含条件)入力を行うためのコントロールである。1704は、キーワード条件、及びキーワード包含条件に合致したスケジュールの内容を外部HTTPサーバ105が提供するスケジュールサービスに設定する際に用いる文字列情報の入力を行うためのコントロールである。
図20は、本発明で用いる書換えルールテーブルの一例を示す図である。図20に示すように、書換えルールテーブル343には、それぞれのルールID2001に対応するキーワード(キーワード条件)2002、条件(キーワード包含条件)2003、書換え文字列2004のセットが記録されている。例えば、ルールID=1には、キーワードに“社外秘”が、条件に“を含む”が、書換え文字列に“***”がセットで関連付けられている。
図3の説明に戻る。図3に示すスケジュールサービスリクエスト取得手段321は、スケジュールサービス定義情報設定手段311で設定され、スケジュールサービス定義情報テーブル341に登録された定義情報に従って、ウェブブラウザ111から内部スケジュールサービス利用に該当する通信内容を特定する。ここでは、HTTPリクエストデータに含まれるリクエストURLがリクエスト条件に設定されているURLに合致するか、また、そのHTTPリクエストデータ中にリクエスト条件に設定されているパラメータ値が設定されているかを判定することで、どのスケジュールサービス定義情報に該当するかを特定することになる。
リクエスト解析手段322は、スケジュールサービスリクエスト取得手段321で特定した内部スケジュールサービスの利用のための通信に含まれる、スケジュールイベント情報の管理ID、開始年、開始月、開始時間・・・・終了分、内容等の情報をリクエスト定義情報テーブル342に設定されている当該内部スケジュールサービスに対応するリクエスト定義情報に従って取得し、取得したそれらスケジュールイベント情報をスケジュールイベントテーブル344に設定する。スケジュールイベントテーブルについては、図21を参照して説明する。
図21は、本発明で用いるスケジュールイベントテーブルの一例を示す図である。図21のように、スケジュールイベントテーブルは、それぞれのイベントIDに対応する、内部/外部、サービスID、管理ID、開始年、開始月、開始日、開始時、開始分、終了年、終了月、終了日、終了時、終了分、内容、内外対応がセットで関連付けられている。
外部リクエスト生成・送信手段323は、スケジュールサービスリクエスト取得手段321が取得したHTTPリクエストデータが合致したリクエスト定義情報の処理定義1907が設定されている場合に、ウェブブラウザ111から外部HTTPサーバに送信される同期処理の対象となる外部スケジュールサービスに対するスケジュールデータ操作のためのHTTPリクエストデータを前記リクエスト解析手段322で取得し、スケジュールイベントテーブル344に設定されたスケジュールデータと、対応する外部スケジュールサービスの同一アクションのリクエスト定義情報とに従って、外部HTTPサーバ105に対するHTTPリクエストデータを生成し、送信する。その際に、イベント内容書換え設定がなされている場合には、書換えルールテーブルに設定されている書換えルールに従った文字列変換を行ったうえで、外部HTTPサーバ105に送信するHTTPリクエストデータを生成することになる。
同期状態確認手段331は、クライアント装置101を操作するユーザから、内部HTTPサーバ104が提供するスケジュールサービスに登録されている当該ユーザのスケジュール情報と、同期処理の対象となる外部スケジュールサービスに登録されているデータとの同期処理の実行指示の入力を受け付ける。
内部・外部スケジュール取得手段332は、スケジュールサービス定義情報テーブル341とリクエスト定義情報テーブル342に登録された情報に従い、内部スケジュールサービスと外部スケジュールサービスにイベント取得リクエスト(リクエスト定義情報テーブルに設定されているアクションがLISTのリクエスト定義情報に対応するリクエスト)を送信し、取得したイベントをスケジュールイベントテーブル344に登録する。
スケジュール差分解析手段333は、スケジュールイベントテーブル344に登録されている内部ケジュールサービスに設定されているスケジュール情報と、同期対象となる外部スケジュールサービスに設定されているスケジュール情報との差異を抽出する。
内部・外部リクエスト生成・送信手段は、スケジュール差分解析手段333で抽出した差異を解消するために、内部スケジュールサービスにのみ登録され、外部スケジュールサービスには登録されていないイベント(差分イベント)を当該外部スケジュールサービスに登録するために、HTTPリクエストデータを生成し、外部HTTPサーバ105に送信する。具体的には外部リクエスト生成送信手段323と同様の手法でHTTPリクエストデータを生成し、該当する外部HTTPサーバ105に対して送信することになる。
また、差分イベントを削除することで同期処理を行う場合には、内部スケジュールサービスに登録されている差分イベントを削除を要求するためのHTTPリクエストデータを生成し、内部HTTPサーバ102に対して送信することになる。内部HTTPサーバ102に対するHTTPリクエストデータの作成は、内部スケジュールサービスのリクエスト定義情報を参照するほかは外部スケジュールサービスに対するHTTPリクエストデータを生成する場合と同様の処理を行うことになる。
次に図4を参照して、クライアント装置101にインストールされた拡張機能112が起動時に行う、ウェブブラウザ111の機能を拡張する処理について説明する。この処理は、クライアント装置101のCPU201によって行われる処理である。
まず、クライアント装置101の外部メモリ211にインストールされているウェブブラウザ111をユーザの指示等に応じて起動するとともに、拡張機能112も合わせて起動させ、拡張機能112の初期化処理を行う(ステップS401)。その後、ウェブブラウザ111の通信内容を監視するためにウェブブラウザ111の通信処理を補足するイベントリスナー登録を行う(ステップS402)。そして、このイベントリスナーを通じて、ウェブブラウザ111と内部HTTPサーバ102との間で送受信される通信内容を拡張機能112が取得できるようになる。このような拡張機能を付加できるウェブブラウザとしては、例えば、FireFoxがある。
図5は、ウェブブラウザ111、拡張機能112、内部HTTPサーバ102、及び外部HTTPサーバ105間の通信と処理の順序の一例を示すシーケンス図である。
クライアント装置101でウェブブラウザ111が起動されると、それに応じて拡張機能112も起動され初期化処理が行われる(ステップS501)。この処理は図4のステップS401の処理に相当する。その後、ウェブブラウザの通信内容を補足するためのイベントリスナーの登録処理が行われる(ステップS502)。この処理は、図4のステップS402の処理に相当する。
その後、内部スケジュールサービスの利用を開始するために、内部HTTPサーバ102に対して利用者を特定するための認証情報が送信される(ログイン:ステップS503)。通常は、利用者アカウント名と、パスワードが用いられる。そして、内部HTTPサーバ102による(他の認証装置が行う場合もある)認証処理により利用者が特定できた場合には、図6に示すような画面をクライアント装置101のディスプレイ装置210に表示させるべく、内部HTTPサーバ102はクライアント装置101に対して当該利用者のスケジュール情報を含む画面情報を送信する(ステップS504)。画面情報を取得したクライアント装置101は、当該画面情報に基づき図6のような画面表示を行う。
図6は、内部HTTPサーバ102での認証処理後にクライアント装置101のディスプレイ装置210に表示されるウェブブラウザ111の画面の一例を示す模式図である。図に示すようなカレンダー形式で、既に登録されているスケジュール情報を確認可能な画面になっている。そして、スケジュール情報へのリンク(図中601)をクリックすることにより、イベント取得のためのHTTPリクエストデータが内部HTTPサーバ102に対して送信される(ステップS505)。そして、拡張機能112はこのHTTPリクエストデータを補足して、HTTPリクエストデータを解析する(ステップS506)。そして、その後、HTTPリクエストデータに対する内部HTTPサーバ102からのレスポンスデータが内部HTTPサーバ102に対して(より具体的には、内部HTTPサーバ102のウェブブラウザ111)送信される(ステップS507)拡張機能112はこのレスポンスデータ補足し(ステップS508)、イベント情報を解析し、スケジュールイベントテーブルに情報を記録する。
このレスポンスデータを受信したウェブブラウザ111は、図7で示されるように、そのイベントの詳細情報である開始年月日時分、終了年月日時分、予定内容、場所などの詳細情報をウェブブラウザ111の表示領域に表示する。尚、図6の602(予定が登録されていないリンク)をクリック指示した場合には、図7には初期データとして開始年月日、終了年月日のみが表示される。
ウェブブラウザ111が実行されているクライアント装置101で、ユーザの操作に基づきスケジュール情報の追加、スケジュール情報の変更、スケジュール情報の削除等のスケジュール情報の操作要求を受け付けた場合、その要求に応じて、ウェブブラウザ111は操作内容(追加、変更、削除等)にHTTPリクエストデータを生成し、内部HTTPサーバ102に対して送信する(ステップS509)。拡張機能112は、このHTTPリクエストデータの取得・解析を行い、解析結果をスケジュールイベントテーブル344に登録する(ステップS510)。
そして、ステップS509の処理で内部HTTPサーバ102に対して送信されたHTTPリクエストデータに対するレスポンスデータを、受け付ける(ステップS511)。このリクエストデータが、処理成功を示すレスポンスデータであった場合には、拡張機能112は、スケジュール情報の追加、変更、削除等の操作指示を行った内部スケジュールサービスと同期をとる外部スケジュールサービスが設定されている場合(当該内部スケジュールサービス、操作内容に該当するアクションに対応するリクエスト定義情報の処理定義1907に同期サービスが設定されている場合)に対応する外部スケジュールサービスのスケジュールサービス定義情報のアカウント1805、パスワード1806に設定されている情報を用いて外部スケジュールサービスへのログイン処理の要求を行う(ステップS512)。そして、そのログイン処理要求の結果、ログインに成功したというレスポンスデータを取得すると(ステップS513)、拡張機能112は、スケジュールイベントテーブル342に登録した内部スケジュールサービスに対する操作内容に従った外部スケジュールサービスに対するスケジュール情報の操作を行うために、外部スケジュールサービスに対するHTTPリクエストデータを生成し(ステップS514)、そのHTTPリクエストデータを外部HTTPサーバ105に対して送信する(ステップS515)。尚、ステップS514では、拡張機能112は、外部スケジュールサービスに対するHTTPリクエストデータを作成する際には、当該外部スケジュールサービスのリクエスト定義情報に従ってHTTPリクエストデータを作成することになる。
次に、図8を参照して、クライアント装置101のCPU201によって行われる外部スケジュールサービス連携処理の手順の一例について説明する。この処理は、外部スケジュールサービス連携部320によって行われる。この機能は拡張機能112により提供されるものである。図8に従った処理を開始する時点では、クライアント装置101は内部スケジュールサービスが提供するウェブページに既にアクセスしており、イベントの取得、追加、修正、削除などの指示が可能な状態にある。
まず、CPU201は、ウェブブラウザ111が生成し、内部HTTPサーバ102に対して送信するHTTPリクエストデータの補足を行う(ステップS801)。ステップS801でHTTPリクエストデータを補足した場合には、スケジュールサービス定義情報テーブル341を検索し、HTTPリクエストデータに設定されているリクエストURLが何れかのスケジュールサービス定義情報のURL1803に合致するかを判定することにより、スケジュールサービス向けのHTTP通信であるかを判定する(ステップS803)。
CPU201が、スケジュールサービス向けのHTTP通信であると判定した場合には(ステップS803でYES)、処理をステップS804に、スケジュールサービス向けではないと判定した場合には(ステップS803でNO)、処理をステップS801に移行させる。
ステップS803の判定処理でYESと判定された場合には、CPU201は、取得したHTTPリクエストデータの解析処理を行う(ステップS804)。その際には、上記のステップS801で取得したHTTPリクエストデータをさらに構成要素(以降の処理で参照する各要素)に分解する。すなわち、例えば、リクエストパラメータ値については、アンパサンド記号を区切り文字としてトークンに分解し、さらに各トークンについては、=を区切り文字とする名前−値のペアに分解する。また、外部送信データがある場合は、Content-TypeヘッダやContent-LengthまたはTransfer-Encodingヘッダの内容に基づき、リクエストボディの内容も解析し、構成要素に分解する。
その後、ステップS804で解析されたHTTPリクエストデータの構成要素に基づき、当該HTTPリクエストデータが、リクエスト定義情報テーブル342に設定されているステップS802で特定した内部スケジュールサービスのGETアクション条件に一致するものであるかを判定する(ステップS805)。ステップS805でCPU201がYESと判定した場合には、ステップS806に処理を進め、イベント記録処理(詳細は図9に示す)を行う。一方GETアクション条件に一致しないと判定した場合には(ステップS805でNO)、次のステップS807に処理を進める。
ステップS807では、CPU201は、当該HTTPリクエストデータが、内部スケジュールサービスのADDアクション条件に一致するものであるかを判定する。ステップS807でCPU201がYESと判定した場合には、ステップS809に処理を進め、スケジュール追加・変更処理(詳細は図10に示す)を行う。一方、ADDアクション条件に一致しないと判定した場合には(ステップS807でNO)、次のステップS808に処理を進める。
ステップS808では、CPU201は、当該HTTPリクエストデータが、内部スケジュールサービスのEDITアクション条件に一致するものであるかを判定する。ステップS808でCPU201がYESと判定した場合には、ステップS809に処理を進め、スケジュール追加・変更処理(詳細は図10に示す)を行う。一方、EDITアクション条件に一致しないと判定した場合には(ステップS808でNO)、次のステップS810に処理を進める。
ステップS810では、CPU201は、当該HTTPリクエストデータが、内部スケジュールサービスのDELETEアクション条件に一致するものであるかを判定する。ステップS810でCPU201がYESと判定した場合には、ステップS811に処理を進め、スケジュール削除処理(詳細は図11に示す)を行う。一方、EDITアクション条件に一致しないと判定した場合には(ステップS810でNO)、次のステップS812に処理を進める。
以上の処理を、ウェブブラウザ111が終了された(ステップS812でYES)と判断するまで繰り返すことになる。以上が、クライアント装置101のCPU201によって行われる外部スケジュールサービス連携処理の手順の一例である。
次に、図9を参照して、図8のステップS806のイベント記録処理の詳細について説明する。
図9は、クライアント装置101のCPU201によって行われるイベント記録処理の一例を示すフローチャートである。まず、CPU201は、ステップS901で、図8のステップS804のHTTPリクエストデータ解析処理の結果得られたHTTPリクエストデータの構成要素のうち、管理ID(例えば、sid=E111)を取り出したうえで、処理をステップS902に移行する。
その後、HTTPリクエストデータに対するレスポンスデータを受信した(ステップS903でYES)と判定するまでレスポンスデータの待ち状態を継続する(ステップS902)。
内部HTTPサーバ102よりレスポンスデータを受け付けると(ステップS903でYES)、内部スケジュールサービスのGETアクションに対応するリクエスト定義情報を取得する(ステップS904)。
その後、CPU201は、ステップS903で取得したと判定したイベント内容を示すレスポンスデータをHTMLのDOM要素に分解し、ステップS904で取得したリクエスト定義情報に従ってスケジュールイベントの開始年月日時分、終了年月日分、スケジュール内容など、スケジュールイベント項目に対応するデータを取得する。例えば、HTMLのテキスト表示エリア“id=startyear”に当該スケジュールイベントの開始年が設定されている場合には、そのDOM要素の値をスケジュールイベント項目の開始年に対応付ける。また、スケジュールサービスによっては、ひとつのDOM要素に“YYYY/MM/DD”のように、開始年が部分文字列として設定されている場合もあるが、このような場合は、該当DOM要素の部分列(例えば、1桁目から2文字)を開始年として取得できるようレスポンスデータ定義情報のレスポンスデータ定義を設定しておけばよい。
次に、ステップS906でスケジュールイベントテーブル344(図21に示す)に同一内容のスケジュールイベントデータがあるかを検索する(ステップS906)。検索の結果、同一のスケジュールイベントデータがない、つまりは新規のスケジュールイベントであると判定した場合には、処理をステップS908に進め、スケジュールイベントテーブル344に当該スケジュールイベントデータを追加し、本処理を終了する。ステップS907でNO(新規のスケジュールイベントではない)と判定した場合には、ステップS908のスケジュールイベントの追加処理を行うことなく、本処理を終了する。以上が、図8のステップS806のイベント記録処理の詳細説明である。
次に、図10を参照して、図8のステップS809のスケジュール追加・変更処理の詳細について説明する。
図10は、クライアント装置101のCPU201によって行われるスケジュール追加・変更処理の詳細を示すフローチャートである。まず、CPU201は、ステップS1001で、図8のステップS804のHTTPリクエストデータ解析処理の結果得られたHTTPリクエストデータの構成要素のうち、管理ID(例えば、sid=E111)を取り出したうえで、処理をステップS1002に移行する。
その後、HTTPリクエストデータに対するレスポンスデータを受信した(ステップS1003でYES)と判定するまでレスポンスデータの待ち状態を継続する(ステップS1002)。
内部HTTPサーバ102より、スケジュール操作正常終了を示すレスポンスデータを受け付けると(ステップS1003でYES)、内部スケジュールサービスの該当するアクション(ADD、若しくはEDIT)に対応するリクエスト定義情報を取得し、リクエスト定義情報のリクエストパラメータ定義1905に従って、図8のステップS804で解析されたHTTPリクエストデータの構成要素から、スケジュールイベントデータの開始年月日時分、終了年月日時分、スケジュール内容等のスケジュールイベント項目に対応するデータを取得する(ステップS1004)。スケジュールサービスによっては、ひとつのリクエストパラメータ値に“YYYY/MM/DD”の様に、開始年が部分文字列として指定されている場合もある。このような場合は、該当パラメータ値の部分列(例えば、1桁目から2文字)を開始年として取得できるようリクエストパラメータ定義の条件を設定しておけばよい。
そしてその後、ステップS1004で生成したスケジュールイベントデータが既にスケジュールイベントテーブルに登録されているかを検索する(ステップS1005)。検索の結果、同一のスケジュールイベントテーブルが登録されていない、即ち新規のスケジュールイベントデータであると判定した場合には(ステップS1006でYES)、処理をステップS1007に進め、当該スケジュールイベントデータをスケジュールイベントテーブル344に登録する。
ステップS1007の処理終了後、若しくはステップS1006でNOと判定されたのち、CPU201は処理をステップS1008に進め、対応外部イベント検索処理を行うことになる。この処理の詳細については図12を参照して後述することにする。
ステップS1008の対応外部イベント検索処理終了後、CPU201は、外部スケジュールサービスに当該スケジュールイベントデータに対応するスケジュールイベントデータが登録されているか(対応イベントがあるか)を判定する(ステップS1009)。ステップS1008の判定処理で対応イベントありと判断した場合(ステップS1009でYES)、処理をステップS1010に進め、同期対象となる外部スケジュールサービスのリクエスト定義情報のうち、EDITアクションのリクエスト定義情報を取得する。一方、ステップS1009の判定処理でNOと判定した場合(対応イベントなし)、処理をステップS1011に進め、同期対象となる外部スケジュールサービスのリクエスト定義情報のうち、ADDアクションのリクエスト定義情報を取得する。
その後、スケジュール内容の書換えを行うと設定されている場合には、書換えルールに従った文字列の変換処理を行う(ステップS1012)。書換えルールに従った書換え処理を行わない設定がされている場合には、本処理は行わない。
ステップS1012の処理が終了後、ステップS1010若しくはS1011で取得したリクエスト定義情報のリクエスト条件に従って外部スケジュールサービスのスケジュール情報の操作のために用いる外部HTTPリクエストデータを生成し(ステップS1013)、当該外部スケジュールサービスを提供する外部HTTPサーバに対して送信する(ステップS1014)。
そしてその後、外部HTTPサーバ105より処理成功を示すレスポンスデータを取得すると(ステップS1015でYES:成功)、処理をステップS1016に進め、ステップS1014でHTTPリクエストデータを外部スケジュールサービスに送信したことでと外部スケジュールサービスに登録されたスケジュールイベントをイベントテーブルに追加・若しくは更新する(該当エントリ更新)。以上が、図8のステップS809のスケジュール追加・変更処理の詳細である。
次に、図11を参照して、図8のステップS811のスケジュール削除処理の詳細について説明する。
図11は、クライアント装置101のCPU201によって行われる、スケジュール削除処理の一例を示すフローチャートである。まず、CPU201は、ステップS1101で図8のステップS804のHTTPリクエストデータ解析処理の結果得られたHTTPリクエストデータの構成要素のうち、管理ID(例えば、sid=E111)を取り出したうえで、処理をステップS1102に移行する。
その後、HTTPリクエストデータに対するレスポンスデータを受信した(ステップS1103でYES)と判定するまでレスポンスデータの待ち状態を継続する。
内部HTTPサーバ102より、スケジュール操作正常終了を示すレスポンスデータを受け付けると(ステップS1103でYES)、ステップS1101で取得した管理IDを用いてスケジュールイベントテーブル342を検索する(ステップS1104)。そして当該スケジュールイベントデータが新規イベントであるかを判定し(ステップS1105)、新規イベントである(ステップS1105でYES)場合には本処理を終了する。
ステップS1105で新規イベントではないと判定した場合には、処理をステップS1106へ進め、対応外部イベント検索処理を行う。この処理の詳細については、図12を参照して後述する。
ステップS1106の処理終了後、対応外部イベントがあるとCPU201が判定した場合には(ステップS1107でYES)、リクエスト定義情報テーブル342から対応外部スケジュールサービスのDELETEアクションのリクエスト定義情報を取得する(ステップS1108)。そして、取得したリクエスト定義情報のリクエスト条件1904に従って当該外部スケジュールサービスで管理されているスケジュール情報を削除するためのHTTPリクエストデータを生成し(ステップS1109)、生成したHTTPデータを外部HTTPサーバ105に対して送信する(ステップS1110)。
そして、その後削除処理が終了した旨のレスポンスデータを取得すると(ステップS1111でYES)、処理をステップS1112に移行させ、外部スケジュールサービスから削除したスケジュールイベントをスケジュールイベントテーブルから削除する(ステップS1112)。以上が、以上が、図8のステップS811のスケジュール削除処理の詳細説明である。
次に、図12を参照して図10のステップS1008及び図11のステップS1106の対応外部イベント検索処理の詳細について説明する。
図12は、クライアント装置101のCPU201によって行われる対応外部イベント検索処理の一例を示すフローチャートである。まず、CPU201は、既に外部イベントを取得済みであるかを判定する(ステップS1201)。既に取得済みであると判定した場合には、後述する処理を行うことなく本処理を終了する。
一方、ステップS1201で外部イベントを取得済みでない(即ち外部イベントを取得していない:NO)と判定した場合は、処理をステップS1202に進め、既に外部スケジュールサービスにログインしているかを判定する。外部スケジュールサービスにログイン済みであると判定した場合には(ステップS1202でYES)、処理をステップS1207に移行させる。一方、まだログインしていないと判定した場合には(ステップS1202でNO)、処理をステップS1203に進め、スケジュールサービス定義情報テーブル341から当該外部スケジュールサービスの定義情報の認証情報(アカウント名1805、パスワード1806)を取得する。その後、取得した認証情報を用いてユーザ認証を行うために用いるHTTPリクエストデータ(認証情報)を生成し、生成した認証情報を外部HTTPサーバ105に対して送信する(ステップS1204)。
その後、ログインに成功したか否かを判定し(ステップS1205)、ログインに失敗した場合には(ステップS1205でNO)、処理をステップS1206に進め、エラー情報をディスプレイ装置210に出力し、本処理を終了する。一方、ログインに成功した場合には(ステップS1205でYES)、処理をステップS1207に進め、イベントLIST取得処理を行う。本処理の詳細については図13を参照して後述する。
ステップS1207のイベントLIST取得処理終了後、ステップS1207のLIST取得処理でスケジュールイベントテーブルに登録した外部スケジュールイベントデータに対して、ステップS1208からS1212の処理を行う。まず、ステップS1209において、外部スケジュールイベント情報を1件取得する。そして、ステップS1209で取得した外部スケジュールイベントデータの開始年月日時分、及び終了年月日時分と一致する内部スケジュールイベントデータがあるかを判定する(ステップS1210)。内部スケジュールイベントデータがあると判定した場合には、ステップS1209で取得した外部スケジュールイベントデータ及び当該外部スケジュールイベントデータと開始・終了年月日時分を同じである内部スケジュールイベントデータの対応付けを行うために、それぞれのレコードの対応イベント項目に対応するスケジュールイベントのイベントIDをセットする(ステップS1211)。そして、この処理をすべての外部スケジュールイベントデータに対して行う。以上が、対応外部イベント検索処理の詳細である。この処理を行うことで、図21に示すスケジュールイベントテーブルに登録されている内部スケジュールイベントデータと外部スケジュールイベントデータとの対応付けを行うことが可能となる。
次に、図13を参照して、図12のステップS1207のイベントLIST取得処理の詳細について説明する。
図13は、クライアント装置101のCPU201によって行われるイベントリスト処理の一例を示すフローチャートである。まず、CPU201はステップS1301において、リクエスト定義情報テーブル342から、外部スケジュールサービスに対するLISTアクションに対応するリクエスト定義情報を取得する。そして、LIST取得の当月から予め設定したNカ月分のイベントの取得リクエストを送信し、ステップS1303に処理を進め、レスポンスデータを待つ。
ステップS1303では、例えば図6の様に、1カ月分のイベント情報が表形式で表示されるHTMLレスポンスデータが得られる。1ページに1カ月分のデータの表示しかできない場合は、Nカ月分のデータを得るために、これをN回繰り返すよう処理を構成してもよい。また、指定期間のイベントデータがCSVなど一覧リスト形式で取得できるページがある場合は、そのページへのリクエストデータを送信するようなリクエスト定義情報を設定してもよい。
次にステップS1304で、CPU201がレスポンスデータの取得に成功したと判定した場合には(ステップS1304でYES)、ステップS1305に処理を進める。一方ステップS1304で成功しなかった(即ち失敗した:NO)と判定した場合には、後述する処理を行うことなく、本処理を終了する。
その後、CPU201は取得したレスポンスデータの各イベント情報1件毎に以下S1305〜S1314の処理を繰り返す。取得したレスポンスデータが、例えば図6のようなHTML形式の場合は、各スケジュールイベントの詳細情報に対するリンクが含まれる。そのリンクをクリックすると、例えば図7のように詳細情報が表示される。取得したレスポンスデータがCSV形式の場合は1行ごとにイベントの詳細情報が含まれる。
ステップS1306では、各イベントの詳細情報を取得するためにHTML上の各イベントのリンクをクリックするのと同様の要求をHTTPサーバ(内部HTTPサーバ102若しくは外部HTTPサーバ105)に対して送信するため、処理対象となるスケジュールサービスのGETアクションに対応するリクエスト定義情報をリクエスト定義情報テーブル342から取得する。リンク情報に含まれるリクエストパラメータから管理ID(例えば、sid=E111)を取り出した上で、ステップS1307に処理を進め、GETアクションを行うためのHTTPリクエスト生成し、をHTTPサーバに送信する。
ステップS1307でリクエストデータを送信したら、ステップS1308に処理を進めHTTPサーバからのレスポンスデータを待つ。レスポンスデータは、例えば図7のようなHTMLとして得られる。
ステップS1309でCPU201はレスポンスデータの取得に成功したかを判定する。正常にレスポンスデータが得られた場合、つまりステップS1309で「YES」の場合は次のステップS1310に処理を進める、一方、例えばHTTPサーバからエラー応答や、一定時間応答が無いタイムアウトが発生した場合、つまり、ステップS1310で「NO」の場合は本処理を終了する。
ステップS1310では、S1308で解析されたリクエスト構成要素から、イベント情報の開始年月日時分、終了年月日時分、イベント内容などイベント項目に対応するデータを取得する。例えば、リクエストパラメータのstartyear値に開始年が対応付けられている場合は、その値をイベント項目の開始年に対応付ける。またWeb電子スケジュールサービスによっては、ひとつのリクエストパラメータ値に“YYYY/MM/DD”の様に、開始年が部分文字列として指定されている場合もある。このような場合は、該当パラメータ値の部分列(例えば、1桁目から2文字)を開始年として取得できるようリクエスト定義情報中のリクエストパラメータを設定すれば良い。
次にステップS1311でスケジュールイベントテーブル344を検索し、ステップS1312に処理を進める。そして、既にスケジュールイベントテーブル344に登録済みのイベントに一致しない新規イベントであると判定した場合、つまりステップS1312でYESと判定した場合は、ステップS1313に処理を進め、スケジュールイベントテーブル344に新規スケジュールイベントデータとして登録する。一方、ステップS1312でNOとCPU201が判定した場合には、ステップS1314に処理を進め、取得したレスポンスデータの各スケジュールイベント情報、1件毎に以下S1305〜S1314の処理を繰り返す。
ステップS1314では、取得したすべてのイベントの繰り返しが終了すれば本処理を終了する。以上が、イベントLIST取得処理の説明である。
最後に、図14を参照して本発明における外部サービス同期処理について説明する。この外部サービス同期処理は、前述の外部サービス連携処理に拠らず、外部スケジュールサービスを直接更新した場合や、内部スケジュールサービスだけが更新された場合に、それらサービス間のイベント情報の不一致を解消するための手段である。
図14は、クライアント装置101のCPU201によって行われる外部サービス同期処理の一例を示すフローチャートである。尚、同図のフローチャートに従った処理を開始する時点では、クライアント装置101のウェブブラウザ111は内部HTTPサーバ102のWeb電子スケジュールサービスページにアクセスしており、イベントの取得、更新、削除などを指示可能な状態にある。
まず、CPU201は、ステップS1401において、クライアント装置101を操作するユーザからの同期実行指示を待つ。クライアント装置101のディスプレイ装置210上でウェブブラウザのメニューをクリック指示するなどすることにより、拡張機能112に同期実行指示を与えることができる。拡張機能112が同期実行指示を受信したらステップS1402に処理を進める。
ステップS1402では、内部スケジュールサービスに対するLISTアクションをリクエスト定義情報テーブル342より検索し、検索の結果得られたリクエストパラメータ定義1905に従ったHTTPリクエストデータを内部HTTPサーバ102に送信することによりイベントリストを取得し、スケジュールイベントテーブルに登録する。尚、イベントLISTの取得方法は図13で説明した手順で、内部HTTPサーバ102に対して行う。
次に、ステップS1403では、外部HTTPサーバ105に対する不一致イベントを検出するために、図12で説明した対応外部イベント検索処理を行い、内部スケジュールサービスに登録されているスケジュールイベントと外部スケジュールサービスに登録されているスケジュールイベントとの対応付けを行う。
その後、CPU201は、スケジュールイベントテーブル344に登録されているスケジュールイベントデータ1件ごとに、ステップS1404〜S1420の処理を繰り返し行うことになる。
CPU201は、ステップS1405において、スケジュールイベントテーブル344の対応イベントデータに従って、対応イベントがあるかを判定する。対応イベントがある判断した場合は(ステップS1405でYES)、ステップS1420に処理を進め、スケジュールイベントテーブルの次のスケジュールイベントデータに対して本処理を繰り返し行う。一方、対応イベントがないと判定した場合(ステップS1405でNO)、ステップS1406に処理を進める。
ステップS1406ではクライアント装置101のディスプレイ装置210に不一致スケジュールイベントの情報と、同期または削除の指示入力を受け付ける不図示の画面を表示する。例えば、外部スケジュールサービスには存在するが、内部スケジュールサービスには存在しないスケジュールイベントデータや、逆に内部スケジュールサービスには存在するが、外部スケジュールサービスには存在しないスケジュールイベントデータを表示する。
その後、ステップS1407では、利用者の解決方法を受け付けるため、解決指示を待つ。ユーザは一方にだけ存在するイベントを他方にも追加するための同期を指示できる。または、一方にだけ存在するイベントを削除することも指示できる。そのような不一致イベントに対して1件ずつ利用者の解決方法を指示を選択させることもできるが、予め解決方法を決めておいて不一致イベントを確認だけすることもできる。また、確認が不要であれば、解決指示を受けずに予め決めておいた解決方法ですべての不一致スケジュールイベントを一括で処理するようにしてももちろん構わない。
次に、CPU201はユーザより受け付けた解決指示が同期であるかを判定する(ステップS1408)。同期指示であると判定した場合には(ステップS1408でYES)、ステップS1415に処理を進める。一方、ステップS1408でCPU201がNOであると判定した場合はステップS1409に処理を進める。
CPU201はステップS1408でNOであると判定した場合、ステップS1409で解決指示が削除であるかを判定する。受け付けた解決指示が削除であると判定した場合には(ステップS1409でYES)、ステップS1410に処理を進める。一方、ステップS1409でNOと判定した場合には、ステップS1420に処理を進め、イベントテーブルのイベント1件ごとに、ステップS1404〜S1420のステップの処理を繰り返す。
ステップS1410以下の処理は、不一致イベントに対する削除の処理を行う。ステップS1410では、不一致となったイベントを保持するサービスIDに対する、リクエスト定義情報テーブル342を参照し、DELETEリクエスト定義情報を取得する。
次にステップS1411で、不一致となったイベント情報の管理IDをDELETEリクエストのパラメータに設定し、続くステップS1412でHTTPリクエストデータをHTTPサーバに対して送信する。
次にステップS1413でリクエストが成功した場合、つまりステップS1413で「YES」の場合は、ステップS1414に処理を進め、スケジュールイベントテーブル344から該当不一致イベント情報を削除する。一方、ステップS1413で「NO」の場合は、ステップS1404〜S1420のステップの処理を繰り返す。
ステップS1415以下では、不一致イベントに対する同期の処理を行う。ステップS1415では、不一致となったイベントを保持するサービスIDに対する、リクエスト定義情報テーブル342を参照し、他方のサービスである同期対象のサービスIDのADDリクエスト定義情報を取得する。
次にステップS1416で、不一致となったイベント情報の開始年、開始月などのイベント項目値をADDリクエストのパラメータに設定し、続くステップS1417でそのHTTPリクエストデータをHTTPサーバに対して送信する。このイベント送信時に図10のステップS1012と同様にイベント内容の書換えを行っても良い。
次に、ステップS1418でリクエストが成功した場合、つまりステップS1418で「YES」の場合は、ステップS1419に処理を進め、イベントテーブルにリクエスト送信したイベント情報を追加する。一方、ステップS1418で「NO」の場合は、ステップS1404〜S1420のステップの処理を繰り返す。
以上、実施形態例を詳述したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
尚、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラム(実施形態では図に示すフローチャートに対応したプログラム)を、システムあるいは装置に直接あるいは遠隔から供給し、そのシステムあるいは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であっても良い。
プログラムを供給するための記録媒体としては、例えば、フロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RW、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などがある。
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現される。