(57)【要約】【課題】ネットワーク上に存在するサービス群の中からサービスの実装を考慮したサービス検索を実行し、該検索されたサービスを提供するサービス提供装置を提供する。【解決手段】少なくとも２以上のサービスのインタフェース情報をそれぞれ取得して各サービス間のインタフェース類似度を算出する第１算出手段と、各サービスに対する入力値の情報、および該入力値を用いてサービスを実行した結果である出力値の情報を取得て各サービス間の入出力類似度を算出する第２算出手段と、算出された各サービス間のインタフェース類似度および入出力類似度を蓄積するサービス類似度蓄積手段と、前記各サービス間のインタフェース類似度および入出力類似度に基づいて、ユーザの検索要求において指定されたサービスと類似するサービスを検索して、該検索結果を提供するサービス提供手段と、を備えるサービス提供装置。【選択図】図１
2011065236.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも２以上のサービス装置でそれぞれ実行されるサービスのインタフェース情報をそれぞれ取得し、該取得したインタフェース情報から各サービス間のインタフェース類似度を算出する第１算出手段と、
前記各サービスに対する入力値の情報、および該入力値を用いて前記サービスを実行した結果である出力値の情報を取得し、該取得した入力値と出力値との情報から各サービス間の入出力類似度を算出する第２算出手段と、
前記算出された各サービス間のインタフェース類似度および入出力類似度を蓄積するサービス類似度蓄積手段と、
前記サービス類似度蓄積手段に蓄積された各サービス間のインタフェース類似度および入出力類似度に基づいて、ユーザの検索要求において指定されたサービスと類似するサービスを検索して、検索結果を提供するサービス提供手段と、
を備えることを特徴とするサービス検索装置。
【請求項２】
前記少なくとも２以上のサービス装置でそれぞれ実行されるサービスのインタフェース情報を蓄積するインタフェース情報蓄積手段と、
前記各サービスに対する入力値の情報と、該入力値を用いて前記サービスを実行した結果である出力値の情報とを蓄積する入出力情報蓄積手段と、をさらに備え、
前記第１算出手段は、前記少なくとも２以上のサービス装置でそれぞれ実行されるサービスのインタフェース情報を前記インタフェース情報蓄積手段からそれぞれ取得し、
前記第２算出手段は、前記各サービスに対する入力値の情報と、該入力値を用いて前記サービスを実行した結果である出力値の情報とを前記入出力情報蓄積手段からそれぞれ取得することを特徴とする請求項１に記載のサービス検索装置。
【請求項３】
前記サービスのインタフェース情報は、ＷＳＤＬ文書の情報であることを特徴とする請求項１または請求項２に記載のサービス検索装置。
【請求項４】
少なくとも２以上のサービス装置でそれぞれ実行されるサービスのインタフェース情報をそれぞれ取得し、該取得したインタフェース情報から各サービス間のインタフェース類似度を算出する第１算出手段と、
前記各サービスに対する入力値の情報、および該入力値を用いて前記サービスを実行した結果である出力値の情報を取得し、該取得した入力値と出力値との情報から各サービス間の入出力類似度を算出する第２算出手段と、
前記算出された各サービス間のインタフェース類似度および入出力類似度を蓄積するサービス類似度蓄積手段と、
ユーザが利用要求するサービスの運用状況を監視するサービス監視手段と、
前記監視した結果、前記ユーザの利用要求するサービスが利用不可となった場合に、該利用不可となったサービスと類似するサービスを、前記サービス類似度蓄積手段を参照して選択し、前記ユーザの利用要求するサービスを前記選択された類似サービスに切り替えるサービス切替手段と、
を備えることを特徴とするサービス提供装置。
【請求項５】
各サービスを実行する少なくとも２以上のサービス装置と、該サービスを利用するクライアント装置と、前記サービス装置と前記クライアント装置とを仲介するサービス検索装置とを備えるサービス検索システムであって、
前記サービス検索システムは、
前記各サービス装置からサービスのインタフェース情報をそれぞれ取得し、該取得したインタフェース情報から各サービス間のインタフェース類似度を算出する第１算出手段と、
前記各サービス装置からサービスに対する入力値の情報、および該入力値を用いて前記サービスを実行した結果である出力値の情報をそれぞれ取得し、該取得した入力値と出力値との情報から各サービス間の入出力類似度を算出する第２算出手段と、
前記算出された各サービス間のインタフェース類似度および入出力類似度を蓄積するサービス類似度蓄積手段と、
前記サービス類似度蓄積手段に蓄積された各サービス間のインタフェース類似度および入出力類似度に基づいて、ユーザの検索要求において指定されたサービスと類似するサービスを検索して、該検索結果を前記クライアント装置に提供するサービス提供手段と、
を備えることを特徴とするサービス検索システム。
【請求項６】
少なくとも２以上のサービス装置でそれぞれ実行されるサービスのインタフェース情報をそれぞれ取得し、該取得したインタフェース情報から各サービス間のインタフェース類似度を算出する段階と、
前記各サービスに対する入力値の情報、および該入力値を用いて前記サービスを実行した結果である出力値の情報を取得し、該取得した入力値と出力値との情報から各サービス間の入出力類似度を算出する段階と、
前記算出された各サービス間のインタフェース類似度および入出力類似度を蓄積する段階と、
前記サービス類似度蓄積手段に蓄積された各サービス間のインタフェース類似度および入出力類似度に基づいて、ユーザの検索要求において指定されたサービスと類似するサービスを検索して、該検索結果を提供する段階と、
を含むサービス検索方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サービス検索装置、サービス提供装置、サービス検索システム、およびサービス検索方法に関する。
【背景技術】
【０００２】
近年、変化するビジネスニーズに対してＩＴシステムを柔軟に対応させるため、ＳＯＡ（Service Oriented Architecture）が注目されている。ＳＯＡとは、サービス単位にアプリケーションをコンポーネント化（部品化）し、これらコンポーネント化したアプリケーション（サービス）を必要に応じて組み合わせることで、新たなシステムを構築可能にしたアーキテクチャである。
【０００３】
ＳＯＡに基づいて作成されたサービスは、通常、外部インタフェースのみが公開され、サービスの実装が隠蔽されるようにカプセル化されているため、サービス単位で組み合わせることで、ビジネスプロセスを柔軟に構築することができる。ＳＯＡに基づいたＷｅｂサービスなどの分野では、ユーザ（利用者）があるサービスを利用しようとしている場合に、該サービスとある程度類似したインタフェース及び実装を有するサービス（類似サービス）を代替サービスとしてユーザに提供することは有効である。よって、ユーザが所望するサービスと類似するサービスを、ネットワーク上に存在するサービス群の中から如何に検索するかが重要となる。
【０００４】
特許文献１や２には、ある特定のサービスが有するインタフェースと類似するインタフェースを有するサービスを、ネットワーク上に存在するサービス群の中から検索する技術が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−２８０４０２号公報
【特許文献２】特開２００５−１７４１２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、ＳＯＡのように、各サービスのインタフェースのみが外部に公開され、実装部分が隠蔽されているサービス群の中から、ユーザが所望するサービスと類似するサービスを検索する場合、特許文献１や２に記載の技術では、類似するインタフェースを有する類似サービスを検索した上で、ユーザが実際にその検索された類似サービスを実行し、その実行結果に基づいて該類似サービスの実装部分が所望するサービスの実装と同等であるか否かを確認する作業が必要であったため、時間とコストがかかってしまうという問題点があった。特に、類似するインタフェースを有する類似サービスの数が膨大である場合は、その問題点は特に顕著になる。
【０００７】
したがって、本発明は、上記問題点を解決し、ネットワーク上に存在するサービス群の中からサービスの実装を考慮した類似サービス検索を実行することができる新しいサービス検索装置、サービス提供装置、サービス検索システム、およびサービス検索方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明によるサービス検索装置は、少なくとも２以上のサービス装置でそれぞれ実行されるサービスのインタフェース情報をそれぞれ取得し、該取得したインタフェース情報から各サービス間のインタフェース類似度を算出する第１算出手段と、前記各サービスに対する入力値の情報、および該入力値を用いて前記サービスを実行した結果である出力値の情報を取得し、該取得した入力値と出力値との情報から各サービス間の入出力類似度を算出する第２算出手段と、前記算出された各サービス間のインタフェース類似度および入出力類似度を蓄積するサービス類似度蓄積手段と、前記サービス類似度蓄積手段に蓄積された各サービス間のインタフェース類似度および入出力類似度に基づいて、ユーザの検索要求において指定されたサービスと類似するサービスを検索して、検索結果を提供するサービス提供手段と、を備える。
【０００９】
また、本発明によるサービス提供装置は、少なくとも２以上のサービス装置でそれぞれ実行されるサービスのインタフェース情報をそれぞれ取得し、該取得したインタフェース情報から各サービス間のインタフェース類似度を算出する第１算出手段と、前記各サービスに対する入力値の情報、および該入力値を用いて前記サービスを実行した結果である出力値の情報を取得し、該取得した入力値と出力値との情報から各サービス間の入出力類似度を算出する第２算出手段と、前記算出された各サービス間のインタフェース類似度および入出力類似度を蓄積するサービス類似度蓄積手段と、ユーザが利用要求するサービスの運用状況を監視するサービス監視手段と、前記監視した結果、前記ユーザの利用要求するサービスが利用不可となった場合に、該利用不可となったサービスと類似するサービスを、前記サービス類似度蓄積手段を参照して選択し、前記ユーザの利用要求するサービスを前記選択された類似サービスに切り替えるサービス切替手段と、を備える。
【００１０】
さらに、本発明によるサービス検索システムは、各サービスを実行する少なくとも２以上のサービス装置と、該サービスを利用するクライアント装置と、前記サービス装置と前記クライアント装置とを仲介するサービス検索装置とを備えるサービス検索システムであって、前記サービス検索システムは、前記各サービス装置からサービスのインタフェース情報をそれぞれ取得し、該取得したインタフェース情報から各サービス間のインタフェース類似度を算出する第１算出手段と、前記各サービス装置からサービスに対する入力値の情報、および該入力値を用いて前記サービスを実行した結果である出力値の情報をそれぞれ取得し、該取得した入力値と出力値との情報から各サービス間の入出力類似度を算出する第２算出手段と、前記算出された各サービス間のインタフェース類似度および入出力類似度を蓄積するサービス類似度蓄積手段と、前記サービス類似度蓄積手段に蓄積された各サービス間のインタフェース類似度および入出力類似度に基づいて、ユーザが指定したサービスと類似するサービスを検索して、該検索結果を前記クライアント装置に提供するサービス提供手段と、を備える。
【００１１】
さらに、本発明によるサービス提供方法は、少なくとも２以上のサービス装置でそれぞれ実行されるサービスのインタフェース情報をそれぞれ取得し、該取得したインタフェース情報から各サービス間のインタフェース類似度を算出する段階と、前記各サービスに対する入力値の情報、および該入力値の情報を用いて前記サービスを実行した結果である出力値の情報を取得し、該取得した入力値と出力値との情報から各サービス間の入出力類似度を算出する段階と、前記算出された各サービス間のインタフェース類似度および入出力類似度を蓄積する段階と、前記サービス類似度蓄積手段に蓄積された各サービス間のインタフェース類似度および入出力類似度に基づいて、ユーザの検索要求において指定されたサービスと類似するサービスを検索して、該検索結果を提供する段階と、を含む。
【発明の効果】
【００１２】
以上のように構成された本発明によれば、サービスのインタフェース情報および実装情報（入力・出力情報）からそれぞれの類似度を算出するため、ネットワーク上に存在するサービス群の中からサービスの実装を考慮した類似サービス検索を実行することができる。
【図面の簡単な説明】
【００１３】
【図１】第１実施形態のサービス検索システム１の概略構成を例示する図である。
【図２】第１実施形態のサービス検索システム１を構成する各装置のハードウェア構成を示す概略図である。
【図３】サービス間のインタフェース類似度を判断する際の一例を示す図である。
【図４】サービス類似度蓄積部に蓄積されている表データの一例を示す図である。
【図５】インタフェース蓄積部に蓄積されている表データの一例を示す図である。サービス情報管理装置により管理されている表の一例を示す図である。
【図６】サービス実装情報蓄積部により管理されている表の一例を示す図である。
【図７】第１実施形態のサービス検索システム１におけるサービス検索方法を実行する処理内容を示すフローチャートである。
【図８】サービス検索方法におけるサービスの実装情報を取得する処理内容を示すフローチャートである。
【図９】第２実施形態のサービス提供システム２の概略構成を例示する図である。
【図１０】第２実施形態のサービス提供システム２を用いて実施されるサービスを仮想的に冗長する場合の動作を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本発明を実施するための好適な実施形態を、図面を参照しながら説明する。なお、以下の各実施形態では、ＳＯＡシステムを用いる場合を例にとって説明する。
＜第１実施形態＞
図１は、本発明の第１実施形態のサービス検索システム１の概略構成を例示する図である。
【００１５】
サービス検索システム１は、図１に示すとおり、クライアント装置１００と、外部サービス装置２０１ａ，２０１ｂを含む外部サービス群２００と、サービス検索装置３００とを含んで構成され、各装置は通信ネットワーク（たとえば、Ｌａｙｅｒ３スイッチおよびＬＡＮケーブルなど）を介して相互に通信可能に接続されている。なお、クライアント装置１００、外部サービス装置２０１ａ，２０１ｂ、およびサービス検索装置３００は、ハードウェアとして、図２に示すように、たとえば、ＣＰＵ、ＣＰＵにバス結合されたＲＯＭ、ＲＡＭ、記憶部、入力部、表示部、および入出力インタフェースなど、通常のコンピュータ装置と同様のハードウェアを備える。これら各装置は、物理的には、専用化したシステム、あるいは汎用の情報処理装置のいずれであってもよい。たとえば、一般的な構成の情報処理装置において、本発明のサービス検索方法における各処理を規定したソフトウェアを起動することにより、サービス検索システム１を実現することもできる。
【００１６】
クライアント装置１００は、サービス検索装置３００を介して、外部サービス装置２０１ａ，２０１ｂのサービスＡ（Ｂ）を利用する装置である。クライアント装置１００は、ユーザが指定したサービスと類似するサービス（類似サービス）の検索要求をサービス検索装置３００に対して送信する機能を有する。なお、クライアント装置１００は、類似サービスの検索要求を送信する以外は、原則として、従来のＳＯＡシステムを利用するクライアント装置と同様の構成および機能とすることができるので、その詳細な説明は省略する。
【００１７】
ここで、本実施形態では、サービスの類似を、サービス（Ｗｅｂサービス）のインタフェースとサービスの実装情報とに基づいて判断する。Ｗｅｂサービスのインタフェースの定義は、サービスの提供されている場所、サービスに用いられているメッセージのフォーマット、プロトコルなどＷｅｂサービスの具体的内容を記述するものであって、たとえば、ＷＳＤＬ（Ｗｅｂ Ｓｅｒｖｉｃｅｓ Ｄｅｓｃｒｉｐｔｉｏｎ Ｌａｎｇｕａｇｅ）で記述することができる。ＷＳＤＬによるインタフェースの定義には、Ｗｅｂ上におけるサービスを利用する際の入出力データの型やアクセス先ＵＲＬなどを記述することができ、ユーザは、利用したいサービスのＷＳＤＬ記述を見れば、そのＷｅｂサービスへのアクセス方法を知ることができる。また、本実施形態のサービスの実装情報とは、あるサービスを利用する際に、ユーザによって入力された入力値の情報（入力情報）と、該入力値を用いてサービスを実行した結果である出力値の情報（出力情報）とを組み合わせた情報である。
【００１８】
外部サービス群２００は、分散アプリケーションの実行環境である外部システムであって、外部サービス装置２０１ａ，２０１ｂを含む。外部サービス装置２０１ａ，２０１ｂは、外部サービス（サービス）Ａ，Ｂを実行する装置である。また、外部サービス装置２０１ａ，２０１ｂにおいて、上記サービス（ソフトウェア）Ａ，Ｂは、たとえば、ＲＯＭまたはＨＤＤなどの記憶媒体に記憶され、該記憶されたソフトウェアはＣＰＵによって実行される。外部サービス装置２０１ａ，２０１ｂ自体は、原則として、従来の外部サービス装置と同様の機能を有することができるので、その詳細な説明は省略する。また、外部サービス群２００に含まれる外部サービス装置は、上記２つの場合に限られず、２以上存在していてもよい。
【００１９】
サービス検索装置（メッセージ交換システム）３００は、クライアント装置１００からユーザの検索要求において指定された類似サービスの検索要求を受けとり、該検索要求に応じた類似サービスの検索結果をクライアント装置１００に送る。また、サービス検索装置３００は、クライアント装置１００からメッセージを受信し、該メッセージを対応する外部サービス装置２０１ａ（２０１ｂ）に送信し、外部サービス装置２０１ａ（２０１ｂ）から受信したメッセージをクライアント装置１００に送信するといった、一般的なＳＯＡシステムの機能も有する。
【００２０】
サービス検索装置３００は、メッセージ送受信部３１０、サービス類似度算出部３２０、サービス類似度蓄積部３３０、インタフェース情報蓄積部３４０、サービス実装情報蓄積部３５０、および類似サービス検索部３６０を備える。
【００２１】
メッセージ送受信部３１０は、クライアント装置１００と外部サービス装置２０１ａ（２０１ｂ）との間のメッセージを送受信する。また、メッセージ送受信部３１０は、外部サービス装置２０１ａ，２０１ｂから各サービスのインタフェース情報および実装情報を受け取り、それぞれの情報をインタフェース情報蓄積部３４０およびサービス実装情報蓄積部３５０に送る。
【００２２】
サービス類似度算出部３２０は、各サービス間の類似度を算出するものであって、サービスインタフェース類似度算出手段３２１と、サービス実装類似度算出手段３２２とを含んでなる。
【００２３】
サービスインタフェース類似度算出手段（第１算出手段）３２１は、各サービス間のインタフェース情報の類似度（インタフェース類似度）を算出するものである。すなわち、サービスインタフェース類似度算出手段３２１は、インタフェース情報蓄積部３４０に問い合わせて、各サービスＡ，ＢのＷＳＤＬ文書を取得し、各サービス間のインタフェース類似度を算出する。サービスインタフェース類似度算出手段３２１は、算出したインタフェース類似度をサービス類似度蓄積部３３０に格納する。
【００２４】
ここで、本実施形態における各サービス間のインタフェース類似度の算出は、たとえば、図３に示すように、スキーマ情報や各要素のｎａｍｅ属性およびｔｙｐｅ属性を抽出し、完全一致箇所と部分一致箇所を探索してそれらの出現回数などから類似度を算出することができる。なお、２つのＷＳＤＬ文書の類似度を算出する方法は、たとえば、２つの文書を比較してその類似度を算出する一般的な方法を用いることができるので、その詳細な説明は省略する。
【００２５】
サービス実装類似度算出手段（第２算出手段）３２２は、各サービス間のサービス実装情報の類似度（実装類似度）を算出するものである。すなわち、サービス実装類似度算出手段３２２は、サービス実装情報蓄積部３５０に問い合わせて、蓄積されている各サービスの入力値と出力値のセットを取得し、該取得した入力値と出力値のセットに対して形態素解析などを用いて各サービス間の実装類似度（入出力類似度）を算出する。サービス実装類似度算出手段３２２は、算出した実装類似度をサービス実装情報蓄積部３５０に格納する。
【００２６】
ここで、本実施形態における各サービス間の実装類似度の算出は、たとえば、サービスＡとサービスＢとの実装類似度を算出する場合、まず、サービス実装類似度算出手段３２２が、サービスＡの入力値および出力値が登録されているか否かを調べ、登録されている場合、サービス実装情報蓄積部３５０にその入力値がサービスＢの入力値として登録されているか否かを調べる。サービスＢの入力値として登録されていれば、サービスＡとサービスＢとの間の実装類似度を算出する。サービスＢの入力値として登録されていなければ、サービスＢを実行する外部サービス装置２０１ｂにサービスＡの入力値を渡してその実行結果（出力値）を返してもらった後、サービスＡとサービスＢとの間の実装類似度を算出する。なお、サービス実装情報蓄積部３５０において、たとえば、サービスＡの入力値のみが登録されており、出力値が登録されていない場合、サービス実装類似度算出手段３２２は、サービスＡを実行する外部サービス装置２０１ａに入力値を渡してその実行結果（出力値）を返してもらい、得られた出力値をサービス実装情報蓄積部３５０に格納する。
【００２７】
サービス類似度蓄積部３３０は、サービス類似度算出部３２０で算出されたインタフェース類似度および実装類似度を蓄積するデータベースであって、サービス類似度蓄積手段として機能する。サービス類似度蓄積部３３０は、たとえば、図４に示すように、類似度を算出した２つのサービス名（ＱＮａｍｅ）、インタフェース類似度、および実装類似度の各データのセットを記憶する。なお、サービス名（ＱＮａｍｅ）は、一般的に、"［ＵＲＩ］ローカル名"という形式で記述するものとし、たとえば、"［http://example.com/］service1"という記述とする。ただし、サービス名の記述は上記に限られず、たとえば、サービス名の記述をユーザによって適宜作成するものであってもよい。
【００２８】
インタフェース情報蓄積部３４０は、外部サービス装置２０１ａ，２０１ｂから各サービスＡ，Ｂのインタフェース情報、すなわちＷＳＤＬ文書を取得して、該取得したＷＳＤＬ文書を格納するデータベースであって、インタフェース情報蓄積手段として機能する。インタフェース情報蓄積部３４０は、たとえば、図５に示すように、サービス名（ＱＮａｍｅ）、およびＷＳＤＬ文書の各データをセットとして記憶する。
【００２９】
サービス実装情報蓄積部（サービス入力・出力情報蓄積部）３５０は、各サービスＡ，Ｂの実装情報、すなわち各サービスＡ，Ｂの入力値の情報（入力情報）と出力値の情報（出力情報）の各データを取得して、該取得した入力値と出力値の各データをセットとして格納するデータベースであって、サービス実装情報蓄積手段として機能する。サービス実装情報蓄積部３５０は、たとえば、クライアント装置１００と外部サービス装置２０１ａ，２０１ｂとの間でのサービスの実行時に、仲介する入力値や出力値の情報、およびその実行されているサービスのサービス名を取得して、蓄積することができる。サービス実装情報蓄積部３５０は、たとえば、図６に示すように、サービス名（ＱＮａｍｅ）、入力値、および出力値の各データをセットとして記憶する。
【００３０】
類似サービス検索部３６０は、サービス類似度蓄積部３３０に問い合わせて、ユーザの検索要求において指定されたサービスと類似するサービスを検索してクライアント装置に提供するものであって、サービス検索手段として機能する。すなわち、類似サービス検索部３６０は、たとえば、クライアント装置１００からユーザの検索要求において指定されたサービスの情報（サービス名など）を受信し、該サービス名（ＱＮａｍｅ）をキーとしてサービス類似度蓄積部３３０に問い合わせをし、ある一定以上のインタフェース類似度および実装類似度（たとえば、それぞれの類似度が５０以上）を有するサービスを類似サービスとして、クライアント装置１００に提供する。
【００３１】
以下、図７〜図８に示すフローチャートを参照して、サービス検索システム１を用いて実施される本実施形態のサービス検索方法を説明する。以下の処理では、サービス検索装置３００が、ユーザの検索要求において指定されたサービスＡ（翻訳ソフトウェア）と類似するサービスＢ（翻訳ソフトウェア）を検索し、クライアント装置１００に提供する場合を例にとって説明する。また、インタフェース情報蓄積部３４０には、予めサービスＡ，Ｂのインタフェース情報が格納され、また、サービス実装情報蓄積部３５０には、予めサービスＡ，Ｂの入力値および出力値の情報が格納されているものとする。なお、各処理は、処理内容に矛盾を生じない範囲で任意に順番を変更して又は並列に実行することができる。
【００３２】
まず、サービス類似度算出部３２０は、インタフェース情報蓄積部３４０に問い合わせて、各サービスのＷＳＤＬ文書を取得する（ステップＳ１０１）。たとえば、インタフェース情報蓄積部３４０には、図５に示すような、サービスＡとサービスＢのＷＳＤＬ文書１，２が格納されており、サービス類似度算出部３２０は、これらのＷＳＤＬ文書１，２を取得する。
【００３３】
次いで、サービス類似度算出部３２０は、取得したＷＳＤＬ文書から各要素を抽出し、完全一致検索や部分一致検索などを行うことで各サービス間のインタフェース類似度を算出する（ステップＳ１０２）。ここで、各サービス間のインタフェース類似度の算出は、たとえば、図３に示すように、スキーマ情報や各要素のｎａｍｅ属性およびｔｙｐｅ属性を抽出し、完全一致箇所と部分一致箇所を探索してそれらの出現回数などから類似度を算出することができる。インタフェース類似度は、２つのＷＳＤＬ文書の各要素を比較した結果、たとえば、各要素がどのぐらい一致しているかの割合で表す。算出した結果、たとえば、サービスＡのインタフェースとサービスＢのインタフェースの類似度は７０（％）という結果を得ることができる。
【００３４】
次に、サービス類似度算出部３２０は、算出したインタフェース類似度を、サービス類似度蓄積部３３０に格納する（ステップＳ１０３）。たとえば、サービス類似度算出部３２０は、図４に示すように、サービスＡのサービス名（ＱＮａｍｅ）を「｛ｈｔｔｐ：／／ｅｘａｍｐｌｅ．ｃｏｍ／｝ｅｘｃｉｔｅ」、サービスＢのサービス名（Ｑｎａｍｅ）を「｛ｈｔｔｐ：／／ｅｘａｍｐｌｅ２．ｃｏｍ／｝ｇｏｏ」、インタフェース類似度を「７０」として格納する。
【００３５】
次いで、サービス類似度算出部３２０は、サービス実装情報蓄積部３５０に問い合わせて、各サービスの同一の入力値に対するそれぞれの出力値を取得する（ステップＳ１０４）。たとえば、サービス類似度算出部３２０は、図５に示すように、サービスＡの入力値「ｐａｔｅｎｔ」と出力値「特許（権），パテント・・・」とのセット、およびサービスＢの入力値「ｐａｔｅｎｔ」と出力値「（専売）特許（権）、（専売）特許の、・・・」とのセットを取得する。
【００３６】
ここで、ステップＳ１０４の具体的な処理について、図８を参照して詳細に説明する。
【００３７】
まず、サービス類似度算出部３２０は、外部サービス群２００にて提供される２以上のサービスのうちから１つのサービスを取り出す（ステップＳ２０１）。たとえば、サービス類似度算出部３２０は、サービスＡ（サービス名「｛ｈｔｔｐ：／／ｅｘａｍｐｌｅ．ｃｏｍ／｝ｅｘｃｉｔｅ」、入力値「ｐａｔｅｎｔ」、出力値「特許（権），パテント・・・」）を取り出すことができる。
【００３８】
次いで、サービス類似度算出部３２０は、サービス実装情報蓄積部３５０を参照して、取り出したサービスの入力値が、他のサービスの入力値として存在するか否かを判断する（ステップＳ２０２）。たとえば、取り出したサービスＡの入力値「ｐａｔｅｎｔ」が、他のサービスＢの入力値として存在するか否かを判断することができる。
【００３９】
上記入力値が、他のサービスの入力値として存在する場合（ステップＳ２０２：Ｙｅｓ）、ステップＳ２０５の処理に移る。
【００４０】
上記入力値が、他のサービスの入力値として存在しない場合（ステップステップＳ２０２：Ｎｏ）、サービス検索装置３００は、キーとした入力値を、他のサービスを実行する外部サービス装置に送信する（ステップＳ２０３）。たとえば、サービスＡの入力値「ｐａｔｅｎｔ」を、他のサービスＢを実行する外部サービス装置２０１ｂに送信することができる。
【００４１】
次いで、サービス検索装置３００は、上記入力値を用いて他のサービスを上記外部サービス装置において実行した結果である出力値を取得し、サービス実装情報蓄積部３５０に格納する（ステップＳ２０４）。たとえば、入力値「ｐａｔｅｎｔ」を用いて外部サービス装置２０１ｂにおいて実行した結果である出力値「（専売）特許（権）、（専売）特許の、・・・」を取得し、該取得した出力値をサービス実装情報蓄積部３５０に格納することができる。
【００４２】
次いで、サービス類似度算出部３２０は、各サービスの同一の入力値に対するそれぞれの出力値を取得する（ステップＳ２０５）。
【００４３】
以上のステップＳ２００〜Ｓ２０５の処理を、たとえば、外部サービス群２００にて提供されるサービスの全ての組み合わせについて実施することができる。
【００４４】
ここで、図７に戻り、サービス類似度算出部３２０は、取得した入力値と出力値のセットに対して形態素解析などを用いて各サービス間の実装類似度を算出する（ステップＳ１０５）。本実施形態のサービス間の実装類似度の算出は、形態素解析によって語句を抽出し、語句間の類似度（たとえば、文字の一致数、類義語の有無）を用いて行うことができる。算出した結果、たとえば、サービスＡの実装とサービスＢの実装の類似度は５０（％）という結果を得る。
【００４５】
次いで、サービス類似度算出部３２０は、算出した実装類似度を、サービス類似度蓄積部３３０に格納する（ステップＳ１０６）。たとえば、サービス類似度算出部３２０は、上記インタフェース類似度の格納と関連させて格納することができ、たとえば、図４に示すように、サービスＡのサービス名（ＱＮａｍｅ）を「｛ｈｔｔｐ：／／ｅｘａｍｐｌｅ．ｃｏｍ／｝ｅｘｃｉｔｅ」、サービスＢのサービス名（Ｑｎａｍｅ）を「｛ｈｔｔｐ：／／ｅｘａｍｐｌｅ２．ｃｏｍ／｝ｇｏｏ」、インタフェース類似度を「７０」、実装類似度を「５０」として格納する。
【００４６】
以上のステップＳ１０１〜Ｓ１０６の処理は、サービス検索装置３００がクライアント装置１００と非同期で実行することができるが、これに限らず、クライアント装置１００からの検索要求を受け付けた場合に上記処理を実行するようにしてもよい。
【００４７】
ここで、ユーザがサービス検索装置３００に対して類似サービスの検索要求をした場合、類似サービス検索部３６０は、サービス類似度蓄積部３３０に問い合わせて、検索要求において指定されたサービスと類似するサービスを検索してクライアント装置に提供する（ステップＳ１０７）。たとえば、類似サービス検索部３６０は、検索要求において指定されたサービスＡのサービス名（ＱＮａｍｅ）である「｛ｈｔｔｐ：／／ｅｘａｍｐｌｅ．ｃｏｍ／｝ｅｘｃｉｔｅ」をキーとして、サービス類似度蓄積部３３０に問い合わせをし、ある一定以上のインタフェース類似度および実装類似度（たとえば、それぞれの類似度が５０以上）を有するサービスＢを類似サービスとして、該サービスＢのサービス名等をクライアント装置１００に提供することができる。
【００４８】
以上のように、本実施形態のサービス検索システム１およびサービス検索方法によれば、サービスのインタフェース情報および入力・出力情報から類似度をそれぞれ算出することで、ネットワーク上に存在するサービス群の中からサービスの実装を考慮したサービス検索を実行し、該検索されたサービスをユーザ（利用者）に提供することができる。
＜第２実施形態＞
図９は、本発明の第２実施形態のサービス提供システム２の概略構成を例示する図である。第２実施形態のサービス提供システム２は、図８に示すとおり、クライアント装置１００と、外部サービス装置２０１ａ，２０１ｂを含む外部サービス群２００と、サービス提供装置４００とを含んで構成され、各装置は通信ネットワーク（たとえば、Ｌａｙｅｒ３スイッチおよびＬＡＮケーブルなど）を介して相互に通信可能に接続されている。
【００４９】
サービス提供装置４００は、メッセージ送受信部３１０、サービス類似度算出部３２０、サービス類似度蓄積部３３０、インタフェース情報蓄積部３４０、およびサービス実装情報蓄積部３５０の第１実施形態のサービス検索装置３００の構成に加え、さらに、サービス監視部３７０、および代替サービス選択部３８０を備える。なお、第１実施形態のサービス検索装置３００と共通の構成については、ここでの詳細な説明は省略する。
【００５０】
サービス監視部３７０は、ユーザ（利用者）が利用要求するサービスの運用状況を監視する監視手段として機能する。すなわち、サービス監視部３７０は、たとえば、ｐｉｎｇなどのネットワークの疎通を確認するソフトウェアを用いて、外部サービス群２００の各サービスＡ，Ｂの運用状況を確認し、監視する。
【００５１】
代替サービス選択部３８０は、上記監視した結果、ユーザの利用要求するサービスが利用不可となった場合に、該利用不可となったサービスと同一または類似するインタフェース、入力情報、および出力情報を有する類似サービスを選択して、利用要求したサービスを、その類似サービスに切り替えるサービス切替手段として機能する。すなわち、ユーザの利用要求するサービスがＡであるとし、そのＡが利用不可である場合、代替サービス選択部３８０は、サービスＡと類似するサービスＢを、サービス類似度蓄積部３３０から検索し、検索されたサービスＢを類似サービスとして選択してクライアント装置に提供する。
【００５２】
以下、図１０に示すフローチャートを参照して、サービス提供システム２を用いて実施されるサービスを仮想的に冗長する場合の動作について説明する。
【００５３】
まず、メッセージ送受信部３１０は、クライアント装置１００からサービスの利用要求を受信する（ステップＳ３００）。
【００５４】
次いで、サービス監視部３７０は、利用要求されたサービスの運用状況を確認する（ステップＳ３０１）。たとえば、サービス監視部３７０は、利用要求されたサービスがサービスＡである場合、サービスＡを実行する外部サービス装置２０１ａに対してｐｉｎｇを送信し、その応答でサービスＡの運用状況を確認する。
【００５５】
メッセージの宛先のサービスが現在利用可能でない場合（ステップＳ３０２：Ｎｏ）、代替サービス選択部３８０は、利用要求のサービスのサービス名をキーとしてサービス類似度蓄積部３３０に問い合わせて（ステップＳ３０３）、一定以上の要求を満たす類似サービスの存在を確認する（ステップＳ３０４）。たとえば、ユーザの利用するサービス名（ＱＮａｍｅ）をキーとしてサービス類似度蓄積部３３０に問い合わせをし、ある一定以上のインタフェース類似度および実装類似度（たとえば、それぞれの類似度が５０以上）を有する類似サービスが存在するか否かを確認する。なお、上記一定以上の要求を満たす類似度の基準は、ユーザまたはサービス提供者などによって適宜変更することができる。
【００５６】
要求を満たす類似サービスが存在する場合（ステップＳ３０４：Ｙｅｓ）、代替サービス選択部３８０は、クライアント装置から受信したメッセージの宛先を類似サービスに変更する（ステップＳ３０５）。たとえば、サービスＡの宛先であったメッセージを、類似するサービス（たとえば、サービスＢ）の宛先に変更する。ステップＳ３０５の処理の後、ステップＳ３０１に戻り、変更した宛先のサービスの運用状況を確認する処理を繰り返す。なお、要求を満たす類似サービスが存在しない場合（ステップＳ３０４：Ｎｏ）、代替サービス選択部３８０は、エラー処理を実行する（ステップＳ３０６）。
【００５７】
メッセージの宛先のサービスが現在利用可能である場合（ステップＳ３０２：Ｙｅｓ）、サービスの実行結果をクライアント装置１００に返す（ステップＳ３０７）。
【００５８】
以上のように、本実施形態のサービス提供システム２によれば、サービスＡ（外部サービス装置２０１ａ）のダウンによるシステム停止リスクを低減し、システムの可用性を向上することができる。その理由は、サービス監視部３７０で、クライアントの目的である外部サービス装置２０１ａが利用不可であることを確認すると、代替サービス選択部３８０が、ユーザ（利用者）の要求を満たす類似サービスの宛先をサービス類似度蓄積部３３０により取得し、現在利用可能である外部サービス装置２０１ｂにメッセージの宛先を変更するなど経路制御するためである。また、第三者によって提供される実装が隠蔽された外部サービスを、ユーザ側で冗長化することは困難であるが、本実施形態によれば、類似サービスを用いることで仮想的に外部サービスを冗長化でき、システムの可用性を高めている。
【００５９】
さらに、本実施形態では、インタフェース類似度および実装類似度を算出して蓄積しているため、外部サービス装置の不具合発生時はもちろん、サービスを利用する際の費用対効果などの面で変更を要する際にもいつでも切り替えが可能である。
＜変形例＞
以上のように本発明の好適な実施形態について説明したが、本発明は、以上の実施形態に限定されるべきものではなく、特許請求の範囲に表現された思想および範囲を逸脱することなく、種々の変形、追加、および省略が当業者によって可能である。
【００６０】
たとえば、上記各実施形態では、サービス検索装置３００（サービス提供装置４００）がインタフェース情報蓄積部３４０およびサービス実装情報蓄積部３５０を備える場合を例にとって説明したが、本発明はこれに限られず、サービス検索装置３００（サービス提供装置４００）以外に設けることもでき、たとえば、ある外部サービス装置に設けてもよい。
【００６１】
また、上記実施形態では、ＳＯＡシステムを前提に説明したが、本発明はこれに限られず、たとえば、ＳＯＡシステム以外に、サービスの実装が隠蔽されているサービスを利用する場合について適用可能なことはもちろんである。
【００６２】
さらに、上記各実施形態では、各サービスの実装情報の類似度を算出する場合、各サービスの同一の入力値に対するそれぞれの出力値を基に算出したが、本発明はこれに限らず、各サービスの入力値が類似のものを用いることもできる。
【００６３】
さらに、上記各実施形態では、サービス検索装置３００，サービス提供装置４００において、それぞれの処理機能を有する各部が備えられている構成を説明したが、本発明はこれに限られず、各部がサービス検索装置３００，サービス提供装置４００と通信可能に接続されたネットワーク上に又は他の装置に備えて構成することもできる。
【００６４】
さらに、サービス検索装置３００，サービス提供装置４００には、用途に応じた各部がそれぞれ備えられているが、サービス検索装置３００，サービス提供装置４００に備えられている各部は、そのいくつかを一纏めにして構成されていてもよいし、一つの部をさらに複数の部に分割して構成されていてもよい。たとえば、第２実施形態のサービス提供装置４００において、メッセージ送受信部３１０と、サービス監視部３７０と、代替サービス選択部３８０とが有するそれぞれの機能を１つのメッセージ送受信装置で実現することもできる。
【符号の説明】
【００６５】
１  サービス提供システム、
１００  クライアント装置、
２００  外部サービス群、
２０１ａ，２０１ｂ  外部サービス装置、
３００  サービス検索装置、
３１０  メッセージ送受信部、
３２０  サービス類似度算出部、
３２１  サービスインタフェース類似度算出手段、
３２２  サービス実装類似度算出手段、
３３０  サービス類似度蓄積部、
３４０  インタフェース情報蓄積部、
３５０  サービス実装情報蓄積部、
３６０  類似サービス検索部。
【図１】
2011065236.tif 000003
【図２】
2011065236.tif 000004
【図３】
2011065236.tif 000005
【図４】
2011065236.tif 000006
【図５】
2011065236.tif 000007
【図６】
2011065236.tif 000008
【図７】
2011065236.tif 000009
【図８】
2011065236.tif 000010
【図９】
2011065236.tif 000011
【図１０】
2011065236.tif 000012