以下、図面を参照しながら、本発明に係る実施形態について説明する。
「第一実施形態」
以下、本発明に係る第一実施形態について、図1〜図11を用いて説明する。
図1に示すように、本実施形態の中継装置100は、クライアント端末200とサービス提供サーバ300との間で動作する。サービス提供サーバ300は、Webアプリ301の実行により、HTMLやXMLなどの構造化文書で表現されたWebページをサービスとして、クライアントに提供する。
中継装置100は、クライアント端末200からのリクエストをサーバ300へ転送すると共に、サーバ300からのレスポンスをクライアント端末200へ転送する。この中継装置100は、コンピュータであり、各種演算処理を実行するCPU110と、ハードディスクドライブ装置等の記憶装置120と、CPU110のワークエリア等になるメモリ130と、ネットワークNaを介してサーバ300と通信するための通信装置140aと、ネットワークNbを介してクライアント端末200と通信するための通信装置140bと、を備えている。なお、ここでは、サーバ側とクライアント側とのそれぞれに通信装置140a,140bを設けているが、一つの通信装置でサーバ300及びクライアント端末200と通信するようにしてもよいことは言うまでもない。
CPU110は、機能的に、クライアント端末200からのリクエスト情報を通信装置140bを介して受け取るリクエスト受信部111と、このリクエスト情報を通信装置140aを介してサーバ300へ転送するリクエスト転送部112と、サーバ300からのレスポンス情報を通信装置140aを介して受け取るレスポンス受信部113と、このレスポンス情報を通信装置140bを介してクライアント端末200へ転送するレスポンス転送部114と、リクエスト受信部111が受け取ったリクエスト情報を入力情報として収集すると共に、レスポンス受信部113が受け取ったレスポンス情報を出力情報として収集する入出力情報収集部115と、入出力情報収集部115が収集した複数の入出力情報に基づいてサーバ300が提供するサービス同士の連携付けを行うサービス連携付け部116と、レスポンス受信部113が受け付けたレスポンス情報に、サービス連携付け部116で連携付けられたサービス情報を添付する連携サービス情報添付部117と、を有している。なお、これらの機能部111〜117は、いずれも、記憶装置120に格納されているプログラム129をCPU110が実行することで機能する。
記憶装置120は、前述のプログラム129が格納されている他、入出力情報収集部121が収集した入出力情報が格納される入出力情報テーブル121と、サービス連携付け部116により連携付けられたサービス同士の連携情報が格納されるサービス連携情報テーブル122とが設けられている。
次に、以上で説明した中継装置100の概略動作について、図2に示すシーケンス図に従って説明する。
まず、クライアント端末200は、サービスの提供元であるサーバ300に対してリクエスト情報を送信する(S1)。中継装置100のリクエスト受信部111は、通信装置140bを介して、このリクエスト情報を受け取り、これを入出力情報収集部115に転送する。入出力情報収集部115は、このリクエスト情報を入力情報とし、この入力情報の一部を入出力情報テーブル121に保存する(S2)。なお、この入力情報保存処理(S2)に関しては、後程詳細に説明する。
入出力情報収集部115は、入力情報の保存後、入力情報であるリクエスト情報をリクエスト転送部112に転送する。リクエスト転送部112は、通信装置140aを介して、このリクエスト情報をサーバ300へ転送する(S3)。
サーバ300は、このリクエスト情報を受信すると、このリクエスト情報に応じたWebアプリ301を実行して、このリクエストに対するレスポンスを得て(S4)、レスポンス情報を中継装置100に送信する(S5)。
中継装置100のレスポンス受付部113は、通信装置140aを介して、サーバ300からのレスポンス情報を受け取り、これを入出力情報収集部115に転送する。入出力情報収集部115は、このレスポンス情報を出力情報とし、この出力情報の一部を、前述の入力情報中の情報と連携付けて、入出力情報テーブル121に保存する(S6)。なお、この出力情報保存処理(S6)に関しても、後程詳細に説明する。
中継装置100のサービス連携付け部116は、入出力情報テーブル121にこれまでに保存された複数の入出力情報を用いて、サービス相互の連携付けを行って、サービス連携情報を作成し、これをサービス連携情報テーブル122に保存する(S7)。なお、ここでのサービス連携付け処理(S7)は、他の処理と同期している必要はない。例えば、クライアント端末200とサーバ300との間での情報の中継が多い時間帯では、入出力情報の収集だけを行い、中継が少ない時間帯に、このサービス連携付け処理(S6)を行ってもよい。また、このサービス連携付け処理(S7)に関しても、後程詳細に説明する。
次に、連携サービス情報添付部117は、レスポンス受信部113からのレスポンス情報を連携付けているサービス連携情報をサービス連携情報テーブル122から検索する。そして、検索により取得したサービス連携情報に基づいて、レスポンス情報に連携する連携サービス情報を取得し、これをレスポンス情報に付加して、これをレスポンス転送部114に渡す(S8)。なお、この連携サービス情報添付処理(S8)に関しても、後程詳細に説明する。
レスポンス転送部114は、連携サービス情報が付加されたレスポンス情報をクライアント端末200に送信する(S9)。以上で、一連の処理が終了する。
次に、前述の入力情報保存処理(S2)及び出力情報保存処理(S6)での詳細処理内容について説明する。
入力情報保存処理(S2)では、入出力情報収集部115が、サーバ300に対する入力情報であるリクエスト情報から、リファラURL、リクエスト先URL、リクエストparam情報を抽出する。
ここで、リファラURLは、フォームやリンクを利用してリクエストを送信した場合のリンク元となるWebページのURLである。リクエスト先URLは、フォームやリンクを利用してリクエストを送信する場合の送信先のURLである。また、Webブラウザのアドレスバーに直接アドレスを記入した場合は、その入力したアドレスがリクエスト先URLとなる。以上のリファラURLとリクエスト先URLの情報は、リクエスト情報の送信パケットのヘッダから抽出する。リクエストparamは、リクエスト情報の本体とも言えるデータで、クライアントがクライアント端末300に入力したデータ、言い換えるとパラメータである。このパラメータは、GETのメソッドを利用した場合には、リクエスト情報中、リクエスト先URLの「?」マーク以下に格納されている。また、POSTのメソッドを利用した場合には、リクエスト情報中、ボディとして規定された部分に格納されている。さらに、リクエストparamは「リクエスト変数名=リクエスト値」の形式で表現され、複数のパラメータがある場合には「&」で区切って表現される。
入出力情報収集部115は、以上の情報の他、リクエスト取得時刻も取得する。このリクエスト取得時刻は、中継装置100がクライアント端末300からのリクエスト情報を中継した時刻である。
そして、入出力情報収集部115は、以上のように抽出したリファラURL、リクエスト先URL、リクエスト取得時刻、リクエストparam情報を、図3に示す入出力情報テーブル121中の、リファラURL領域121b、リクエスト先URL領域121c、リクエスト取得時刻領域121e、リクエストparam領域121gに格納する。
出力情報保存処理(S6)では、入出力情報収集部115が、サーバ300からの出力情報であるレスポンス情報から、レスポンスURL、レスポンス取得時刻、レスポンスボディを抽出する。
ここで、レスポンスURLは、リクエスト先URLにリクエストを送信した後に受け取るWebページのURLのことである。もし、リクエストを転送するようなリダイレクト処理がなければ、リクエスト先URLとレスポンスURLは一致する。また、レスポンスボディは、レスポンス情報のうち、クライアント端末300が実際に表示するデータである。
入出力情報収集部115は、以上の情報の他、レスポンス取得時刻も取得する。このレスポンス取得時刻は、中継装置100がサーバ300からレスポンス情報を中継した時刻である。
そして、入出力情報収集部115は、以上のように抽出したレスポンスURL、レスポンス取得時刻、レスポンスボディを、図3に示す入出力情報テーブル121中の、レスポンスURL領域121d、レスポンス取得時刻領域121f、レスポンスボディ領域121hに格納する。この際、レスポンス情報から抽出した情報は、入出力情報テーブル121中、このレスポンス情報に対するリクエスト情報の情報を格納した行と同じ行に格納される。すなわち、ステップ2〜ステップ6の一連の処理により、入出力情報テーブル121の1つの行が埋まる。
ここで、「ユーザが横浜駅から展示場Xに行くために路線検索をしたいが、展示場Xの最寄駅がわからない。」というシナリオを考える。
この場合、クライアント端末200は、図11に示すように、最寄駅検索サービス10にアクセスして、最寄駅検索結果情報15を得る。展示場Xに対する最寄駅の候補としては、国際展示場正門や有明などが提示される。そして、クライアント端末200の操作者であるユーザは、国際展示場正門が最寄駅で利用しやすいと判断し、路線検索サービス20にアクセスして、出発駅に横浜を入力し、到着駅に国際展示場正門を入力する。以上の操作により、ユーザは当初の目的である路線検索結果情報25を得る。
以上のシナリオでは、ユーザは、クライアント端末200に、URLとして「http://example。com/moyori」を打ち込んで、最寄駅検索サービス10の利用をリクエストする。中継装置100の入出力情報収集部115は、このリクエスト情報から、リファラURL、リクエスト先URL、リクエスト取得時刻、リクエストparam情報を取得する。そして、図3に示す入出力情報テーブルのid領域121aに、「1」を格納し、この行のリファラURL領域121bに「不明」、リクエスト先URL領域121cに「http://example。com/moyori」、リクエスト取得時刻領域121eに「2008-07-07 10:00:00」、リクエストparam領域121gに「なし」を格納する。
このリクエストに対して、サーバ300からは、図11に示す最寄駅検索受付情報11を含むレスポンス情報が返ってくる。なお、図11中では、最寄駅検索受付情報11の表示画面中に、「展示場X」が表示されているが、この段階で、「展示場X」は表示されていない。中継装置100の入出力情報収集部115は、このレスポンス情報から、レスポンスURL、レスポンス取得時刻、レスポンスボディを取得する。そして、図3に示す入出力情報テーブル121のid領域121aが「1」の行であって、レスポンスURL領域121dに「http://example。com/moyori」、レスポンス取得時刻領域121fに「2008-07-07 10:00:10」、レスポンスボディ領域121hにHTML文書である「<html>…<form>…</html>」を格納する。
ユーザは、最寄駅検索受付情報11(図11)を見ながら、この情報11中の施設名・住所の入力フォームに「展示場X」を入力してから、submitボタンをクリックする。クライアント端末300は、以上の処理により、サーバ300へリクエストを送信する。中継装置100の入出力情報収集部115は、このリクエスト情報から、リファラURL、リクエスト先URL、リクエスト取得時刻、リクエストparam情報を取得する。そして、図3に示す入出力情報テーブルのid領域121aに、「2」を格納し、この行のリファラURL領域121bに「http://example。com/moyori」、リクエスト先URL領域121cに「http://example。com/moyori/where」、リクエスト取得時刻領域121eに「2008-07-07 10:00:45」、リクエストparam領域121gに「where=展示場X」を格納する。
このリクエストに対して、サーバ300からは、図11に示す最寄駅検索結果情報15を含むレスポンス情報が返ってくる。中継装置100の入出力情報収集部115は、このレスポンス情報から、レスポンスURL、レスポンス取得時刻、レスポンスボディを取得する。そして、図3に示す入出力情報テーブル121のid領域121aが「2」の行であって、レスポンスURL領域121dに「http://example。com/moyori/result」、レスポンス取得時刻領域121fに「2008-07-07 10:01:00」、レスポンスボディ領域121hにHTML文書である「<html><body>…国際展示場正門…</html>」を格納する。
ユーザは、最寄駅検索サービス20(図11)により、「展示場X」の最寄駅の候補として、レスポンスパラメータとしての「国際展示場正門」及び「有明」を得ると、前述のシナリオ通り、「横浜」から最寄駅へ行くための路線の検索を行う。なお、レスポンスパラメータとは、レスポンスボディ中でリクエストパラメータに対する応答結果を示す部分で、レスポンスボディ中のテンプレート部分を除く部分である。
そこで、ユーザは、クライアント端末200に、URLとして「http://example.com/rosen」を打ち込んで、路線検索サービス20の利用をリクエストする。中継装置100の入出力情報収集部115は、このリクエスト情報から、リファラURL、リクエスト先URL、リクエスト取得時刻、リクエストparam情報を取得する。そして、図3に示す入出力情報テーブルのid領域121aに、「3」を格納し、この行のリファラURL領域121bに「不明」、リクエスト先URL領域121cに「http://example.com/rosen」、リクエスト取得時刻領域121eに「2008-07-07 10:03:00」、リクエストparam領域121gに「なし」を格納する。
このリクエストに対して、サーバ300からは、図11に示す路線検索受付情報21を含むレスポンス情報が返ってくる。なお、図11中では、路線検索受付情報21の表示画面中に、「横浜」「国際展示場正門」が表示されているが、この段階で、これらは表示されていない。中継装置100の入出力情報収集部115は、このレスポンス情報から、レスポンスURL、レスポンス取得時刻、レスポンスボディを取得する。そして、図3に示す入出力情報テーブル121のid領域121aが「3」の行であって、レスポンスURL領域121dに「http://example.com/rosen」、レスポンス取得時刻領域121fに「2008-07-07 10:03:30」、レスポンスボディ領域121hにHTML文書である「<html>…<form>…</html>」を格納する。
ユーザは、路線検索受付情報21(図11)を見ながら、この情報21中の出発入力フォームに「横浜」を入力し、到着入力フォームに「国際展示場正門」を入力してから、submitボタンをクリックする。クライアント端末300は、以上の処理により、サーバ300へリクエストを送信する。中継装置100の入出力情報収集部115は、このリクエスト情報から、リファラURL、リクエスト先URL、リクエスト取得時刻、リクエストparam情報を取得する。そして、図3に示す入出力情報テーブルのid領域121aに、「4」を格納し、この行のリファラURL領域121bに「http://example.com/rosen」、リクエスト先URL領域121cに「http://example.com/rosen/kensaku」、リクエスト取得時刻領域121eに「2008-07-07 10:05:00」、リクエストparam領域121gに「from=横浜&to=国際展示場正門」を格納する。
このリクエストに対して、サーバ300からは、図11に示す路線検索結果情報25を含むレスポンス情報が返ってくる。中継装置100の入出力情報収集部115は、このレスポンス情報から、レスポンスURL、レスポンス取得時刻、レスポンスボディを取得する。そして、図3に示す入出力情報テーブル121のid領域121aが「4」の行であって、レスポンスURL領域121dに「http://example。com/rosen/result」、レスポンス取得時刻領域121fに「2008-07-07 10:05:05」、レスポンスボディ領域121hにHTML文書である「<html><body>…新橋…</html>」を格納する。
以上のように、ユーザが最寄駅検索サービス10と路線検索サービス20の2つのサービスを利用することにより、図3に示す入出力情報テーブル121が完成する。
次に、前述のサービス連携付け処理(S7)での詳細処理内容について、図4に示すフローチャートに従って説明する。
サービス連携付け部116は、入出力情報テーブル121に新たな行が追加されると、この行の入出力情報を取得し、この行の入出力情報で規定されるサービスを連携先サービス情報として取得する(S701)。例えば、図3に示す入出力情報テーブル121のid=4の行の入出力情報を取得し、この行で規定されるサービスを連携先サービス情報とする。そして、サービス連携付け部116は、以下のステップ702,703の処理で、連携先サービス情報に対する連携元サービス情報の候補を特定する。
サービス連携付け部116は、ステップ701で取得した連携先サービス情報にリファラURLが存在するか確認する(S702)。リファラURLが存在しなければ、連携先サービス以前に利用されたサービスを辿ることができないので、サービスを連携付けることができないとして処理を終了する。リファラURLが存在すれば連携先サービス以前に利用されたサービスを辿ることができるので、処理を続行する。例えば、図3に示す入出力情報テーブル121のid=4の行の入出力情報には、リファラURLが存在するので、処理を続行する。
次に、サービス連携付け部116は、連携先サービスの入力情報(リクエスト情報)に連携する他のサービスの出力情報(レスポンス情報)が存在するかを確認する(S703)。
ここで、このステップ703での処理について、図5に示すフローチャートに従って説明する。
サービス連携付け部116は、レスポンス取得時刻が連携先サービス情報のリクエスト取得時刻より以前で、かつε時間以内に当該中継装置100が取得した他のサービスの入出力情報を、入出力情報テーブル121から全て取得する(S731)。このε時間は、十分に小さいことを意味し、中継装置100の管理者が与えるパラメータ値である。仮に、εの値を1時間にすれば、過去1時間以内にユーザが利用したサービスが検索対象となる。
次に、サービス連携付け部116は、連携先サービス情報のリクエストparamのリクエスト値が、ステップ731で取得した入出力情報のレスポンスボディ内に含まれているか検索する(S732)。
この際に、構造化文書の特徴を用いて、タグで囲まれた文字列やコメント以外の文字列などのWebページに表示される情報を検索対象とする。そうすることで、ユーザに見える情報だけを対象に検索することができる。また、検索には部分一致も許す。結果として一致するレスポンスがあれば、連携先サービス情報と連携する出力情報が存在するとして(S733)、図4のステップ704に進む。また、一致するレスポンスがなければ、連携先サービス情報と連携する出力情報は存在しないと判断して(S734)、処理を終了する。
ここで、同じレスポンスボディ内に一致する箇所が複数ある場合もある。その場合には、文字列の一致する割合や構造化文書の特徴を用いて優先順位を付け、最も優先順位が高い文字列を選びだす。具体的な優先順位付けの方法として、例えば、連携先サービス情報のリクエストparamのリクエスト値が「国際展示場正門」のとき、他のサービスの出力情報中に「国際展示場」及び「国際展示場正門」が存在する場合には、一致する文字列が多い「国際展示場正門」を優先する。また、構造化文書の特徴を用いて、タグにより強調表示や文字を大きくし表示している文字列を優先してもよい。さらに、一致する文字列を含むレスポンスボディが複数ある場合もある。複数ある場合には、連携先サービス情報のリクエスト取得時刻と検索の対象となるサービスのレスポンス取得時刻の差がより少ないものを優先する。例えば、サービスの利用時刻が近い順にn個、連携サービスの候補として選ぶ。このnはサービス連携中継装置100の提供者が事前に設定する値である。また、ステップ704以降のサービス連携付け処理を行う際の、サービスの連携強さを計算する場合にも利用することができる。
例えば、ステップ702では、ステップ701で取得したid=4の行の入出力情報(連携先サービス情報)にリファラURLが存在するか確認する。この場合、この入出力情報には、「http://example.com/rosen」というリファラURLが存在する。そして、ステップ703に進み、図5中のステップ731で、連携先サービス情報のリクエスト取得時刻「2008-07-07 10:05:00」より以前のレスポンス取得時刻を持つ他のサービスの入出力情報を入出力情報テーブル121から抽出する。この場合、「id = 1」「id = 2」「id = 3」の入出力情報が抽出される。次に、連携先サービスのリクエストparamのリクエスト値「横浜」「国際展示場正門」が、ステップ731で抽出したいずれかの入出力情報のレスポンスボディ内に含まれているか検索する(S732)。この場合、「id = 2」の入出力情報中のレスポンスボディ内に「国際展示場正門」が含まれているので、この「id = 2」の入出力情報で規定されるサービスは連携元サービスの候補であると判断する。
連携元サービス候補の特定が終了すると(S703)、以下のステップ704〜ステップ710の処理で、連携先サービス情報と、この連携元サービス候補の情報とのサービス連携付けを行う。
サービス連携付け部116は、まず、連携先サービス情報からリファラURLを抽出し、これを図7に示すサービス連携情報テーブル122の連携先サービスURL領域122bに格納する(S704)。この場合、連携先サービス情報(id = 4)のリファラURL「http://example.com/rosen」を連携先サービスURL領域122bに格納する。
次に、連携先サービス情報のリファラURLがリクエスト先URLになっている入出力情報を入出力情報テーブル121から探し出し、そのレスポンスボディと対象サービスのリクエスト先URL情報とリクエストparamのリクエスト変数名から、連携先サービス情報のリクエストparamを入力した位置のXPathを抽出し、このXPathを、図7に示すサービス連携情報テーブル122の連携先サービスXPath領域122cに格納する(S705)。この場合、連携先サービス情報(id = 4)のリファラURL「http://example.com/rosen」がリクエスト先URLになっている「id = 3」の入出力情報を探し出し、この入出力情報のレスポンスボディ中のどの位置に、連携先サービス情報(id = 4)のリクエストparamに含まれる「to=国際展示場正門」のリクエスト変数名が定義されているXPath「/html/body/div[2]/form/input[@name=’to’]」を抽出する。そして、これを、図7に示すサービス連携情報テーブル122の連携先サービスXPath領域122cに格納する。これは、図11に示す路線検索結果25をレスポンスボディとする連携先サービス(id = 4)に対して、「id = 3」の入出力情報に含まれている路線検索受付情報21における入力フォーム22の位置を取得することを意味する。
ここで、リクエスト先URLとリクエストparamのリクエスト変数を用いるのは、例えば、HTMLのformを用いた場合に、以下の情報をXPathとして抽出できるからである。
(1) リクエストURLからページ内のどのformを利用しているかがわかる。
(2) リクエストparamのリクエスト変数名からform内のどのname属性がついたinputタグを利用しているかがわかる。
次に、サービス連携付け部116は、ステップ703で取得した連携元サービス候補情報(id = 2)からレスポンスURL「http://example.com/moyori/result」を抽出し、これを図7に示すサービス連携情報テーブル122の連携元出力URL領域212dに格納する(S706)。さらに、連携元サービス候補のレスポンスボディ内で、連携先サービスのリクエストparamの文字列と一致した文字列の位置をXPath「/html/body/div[3]/table/li[1]」として抽出し、これを図7に示すサービス連携情報テーブル122の連携元出力XPath領域122eに格納する(S707)。これは、図11に示す最寄駅線検索結果15をレスポンスボディとする連携元サービス(id = 2)において、連携先サービス(id = 4)のリクエストparamの文字列と一致した文字列「国際展示場正門」が示されている位置、つまりレスポンスパラメータの位置16を取得することを意味する。
以上のステップ704〜ステップ707の処理で、連携先サービス情報にどのサービス情報の結果が利用されているかが連携付けられる。言い換えると、どのサービスの結果が連携先サービス情報の入力として利用されているかがわかるようになる。
次に、以下のステップ708〜ステップ710の処理で、連携先サービス情報の入力がどのサービス情報の入力の結果得られたものであるかを連携付ける。
ステップ708で、サービス連携付け部116は、ステップ703で取得した連携元サービス情報にリファラURLが存在するか確認する。リファラURLが存在すれば、連携元サービス情報はそのリファラURLで示されるページに対する入力の結果得られたものと判断し、次のステップ709に進む。一方、リファラURLが存在しなければ、ステップ711に進む。この場合、連携元サービス情報(id = 2)には、リファラURLが存在するので、ステップ709に進む。
サービス連携付け部116は、ステップ708で、連携元サービス情報にリファラURLが存在すると判断した場合、そのリファラURLを連携先サービス情報に連携する入力ページとみなし、これを図7に示すサービス連携情報テーブル122の連携元入力URL領域122fに格納する(S709)。この場合、連携元サービス情報(id = 2)のリファラURL「http://example.com/moyori」を、図7に示すサービス連携情報テーブル122の連携元入力URL領域122fに格納する。
次に、サービス連携付け部116は、連携元サービス情報のリファラURLがリクエスト先URLとして格納されている直近の入出力情報を入出力情報テーブルから探し出す。ここでも、検索対象は、サービスのリクエスト取得時刻に対してレスポンス取得時刻が近いサービスを優先する。そして、この入出力情報のレスポンスボディと連携サービスのリクエスト先URL情報とリクエストparamから、リクエストを入力した位置のXPathを抽出し、これを図7に示すサービス連携情報テーブル122の連携元入力XPath領域gに格納する(S710)。この場合、連携元サービス(id = 2)のリファラURL「http://example.com/moyori」が、リクエスト先URLになっている「id = 1」の入出力情報を取得する。そして、この「id = 1」の入出力情報のレスポンスボディ等から、連携元サービス(id = 2)のリクエストparam「where=展示場X」のリクエスト変数名である「where」が「id = 1」のサービスのレスポンスボディのどの位置で定義されているかを抽出する。すると「展示場x」と入力した場所のXPathが例えば、「/html/body/div[1]/form/input[@name=’where’]」のように取得できる。このXPathを、図7に示すサービス連携情報テーブル122の連携元入力XPath領域122gに格納する。これは、図11に示す最寄駅検索受付情報11における入力フォーム12の位置を取得することを意味する。
以上のステップ708〜ステップ710の処理により、連携先サービスの入力がどのサービスの入力の結果得られたものであるかがわかるようになる。
次に、サービス連携付け部116は、連携先サービス情報と連携元サービス情報との連携強さを求める(S711)。連携強さを求めるため、ステップ703で利用した時間εや連携元サービスの候補数nを利用してもよい。この時間εと候補数nは、サービス連携付け部116が持つ。これらの変数の値は、中継装置100の管理者が設定する。
時間εを利用する場合、例えば、以下の式で、連携強さSを求める。
S=(ε-レスポンス取得時刻とリクエスト取得時刻の差分)/ε
この式では、サービスの利用時刻が近いほど連携強さSが大きくなる。
また、候補数nを利用する場合、n個の候補のそれぞれに、サービス利用時刻が近い順に、1からnまでの連携サービス検出順位を付けて、以下の式で連携強さSを求める。
この式では、連携元サービスとして検出された順番が早いほど連携強さSが大きくなる。
S=(n+1-連携サービス検出順位)/n
ところで、ある連携先サービスに対して、連携元サービスを抽出した後、この連携先サービスと同一のサービスに対して、連携元サービスを抽出したところ、この連携元サービスが先に抽出した連携元サービスと同じになる場合がある。
そこで、サービス連携付け部116は、以上のステップ702〜ステップ711で、サービス連携情報テーブル122の1行に格納したサービス連携情報と、連携強さを除いて、同一のサービス連携情報が他の行に存在するかを検索する(S712)。同じサービス連携情報があれば、このサービス連携情報中の連携強さを、ステップ711で求めた対象サービス連携情報の連携強さに加えて、この値を、サービス連携情報テーブル122中であって、対象連携サービスの行の連携強さ領域122hに格納する。また、同じサービス連携情報が無ければ、ステップ711で求めた対象サービス連携情報の連携強さを、そのまま、サービス連携情報テーブル122中であって、対象連携サービスの行の連携強さ領域122hに格納する。これにより、サービス連携情報として利用される頻度の高いサービス連携情報中の連携強さが増す。
次に、前述の連携サービス情報添付処理(S8)での詳細処理内容について、図8に示すフローチャートに従って説明する。
連携サービス情報添付部117は、入出力情報収集部115を介して、レスポンス受信部113からレスポンス情報を受け付けると、サービス連携情報テーブル122から、このレスポンス情報に含まれているレスポンスURLを含む全てのサービス連携情報を抽出する(S801)
次に、連携サービス情報添付部117は、ステップ801で抽出したサービス連携情報のうち、連携強さの最も大きものを一つ取得して(S802)、以下のステップ803〜ステップ807の処理を実行する。
連携サービス情報添付部117は、先に取得した一つのサービス連携情報について、以下の二つの条件(a)(b)について判断する(S803)。
(a)レスポンスURLは、サービス連携情報中の連携先サービスURLと一致するか。
(b)レスポンスURLは、サービス連携情報中の連携元出力URLと一致するか。
ステップ803の判断で、(a)、(b)の両方の条件がNoなら、何ら処理をせずに、ステップ807に進む。
ステップ803の判断で、(a)の条件がYes、(b)の条件がNoなら、レスポンス情報は、連携先サービスの情報であることから、連携サービス情報添付部117は、レスポンス情報に、この連携先サービスより以前に利用する連携元サービスの情報を添付する(S804)。
具体的に、このステップ804で、連携サービス情報添付部117は、まず、ステップ802に取得したサービス連携情報から、連携元入力URLを取得し、このURLで規定されるサービス情報を連携元サービス情報として取得する。次に、ステップ802に取得したサービス連携情報から、連携先サービスXPathと連携元入力XPathとを抽出し、連携先サービスXPathと連携元入力XPathとを関係付ける。そして、レスポンス情報に、連携元サービス情報と、連携先サービスXPathと連携元入力XPathとを関係付けた属性情報と、を添付する。
例えば、図11を用いて前述したように、ユーザが、クライアント端末200にURLとして「http://example。com/rosen」を打ち込んで、路線検索サービス20の利用をリクエストした場合について考える。
この際、サーバ300は、このリクエストに対して、路線検索受付情報21を含むレスポンス情報を返す。このレスポンス情報に含まれるレスポンスURLは、前述したように、「http://example。com/rosen」である。そこで、連携サービス情報添付部117は、サービス連携情報テーブル122から、このレスポンスURLを含むサービス連携情報を取得する(S801)。この場合、図6中で、「id = 1」のサービス連携情報を取得する。次に、連携サービス情報添付部117は、前述の条件(a)(b)について判断する(S803)。この場合、レスポンスURLは、サービス連携情報(id = 1)中の連携先サービスURLと一致し、連携元出力URLと一致しないため、このレスポンス情報は、連携先サービスの情報であると判断し、連携元サービスの情報等を取得するため、ステップ804に進む。
このステップ804で、連携サービス情報添付部117は、サービス連携情報(id = 1)中の連携元入力URL「http://example。com/moyori」を取得し、この連携元入力URLで規定されるサービス情報を連携元サービス情報として取得する。この連携元入力URLに基づいて得られる連携元サービス情報は、図11に示す最寄駅検索受付情報11を含む情報である。したがって、このレスポンス情報に連携元サービス情報を添付して、これをクライアント端末200に渡すと、クライアント端末には、図9に示すように、サーバ300からのレスポンス情報に含まれる路線検索受付情報21と共に、最寄駅検索受付情報11が出力されるようにjavaScriptを埋め込む。さらに、連携サービス情報添付部117は、ステップ804で、サービス連携情報(id = 1)から、連携先サービスXPathと連携元入力XPathとを抽出し、連携先サービスXPathと連携元入力XPathとを関係付けた属性情報を、JavaScriptにより前述のレスポンス情報に付加する。ここで、連携先サービスXPathは、路線検索受付情報21中の入力フォーム22の位置であり、連携元入力XPathは、最寄駅検索受付情報11中の入力フォーム12の位置であるから、クライアント端末200には、図9に示すように、路線検索受付情報21中の入力フォーム22と最寄駅検索受付情報11中の入力フォーム12とが、関係するように出力される。さらに、この関係付けの属性情報により、クライアント端末200では、例えば、路線検索受付情報21中の入力フォーム22に、1)文字入力しようとすると、カーソルが最寄駅検索受付情報11中の入力フォーム12内に移動する、2)この入力フォーム12が点灯してここへの入力を促す、さらに、3)最寄駅検索受付情報11中の入力フォーム12にリクエストパラメータ(展示場X)が入力され、その結果で得られるレスポンスパラメータ(国際展示場正門)を路線検索受付情報21中の入力フォーム22に入力する、等の処理が成される。
再び、図8に示すフローチャートの説明に戻る。
ステップ803の判断で、(a)の条件がNo、(b)の条件がYesなら、レスポンス情報は、連携元サービスの情報であることから、連携サービス情報添付部117は、このレスポンス情報に、この連携元サービスより以降に利用する連携先サービスの情報を添付してから(S805)、ステップ807に進む。
具体的に、このステップ805で、連携サービス情報添付部117は、まず、ステップ802に取得したサービス連携情報から、連携先サービスURLを取得し、このURLで規定されるサービス情報を連携先サービス情報として取得する。次に、ステップ802に取得したサービス連携情報から、連携元出力XPathと連携先サービスXPathとを抽出し、連携元出力XPathと連携先サービスXPathとを関係付ける。そして、レスポンス情報に、連携先サービス情報と、連携元出力XPathと連携先サービスXPathとを関係付けた属性情報と、を添付する。
例えば、図11を用いて前述したように、ユーザが、クライアント端末200にURLとして「http://example.com/moyori」を打ち込んで、最寄駅検索サービス10を利用して、検索を実行した場合について考える。
この際、サーバ300は、この検索リクエストに対して、最寄駅検索結果情報15を含むレスポンス情報を返す。このレスポンス情報に含まれるレスポンスURLは、前述したように、「http://example.com/moyori/result」である。そこで、連携サービス情報添付部117は、サービス連携情報テーブル122から、このレスポンスURLを含むサービス連携情報を取得する(S801)。この場合も、図6中で、「id = 1」のサービス連携情報を取得する。次に、連携サービス情報添付部117は、前述の条件(a)(b)について判断する(S803)。この場合、レスポンスURLは、サービス連携情報(id = 1)中の連携先サービスURLと一致せず、連携元出力URLと一致するため、このレスポンス情報は、連携元サービスの情報であると判断し、連携先サービスの情報等を取得するため、ステップ805に進む。
このステップ805で、連携サービス情報添付部117は、サービス連携情報(id = 1)中の連携先サービスURL「http://example.com/rosen」を取得し、この連携先サービスURLで規定されるサービス情報を連携先サービス情報として取得する。この連携先サービスURLに基づいて得られる連携先サービス情報は、図11に示す路線検索受付情報21を含む情報である。したがって、このレスポンス情報に連携先サービス情報を添付して、これをクライアント端末200に渡すと、クライアント端末200には、図10に示すように、サーバ300からのレスポンス情報に含まれる最寄駅検索結果情報15と共に、路線検索受付情報21が出力されるようにjavaScriptを埋め込む。さらに、連携サービス情報添付部117は、ステップ805で、サービス連携情報(id = 1)から、連携元出力XPathと連携先サービスXPathとを抽出し、連携元出力XPathと連携先サービスXPathとを関係付けた属性情報を、JavaScriptにより前述のレスポンス情報に付加する。ここで、連携元出力XPathは、最寄駅検索結果情報15中の文字列「国際展示場正門」が示されている位置16であり、連携先サービスXPathは、路線検索受付情報21の入力フォーム22の位置であるから、クライアント端末200には、図10に示すように、最寄駅検索結果情報15中の文字列「国際展示場正門」が示されている位置(レスポンスパラメータの位置)16と最寄駅検索受付情報11中の入力フォーム22とが、関係するように出力される。さらに、この関係付けの属性情報により、クライアント端末200では、例えば、最寄駅検索受付情報11中の入力フォーム22にカーソルを配置する、又は、この入力フォーム22に、連携元出力XPathの位置に示されている文字列「国際展示場正門」を配置する等の処理が成される。
なお、図9,10において、レスポンス情報21,15に添付する連携サービス情報11,21は、それぞれ一つずつであるが、複数の連携サービス情報が検索され、これらが添付されることもある。このような場合、クライアント端末200に、各連携サービス情報を単に並べて表示させるようにしてもよいし、また、連携サービス情報毎にタブ14,24を設けて、このタブ14,24がクリックされることで、タブ14,24に関係付けられている連携サービス情報を表示させるようにしてもよい。
再び、図8に示すフローチャートの説明に戻る。
ステップ803の判断で、(a)、(b)の両方の条件がYesなら、レスポンス情報は、連携元サービスの情報であると共に、連携先サービスの情報でもあることから、連携サービス情報添付部117は、レスポンス情報に、連携先サービスとしてのレスポンス情報より以前に利用する連携元サービスの情報、及び連携元サービスとしてのレスポンス情報より以降に利用する連携先サービスの情報を、このレスポンス情報に添付してから(S806)、ステップ807に進む。
ここで、連携サービス情報添付部117が、レスポンス情報に連携元サービスの情報を添付する方法、及び、レスポンス情報に連携先サービスの情報を添付する方法は、以上のステップ804,805で説明した方法とおなじである。
ステップ807では、連携サービス情報添付部117は、ステップ801において抽出したサービス連携情報が残っているか否かを判断する。サービス連携情報が残っていれば、ステップ802に戻り、連携サービス情報添付部117は、残っているサービス連携情報のうちから、連携強さの最も大きものを一つ取得して、以上で説明したステップ803〜ステップ807の処理を実行する。
また、連携サービス情報添付部117は、ステップ807において、ステップ801で抽出したサービス連携情報が残っていないと判断すると、ステップ804〜806の処理で、レスポンス情報に連携サービス情報を添付していれば、この連携サービス情報に対して連携する連携サービス情報を、さらに添付するか否かを判断する(S808)。この判断は、クライアント端末300から連携サービス情報に更なる連携サービス情報を添付するか否かの指示を予め受けておき、又は、中継装置100の管理者が連携サービス情報に更なる連携サービス情報を添付するか否かを予め設定しておき、この指示や設定に従って行われる。
連携サービス情報添付部117は、連携サービス情報に対して連携する連携サービス情報を、さらに添付すると判断した場合には、ステップ804〜806の処理で、レスポンス情報に添付した連携サービス情報を新たなレスポンス情報としてから(S809)、ステップ801に戻る。このステップ801では、サービス連携情報テーブル122から、この新たなレスポンス情報に含まれているレスポンスURLを含む全てのサービス連携情報を抽出し、前述と同様に、ステップ802に進む。このように、ステップ809,801では、連携先サービス情報の検索キー(レスポンスURL)を変更して、連携先サービス情報を再検索する。この際、連携先サービス情報の検索の無限ループを避けるために、一度検索キーになったことのある連携先サービス情報のレスポンスURLを再び検索キーにしない。この検索キーの変更回数や変更条件は、中継装置100の提供者が設定する。例えば、検索キーの変更回数を「0回」にしておけば、連携先サービス情報に、さらに連携するサービス情報を検索しない。つまり、ステップ808の判断では必ずNoになる。一方、変更条件を例えば「検索キーの候補がなくなるまで検索キーを変更する」にすれば、検索された連携サービスをさらに連携サービス情報の検索キーにして、新たな連携サービス候補の情報が見つからなくなるまで検索する。
また、連携サービス情報添付部117は、ステップ808で、連携サービス情報に対して連携する連携サービス情報を、さらに添付しないと判断した場合には、ステップ808で、レスポンス情報のみ、又は連携サービス情報が添付されたレスポンス情報をレスポンス転送部114に渡して、連携サービス情報添付処理(S8)を終了する。
以上のように、本実施形態では、中継装置100がサービス同士の連携情報を定義し、この定義に基づいて、ユーザが利用しているサービスと連携するサービスを提供しているので、連携するサービスの提供する際のユーザの負担をなくすことができる。
また、本実施形態では、レスポンス情報に対して連携するものであれば、連携元サービス情報でも、連携先サービス情報でも添付されるので、ユーザに対してより多くの連携サービス情報を提示することができる。
「第二実施形態」
以下、本発明に係る第二実施形態について、図12及び図13を用いて説明する。
本実施形態は、クライアント端末200で、コピー&ペーストを実行すると、このコピー&ペーストの情報を利用して、サービス連携情報を作成する機能を、第一実施形態の中継装置100に追加したものである。
従って、本実施形態の中継装置100aは、図12に示すように、ハードウェアー構成が第一実施形態と同一である。
本実施形態の中継装置100aは、機能構成として、第一実施形態の中継装置100の機能構成の他に、クライアント端末200に送るレスポンス情報に、コピーイベント及びペーストイベントを検出してこれを中継装置100aに通知するプログラムであるイベント検出器を添付するイベント検出器添付部118と、クライアント端末200からイベント情報を受信するイベント情報受信部119と、を有している。これらの機能部118,119も他の機能部と同様に、記憶装置120aに格納されているプログラム129aをCPU110aが実行することで機能する。
本実施形態の記憶装置120aには、第一実施形態における各種テーブル121,122に加えて、イベント情報受信部119が受信したイベント情報が格納されるイベント情報テーブル123が設けられている。
本実施形態の中継装置100aも、第一実施形態の中継装置100の機能部を有している関係で、第一実施形態の中継装置100と同様に、図2、図4及び図5を用いて説明した動作と同じ動作を行う。さらに、本実施形態の中継装置100aは、クライアント端末200で、コピー&ペーストイベントが発生すると、このコピー&ペーストイベントに基づくサービス連携付け処理が追加実行される。
以下、本実施形態における、コピー&ペーストイベントに基づくサービス連携付け処理について、図13に示すフローチャートに従って説明する。
中継装置100aのイベント情報受信部119は、クライアント端末200からのイベント情報の受信を待つ(S751)。
なお、クライアント端末200は、中継装置100aへのイベント情報の送信に先立ち、この中継装置100aから受信したプログラムであるイベント検出器を有している。このイベント検出器は、コピーイベント及びペーストイベントを検出して、イベント情報を作成し、これを中継装置100aへ送る。イベント情報は、イベントがコピーであるかペーストであるかの情報と、コピーデータ又はペーストデータと、コピー元サービス情報内でのデータのコピー位置XPath又はペースト先サービス情報内でのデータのペースト位置XPathと、コピー元サービスのURL又はペースト先サービスのURLと、を含んでいる。
イベント情報受信部119は、イベント情報を受信すると、このイベント情報がコピーイベント情報であるかペーストイベント情報であるかを判断する(S752)。受信したイベント情報がコピーイベントである場合には、このコピーイベント情報と共に、このコピーイベント情報の受信時刻をイベント情報テーブル123に格納してから(S753)、ステップ751に戻り、ペーストイベント情報の受信を待つ。また、受信したイベント情報がペーストイベント情報である場合には、このペーストイベント情報をサービス連携付け部116に渡す。
サービス連携付け部116は、ペーストイベント情報をイベント情報受信部119から受け取ると、このペーストイベント情報を受け取る前の所定時間に、ペーストイベント情報に含まれているペーストデータと同じデータをコピーデータとするコピーイベント情報が、イベント情報テーブル123内に存在するか否かを判断する(S754)。当該コピーイベント情報が存在しなければ、ステップ751に戻り、当該コピーイベント情報が存在すれば、ステップ755に進む。例えば、中継装置100aを経由しないサービス情報からコピーしたデータは、中継装置100aに送られてこないため、このデータの情報は、イベント情報テーブル123内に存在しない。この場合、コピー元サービスとコピー先サービスとを連携付けることができないため、ステップ751に戻る。
サービス連携付け部116は、受信したペーストイベント情報に対応するコピーイベント情報がイベント情報テーブル123内に存在すれば、このコピーイベント情報に対応する入出力情報が入出力情報テーブル121中に存在するか否かを判断する(S755)。ここでは、コピーイベント情報中に含まれているコピー元サービスのURLがレスポンスURLであり、且つコピーイベント情報中に含まれているコピーデータがレスポンスボディ内に存在する入出力情報を検索する。
コピーイベント情報に対応する入出力情報が入出力情報テーブル121になければ、サービス間の連携付けができないため、ステップ751に戻る。また、コピーイベント情報に対応する入出力情報が入出力情報テーブル121にあれば、コピー元サービスを連携元サービスとし、ペースト先サービスを連携先サービスとして、以下のステップ756〜ステップ762で、サービス同士の連携付けを行う。
サービス連携付け部116は、まず、ペーストイベント情報から、ペースト先サービスのURLと、ペースト位置XPathとを抽出し、これらをそれぞれ、図6に示すサービス連携情報テーブル122の連携先サービスURL領域122b、連携先サービスXPath領域122cに格納する(S756,757)。
続いて、コピーイベント情報から、コピー元サービスのURLと、コピー位置XPathとを抽出し、これらをそれぞれ、図6に示すサービス連携情報テーブル122の連携元出力URL領域122d、連携元出力XPath領域122eに格納する(S758,759)。
次に、サービス連携付け部116は、入出力情報テーブル121から、ステップ755で存在を確認した入出力情報、つまり、コピーイベント情報に対応する連携元サービス情報中に、リファラURLが存在するか否かを判断する(S760)。連携元サービス情報中にリファラURLが存在しなければ、ステップ763に進み、連携元サービス情報中にリファラURLが存在すれば、ステップ761に進む。
ステップ761で、サービス連携付け部116は、連携元サービス情報のリファラURLがリクエスト先URLとして格納されている直近の入出力情報を入出力情報テーブルから探し出し、この入出力情報のレスポンスボディと連携サービスのリクエスト先URL情報等から、リクエストの入力位置である連携元入力XPathを抽出し、これを図6に示すサービス連携情報テーブル122の連携元入力XPath領域gに格納する(S762)。なお、このステップ762の処理は、図4を用いて説明した前述のステップ710の処理を同じ処理である。
以上で、サービス同士の連携付けが終了する。
最後に、サービス連携付け部116は、連携先サービス情報と連携元サービス情報との連携強さを求め、これを図6に示すサービス連携情報テーブル112の連携強さ領域122hに格納して(S763)、サービス連携付け処理が終了する。なお、ここでの連携強さの計算では、例えば、コピーデータを構成する文字の数やHTMLのタグ情報に応じて強さが増減する式を予め準備しておき、この式を用いて連携強さを求めてもよいし、また、コピー&ペーストイベントに基づくサービス連携付け処理では、予め定めた値を連携強さにしてもよい。
以上、本実施形態では、コピー&ペーストイベント時においても、サービス連携情報が作成されるため、より多くのサービス連携情報を得ることができ、結果として、クライアント端末300に多くの連携サービス情報を提供することができる。
「第三実施形態」
以下、本発明に係る第三実施形態について、図14〜図16を用いて説明する。
本実施形態の中継装置は、SaaS基盤で利用されるものである。ここで、SaaSとは、Software as a Serviceの略称であり、ソフトウェアの機能のうち、ユーザが必要とするものだけをサービスとして、Webを介して配布し利用できるようにしたWeb上におけるサービスの配布形態である。また、SaaS基盤とは、Webを介してサービスを配布するために、サービス提供者が提供したソフトウェアを動作させるための基盤である。
ユーザがSaaS基盤上で提供されるサービスを受けるためには、このサービスの提供者からのサービス購入等を含め、何らかの登録手続が必要である。
本実施形態では、SaaS基盤上で提供されるサービス(以下、特定サービスとする)が他のサービスと連携付けられた場合の、ユーザ及びこの特定サービスの提供者に対する利便性を上げるものである。
本実施形態の中継装置100bは、図14に示すように、ハードウェアー構成として、第一及び第二実施形態の中継装置100,100aに、キーボードやディスプレイ等の入出力装置150を追加したものである。
また、本実施形態の中継装置100bは、機能構成として、第一実施形態の中継装置100の機能構成の他に、サービス連携情報テーブル122中の各サービス連携情報が特定サービスの情報を連携させているか否かを判断する特定サービス連携判断部161と、入出力装置150からの指示で特定サービスの情報を連携させているサービス連携情報を入出力装置150で出力させるニーズ情報提供部162と、を有している。これらの機能部161,162も他の機能部と同様に、記憶装置120bに格納されているプログラム129bをCPU110bが実行することで機能する。
本実施形態の記憶装置120bには、第一実施形態における各種テーブル121,122に加えて、特定サービスの情報が格納されている特定サービス情報テーブル124と、特定サービスの情報を連携させているサービス連携情報が格納される連携利用ニーズ情報テーブル125とが設けられている。
特定サービス情報テーブル125には、特定サービスを受けるためのURLと、この特定サービスを利用可能な全ユーザの通信アドレスやログインのようなユーザ管理の機能がある場合にはユーザIDと、が相互に関係付けられて記憶されている。この特定サービス情報テーブル124に格納されるデータは、入出力装置150又は通信装置140aを介して、特定サービスの提供元により定期的に更新される。
また、本実施形態のサービス連携情報テーブル122において、図6に示す各URL領域122b,122d、122fには、URLが格納される領域の他に、格納されているURLで特定されるサービスが特定サービスであるか否かを示すフラグ領域が設けられている。
次に、図15に示すフローチャートに従って、特定サービス連携判断部161の動作について説明する。
特定サービス連携判断部161は、特定サービスのサーチタイミングになるまで待機し(S1501)、サーチタイミングになると、サービス連携情報テーブル122からサービス連携情報を一つ抽出する(S1502)。
特定サービス連携判断部161は、次に、ステップ1502で抽出したサービス連携情報中に、特定サービス情報テーブル124に格納されているいずれかの特定サービスのURLを含むか否かを判断する(S1503)。
特定サービス連携判断部161は、サービス連携情報中に特定サービスのURLが含まれていない場合には、この一連の処理を終了する。また、サービス連携情報中に特定サービスのURLが含まれている場合には、サービス連携情報テーブル122で、このサービス連携情報が格納されている行中で、このURLに関するフラグ領域にフラグを立てて、このURLが特定サービスのURLであることを示す(S1504)。
次に、特定サービス連携判断部161は、特定サービスのURLが含まれているサービス連携情報を連携利用ニーズ情報テーブル125に格納し、一連の処理を終了する。
次に、図16に示すフローチャートに従って、本実施形態における連携サービス情報の添付処理について説明する。なお、同図中、図8に示す各ステップと同じ処理を行うステップに関しては、同一のステップ番号を付し、その詳細説明を省略する。
図8を用いて前述したように、連携サービス情報添付部117は、ステップ804,805,806で、レスポンス情報に連携サービス情報を添付した後、この連携サービス情報に連携するサービス情報を添付しないと判断すると(S808)、先に添付した連携サービス情報が特定サービス情報であるか否かを判断する(S811)。この判断は、ステップ802で取得したサービス連携情報を参照して、連携サービス情報のURLに対して、特定のサービスのURLであることを示すフラグが立てられているか否かで判断する。
連携サービス情報添付部117は、連携サービス情報が特定サービス情報ではないと判断すると、ステップ810に進み、連携サービス情報が特定サービス情報であると判断すると、ステップ812に進む。
連携サービス情報添付部117は、ステップ812で、特定サービス情報テーブル124を参照して、レスポンス情報の送付先ユーザが特定サービスを受けられるか否かを判断する(S812)。特定サービス情報テーブル125には、前述したように、特定サービスを受けるためのURLと、この特定サービスを利用可能な全ユーザの通信アドレスやログインのようなユーザ管理の機能がある場合にはユーザIDと、が相互に関係付けられて記憶されているため、連携サービス情報添付部117は、特定サービス情報テーブル124を参照して、連携サービス情報としての特定サービス情報に対して、レスポンス情報の送付先の通信アドレスやユーザIDが対応付けられているか否かで、以上の判断を行う。
連携サービス情報添付部117は、レスポンス情報の送付先ユーザが特定サービスを受けられると判断すると、ステップ810に進み、レスポンス情報の送付先ユーザが特定サービスを受けられないと判断すると、ステップ813に進む。
連携サービス情報添付部117は、ステップ813で、レスポンス情報に添付した連携サービス情報に、例えば、「このサービスは有料です。登録手続をして料金を支払ってください。」等のレコメンドを添付する(S813)。
そして、連携サービス情報添付部117は、連携サービス情報を添付したレスポンス情報をレスポンス転送部114に渡して(S810)、連携サービス情報の添付処理を終了する。
中継装置200bにおいて、以上のような連携サービスの添付処理を行うことにより、本実施形態では、特定サービスを利用できないユーザであっても、連携サービス情報が特定サービスである場合には、ユーザが利用するクライアント端末200には、前述のレコメンドと共に、連携サービス情報が出力される。具体的には、例えば、図9に示すように、路線検索受付情報(レスポンス情報)21に対する最寄駅検索受付情報(連携元サービス情報)11が、特定サービスであり、且つ、ユーザがこの特定サービスを受けられない場合には、クライアント端末200には、路線検索受付情報(レスポンス情報)21及び最寄駅検索受付情報(連携元サービス情報)11と共に、この最寄駅検索受付情報11に連携付けられて、「このサービスは有料です。登録手続をして料金を支払ってください。」等のレコメンドが表示される。
また、図10に示すように、最寄駅検索結果情報(レスポンス情報)15に対する路線検索受付情報(連携先サービス情報)21が、特定サービスであり、且つ、ユーザがこの特定サービスを受けられない場合には、クライアント端末200には、最寄駅検索結果情報(レスポンス情報)15及び路線検索受付情報(連携先サービス情報)21と共に、この路線検索受付情報21に連携付けられて、前述のレコメンドが表示される。
以上のように、クライアント端末200には、連携サービス情報が特定サービスの場合、連携サービス情報と共にレコメンドが表示されるので、このクライアント端末200の利用者であるユーザに、この特定サービスの購入を促すことができる。なお、特定サービスを利用できないユーザが、特定サービスとしての連携サービス情報中の入力フォームに、何らかのデータを入力使用とした場合には、特定サービスの利用条件、例えば、特定サービスを利用するために必要なパスワードの入力等が求められる。
また、本実施形態では、特定サービスの提供者は、入出力装置150又は通信装置140aを介して、ニーズ情報提供部162にアクセスすることで、特定サービスの情報を連携させているサービス連携情報を取得することができる。このため、サービス提供者は、この特定サービスの利用状況から、サービスのニーズ等を知り得て、新たなサービスの開発を促進させることができる。なお、ここでは、特定サービスの提供者に対して、特定サービスの情報を連携させているサービス連携情報を取得するだけに留まっているが、ニーズ情報提供部162は、このサービス連携情報に基づいて、レスポンス情報、及びこのレスポンス情報に連携する特定サービス情報を取得し、入出力装置160等により、ユーザに対して出力した態様と同じ態様で、つまり、図9及び図10のように、レスポンス情報、及びこのレスポンス情報に連携する特定サービス情報を出力させるようにしてもよい。さらに、特定サービス情報と共にレコメンドを受け取ったユーザを示す情報も、併せて、入出力装置160等により、出力させるようにしてもよい。これは、連携サービス情報添付部117が、図16に示すステップ812で、送信先ユーザは特定サービスを受けられないと判断した段階で、このユーザの通信アドレスやユーザID等を、連携利用ニーズ情報テーブル125に格納されているサービス連携情報に連携付けて記憶させることで、実現できる。
「第四実施形態」
以下、本発明に係る第四実施形態について、図17を用いて説明する。
本実施形態は、クライアント端末200aに、第一実施形態の中継装置100の諸機能を組み込んだものである。
本実施形態のクライアント端末200aは、コンピュータであり、各種演算処理を実行するCPU210と、ハードディスクドライブ装置等の記憶装置220と、CPU210のワークエリア等になるメモリ230と、ネットワークNを介してサーバ300と通信するための通信装置240と、キーボードやディスプレイ等の入出力装置250と、を備えている。
CPU210は、機能的に、第一実施形態の中継装置100と同様、リクエスト受信部111、リクエスト転送部112、レスポンス受信部113、レスポンス転送部114、入出力情報収集部115、サービス連携付け部116、連携サービス情報添付部117とを有している。このCPU210は、さらに、Webサービスを受けるためのプラウザ部211と、外部のサービス連携情報サーバ400とサービス連携情報の共有化を図るサービス連携情報共有化部212と、を有している。これらの機能部111〜117,211,212も、記憶装置220に格納されているプログラム229をCPU210が実行することで機能する。なお、本実施形態におけるクライアント端末200aのリクエスト受信部111及びレスポンス転送部112は、第一実施形態のリクエスト受信部111及びレスポンス転送部112のように、通信装置140bを介して情報の入出力を行わず、プラウザ部211を介して情報の入出力を行う。
記憶装置220には、プログラム229の他、第一実施形態の中継装置100と同様、入出力情報テーブル121及びサービス連携情報テーブル122が設けられている。
本実施形態では、クライアント端末個別に、サービス連携情報、すなわち個別サービス連携情報を持つことが可能である。個別サービス連携情報を持つことで、第三者とサービス連携情報を必ずしも共有しなくてもよいことが特徴である。つまり、本実施形態により、外部に出したくない情報を持つサービスも連携させて利用することができる。
ところで、以上の各実施形態の中継装置100,100a,100bは、いずれも、複数のクライアント端末200とサーバ300とのデータを中継することにより、複数のクライアント端末200とサーバ300との間の多数の入出力情報を得ることができ、その結果、多数のサービス連携情報を得ることができる。しかしながら、本実施形態のように、第一実施形態の中継装置100の機能をクライアント端末200aに単に組み込んだだけでは、当該クライアント端末200aとサーバ300との間の入出力情報のみしか得ることができず、その結果、サービス連携情報も多くは得られない。すなわち、個別サービス連携情報しか得られない。
そこで、本実施形態では、サービス連携情報供給化部212を設け、外部のサービス連携情報サーバ400と通信することで、サービス連携情報サーバ400が保持している複数の個別サービス情報、つまり集合サービス情報を取得できるようにしている。
サービス連携情報供給化部212は、サービス連携情報テーブル122が更新される毎に、更新された新たなサービス連携情報を、通信装置240を介して、サービス連携情報サーバ400に送る。サービス連携情報サーバ400は、サービス連携情報を受け取ると、自身が保持しているサービス連駅情報テーブル422に新たな行を確保し、この行に、このサービス連携情報を格納する。但し、連携強さを除いて同じ内容のサービス連携情報が既に存在する場合には、サービス連駅情報テーブル422に新たな行を確保することなく、既存のサービス連携情報の連携強さに、クライアント端末200aから送られてきたサービス連携情報の連携強さを加えるのみに留まる。
また、サービス連携情報サーバ400は、サービス連携情報を受け取ると、自身が保持しているサービス連携情報テーブル422で、先にサービス連携情報をクライアント端末200aに送信してから、更新された又は追加されたサービス連携情報をクライアント端末200aに送る。クライアント端末200aのサービス連携情報供給化部212は、通信装置240を介して、サービス連携情報サーバ400からサービス連携情報を受け取ると、これをサービス連携情報テーブル122に格納する。
連携サービス情報添付部117は、以上のように、サービス連携情報テーブル122に格納された個別サービス連携情報及び集合サービス連携情報を用いて、連携サービス情報を取得し、これをレスポンス情報に添付する。
なお、以上では、サービス連携情報テーブル122が更新される毎に、更新された新たなサービス連携情報を送り、サービス連携情報サーバ400から更新された集合サービス連駅情報を受け取っているが、これを定期的に行うようにしてもよい。また、以上では、クライアント端末200aのサービス連携情報テーブル122に、サービス連携情報サーバ400が保持している集合サービス連携情報を格納するようにしているが、これを実施せず、連携サービス情報添付部117が、サービス連携情報共有化部212を介して、サービス連携情報サーバ400にアクセスできるようにしてもよい。
また、クライアント端末200aのサービス連携情報共有化部212は、新たなサービス連携情報をサービス連携情報サーバ400に送る際、ユーザを識別する情報、例えば、クライアント端末200aの通信アドレスやユーザID等を併せて送るようにしてもよい。これにより、サービス連携情報サーバ400側では、ユーザ毎の利用状況等を収集することができる。
また、連携サービス情報添付部117は、サービス連携情報を取得する際、個別サービス連携情報と集合サービス連携情報とのうち、いずれか一方を選択できる、又は両方を選択できるようにしてもよい。この場合、ユーザがクライアント端末200aに、どちらの情報を選択するか、又は両方の情報を選択するかを、事前に設定しておく。また、一方の情報のみが選択された場合でも、レスポンス情報と共に連携サービス情報を出力した段階で、他方の情報の選択を受け付け、この他方の情報に基づき、新たな連携サービス情報を別途出力できるようにしてもよい。
また、本実施形態は、クライアント端末200aに、第一実施形態の中継装置100の諸機能を組み込んだものであるが、サービス提供サーバ300に、第一実施形態等の中継装置の諸機能を組み込んでもよい。この場合、このサービス提供サーバ300は、複数のクライアント端末からアクセスされるため、サービス連携情報として集合サービス連携情報を所有することになる。したがって、この場合には、本実施形態のように、サービス連携情報サーバ400は基本的に不要になる。但し、他のサービス提供サーバとの間で、サービス連携情報を共有化したい場合には、サービス連携情報サーバ400を設けてもよい。