(57)【要約】【課題】マッシュアップしたWebアプリケーション間の通信であっても、Webアプリケーションの応答性の低下を防止できるP2Pの技術を提供する。【解決手段】Webブラウザが動作するクライアントPC３と、Webアプリケーション５が動作するWebサーバ２と、キャッシュサーバ１とがネットワークを介して接続されてP2Pノードとして機能し、全P2Pノードは、ネットワーク運営者が管理しデータを中継するP2Pノードを記述したルート情報を保持してルート設定する中継系P2Pノードと、P2P網の参加と離脱が自由なエッジ系P2Pノードとに分類され、中継系P2Pノードは、他の中継系P2Pノードとの間でルート情報を交換し、エッジ系P2Pノードは中継系P2Pノードとの間にリンクを張り、キャッシュサーバ１が中継系P2Pノード、クライアントPC３およびWebサーバ２がエッジ系P2Pノードとしてそれぞれ機能する。【選択図】図１
2010198116.tif 000002
【特許請求の範囲】
【請求項１】
Webブラウザが動作する１台以上のクライアントPCと、Webアプリケーションが動作する１台以上のWebサーバと、１台以上のキャッシュサーバとがネットワークを介して接続され、データを転送するためのP2Pノード（Peer to Peer node）として機能し、前記Webブラウザと前記Webアプリケーション間、あるいは、前記Webアプリケーションと他の前記Webアプリケーション間でデータが授受されるネットワークシステムであって、
前記P2Pノードは、
ネットワーク運営者が管理するP2Pノードであって、前記データを次のノードに転送する際に中継するP2Pノードを記述したルート情報を保持して前記データのルート設定を行う中継系P2Pノードと、
P2P網への参加およびP2P網からの離脱が自由なエッジ系P2Pノードとに分類され、
前記中継系P2Pノードは、他の前記中継系P2Pノードおよび前記エッジ系P2Pノードとの間にリンクを張り、他の前記中継系P2Pノードとの間で前記リンクを介して自ノードで保持している前記ルート情報を交換し、
前記エッジ系P2Pノードは、前記中継系P2Pノードとの間にリンクを張り、
前記Webサーバと前記キャッシュサーバとが、前記中継系P2Pノードとして機能し、
前記クライアントPCが前記エッジ系P2Pノードとして機能する、
ことを特徴とするネットワークシステム。
【請求項２】
Webブラウザが動作する１台以上のクライアントPCと、Webアプリケーションが動作する１台以上のWebサーバと、１台以上のキャッシュサーバとがネットワークを介して接続され、データを転送するためのP2Pノードとして機能し、前記Webブラウザと前記Webアプリケーション間、あるいは、前記Webアプリケーションと他の前記Webアプリケーション間でデータが授受されるネットワークシステムであって、
前記P2Pノードは、
ネットワーク運営者が管理するP2Pノードであって、前記データを次のノードに転送する際に中継するP2Pノードを記述したルート情報を保持して前記データのルート設定を行う中継系P2Pノードと、
P2P網への参加およびP2P網からの離脱が自由なエッジ系P2Pノードとに分類され、
前記中継系P2Pノードは、他の前記中継系P2Pノードおよび前記エッジ系P2Pノードとの間にリンクを張り、他の前記中継系P2Pノードとの間で前記リンクを介して自ノードで保持している前記ルート情報を交換し、
前記エッジ系P2Pノードは、前記中継系P2Pノードとの間にリンクを張り、
前記キャッシュサーバが、前記中継系P2Pノードとして機能し、
前記クライアントPCと前記Webサーバとが前記エッジ系P2Pノードとして機能する、
ことを特徴とするネットワークシステム。
【請求項３】
Webブラウザが動作する１台以上のクライアントPCと、Webアプリケーションが動作する複数のWebサーバとがネットワークを介して接続され、データを転送するためのP2Pノードとして機能し、前記Webブラウザと前記Webアプリケーション間、あるいは、前記Webアプリケーションと他の前記Webアプリケーション間でデータが授受されるネットワークシステムであって、
前記P2Pノードは、
ネットワーク運営者が管理するP2Pノードであって、前記データを次のノードに転送する際に中継するP2Pノードを記述したルート情報を保持して前記データのルート設定を行う中継系P2Pノードと、
P2P網への参加およびP2P網からの離脱が自由なエッジ系P2Pノードとに分類され、
前記中継系P2Pノードは、他の前記中継系P2Pノードおよび前記エッジ系P2Pノードとの間にリンクを張り、他の前記中継系P2Pノードとの間で前記リンクを介して自ノードで保持している前記ルート情報を交換し、
前記エッジ系P2Pノードは、前記中継系P2Pノードとの間にリンクを張り、
前記Webサーバが、前記中継系P2Pノードとして機能し、
前記クライアントPCが前記エッジ系P2Pノードとして機能する、
ことを特徴とするネットワークシステム。
【請求項４】
請求項１または請求項２に記載のネットワークシステムにおけるキャッシュサーバであって、
自ノードで保持するルート情報を他の前記中継系P2Pノードと交換するルート情報取得制御手段と、
前記ルート情報を記憶するルート情報記憶手段と、
前記転送されるデータとして、前記Webアプリケーションを呼び出す要求メッセージデータまたはその応答メッセージデータを前記リンクを介して受け付けるデータ受信手段と、
前記要求メッセージデータおよび応答メッセージデータをペアにして保管するキャッシュデータを記憶するキャッシュデータ記憶手段と、
前記受信したデータを前記キャッシュデータ記憶手段に保存するデータ記録手段と、
前記受信した要求メッセージデータと同じ内容の要求メッセージデータが記録済みであるか否かを判定する要求判定手段と、
前記受信した要求メッセージデータと同じ内容の要求メッセージデータが記録済みである場合に、当該キャッシュデータにおいてペアをなしている応答メッセージデータを選択する応答選択手段と、
前記選択された応答メッセージデータの宛先までの最短ルートを前記ルート情報に基づいて選択するルート選択手段と、
前記選択されたルートにしたがって次のP2Pノードにデータを転送するデータ送信手段とを備えることを特徴とするキャッシュサーバ。
【請求項５】
請求項１または請求項３に記載のネットワークシステムにおけるWebサーバであって、
自ノードで保持するルート情報を他の前記中継系P2Pノードと交換するルート情報取得制御手段と、
前記ルート情報を記憶するルート情報記憶手段と、
前記転送されるデータとして、前記Webアプリケーションを呼び出す要求メッセージデータまたはその応答メッセージデータを前記リンクを介して受け付けるデータ受信手段と、
前記要求メッセージデータおよび応答メッセージデータをペアにして保管するキャッシュデータを記憶するキャッシュデータ記憶手段と、
前記受信したデータを前記キャッシュデータ記憶手段に保存するデータ記録手段と、
前記受信した要求メッセージデータと同じ内容の要求メッセージデータが記録済みであるか否かを判定する要求判定手段と、
前記受信した要求メッセージデータと同じ内容の要求メッセージデータが記録済みである場合に、当該キャッシュデータにおいてペアをなしている応答メッセージデータを選択する応答選択手段と、
前記選択された応答メッセージデータの宛先までの最短ルートを前記ルート情報に基づいて選択するルート選択手段と、
前記選択されたルートにしたがって次のP2Pノードにデータを転送するデータ送信手段とを備えることを特徴とするWebサーバ。
【請求項６】
Webブラウザが動作する１台以上のクライアントPCと、Webアプリケーションが動作する１台以上のWebサーバと、１台以上のキャッシュサーバとがネットワークを介して接続され、データを転送するためのP2Pノードとして機能するネットワークシステムにおいて、
前記Webブラウザと前記Webアプリケーション間、あるいは、前記Webアプリケーションと他の前記Webアプリケーション間でデータが授受されるWebアプリケーション間通信方法であって、
前記P2Pノードは、
ネットワーク運営者が管理するP2Pノードであって、前記データを次のノードに転送する際に中継するP2Pノードを記述したルート情報を保持して前記データのルート設定を行う中継系P2Pノードと、
P2P網への参加およびP2P網からの離脱が自由なエッジ系P2Pノードとに分類され、
前記中継系P2Pノードは、他の前記中継系P2Pノードおよび前記エッジ系P2Pノードとの間にリンクを張り、他の前記中継系P2Pノードとの間で前記リンクを介して自ノードで保持している前記ルート情報を交換し、
前記エッジ系P2Pノードは、前記中継系P2Pノードとの間にリンクを張り、
前記Webサーバと前記キャッシュサーバとが、前記中継系P2Pノードとして機能し、
前記クライアントPCが前記エッジ系P2Pノードとして機能する、
ことを特徴とするWebアプリケーション間通信方法。
【請求項７】
Webブラウザが動作する１台以上のクライアントPCと、Webアプリケーションが動作する１台以上のWebサーバと、１台以上のキャッシュサーバとがネットワークを介して接続され、データを転送するためのP2Pノードとして機能するネットワークシステムにおいて、
前記Webブラウザと前記Webアプリケーション間、あるいは、前記Webアプリケーションと他の前記Webアプリケーション間でデータが授受されるWebアプリケーション間通信方法であって、
前記P2Pノードは、
ネットワーク運営者が管理するP2Pノードであって、前記データを次のノードに転送する際に中継するP2Pノードを記述したルート情報を保持して前記データのルート設定を行う中継系P2Pノードと、
P2P網への参加およびP2P網からの離脱が自由なエッジ系P2Pノードとに分類され、
前記中継系P2Pノードは、他の前記中継系P2Pノードおよび前記エッジ系P2Pノードとの間にリンクを張り、他の前記中継系P2Pノードとの間で前記リンクを介して自ノードで保持している前記ルート情報を交換し、
前記エッジ系P2Pノードは、前記中継系P2Pノードとの間にリンクを張り、
前記キャッシュサーバが、前記中継系P2Pノードとして機能し、
前記クライアントPCと前記Webサーバとが前記エッジ系P2Pノードとして機能する、
ことを特徴とするWebアプリケーション間通信方法。
【請求項８】
Webブラウザが動作する１台以上のクライアントPCと、Webアプリケーションが動作する複数のWebサーバとがネットワークを介して接続され、データを転送するためのP2Pノードとして機能するネットワークシステムにおいて、
前記Webブラウザと前記Webアプリケーション間、あるいは、前記Webアプリケーションと他の前記Webアプリケーション間でデータが授受されるWebアプリケーション間通信方法であって、
前記P2Pノードは、
ネットワーク運営者が管理するP2Pノードであって、前記データを次のノードに転送する際に中継するP2Pノードを記述したルート情報を保持して前記データのルート設定を行う中継系P2Pノードと、
P2P網への参加およびP2P網からの離脱が自由なエッジ系P2Pノードとに分類され、
前記中継系P2Pノードは、他の前記中継系P2Pノードおよび前記エッジ系P2Pノードとの間にリンクを張り、他の前記中継系P2Pノードとの間で前記リンクを介して自ノードで保持している前記ルート情報を交換し、
前記エッジ系P2Pノードは、前記中継系P2Pノードとの間にリンクを張り、
前記Webサーバが、前記中継系P2Pノードとして機能し、
前記クライアントPCが前記エッジ系P2Pノードとして機能する、
ことを特徴とするWebアプリケーション間通信方法。
【請求項９】
請求項４に記載のキャッシュサーバを構成する各手段としてコンピュータを機能させるためのWebアプリケーション間通信プログラム。
【請求項１０】
請求項５に記載のWebサーバを構成する各手段としてコンピュータを機能させるためのWebアプリケーション間通信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多数のコンピュータがネットワークに接続されたインターネットにおいて、WebブラウザとWebアプリケーション間のデータ通信方法、および、WebアプリケーションとWebアプリケーション間のデータ通信方法およびその通信方法を実現するネットワークシステムの技術に関する。
【背景技術】
【０００２】
近年、マッシュアップ（Mashup）を用いたWebアプリケーションの構築が普及しつつある。マッシュアップとは、他の複数のWebアプリケーションの機能を呼び出して、組み合わせることで、便利なWebアプリケーションを新たに構築することである。
【０００３】
一般的なWebアプリケーションは、Webブラウザからの利用を想定している。一方、一部のWebアプリケーションでは、Webブラウザ以外からの利用を可能とするインタフェースを用意しており、このインタフェースは、Webアプリケーションインタフェース（以下、Web API）と呼ばれている。マッシュアップは、このWeb APIを使って他のWebアプリケーションを呼び出している。例えば、交通機関の経路を調べるWebアプリケーションと、ホテルを予約するWebアプリケーションとを組み合わせて、新たに、出張計画書を作成するWebアプリケーションを構築したマッシュアップなどがある。
【０００４】
従来、Webアプリケーションを作成するためには、Perl（Practical Extraction and Report Language：パール）やPHP（PHP:Hypertext Preprocessor）などのスクリプト言語を使って、一からプログラミングする必要があった。これに対して、マッシュアップには、以下に示すような利点がある。
【０００５】
（利点１）Webアプリケーションの作成者は、新たなWebアプリケーションを構築する際、他のWebアプリケーションの機能を活用することから、全ての機能をゼロから実現する必要がなく、短時間で構築できる。
（利点２）マッシュアップは複数のWebアプリケーションの機能を組み合わせることから、Webアプリケーションの作成者は、多機能を有したWebアプリケーションを容易に構築できる。
（利点３）Webアプリケーションの作成者は、自分の目的に合わせてカスタマイズしたWebアプリケーションを容易に構築できる。
（利点４）Webアプリケーションの作成者は、地図データなどの大量のデータを持たなくとも、それを提供するWeb APIを利用することで、大量のデータを持たずに同等以上のWebアプリケーションを構築できる。
【０００６】
このような利点を持つマッシュアップは、今後さらに盛んになると考えられる。
さて、マッシュアップが盛んになると、マッシュアップによって構築したWebアプリケーションを、もう一度組み込んで、さらに別のWebアプリケーションをマッシュアップする事例が増えてくると予想される。Webアプリケーションをマッシュアップで使うためには、Web APIが提供されていれば良く、そのWebアプリケーションが単体で作成されたものか、マッシュアップにより構築されたものかを考える必要はない。このため、マッシュアップで構築されたWebアプリケーションが多く登場してくると、それをさらに組み込んでマッシュアップする機会が増えると考えられる。図２に、マッシュアップで構築したWebアプリケーション（図では、Web APと表示）を、もう一度組み込んで、さらに別のWebアプリケーションをマッシュアップする例を示す。
【０００７】
図２に示す例では、ユーザ側に配置されたクライアントPC（Webブラウザ）３ａが、インターネット６上のWebアプリケーション５ａにアクセスしている様子を細線の矢印で表している。ここでは、複数のクライアントPC（Webブラウザ）３ｂ，３ｃ，３ｄも同様に配置されている。また、インターネット６上では、複数のWebアプリケーション５ａ〜５ｈ，５ｊ，５ｋが利用可能となっている。これらWebアプリケーション間の太線の矢印の向きは、Web APIの呼出しを表している。
【０００８】
以下では、Webアプリケーションが、他のWebアプリケーションを呼び出す回数を「段」と数えることとする。例えば、図２に例示したWebアプリケーション５ａ〜５ｄにだけ着目したとき、Webアプリケーション５ａが他のWebアプリケーション５ｂ〜５ｄを呼び出す場合は「１段」と数える。
【０００９】
また、図２に例示したWebアプリケーション５ａ〜５ｈにだけ着目したとき、Webアプリケーション５ａが他のWebアプリケーション５ｂ〜５ｈを呼び出す場合は、「２段」と数える。あるいは、Webアプリケーション５ａから視てWebアプリケーション５ｅ〜５ｈを２段目という。
【００１０】
さらに、図２に例示した全部のWebアプリケーション５ａ〜５ｈ，５ｊ，５ｋに着目したとき、Webアプリケーション５ａが他の９つのWebアプリケーション５ｂ〜５ｈ，５ｊ，５ｋを呼び出す場合は「３段」と数える。あるいは、Webアプリケーション５ａから視てWebアプリケーション５ｊ，５ｋを３段目という。以降、同様に段の数（段数と呼ぶこととする）を数えることとする。なお、従来技術である非特許文献１の技術内容およびその問題点については、次の発明の概要の中で述べる。
【先行技術文献】
【非特許文献】
【００１１】
【非特許文献１】飯間悠樹、外４名、“クライアント協調型機構を持つ負荷分散Webプロキシネットワークシステム”、電子情報通信学会データ工学ワークショップ（DEWS2007）、B9-6, 2007
【発明の概要】
【発明が解決しようとする課題】
【００１２】
Webアプリケーションには、高い応答性が求められる場合が多い。しかし、マッシュアップにより構築したWebアプリケーションでは、段数の増加が、Webアプリケーションの応答性の低下を招いてしまう問題がある。
【００１３】
（問題Ａ）段数が増加すると、呼び出されるWebアプリケーションにおける処理時間、および、Webアプリケーション間の通信時間による遅延が積算されるため、Webアプリケーションの応答性が低下する。
【００１４】
（問題Ｂ）あるWebアプリケーションの応答性が低い場合、それを組み込んでマッシュアップしたWebアプリケーションも応答性が低くなる。つまり、複数組み込んだWebアプリケーションのうち、最も低いWebアプリケーションの応答性で、全体の応答性が決まってしまう。
【００１５】
（問題Ｃ）人気が高いWebアプリケーションは、非常に多くのWebアプリケーションのマッシュアップに組み込まれることとなる。その結果、人気が高いWebアプリケーションには、アクセスが集中してしまい、この人気が高いWebアプリケーションの応答性が低下する。さらに、この人気が高いWebアプリケーションを組み込んだ全てのWebアプリケーションの応答性の低下を招いてしまう。
【００１６】
あるWebアプリケーションが、他のWebアプリケーションのWeb APIを呼び出す際、HTTP（HyperText Transfer Protocol）等を用いて要求を出す。それに応えて、呼び出されたWebアプリケーションは、HTTPやXML（Extensible Markup Language）等を用いた応答を返すのが一般的である。このような、要求と応答が一対になった方式では、キャッシュ機構を用いることで、応答性の低下を防ぐことができる。すなわち、一度行われた要求と応答のペアをキャッシュデータとして保管しておけば、次に同じ要求が来た際に、キャッシュデータから応答を取り出せば、他のWebアプリケーションを実際に呼び出す必要が無くなり、高速に処理を進めることができ、応答性の向上が期待できる。
【００１７】
図３に、Webアプリケーションを多段で呼び出す他の例を示す。マッシュアップが普及した状態では、図３に示すように、多くのWebアプリケーションが多段に呼び出され、かつ、人気のあるWebアプリケーション５ｅは複数のWebアプリケーション５ｄ，５ｆ，５ｋから呼び出されるようになる。ここにキャッシュ機構を付加するには、P2P（Peer to Peer）の仕組みを導入するのが適していると考えられる。
【００１８】
P2Pでは、P2Pを構成するノード（P2Pノードと呼ぶ）がバケツリレー式にデータを転送していく。データが転送されるときに経由したそれぞれのP2Pノードは、転送したデータのキャッシュデータを記録しておく。P2Pノードは、後に、同じデータの要求が来た際には、キャッシュデータを返す仕組みを持っている。従って、マッシュアップを構成している多くのWebアプリケーション間のデータ転送に、P2Pの仕組みを導入すれば、キャッシュが有効に働き、マッシュアップの応答性の向上が期待でき、前記した（問題Ａ）〜（問題Ｃ）を解消できる。
【００１９】
複数のWebアプリケーション間のデータ転送において、P2Pノードでキャッシュデータを記録する様子を図４に示す。図４の例では、クライアントPC（Webブラウザ）３がアクセスするインターネット６上のWebアプリケーション５ａは、マッシュアップによりWebアプリケーション５ｂ，５ｃを組み込んでおり、また、Webアプリケーション５ｃはWebアプリケーション５ｄを組み込んでいる。この場合には、Webアプリケーション５ａが動作するP2Pノードにおいて、Webアプリケーション５ｂに転送したデータはキャッシュデータ７ａとして記録され、Webアプリケーション５ｃに転送したデータはキャッシュデータ７ｂとして記録される。さらに、Webアプリケーション５ｃが動作するP2Pノードにおいて、Webアプリケーション５ｄに転送したデータはキャッシュデータ７ｃとして記録される。つまり、複数のWebアプリケーションが互いに通信するデータをキャッシュする。
【００２０】
これまでに、P2Pの仕組みに関する技術として、Webブラウザ群とサーバ群との間に、Webプロキシネットワークと呼ぶキャッシュサーバ群を置き、Webサーバにかかる負荷を分散させる技術が知られている（非特許文献１参照）。
【００２１】
非特許文献１では、キャッシュサーバ同士の通信にP2Pの一手法であるDHT（Distributed Hash Table）技術を用いている。しかし、非特許文献１に記載の技術は、WebブラウザとWebサーバの通信、すなわち１対１の通信をキャッシュするものである。したがって、図４に例示したマッシュアップで構築される複数のWebアプリケーションが互いに通信するデータをキャッシュするような状況に対しては、非特許文献１に記載の技術をそのまま適用することはできない。
【００２２】
P2Pは、もともと、インターネットに接続したクライアントPC同士で、ファイル交換を行うための仕組みであり、多種多様なソフトウェアが実装されている。P2Pソフトウェアを動作させたクライアントPCは、P2Pノードと呼ばれている。P2Pノードは、インターネットを介して、適切なP2Pノードを見つけて、互いにデータ通信用の接続（この接続をリンクと呼ぶ）を張る。
【００２３】
図５に、実際のネットワーク６と、P2P網６Ａとの対応関係を示す。P2P網６Ａとは、実際のネットワークであるインターネット６上に形成された独自のネットワークであることから、オーバーレイネットワークと呼ばれている。図５に示す例では、クライアントPC３ａ〜３ｅに対して、装置名「PC1」〜「PC5」が付与されているものとする。なお、装置名は、モニタ部に表記した。装置「PC1」〜「PC5」は、通信可能に接続されているが、図５に示すように、実際のネットワーク６上の接続（実線）と、P2P網６Ａ上の接続（破線）とは、必ずしも一致するものではない。
【００２４】
P2Pでは、ファイルの取得要求に応じて、P2Pノードがリンクを介して、バケツリレー式にファイルを転送する。また、P2Pはキャッシュ機構を持っている。具体的には、P2Pノードは、転送したファイルのコピーをキャッシュデータとして保持し、同じファイルの取得要求に対しては、キャッシュデータで応答する。P2Pでは、人気のあるファイル、すなわち、取得要求が多いファイルほど、多くのP2Pノードのキャッシュデータとして残る特性がある。
【００２５】
マッシュアップにおいても、図３に示すWebアプリケーション５ｅのように、人気のあるWebアプリケーションヘのアクセスが集中する。そこで、マッシュアップにおいても、P2Pのキャッシュ機構を導入することで、人気のあるWebアプリケーションヘのアクセスをキャッシュで応答できれば、Webアプリケーションの負荷軽減と応答時間の向上が期待できる。
【００２６】
P2Pの一方式として前記したDHTと呼ばれる方式が提案されている。DHTは実用性が高い方式と言われており、ChordやTapestry等、多くの実装がなされている。DHTでは、P2Pノード、および、転送するファイルに、一意のIDが振られる。このIDは、決まった桁数の数字列であり、P2PノードのＩＰアドレスやファイル名を基に、ハッシュを用いて算出することで得られる。DHTのP2Pノードは、IDに関する一定の規則に基づいて、リンクを張るP2Pノードを決定する。そして、DHTのP2Pノードは、P2Pノード間のリンクを張り、オーバーレイネットワークを形成する（図５参照）。DHTでは、ファイルを登録する際には、IDが最も近いP2Pノードに運ばれて保存される。また、ファイルを取得する場合も同様に、IDを使って、保存ノードを発見する。「取得を希望するファイル」を持つP2Pノードを終点とした場合、あるP2Pノードから、この終点のP2Pノードに到達するための経路を“ルート”と呼ぶ。DHTでは、全てのP2Pノードについて、ルートが計算されており、かつ、そのルートが比較的短い。このことから、DHTは、高い評価を得ている。
【００２７】
マッシュアップにおいては、Webアプリケーション、あるいは、Webアプリケーションが動作するWebサーバを、P2Pノードとすることで、P2P機構を導入できそうである。しかし、一方式としてDHTを含むP2Pには、以下のような課題がある。
【００２８】
（課題１）P2Pノードの参加と離脱
P2Pでは、一般に、P2Pノードは、P2P網への参加と、P2P網からの離脱（以下、単に、参加と離脱という）が自由であり、参加と離脱が頻繁に起きる。しかし、P2Pノードの参加または離脱は、新たなルートの追加や、これまで存在したルートの消失を意味しており、非常に多くのP2Pノードで、ルートの再計算を引き起こしてしまう課題がある。ルートの再計算は、P2Pノードにとって大きな負荷であり、P2Pノードによる頻繁な参加と離脱は、P2P全体において、データ転送の性能を低下させてしまう。
【００２９】
（課題２）ネットワーク特性を考慮しないオーバーレイネットワーク
P2Pでは、P2Pノード間でリンクを張ることでオーバーレイネットワークを構成する。リンクを張るP2Pノードの選択方法は、P2Pの実装方式により異なるが、ネットワークの特性は、ほとんど考慮されない。このため、オーバーレイネットワークのトポロジは、実際のネットワークのトポロジと大きく異なる場合が多い。その結果、データ転送の性能の低下を招く課題がある。
【００３０】
例えば、図５に示すように、実際のネットワーク６では、クライアントPC３ｂ「装置名：PC2」の近くに、クライアントPC３ｃ「装置名：PC3」が存在する。ところが、クライアントPC３ｂ「装置名：PC2」、３ｃ「装置名：PC3」に対応する、P2Pノード「PC2」と、P2Pノード「PC3」とは、オーバーレイネットワーク６Ａ上では、互いに遠く離れたノードとして位置付けられてしまう場合がある。逆に、実際のネットワーク６では互いに遠くに離れた位置に存在するP2Pノード「PC3」とP2Pノード「PC5」とが、オーバーレイネットワーク６Ａ上では、隣り合ったノード同士に位置付けられてしまう場合がある。このような場合、P2Pノード「PC3」とP2Pノード「PC5」との間では、高性能は得られることなく、データ転送の性能が低下する。
【００３１】
前記の課題１および課題２（以下、P2Pの課題と呼ぶ）のように、P2Pにはデータ転送の性能が低下する課題があるため、マッシュアップしたWebアプリケーション間の通信にP2Pを単純に導入したとしても、期待する効果が得られない。
【００３２】
そこで、本発明では、これらP2Pの課題を解決し、マッシュアップしたWebアプリケーション間の通信であっても、Webアプリケーションの応答性の低下を防止できるP2Pの技術を提供することを目的とする。
【課題を解決するための手段】
【００３３】
前記目的を達成するために、本願発明者は、P2Pにおいて種々検討を行った。従来のP2Pは、ファイル交換を主たる目的として発展してきた。このため、P2Pノードは、インターネットの観点から見ると、エンドユーザ、または、個人ユーザのクライアントPCである。エンドユーザは、インターネットの構成やトポロジを知らないため、P2Pノード同士だけで分かる情報に基づいて、リンクを張り、ルートを決定して、オーバーレイネットワークを構築し、前記したP2Pの課題を招いている。したがって、インターネットの構成やトポロジの知識を持つネットワーク運営者が積極的に参加するようなタイプのP2Pを構築することが必要である。そのために、本願発明者が鋭意研究した結果、「P2Pノードの参加と離脱の自由度」の問題と、「P2Pノード間のリンクの張り方、および、ルートの計算方法」の問題という、背反する要求を、従来は一様に同等なものとして想定していたP2Pノード上で、２つの問題を一緒に処理するのではなく、P2Pノードを２種類に分けてそれぞれの種類のP2Pノードにおいて、各問題を個別に処理することで、前記したP2Pの課題を解決できることを見出した。
【００３４】
そこで、本発明の第１の観点に係るネットワークシステムは、Webブラウザが動作する１台以上のクライアントPCと、Webアプリケーションが動作する１台以上のWebサーバと、１台以上のキャッシュサーバとがネットワークを介して接続され、データを転送するためのP2Pノード（Peer to Peer node）として機能し、前記Webブラウザと前記Webアプリケーション間、あるいは、前記Webアプリケーションと他の前記Webアプリケーション間でデータが授受されるネットワークシステムであって、前記P2Pノードが、ネットワーク運営者が管理するP2Pノードであって、前記データを次のノードに転送する際に中継するP2Pノードを記述したルート情報を保持して前記データのルート設定を行う中継系P2Pノードと、P2P網への参加およびP2P網からの離脱が自由なエッジ系P2Pノードとに分類され、前記中継系P2Pノードが、他の前記中継系P2Pノードおよび前記エッジ系P2Pノードとの間にリンクを張り、他の前記中継系P2Pノードとの間で前記リンクを介して自ノードで保持している前記ルート情報を交換し、前記エッジ系P2Pノードが、前記中継系P2Pノードとの間にリンクを張り、前記Webサーバと前記キャッシュサーバとが、前記中継系P2Pノードとして機能し、前記クライアントPCが前記エッジ系P2Pノードとして機能することを特徴とする。
【００３５】
同様に、本発明の第１の観点に係るWebアプリケーション間通信方法は、Webブラウザが動作する１台以上のクライアントPCと、Webアプリケーションが動作する１台以上のWebサーバと、１台以上のキャッシュサーバとがネットワークを介して接続され、データを転送するためのP2Pノードとして機能するネットワークシステムにおいて、前記Webブラウザと前記Webアプリケーション間、あるいは、前記Webアプリケーションと他の前記Webアプリケーション間でデータが授受されるWebアプリケーション間通信方法であって、前記P2Pノードが、ネットワーク運営者が管理するP2Pノードであって、前記データを次のノードに転送する際に中継するP2Pノードを記述したルート情報を保持して前記データのルート設定を行う中継系P2Pノードと、P2P網への参加およびP2P網からの離脱が自由なエッジ系P2Pノードとに分類され、前記中継系P2Pノードは、他の前記中継系P2Pノードおよび前記エッジ系P2Pノードとの間にリンクを張り、他の前記中継系P2Pノードとの間で前記リンクを介して自ノードで保持している前記ルート情報を交換し、前記エッジ系P2Pノードは、前記中継系P2Pノードとの間にリンクを張り、前記Webサーバと前記キャッシュサーバとが、前記中継系P2Pノードとして機能し、前記クライアントPCが前記エッジ系P2Pノードとして機能することを特徴とする。
【００３６】
本発明の第１の観点のネットワークシステム、または、Webアプリケーション間通信方法によれば、ネットワークシステムは、P2Pノードを、ネットワーク運営者が管理したルート設定を行う中継系P2Pノード、P2P網の参加と離脱が自由なエッジ系P2Pノードと、に分けたので、「P2Pノードの参加と離脱の自由度」の問題と、「P2Pノード間のリンクの張り方、および、ルートの計算方法」の問題とを一緒に処理することなく解決できる。そのため、エッジ系P2PノードがP2P網への参加と離脱を自由に行ったとしても、それとは独立にネットワーク運営者がP2P網において中継系P2Pノードを固定しておけば、エッジ系P2Pノードの参加と離脱に関わらずP2P網でのルートの再計算を行う必要がない。したがって、P2P網におけるデータ伝送安定した動作が期待できる。また、中継系P2Pノードにより、P2P網として実際のネットワーク構成に即したオーバーレイネットワークが構築できる。その結果、P2P網全体でデータの転送効率の向上が期待できる。これらの結果から、Webアプリケーション間等で転送されるデータを、中継するP2Pノードがキャッシュするときに、転送データの通信の多くがキャッシュにヒットし、途中で折り返すことができる。したがって、多くのWebアプリケーションを呼び出すマッシュアップ、あるいは、Webアプリケーションを呼び出す段数が大きいマッシュアップであっても、応答性の低下を防止できる。すなわち、応答時間の向上が期待できる。
【００３７】
また、本発明の第２の観点に係るネットワークシステムは、Webブラウザが動作する１台以上のクライアントPCと、Webアプリケーションが動作する１台以上のWebサーバと、１台以上のキャッシュサーバとがネットワークを介して接続され、データを転送するためのP2Pノードとして機能し、前記Webブラウザと前記Webアプリケーション間、あるいは、前記Webアプリケーションと他の前記Webアプリケーション間でデータが授受されるネットワークシステムであって、前記P2Pノードが、ネットワーク運営者が管理するP2Pノードであって、前記データを次のノードに転送する際に中継するP2Pノードを記述したルート情報を保持して前記データのルート設定を行う中継系P2Pノードと、P2P網への参加およびP2P網からの離脱が自由なエッジ系P2Pノードとに分類され、前記中継系P2Pノードは、他の前記中継系P2Pノードおよび前記エッジ系P2Pノードとの間にリンクを張り、他の前記中継系P2Pノードとの間で前記リンクを介して自ノードで保持している前記ルート情報を交換し、前記エッジ系P2Pノードが、前記中継系P2Pノードとの間にリンクを張り、前記キャッシュサーバが、前記中継系P2Pノードとして機能し、前記クライアントPCと前記Webサーバとが前記エッジ系P2Pノードとして機能することを特徴とする。
【００３８】
同様に、本発明の第２の観点に係るWebアプリケーション間通信方法は、Webブラウザが動作する１台以上のクライアントPCと、Webアプリケーションが動作する１台以上のWebサーバと、１台以上のキャッシュサーバとがネットワークを介して接続され、データを転送するためのP2Pノードとして機能するネットワークシステムにおいて、前記Webブラウザと前記Webアプリケーション間、あるいは、前記Webアプリケーションと他の前記Webアプリケーション間でデータが授受されるWebアプリケーション間通信方法であって、前記P2Pノードが、ネットワーク運営者が管理するP2Pノードであって、前記データを次のノードに転送する際に中継するP2Pノードを記述したルート情報を保持して前記データのルート設定を行う中継系P2Pノードと、P2P網への参加およびP2P網からの離脱が自由なエッジ系P2Pノードとに分類され、前記中継系P2Pノードは、他の前記中継系P2Pノードおよび前記エッジ系P2Pノードとの間にリンクを張り、他の前記中継系P2Pノードとの間で前記リンクを介して自ノードで保持している前記ルート情報を交換し、前記エッジ系P2Pノードは、前記中継系P2Pノードとの間にリンクを張り、前記キャッシュサーバが、前記中継系P2Pノードとして機能し、前記クライアントPCと前記Webサーバとが前記エッジ系P2Pノードとして機能することを特徴とする。
【００３９】
本発明の第２の観点のネットワークシステム、または、Webアプリケーション間通信方法によれば、本発明の第1の観点と同様な作用および効果を奏するだけではなく、ネットワーク運営者は、中継系P2Pノードとして、キャッシュサーバだけを管理すればよいので、負担が低減する。また、Webサーバがエッジ系P2PノードとしてP2P網の参加と離脱を自由に行えるので、ネットワーク構成の変動の柔軟性が増すことになる。結果として、クライアントPCを利用するエンドユーザへのサービス向上につながる。
【００４０】
また、本発明の第３の観点に係るネットワークシステムは、Webブラウザが動作する１台以上のクライアントPCと、Webアプリケーションが動作する複数のWebサーバとがネットワークを介して接続され、データを転送するためのP2Pノードとして機能し、前記Webブラウザと前記Webアプリケーション間、あるいは、前記Webアプリケーションと他の前記Webアプリケーション間でデータが授受されるネットワークシステムであって、前記P2Pノードが、ネットワーク運営者が管理するP2Pノードであって、前記データを次のノードに転送する際に中継するP2Pノードを記述したルート情報を保持して前記データのルート設定を行う中継系P2Pノードと、P2P網への参加およびP2P網からの離脱が自由なエッジ系P2Pノードとに分類され、前記中継系P2Pノードが、他の前記中継系P2Pノードおよび前記エッジ系P2Pノードとの間にリンクを張り、他の前記中継系P2Pノードとの間で前記リンクを介して自ノードで保持している前記ルート情報を交換し、前記エッジ系P2Pノードが、前記中継系P2Pノードとの間にリンクを張り、前記Webサーバが、前記中継系P2Pノードとして機能し、前記クライアントPCが前記エッジ系P2Pノードとして機能することを特徴とする。
【００４１】
同様に、本発明の第３の観点に係るWebアプリケーション間通信方法は、Webブラウザが動作する１台以上のクライアントPCと、Webアプリケーションが動作する複数のWebサーバとがネットワークを介して接続され、データを転送するためのP2Pノードとして機能するネットワークシステムにおいて、前記Webブラウザと前記Webアプリケーション間、あるいは、前記Webアプリケーションと他の前記Webアプリケーション間でデータが授受されるWebアプリケーション間通信方法であって、前記P2Pノードが、ネットワーク運営者が管理するP2Pノードであって、前記データを次のノードに転送する際に中継するP2Pノードを記述したルート情報を保持して前記データのルート設定を行う中継系P2Pノードと、P2P網への参加およびP2P網からの離脱が自由なエッジ系P2Pノードとに分類され、前記中継系P2Pノードが、他の前記中継系P2Pノードおよび前記エッジ系P2Pノードとの間にリンクを張り、他の前記中継系P2Pノードとの間で前記リンクを介して自ノードで保持している前記ルート情報を交換し、前記エッジ系P2Pノードが、前記中継系P2Pノードとの間にリンクを張り、前記Webサーバが、前記中継系P2Pノードとして機能し、前記クライアントPCが前記エッジ系P2Pノードとして機能することを特徴とする。
【００４２】
本発明の第３の観点のネットワークシステム、または、Webアプリケーション間通信方法によれば、ネットワークシステムは、本発明の第1の観点と同様な作用および効果を奏するだけではなく、ネットワーク運営者は、中継系P2Pノードとして、Webサーバ以外にキャッシュサーバを設置する必要がなく、Webサーバだけを管理すればよいので、負担が低減する。結果として、クライアントPCを利用するエンドユーザへのサービス向上につながる。
【００４３】
また、本発明に係るキャッシュサーバは、本発明の第１の観点または第２の観点のネットワークシステムにおけるキャッシュサーバであって、自ノードで保持するルート情報を他の前記中継系P2Pノードと交換するルート情報取得制御手段と、前記ルート情報を記憶するルート情報記憶手段と、前記転送されるデータとして、前記Webアプリケーションを呼び出す要求メッセージデータまたはその応答メッセージデータを前記リンクを介して受け付けるデータ受信手段と、前記要求メッセージデータおよび応答メッセージデータをペアにして保管するキャッシュデータを記憶するキャッシュデータ記憶手段と、前記受信したデータを前記キャッシュデータ記憶手段に保存するデータ記録手段と、前記受信した要求メッセージデータと同じ内容の要求メッセージデータが記録済みであるか否かを判定する要求判定手段と、前記受信した要求メッセージデータと同じ内容の要求メッセージデータが記録済みである場合に、当該キャッシュデータにおいてペアをなしている応答メッセージデータを選択する応答選択手段と、前記選択された応答メッセージデータの宛先までの最短ルートを前記ルート情報に基づいて選択するルート選択手段と、前記選択されたルートにしたがって次のP2Pノードにデータを転送するデータ送信手段とを備えることを特徴とする。
【００４４】
かかる構成のキャッシュサーバによれば、受信した要求メッセージデータと同じ内容の要求メッセージデータが記録済みである場合にはキャッシュデータにおいてペアをなしている応答メッセージデータを宛先までの最短ルートで返信することができる。このように受信した要求メッセージデータが記録済みである場合には、受信した要求メッセージデータを、その要求先へ転送する必要がないので、途中で折り返すことができる。この結果、多くのWebアプリケーションを呼び出すマッシュアップ、あるいは、Webアプリケーションを呼び出す段数が大きいマッシュアップであっても、応答性の低下を防止できる。すなわち、応答時間の向上が期待できる。
【００４５】
また、本発明に係るWebサーバは、本発明の第１の観点または第３の観点のネットワークシステムにおけるWebサーバであって、自ノードで保持するルート情報を他の前記中継系P2Pノードと交換するルート情報取得制御手段と、前記ルート情報を記憶するルート情報記憶手段と、前記転送されるデータとして、前記Webアプリケーションを呼び出す要求メッセージデータまたはその応答メッセージデータを前記リンクを介して受け付けるデータ受信手段と、前記要求メッセージデータおよび応答メッセージデータをペアにして保管するキャッシュデータを記憶するキャッシュデータ記憶手段と、前記受信したデータを前記キャッシュデータ記憶手段に保存するデータ記録手段と、前記受信した要求メッセージデータと同じ内容の要求メッセージデータが記録済みであるか否かを判定する要求判定手段と、前記受信した要求メッセージデータと同じ内容の要求メッセージデータが記録済みである場合に、当該キャッシュデータにおいてペアをなしている応答メッセージデータを選択する応答選択手段と、前記選択された応答メッセージデータの宛先までの最短ルートを前記ルート情報に基づいて選択するルート選択手段と、前記選択されたルートにしたがって次のP2Pノードにデータを転送するデータ送信手段とを備えることを特徴とする。
【００４６】
かかる構成のWebサーバによれば、本発明の第１の観点または第２の観点のネットワークシステムにおけるキャッシュサーバと同様な作用および効果を奏する。
【００４７】
また、本発明に係るWebアプリケーション間通信は、本発明の第１の観点または第２の観点のネットワークシステムにおけるキャッシュサーバを構成する各手段としてコンピュータを機能させるためのプログラムである。このように構成されることにより、このプログラムをインストールされたコンピュータは、このプログラムに基づいた各機能を実現することができる。
【００４８】
また、本発明に係るWebアプリケーション間通信は、本発明の第１の観点または第３の観点ネットワークシステムにおけるWebサーバを構成する各手段としてコンピュータを機能させるためのプログラムである。このように構成されることにより、このプログラムをインストールされたコンピュータは、このプログラムに基づいた各機能を実現することができる。
【発明の効果】
【００４９】
本発明によれば、P2Pノードを、ネットワーク運営者がルート設定を行う中継系P2Pノードと、P2P網の参加と離脱が自由なエッジ系P2Pノードとに分けたので、「P2Pノードの参加と離脱の自由度」の問題と、「P2Pノード間のリンクの張り方、および、ルートの計算方法」の問題とを個別に解決できる。その結果、マッシュアップしたWebアプリケーション間の通信であっても、Webアプリケーションの応答性の低下を防止できる。
【図面の簡単な説明】
【００５０】
【図１】本発明の実施形態に係る中継系P2Pノードであるキャッシュサーバを含むネットワーク構成例を示す図である。
【図２】マッシュアップによりWebアプリケーションを構築する例の説明図である。
【図３】Webアプリケーションを多段で呼び出す例の説明図である。
【図４】複数のWebアプリケーションの通信データをキャッシュする例の説明図である。
【図５】P2Pによるオーバーレイネットワークの一例を示す構成図である。
【図６】図１に示すWebアプリケーションの呼び出し関係を示す図である。
【図７】図１に示すキャッシュサーバの構成例を示すブロック図である。
【図８】図１に示すWebサーバおよびクライアントPCの構成例を示すブロック図である。
【図９】中継系P2Pノードであるキャッシュサーバ間におけるルート情報取得処理を示すフローチャートである。
【図１０】エッジ系P2PノードであるPC1が保有するルート情報の一例を示す図である。
【図１１】中継系P2Pノードであるキャッシュサーバ１が保有するルート情報を示す図であって、（ａ）は初期状態、（ｂ）は他のキャッシュサーバから取得したルート情報を追加した状態をそれぞれ示している。
【図１２】キャッシュサーバ1が保有する定常状態のルート情報を示す図である。
【図１３】図８に示すクライアントPCのデータ転送の手順を示すフローチャートであって、（ａ）はデータ送信時の処理、（ｂ）はデータ受信時の処理をそれぞれ示している。
【図１４】図８に示すWebサーバのデータ転送の手順を示すフローチャートである。
【図１５】図７に示すキャッシュサーバのデータ転送の手順を示すフローチャートである。
【図１６】図１に示すネットワーク構成におけるWebアプリケーション間通信の一例を示すシーケンス図である。
【図１７】Webアプリケーション間通信に用いられるHTTP要求の例を示す図であって、（ａ）はHTTP要求1、（ｂ）はHTTP要求2、（ｃ）はHTTP要求5、（ｄ）はHTTP要求6をそれぞれ示している。
【図１８】図１６のステップＳ９０の処理がなされた時点でキャッシュサーバ2が保有するキャッシュデータの一例を示す図である。
【図１９】図１に示すネットワーク構成におけるWebアプリケーション間通信の別の例を示すシーケンス図である。
【図２０】P2P網の構成例を示す図であって、（ａ）はエッジ系P2Pノードと中継系P2Pノードに分類しない場合、（ｂ）は分類した場合をそれぞれ示している。
【発明を実施するための形態】
【００５１】
図面を参照して本発明のWebアプリケーション間通信方法およびネットワークシステムを実施するための形態（以下「実施形態」という）について詳細に説明する。以下では、Webアプリケーション間通信方法の概要、ネットワークシステムの概略、ネットワークシステムの各ノード装置、Webアプリケーション間通信の具体例について順次説明する。
【００５２】
［Webアプリケーション間通信方法の概要］
前記したP2Pの課題の原因は、以下の２つの問題（問題１、問題２）を一緒に処理するところにある。
（問題１）P2Pノードの参加と離脱の自由度
（問題２）P2Pノード間のリンクの張り方、および、ルートの計算方法
【００５３】
安定した連続運転をしないエンドユーザのクライアントPCには、「P2Pノードの参加と離脱の自由度」が必要である。一方、P2Pノード間のリンクと、計算されたルートとは、安定に維持されることが望まれる。これまでの考えでは、これら背反する要求を、一様に同等なものとして想定されるP2Pノード上で一緒に処理しようとするため、前記したP2Pの課題が生まれている。本実施形態では、この原因を根本から取り除くために、従来は一様に同等なものとして想定していたP2Pノードを、「エッジ系P2Pノード」および「中継系P2Pノード」と称する２種類のP2Pノードに分けることとした。
【００５４】
＜エッジ系P2Pノード＞
エッジ系P2Pノードは、参加と離脱が自由なP2Pノードを示す。ただし、エッジ系P2Pノードは、リンクを張るP2Pノードの選択と、ルートの決定には関与しない。エッジ系P2Pノードには、エンドユーザのクライアントPCや、Webアプリケーションが動作するWebサーバが属する。
【００５５】
＜中継系P2Pノード＞
中継系P2Pノードは、リンクを張るP2Pノードを選択し、ルートを決定するP2Pノードを示す。ただし、中継系P2Pノードには、参加と離脱はほとんど起こらない。中継系P2Pノードには、ネットワーク運営者が管理するキャッシュサーバが属する。
【００５６】
＜中継系P2Pノードのリンクの張り方＞
マッシュアップを構成するWebアプリケーションは、インターネット上に広く分布している。また、インターネットは、たくさんのネットワークの集合体である。よって、本実施形態では、Webアプリケーションが動作するWebサーバが所属する全てのネットワーク、および、エンドユーザのクライアントPCが所属する全てのネットワークにおいて、それぞれのネットワーク運営者は、本発明の実施形態にかかるキャッシュサーバを１台、または複数台設置するものとする。そして、全てのネットワークのキャッシュサーバが、中継系P2Pノードとして、互いにリンクを張り、P2P網を構成することとした。
【００５７】
中継系P2Pノード同士のリンクは、それぞれのネットワーク運営者が決定する。
ネットワーク運営者は、自分のネットワークの構成を熟知していることから、自分のネットワークに、ネットワーク的に近い他のネットワークを選び、他のネットワーク運営者のネットワークの中継系P2Pノードであるキャッシュサーバと、自分のネットワークの中継系P2Pノードとの間にリンクを張る。ネットワーク運営者は、自分のネットワークの中継系P2Pノードから、ネットワーク的に遠くにある中継系P2Pノードであるキャッシュサーバとはリンクを張らない。自分のネットワークに複数台のキャッシュサーバ（＝中継系P2Pノード）を設置することもできる。
【００５８】
＜エッジ系P2Pノードのリンクの張り方＞
エッジ系P2Pノードは、クライアントPCやWebサーバであるので、必ずどこかのネットワークに所属している。よって、エッジ系P2Pノードは、それらが所属するネットワークのネットワーク運営者が設置したキャッシュサーバ（＝中継系P2Pノード）とP2Pのリンクを張る。エッジ系P2Pノード同士はリンクを張らない。自分のネットワークに複数台のキャッシュサーバ（＝中継系P2Pノード）が設置してある場合には、自分のネットワークのエッジ系P2Pノードは、そのうちのいずれかのキャッシュサーバ（＝中継系P2Pノード）とリンクを張ればよい。
【００５９】
＜リンクの張り方の具体例＞
図２０（ａ）に、円で表示したP2Pノードが一様に同等なものであると想定した場合には、各P2Pノードが同等に参加と離脱を行うと、P2P網全体でのルートの再計算が必要である、例えば、符号１０１〜１０４で示す位置にあるP2Pノードが離脱を行うと深刻な影響がある。ところが、図２０（ｂ）に示すように、エッジ系P2Pノードを円で表示し、中継系P2Pノードを四角で表示した同様なP2P網では、例えば、符号１０１〜１０４で示す位置にある中継系P2Pノードがネットワーク運営者により管理されて基本的に固定されている。したがって、例えば、符号１０５で示す位置にあるエッジ系P2Pノードが離脱しても、中継系P2Pノード間のリンクは確保されているので、P2P網全体でのルートの再計算は不要である。
【００６０】
＜P2PノードのID＞
本実施形態では、P2Pノードには一意なIDを持たせる。IDには、階層構造を持ち、ネットワーク単位でグループ性を持たせられる数字や文字列を使用する。例えば、ＩＰアドレスや、FQDN（Fully Qualified Domain Name：完全修飾ドメイン名）が適切である。
ＩＰアドレスにおいては、「192.168.0.0」〜「192.168.0.255」までのＩＰアドレスは、「192.168.0」というネットワークに属しており、また、この「192.168.0」というネットワークは、「192.0.0.0」というネットワークに属している。つまり、ＩＰアドレスは階層構造を持っている。同様に、FQDNの例としては、「abc.def.jp」というホスト名は、「def.jp」というドメイン名に属しており、また、「def.jp」というドメイン名は、「jp」というドメイン名に属するといった階層構造を持っている。
【００６１】
＜ルートの決定方法＞
本実施形態において、エッジ系P2Pノードと中継系P2Pノードは、あるP2Pノードにデータを送る際に、自らリンクを張っているP2Pノードのいずれにデータを渡せば、送信先のP2Pノードに届くかという情報を保有している。この情報をルート情報と呼ぶことにする。
【００６２】
≪エッジ系P2Pノードのルート情報≫
エッジ系P2Pノードのルート情報の方向は、自らリンクを張っている中継系P2Pノードに向ける。つまり、エッジ系P2Pノードが送信するデータは、全て、中継系P2Pノードに転送される。よって、その転送に対する応答は、中継系P2Pノードを経由して、エッジ系P2Pノードに返される。
【００６３】
≪中継系P2Pノードが転送するデータの種類≫
中継系P2Pノードは、次の３つのデータ転送を行う。
１）所属するネットワーク内のエッジ系P2Pノードから送信されるデータを受け取り、ルート情報に従って、先に張ったリンクを介して、次の中継系P2Pノードに転送する。
２）所属するネットワーク内のエッジ系P2Pノードを宛先とするデータを、リンクを張った中継系P2Pノードから受け取り、その宛先に従って、所属するネットワーク内のエッジ系P2Pノードにデータを転送する。
３）リンクを張った中継系P2Pノードからデータを受け取り、ルート情報に従って、次の中継系P2Pノードに、リンクを介して、データを転送する。
【００６４】
≪中継系P2Pノードのルート情報の形式≫
中継系P2Pノードは、自らが中継して到達可能なエッジ系P2Pノードの情報、あるいは、自らが中継して到達可能なネットワークの情報を、ルート情報として保有している。ルート情報は、例えば、「宛先ID」、「ホップ数」、「転送先ID」の３つを１組として構成することができる。また、中継系P2Pノードは、複数組のルート情報を保持する。
【００６５】
「宛先ID」は、“エッジ系P2PノードのID”、あるいは、“そのエッジ系P2Pノードが属するネットワークのID”である。
「ホップ数」は、「宛先ID」に到達するまでに、いくつの中継系P2Pノードを経由するかを表した数字である。
「転送先ID」は、データを次に渡すべき中継系P2Pノードを示す情報である。
ルート情報を保有する中継系P2Pノードは、この「転送先ID」に記述される中継系P2Pノードとの間にリンクが張られている必要がある。
【００６６】
≪中継系P2Pノードのルート情報の種類≫
中継系P2Pノードは、保有するルート情報を、リンクが張られている中継系P2Pノード間でリンクを介して交換する。中継系P2Pノードは、交換で得たルート情報を順次記録し、保持するルート情報を増やしていく。このように中継系P2Pノード同士が交換して得たルート情報のことを「動的ルート情報」と呼ぶ。
この動的ルート情報とは別に、ネットワーク運営者は、必要であれば、中継系P2Pノードにルート情報を追加することができる。ネットワーク運営者は、“特定のエッジ系P2PノードのID”あるいは“特定のネットワークのID”を「宛先ID」とし、「ホップ数」は“任意の数字”とし、“リンクを張った中継系P2Pノード”を「転送先ID」としたルート情報を追加できる。このネットワーク運営者が追加したルート情報のことを、「静的ルート情報」と呼ぶこととする。
【００６７】
＜データの転送方法＞
Webアプリケーションから他のWebアプリケーションヘの呼び出しは、HTTPを使うのが一般的である。「発明が解決しようとする課題」で述べたように、Webアプリケーション間の通信は、要求（要求メッセージデータ）と応答（応答メッセージデータ）のペアとなっており、それぞれを、“HTTP要求”と“HTTP応答”と呼ぶことにする。WebブラウザからWebアプリケーションヘのアクセスも同様にHTTPを使うのが一般的であることから、同じく“HTTP要求”と“HTTP応答”として扱う。
【００６８】
［ネットワークシステムの概略］
図１は、本発明の実施形態に係る中継系P2Pノードであるキャッシュサーバを含むネットワーク構成例を示す図である。図１に示す例では、４つのネットワークがあり、それぞれドメイン名（「abc.jp」、「def.jp」、「ghi.jp」、「jkl.jp」）を持っている。また、ネットワーク同士には、実線で示した接続（実際のネットワーク接続）があるとする。
【００６９】
図１に示すように、４つのネットワーク全体には、４台のキャッシュサーバ１（１ａ，１ｂ，１ｃ，１ｄ）と、３台のWebサーバ２（２ａ，２ｂ，２ｃ）と、１台のクライアントPC３（３ａ）とが存在し、各Webサーバ２上では、それぞれWebアプリケーション５（５ａ，５ｂ，５ｃ）が動作する。なお、以下では、装置等を特に区別しない場合には、符号の「ａ，ｂ，ｃ，ｄ」を除いて表記する。
【００７０】
ドメイン名「abc.jp」のネットワークは、キャッシュサーバ１ａ（装置名：キャッシュサーバ1、FQDN：cache1.abc.jp）と、クライアントPC３ａ（装置名：PC1、FQDN：pc1.abc.jp）とを備えている。なお、装置名等の数字は半角文字で記述し、図面の符号は全角文字で記述した。
【００７１】
ドメイン名「def.jp」のネットワークは、キャッシュサーバ１ｂ（装置名：キャッシュサーバ2、FQDN：cache2.def.jp）と、Webサーバ２ａ（装置名：Webサーバa、FQDN：WWW.def.jp）とを備えている。
ドメイン名「ghi.jp」のネットワークは、キャッシュサーバ１ｃ（装置名：キャッシュサーバ3、FQDN：cache3.ghi.jp）と、Webサーバ２ｂ（装置名：Webサーバb、FQDN：WWW.ghi.jp）とを備えている。
ドメイン名「jkl.jp」のネットワークは、キャッシュサーバ１ｄ（装置名：キャッシュサーバ4、FQDN：cache4.jkl.jp）と、Webサーバ２ｃ（装置名：Webサーバc、FQDN：WWW.jkl.jp）とを備えている。
本実施形態では、各サーバのFQDNをP2PノードのノードIDとして使用する。
【００７２】
＜Webアプリケーションのマッシュアップの関係＞
Webサーバ２ａ，２ｂ，２ｃ上でそれぞれ動作するWebアプリケーション５ａ，５ｂ，５ｃのアプリケーション名は、「WebアプリケーションA」、「WebアプリケーションB」、「WebアプリケーションC」である。ここでは、アプリケーション名で呼称する。Webアプリケーションが他のWebアプリケーションを呼び出すマッシュアップの関係の例を図６に示す。図６に示すように、この例では、「WebアプリケーションA」は、「WebアプリケーションC」を呼び出す。「WebアプリケーションB」は、「WebアプリケーションA」を呼び出す。したがって、「WebアプリケーションB」も「WebアプリケーションC」を呼び出すこととなる。
【００７３】
＜ネットワークシステムの各ノード装置のP2Pノードとしての概略＞
キャッシュサーバ１の構成例を図７に示し、Webサーバ２およびクライアントPC３の構成例を図８に示す。なお、各装置の構成の詳細は後記する。図１に示す全てのキャッシュサーバ１と、全てのWebサーバ２と、クライアントPC３では、P2Pソフトウェアが動作するものとする。
【００７４】
まずは、クライアントPC３と全てのWebサーバ２において、P2Pソフトウェアを起動し、それぞれがエッジ系P2Pノードとして動作することにより、同じネットワークに属するキャッシュサーバ１とリンクを張る。図１において、P2Pノード間のリンクは破線で示している。
【００７５】
また、図１に示す全てのキャッシュサーバ１も、P2Pソフトウェアを起動し、中継系P2Pノードとして動作する。これら中継系P2Pノードは、ネットワーク管理者が設定し、図１のように、ネットワーク構成に従ってリンクを張る。以下、装置名で呼称すると、リンクは、「キャッシュサーバ1」と「キャッシュサーバ2」との間、「キャッシュサーバ1」と「キャッシュサーバ3」との間、「キャッシュサーバ2」と「キャッシュサーバ3」との間、「キャッシュサーバ2」と「キャッシュサーバ4」との間、「キャッシュサーバ3」と「キャッシュサーバ4」との間にそれぞれ張られる。
【００７６】
エッジ系P2Pノード（Webサーバ２、クライアントPC３）は、１つ以上のルート情報を持つ。ここでは、装置名で呼称する。エッジ系P2Pノードである「PC1」（FQDN：pc1.abc.jp）が持つルート情報を図１０に例示する。図１０に示す例では、ルート情報は、宛先ID４０１と、ホップ数４０２と、転送先ID４０３とを項目として、それらに関する情報を保持する構成である。具体的には、「PC1」は、宛先ID４０１を“全て（全てのP2Pノード）”とし、転送先ID４０３を“cahche1.abc.jp”としたルート情報を持つ。ここで、“cahche1.abc.jp”は、「PC1」がリンクを張った「キャッシュサーバ1」である（図１参照）。つまり、図１０に示すルート情報は、「PC1」（FQDN：pc1.abc.jp）が送信するP2P通信については、全て「キャッシュサーバ1」（cahche1.abc.jp）に渡すことを意味している。なお、エッジ系P2Pノードにとって、「ホップ数」の項目に意味はない。一方、中継系P2Pノード（キャッシュサーバ１）は、複数のルート情報を持つ。中継系P2Pノードにとっては、「ホップ数」の項目に意味がある。その詳細は後記する。
【００７７】
［ネットワークシステムの各ノード装置］
＜キャッシュサーバの構成＞
キャッシュサーバ１は、ＣＰＵ等の演算装置と、メモリ、ハードディスク等の記憶装置（記憶部）と、外部との各種情報の送受信を行うインタフェース装置とを備えたコンピュータと、このコンピュータにインストールされたプログラムとから構成される。このキャッシュサーバ１は、ハードウェア装置とソフトウェアとが協働することによって、前記したハードウェア資源がプログラムによって制御されることにより実現され、図７に示すように、入出力部１１と、記憶部１２と、転送制御部（P2P機能部）１３と、ルート情報取得制御部１４と、キャッシュ制御部１５とを備えることとした。
【００７８】
入出力部１１は、このキャッシュサーバ１に接続されるP2Pノードからのデータを受信したり、転送するデータを出力したりするためのインタフェースである。
記憶部１２は、ＲＯＭ、ＲＡＭ、ＨＤＤ等からなり、ルート情報記憶部１２１と、キャッシュデータ記憶部１２２とを備える。
ルート情報記憶部１２１は、ルート情報を記憶する。
キャッシュデータ記憶部１２２は、HTTP要求とHTTP応答をペアにして保管するキャッシュデータを記憶する。
【００７９】
転送制御部（P2P機能部）１３は、データ受信部１３１と、データ送信部１３２とを備える。
データ受信部１３１は、転送されるデータとして、Webアプリケーションを呼び出すHTTP要求またはHTTP応答をリンクを介して受け付ける。
データ送信部１３２は、キャッシュ制御部１５のルート選択部１５６で選択されたルートにしたがって次のP2Pノードにデータを転送する。
【００８０】
ルート情報取得制御部１４は、自ノードで保持するルート情報を他の中継系P2Pノードと交換するものである。この処理をルート情報取得処理と呼ぶ。
【００８１】
キャッシュ制御部１５は、データ種別判定部１５１と、HTTP要求判定部１５２と、HTTP要求記録部１５３と、HTTP応答選択部１５４と、HTTP応答記録部１５５と、ルート選択部１５６とを備える。
【００８２】
データ種別判定部１５１は、受信したデータが、HTTP要求とHTTP応答のうちのいずれであるのか判定する。
HTTP要求判定部１５２は、受信したHTTP要求と同じ内容のHTTP要求が記録済みであるか否かを判定する。
HTTP要求記録部（データ記録手段）１５３は、受信したHTTP要求をキャッシュデータ記憶部１２２に一時的に保管する。
HTTP応答選択部１５４は、受信したHTTP要求と同じ内容のHTTP要求が記録済みである場合に、当該キャッシュデータにおいてペアをなしているHTTP応答を選択する。
HTTP応答記録部（データ記録手段）１５５は、受信したHTTP応答をキャッシュデータ記憶部１２２に保存する。
ルート選択部１５６は、HTTP応答選択部１５４で選択されたHTTP応答の宛先までの最短ルートを、ルート情報記憶部１２１に記憶されたルート情報に基づいて選択する。
【００８３】
キャッシュサーバ１は、大別して２つの役割がある。メイン処理であるデータ転送処理と、それを行うために予め行っておくサブ処理であるルート情報取得処理である。そこで、まず、ルート情報取得処理を説明し、その後に、他のP2PノードであるクライアントPC３およびWebサーバ２におけるデータ転送処理の手順を説明した上で、キャッシュサーバ１におけるデータ転送処理の手順を説明することとする。
【００８４】
＜ルート情報取得処理＞
ここでは、キャッシュサーバ１を一般化した表現として中継系P2Pノードと呼称し、同様に、クライアントPC３およびWebサーバ２を一般化した表現としてエッジ系P2Pノードと呼称して説明する。図９は、中継系P2Pノードであるキャッシュサーバ間におけるルート情報取得処理を示すフローチャートである。なお、適宜、図１を参照する。
【００８５】
図９に示すように、中継系P2Pノードは、自らが所属するネットワークのID、または、同じネットワークに所属するエッジ系P2PノードのIDを、“宛先ID”としたルート情報を作成し、“ホップ数”を「０」、“転送先ID”をNULL（空欄）にして記録する（ステップＳ１）。そして、中継系P2Pノードは、記録したすべてのルート情報を、リンクを張っている中継系P2Pノードに送信する（ステップＳ２）。そして、中継系P2Pノードは、リンクを張っている各中継系P2Pノードから、ルート情報（動的ルート情報）を受信する（ステップＳ３）。そして、中継系P2Pノードは、受信した動的ルート情報の“ホップ数”に「１」を加算する（ステップＳ４）。
【００８６】
次に、中継系P2Pノードは、受信した動的ルート情報の“転送先ID”に、このルート情報を送ってきた「送信元の中継系P2PノードのID」を代入する（ステップＳ５）。そして、中継系P2Pノードは、受信した動的ルート情報の“宛先ID”と、その時点で記録されているルート情報の“宛先ID”とが同一であるか否かを判別する（ステップＳ６）。“宛先ID”同士が同一である場合（ステップＳ６：Ｙｅｓ）、中継系P2Pノードは、受信した動的ルート情報と比較対象のルート情報とについて、“ホップ数”または“転送先ID”が異なるか否かを判別する（ステップＳ７）。“ホップ数”または“転送先ID”が異なる場合（ステップＳ７：Ｙｅｓ）、中継系P2Pノードは、受信した動的ルート情報を新たに記録する（ステップＳ８）。一方、“ホップ数”も“転送先ID”も同一の場合（ステップＳ７：Ｎｏ）、中継系P2Pノードは、受信した動的ルート情報を破棄する（ステップＳ９）。また、前記したステップＳ６において、“宛先ID”どうしが異なる場合（ステップＳ６：Ｎｏ）、中継系P2Pノードは、ステップＳ７をスキップしてステップＳ８に進む。そして、中継系P2Pノードは、ステップＳ８またはステップＳ９に続いて、ステップＳ２に戻る。
【００８７】
＜ルート情報作成の具体例＞
図１１（ａ）は、中継系P2Pノードであるキャッシュサーバ1が保有するルート情報の初期状態である。図１１（ｂ）は、キャッシュサーバ１が、キャッシュサーバ2とキャッシュサーバ3から取得したルート情報を初期状態に追加した状態である。符号５０１は、キャッシュサーバ2から取得したルート情報、符号５０２は、キャッシュサーバ3から取得したルート情報をそれぞれ示している。
【００８８】
やがて、ルート情報が行き渡り、変化がなくなる。これを定常状態と呼ぶこととする。図１２は、キャッシュサーバ１が保有する定常状態のルート情報を示す図である。図１１（ｂ）の状態から追加されたルート情報を、符号６０１〜６０８で示す。同じ宛先IDに対して、いろいろな迂回路があるため、図１２では、ホップ数が１〜３までの複数のルート情報を表示した。
【００８９】
本実施形態では、「宛先ID」毎に最もホップ数が小さいルート情報を使って、P2Pのデータ転送を行う。図１２において、例えば、「宛先ID」が“jkl.jp”であり、かつ、「転送先ID」が“def.jp”であるルート情報は、符号６０１に示す「ホップ数」＝“２”の場合と、符号６０５に示す「ホップ数」＝“３”の場合がある。この場合には、符号６０１に示すルート情報を選択する。
【００９０】
P2Pノードのメモリ容量などには上限があるため、同じ「宛先ID」のルート情報が複数ある場合は、ホップ数が大きいルート情報を適宜廃棄して構わない。
なお、キャッシュサーバ2，キャッシュサーバ3、キャッシュサーバ4も同様にルート情報を作成する。
【００９１】
＜クライアントPCの構成＞
クライアントPC３は、図８に示すように、ＣＰＵ等の演算装置と、メモリ、ハードディスク等の記憶装置と、マウスやキーボード等の外部から情報の入力を検出する入力装置Ｋと、外部との各種情報の送受信を行うインタフェース装置と、ＬＣＤ（Liquid Crystal Display）等の表示装置Ｄを備えたコンピュータと、このコンピュータにインストールされたプログラムとから構成され、入出力部３１と、記憶部３２と、転送制御部（P2P機能部）３３と、Webブラウザ３４とを備えることとした。
【００９２】
入出力部３１と、記憶部３２と、転送制御部（P2P機能部）３３とは、前記した入出力部１１と、記憶部１２と、転送制御部（P2P機能部）１３と同様なので説明を適宜省略する。エッジ系P2PノードであるクライアントPC３は、ルート情報記憶部３２１に、中継系P2Pノードであるキャッシュサーバ１ヘ向けたルート情報を持っている。
キャッシュデータ記憶部３２２は、キャッシュデータ記憶部１２２と同様である。
Webブラウザ３４は、HTTP要求作成部３４１と、HTTP応答処理部３４２とを備える。各部の機能については、図１３を参照して説明する。
【００９３】
＜クライアントPCのデータ転送の手順＞
図１３は、図８に示すクライアントPCのデータ転送の手順を示すフローチャートであって、（ａ）はデータ送信時の処理、（ｂ）はデータ受信時の処理をそれぞれ示している。図１３（ａ）に示すように、クライアントPC３は、Webブラウザ３４のHTTP要求作成部３４１によって、Webアプリケーションを利用するためのHTTP要求を作成し（ステップＳ１１）、転送制御部３３によって、該当するWebアプリケーションを宛先とするHTTP要求を、P2P網６Ａを介して送信する（ステップＳ１２）。
【００９４】
ここで、クライアントPC３（Webブラウザ３４）は、エッジ系P2Pノードであるので、同じネットワーク内の中継系P2Pノードであるキャッシュサーバ１とリンクを張っており、そのキャッシュサーバ１へ向けたルート情報を持っている。よって、クライアントPC３は、Webアプリケーションを宛先とするHTTP要求をキャッシュサーバ１へ転送する。
【００９５】
図１３（ｂ）に示すように、クライアントPC３は、転送制御部３３によって、キャッシュサーバ１からP2P網６Ａを介して送られるHTTP応答を受信すると（ステップＳ１３）、Webブラウザ３４のHTTP応答処理部３４２によって、キャッシュサーバ１から受信したHTTP応答の内容に従って画面表示を行う（ステップＳ１４）。
【００９６】
＜Webサーバの構成＞
Webサーバ２は、図８に示すように、ＣＰＵ等の演算装置と、メモリ、ハードディスク等の記憶装置と、外部との各種情報の送受信を行うインタフェース装置とを備えたコンピュータと、このコンピュータにインストールされたプログラムとから構成され、入出力部２１と、記憶部２２と、転送制御部（P2P機能部）２３と、Webアプリケーション５とを備えることとした。
【００９７】
入出力部２１と、記憶部２２と、転送制御部（P2P機能部）２３とは、前記した入出力部１１と、記憶部１２と、転送制御部（P2P機能部）１３と同様なので説明を適宜省略する。エッジ系P2PノードであるWebサーバ２は、ルート情報記憶部２２１に、中継系P2Pノードであるキャッシュサーバ１ヘ向けたルート情報を持っている。
キャッシュデータ記憶部２２２は、キャッシュデータ記憶部１２２と同様である。
【００９８】
Webアプリケーション５は、データ種別判定部２４１と、マッシュアップ判定部２４２と、HTTP要求作成部２４３と、HTTP要求処理部２４４と、HTTP応答処理部２４５と、HTTP応答作成部２４６とを備える。各部の機能については、図１４を参照して説明する。
【００９９】
＜Webサーバのデータ転送の手順＞
図１４は、図８に示すWebサーバのデータ転送の手順を示すフローチャートである。
エッジ系P2PノードとしてのWebサーバ２は、リンクを張っているキャッシュサーバ１からデータ（HTTP要求またはHTTP応答）が送信されてくるまで待機している（ステップＳ２１：Ｎｏ）。Webサーバ２は、キャッシュサーバ１からデータを受信すると（ステップＳ２１：Ｙｅｓ）、受信したデータをWebアプリケーション（Web AP）５に渡す（ステップＳ２２）。Webアプリケーション５は、データ種別判定部２４１によって、受信したデータの種別（HTTP要求、HTTP応答）を判定する（ステップＳ２３）。
【０１００】
まず、HTTP要求を受信した場合には、当該Webアプリケーション５がマッシュアップにより構築されていた場合（ステップＳ２４：Ｙｅｓ）、当該Webアプリケーション５は、HTTP要求作成部２４３によって、他のWebアプリケーション５を呼び出すためのHTTP要求を作成する（ステップＳ２５）。一方、当該Webアプリケーション５がマッシュアップにより構築されていなければ（ステップＳ２４：Ｎｏ）、当該Webアプリケーション５は、HTTP要求処理部２４４によって、受信したHTTP要求を処理してHTTP応答（データ）を作成する（ステップＳ２６）。
【０１０１】
なお、背景技術でも述べたように、Webアプリケーションをマッシュアップで使うためには、そのWebアプリケーションが単体で作成されたものか、マッシュアップにより構築されたものかを考える必要はない。そのため、図８に記載したマッシュアップ判定部２４２は、当該Webアプリケーション５がマッシュアップにより構築されているか否かでその後の処理が分岐することを表している。したがって、当該Webアプリケーション５がマッシュアップにより構築されている場合には、HTTP要求を受信したときに、必ず、ステップＳ２５の処理を行う。また、当該Webアプリケーション５がマッシュアップにより構築されていない場合には、HTTP要求を受信したときに、必ず、ステップＳ２６の処理を行う。
【０１０２】
前記したステップＳ２５またはステップＳ２６の処理に続いて、Webアプリケーション５は、Webサーバ２に処理を戻す（ステップＳ２７）。Webサーバ２は、Webアプリケーション５で作成したデータを、ルート情報に従って、キャッシュサーバ１に送信し（ステップＳ２８）、ステップＳ２１に戻る。
【０１０３】
次に、前記したステップＳ２３において、HTTP応答を受信した場合には、Webアプリケーション５は、HTTP応答処理部２４５によって、受信したHTTP応答に対応した処理を行う（ステップＳ２９）。すなわち、受信したHTTP応答に対応して既に受信しているHTTP要求に従った処理を行う。そして、Webアプリケーション５は、HTTP応答作成部２４６によって、このとき処理した既に受信している「HTTP要求の送信元」を“宛先ID”としたHTTP応答を作成する（ステップＳ３０）。続いて、Webアプリケーション５は、前記したステップＳ２７に戻り、Webサーバ２に処理を戻す。この場合、作成されたHTTP応答がキャッシュサーバ１に転送されることとなる。
【０１０４】
＜キャッシュサーバのデータ転送の手順＞
図１５は、図７に示すキャッシュサーバのデータ転送の手順を示すフローチャートである。中継系P2Pノードとしてのキャッシュサーバ１は、リンクを張っているエッジ系P2Pノードや中継系P2Pノードからデータ（HTTP要求またはHTTP応答）が送信されてくるまで待機している（ステップＳ４１：Ｎｏ）。キャッシュサーバ１は、データを受信すると（ステップＳ４１：Ｙｅｓ）、データ種別判定部１５１によって、受信したデータの種別（HTTP要求、HTTP応答）を判定する（ステップＳ４２）。
【０１０５】
まず、HTTP要求を受信した場合には、キャッシュサーバ１は、HTTP要求判定部１５２によって、受信したHTTP要求と同じ内容のHTTP要求（キャッシュデータ）がキャッシュデータ記憶部１２２に記録済みであるか否かを判別する（ステップＳ４３）。同じ内容のHTTP要求が記録済みである場合（ステップＳ４３：Ｙｅｓ）、キャッシュサーバ１は、HTTP応答選択部１５４により、記録済みのHTTP要求とペアをなしているHTTP応答をキャッシュデータから取り出し、データ送信部１３２によって、データ（HTTP要求）を送信してきたエッジ系P2Pノードまたは中継系P2Pノードヘ返信し（ステップＳ４４）、ステップＳ４１に戻る。
【０１０６】
前記ステップＳ４３において、受信したHTTP要求が記録されていない場合（ステップＳ４３：Ｎｏ）、キャッシュサーバ１は、HTTP要求記録部１５３によって、受信したHTTP要求をキャッシュデータ記憶部１２２に一時的に保管する（ステップＳ４５）。そして、キャッシュサーバ１は、ルート選択部１５６によって、受信したHTTP要求に記述された“宛先ID”と一致する“宛先ID”が記述されたルート情報がルート情報記憶部１２１に記憶されているか否かを判別する（ステップＳ４６）。ルート情報がある場合（ステップＳ４６：Ｙｅｓ）、ルート選択部１５６は、宛先までの“ホップ数”が最小であるルートを選択し（ステップＳ４７）、データ送信部１３２によって、選択されたルートのルート情報の転送先IDに記述された中継系P2Pノードへデータ（HTTP要求）を転送する（ステップＳ４８）。一方、ルート情報が無い場合（ステップＳ４６：Ｎｏ）、キャッシュサーバ１は、転送不能通知を返信する（ステップＳ４９）。そして、ステップＳ４８またはステップＳ４９に続いて、キャッシュサーバ１は、ステップＳ４１に戻る。
【０１０７】
次に、前記したステップＳ４２において、HTTP応答を受信した場合には、キャッシュサーバ１は、HTTP応答記録部１５５によって、前記したステップＳ４５にて一時的に保管したHTTP要求と、受信したHTTP応答とをペアにしてキャッシュデータとして記録する（ステップＳ５０）。このとき、キャッシュサーバ１は、記録したペアをなしているHTTP要求と同じキャッシュデータがキャッシュデータ記憶部１２２に記録済みであるか否かをHTTP要求判定部１５２によって判別する（ステップＳ５１）。同じHTTP要求に関するキャッシュデータが既に記録されている場合（ステップＳ５１：Ｙｅｓ）、それを更新するために、HTTP応答記録部１５５は、古いキャッシュデータを削除し、新たに作成したキャッシュデータを残して保管する（ステップＳ５２）。一方、同じHTTP要求に関するキャッシュデータが未登録の場合（ステップＳ５１：Ｎｏ）、または、前記したステップＳ５２に続いて、キャッシュサーバ１は、前記したステップＳ４６に進む。この場合、キャッシュサーバ１は、ステップＳ４８にて、選択されたルートのルート情報の転送先IDに記述された中継系P2PノードへHTTP応答を転送する。
【０１０８】
なお、キャッシュサーバ１は、一般的なコンピュータを、キャッシュサーバ１を構成する前記した各手段として機能させるプログラム（Webアプリケーション間通信プログラム）により動作させることで実現することができる。このプログラムは、通信回線を介して提供することも可能であるし、ＣＤ−ＲＯＭ等の記録媒体に書き込んで配布することも可能である。
【０１０９】
［Webアプリケーション間通信の具体例］
＜Webアプリケーション間通信の具体例１＞
次に、PC1が、WebアプリケーションAにアクセスした際のデータの流れについて図１６を参照して説明する。以下では、各装置等をその装置名で呼称する。ここで、各装置のキャッシュデータ記憶部のキャッシュデータの初期状態は空であるものとする。また、ルート情報記憶部には、定常状態のルート情報が蓄積されているものとする。
【０１１０】
PC1上で動作するWebブラウザ３４は、WebサーバaのWebアプリケーションAを利用するため、HTTP要求1を作成する（ステップＳ６１）。PC1は、作成されたHTTP要求1をルート情報に従って、中継系P2Pノードであるキャッシュサーバ1へ送信する（ステップＳ６２）。図１７（ａ）に、PC1がWebサーバaに出したHTTP要求1の例を示す。HTTP要求1は、要求先を示す要求先ＵＲＬと要求データとからなる。PC1のルート情報は、図１０の宛先IDの項目４０１に示すように“全て”の宛先について、転送先IDの項目４０３に示すように“cache1.abc.jp”、すなわち、装置名「キャッシュサーバ1」に送ることを示している。
【０１１１】
キャッシュサーバ1は、HTTP要求1を受信すると、自ノードのキャッシュデータを調べる。この時点で、キャッシュデータは空なので、キャッシュサーバ1は、受信したHTTP要求1を一時的に保管し（ステップＳ６３）、保有するルート情報に従ってHTTP要求1を転送する（ステップＳ６４）。具体的には、図１７（ａ）に示すHTTP要求1の「要求先ＵＲＬ」には、FQDNとして“www.def.jp”が記述されている。つまり、HTTP要求1の宛先は“Webサーバa”である。キャッシュサーバ1の保有するルート情報に従えば、図１２に符号５０１で示すように、「宛先ID」が“def.jp”の場合、「ホップ数」が最小、つまり、“１”となる「転送先ID」は“def.jp”である。つまり、転送先の中継系P2Pノードは“キャッシュサーバ2”である。よって、キャッシュサーバ１は、HTTP要求1をキャッシュサーバ2へ転送する。
【０１１２】
キャッシュサーバ2は、HTTP要求1を受信し、キャッシュサーバ1と同様に、自ら保有するキャッシュデータを調べて、キャッシュデータが空であることを確認する。そして、HTTP要求1を一時的に保管する（ステップＳ６５）。受信したHTTP要求1の「要求先ＵＲＬ」に記述された“Webサーバa”は、キャッシュサーバ2と同じネットワークに属しているエッジ系P2Pノードである（図１参照）。よって、キャッシュサーバ2は、リンクを通して、HTTP要求1をWebサーバaへ転送する（ステップＳ６６）。
【０１１３】
Webサーバaは、HTTP要求1を受信すると、WebアプリケーションAに処理を渡す（ステップＳ６７）。WebアプリケーションAは、マッシュアップを判定する（ステップＳ６８）。この例では、図６に示したように、WebアプリケーションAは、マッシュアップによりWebアプリケーションCを呼び出す。したがって、WebアプリケーションAは、マッシュアップにより構築されていると判定する。そして、WebアプリケーションAは、WebアプリケーションCを呼び出すために新たにHTTP要求2を作成し（ステップＳ６９）、Webサーバaに処理を戻す（ステップＳ７０）。Webサーバaは、HTTP要求2を、中継系P2Pノードであるキャッシュサーバ2に転送する（ステップＳ７１）。図１７（ｂ）にHTTP要求2の例を示す。
【０１１４】
HTTP要求2を受信したキャッシュサーバ2は、キャッシュデータ記憶部１２２において、HTTP要求1を一時的に保管しているために第1のキャッシュデータは空ではないものの、新たに受け取ったHTTP要求2に対しては、次のキャッシュデータが空であるので、該当領域にHTTP要求2を一時的に保管し（ステップＳ７２）、保有するルート情報に従ってHTTP要求2を、中継系P2Pノードであるキャッシュサーバ4へ転送する（ステップＳ７３）。
【０１１５】
HTTP要求2を受信したキャッシュサーバ4は、キャッシュデータが空であるので、HTTP要求2を一時的に保管し（ステップＳ７４）、保有するルート情報に従ってHTTP要求2を、同じネットワークに属しているエッジ系P2PノードであるWebサーバcへ転送する（ステップＳ７５）。
【０１１６】
Webサーバcは、HTTP要求2を受信すると、WebアプリケーションCに処理を渡す（ステップＳ７６）。WebアプリケーションCは、マッシュアップを判定する（ステップＳ７７）。この例では、図６に示したように、WebアプリケーションCは、マッシュアップにより構築されていないと判定する。そして、WebアプリケーションCは、受信したHTTP要求2を処理し、新たにHTTP応答3を作成し（ステップＳ７８）、Webサーバcに処理を戻す（ステップＳ７９）。Webサーバcは、HTTP応答3を、中継系P2Pノードであるキャッシュサーバ4に転送する（ステップＳ８０）。
【０１１７】
HTTP応答3を受信したキャッシュサーバ4は、先に一時的に保管したHTTP要求2と、受信したHTTP応答3とをペアにして、キャッシュデータとして保存し（ステップＳ８１）、受信したHTTP応答3をキャッシュサーバ2へと転送する（ステップＳ８２）。
【０１１８】
HTTP応答3を受信したキャッシュサーバ2は、キャッシュサーバ4と同様に、先に一時的に保管したHTTP要求2と、受信したHTTP応答3とをペアにして、キャッシュデータとして保存し（ステップＳ８３）、受信したHTTP応答3をWebサーバaへと転送する（ステップＳ８４）。
【０１１９】
Webサーバaは、HTTP応答3を受信すると、WebアプリケーションAに処理を渡す（ステップＳ８５）。WebアプリケーションAは、HTTP要求1を処理するためにHTTP要求2を作成したことで取得したHTTP応答3と、HTTP要求1とを合わせて処理し、新たにHTTP応答4を作成し（ステップＳ８６）、Webサーバaに処理を戻す（ステップＳ８７）。Webサーバaは、HTTP応答4をキャッシュサーバ2に転送する（ステップＳ８８）。
【０１２０】
HTTP応答4を受信したキャッシュサーバ2は、先に一時的に保管したHTTP要求1と、受信したHTTP応答4とをペアにして、キャッシュデータとして保存し（ステップＳ８９）、受信したHTTP応答4をキャッシュサーバ１へと転送する（ステップＳ９０）。図１８に、この時点のキャッシュサーバ2のキャッシュデータを例示する。図１８に示す例では、キャッシュサーバ2には、符号７１０で示す１番目のペアをなしたキャッシュデータと、符号７２０で示す２番目のペアをなしたキャッシュデータとが保存されていることを表している。１番目のペアをなしたキャッシュデータには、符号７１１および符号７１２で示すようにHTTP要求1が保管されている（図１７（ａ）参照）。また、符号７１３で示す応答データは、WebアプリケーションAにて作成されたHTTP応答4を示している。また、２番目のペアをなしたキャッシュデータには、符号７２１および符号７２２で示すようにHTTP要求2が保管されている（図１７（ｂ）参照）。また、符号７２３で示す応答データは、WebアプリケーションCにて作成されたHTTP応答3を示している。
【０１２１】
図１６に戻って説明を続ける。
HTTP応答4を受信したキャッシュサーバ１は、先に一時的に保管したHTTP要求1と、受信したHTTP応答4とをペアにして、キャッシュデータとして保存し（ステップＳ９１）、受信したHTTP応答4をPC1へと転送する（ステップＳ９２）。PC1は、HTTP応答4を受信し（ステップＳ９３）、ブラウザ３４によって、HTTP応答4を処理し、結果を画面表示する（ステップＳ９４）。以上が、PC1がWebアプリケーションAにアクセスした際のデータの流れを例示したものである。
【０１２２】
＜Webアプリケーション間通信の具体例２＞
次に、PC1がWebアプリケーションBにアクセスした際のデータの流れについて図１９を参照して説明する。全体の流れは、Webアプリケーション間通信の具体例１と同様なので、対応する処理を示すステップナンバーに「１００」を加えて説明する。つまり、図１９においてＳ１６１は、図１６のＳ６１と同様な処理である。ただし、PC1がWebアプリケーションBにアクセスまでに関わるキャッシュサーバ、Webサーバ、Webアプリケーションは、必ずしも一致するとは限らない。また、以下では、各装置等をその装置名で呼称する。具体例１で登場したキャッシュデータ記憶部のキャッシュデータの初期状態は、具体例１の最終状態であるものとする。具体例１に登場していないキャッシュデータ記憶部のキャッシュデータの初期状態は、空であるものとする。また、ルート情報記憶部には、それぞれ定常状態のルート情報が蓄積されているものとする。
【０１２３】
PC1上で動作するWebブラウザ３４は、WebサーバbのWebアプリケーションBを利用するため、HTTP要求5を作成する（ステップＳ１６１）。図１７（ｃ）にHTTP要求5を例示する。以下、ステップＳ１６２〜ステップＳ１７２までの処理は、具体例１のステップＳ６２〜ステップＳ７２までの処理と同様である。ただし、
具体例１の「キャッシュサーバ2」を「キャッシュサーバ3」、
具体例１の「Webサーバa」を「Webサーバb」、
具体例１の「WebアプリケーションA」を「WebアプリケーションB」、
具体例１の「HTTP要求1」を「HTTP要求5」、
具体例１の「HTTP要求2」を「HTTP要求6」にそれぞれ置き換える。
【０１２４】
すなわち、ステップＳ１６２〜ステップＳ１７３までの処理の概略は以下の通りである。PC1は、HTTP要求5をキャッシュサーバ１へ送信する。HTTP要求5は、キャッシュサーバ１からキャッシュサーバ3を経由し、Webサーバbへ届き、WebアプリケーションBに渡される。この間、HTTP要求5は、キャッシュサーバ１とキャッシュサーバ3とに一時保管される。WebアプリケーションBは、図６に示したように、マッシュアップによりWebアプリケーションAを呼び出すことから、新たなHTTP要求6を作成する。図１７（ｄ）にHTTP要求6を例示する。図１７（ｄ）に示すように、HTTP要求6の内容と、HTTP要求1の内容とが偶然にも全く同じであったとする。このHTTP要求6は、キャッシュサーバ3に転送される。
【０１２５】
ステップＳ１７２に続いて、キャッシュサーバ3は、HTTP要求6をキャッシュサーバ2へ転送する（ステップＳ１７３）。HTTP要求6の内容と、HTTP要求1の内容とが全く同じなので、具体例１のステップＳ６４の処理がなされたことと同様である。キャッシュサーバ2は、HTTP要求6を受信し、自ら保有するキャッシュデータを調べる。キャッシュサーバ2は、図１８に例示したように、符号７１０で示すように、初めのキャッシュデータとして“HTTP要求1”を記録済みである。したがって、キャッシュサーバ2は、受信した“HTTP要求6”は記録済みであると判定する（ステップＳ１７４）。そして、キャッシュサーバ2は、記録済みの“HTTP要求1”とペアをなしている“HTTP応答4”をキャッシュデータから取り出して、“HTTP応答7”として、“HTTP要求6”の送信元（キャッシュサーバ3）へ返信する（ステップＳ１８２）。
【０１２６】
以下、ステップＳ１８３〜ステップＳ１９４までの処理は、具体例１のステップＳ８３〜ステップＳ９４までの処理と同様である。ただし、前記したように置き換えると共に、さらに、具体例１の「HTTP応答3」を「HTTP応答7」、具体例１の「HTTP応答4」を「HTTP応答8」にそれぞれ置き換える。
【０１２７】
すなわち、ステップＳ１８３〜ステップＳ１９４までの処理の概略は以下の通りである。ステップＳ１８２で送信されたHTTP応答7は、キャッシュサーバ3を経由して、Webサーバbに転送され、WebアプリケーションBに渡される。WebアプリケーションBは、HTTP要求5とHTTP応答7とを合わせて処理して、HTTP応答8を作成する。HTTP応答8は、キャッシュサーバ3とキャッシュサーバ１とを経由して、PC1へ転送される。この間、キャッシュサーバ3およびキャッシュサーバ１は、先に一時的に保管したHTTP要求5と、受信したHTTP応答8とをペアとしてキャッシュデータを保存する。そして、PC1のWebブラウザ３４は、受信したHTTP応答8を処理し、結果を画面表示する。以上が、PC1がWebアプリケーションBにアクセスした際のデータの流れを例示したものである。
【０１２８】
具体例２では、前記したステップＳ１７４の処理により、キャッシュサーバ2が受信したHTTP要求6が記録済みであると判定した（キャッシュヒット）したことで、データの流れの途中で折り返しが発生した。ちなみに、例えば、キャッシュサーバ１が他のクライアントPC（PC2）ともリンクを張っていて、この「PC2」が、「HTTP要求5」と同じ内容の「HTTP要求9」を、後から、キャッシュサーバ１に転送した場合には、キャッシュサーバ１は、HTTP要求9が記録済みであると判定することで、「HTTP応答8」と同じ内容を「HTTP応答10」として返信できるので、即座に折り返しが発生する。
【０１２９】
このように、本実施形態では、P2P網６Ａにおけるデータの流れを中継するキャッシュサーバ１が、キャッシュヒット時にHTTP応答を返信できるように構成した。これにより、他のWebアプリケーションAを呼び出すようにマッシュアップにより構築されたWebアプリケーションBが、WebアプリケーションAを呼び出すHTTP要求を作成し、キャッシュサーバ１にキャッシュデータとして保存しておけば、その後の同じ呼び出しを省略することができる。つまり、非常に多くのWebアプリケーションのマッシュアップに組み込まれるような人気が高いWebアプリケーションに対するアクセスを大幅に低減できる。これにより、多段のマッシュアップであっても、応答性の良いWebアプリケーションの実現が可能である。
【０１３０】
本実施形態によれば、以下に挙げる優れた効果を奏することができる。
従来のP2Pでは、全てのP2Pノードを一様に扱っていたため、P2Pノードの参加と離脱がルートの再計算を招いてしまう課題と、ネットワーク特性を考慮しないオーバーレイネットワークを構築してしまう課題とがあった（P2Pの課題）。本実施形態では、P2Pノードを、参加と離脱が自由なエッジ系P2Pノードと、ネットワーク運営者がルート設定を行う中継系P2Pノードの２種類に分類することで、前記したP2Pの課題を解決した。
これにより、以下の効果が期待される。
【０１３１】
（効果１）中継系P2PノードだけがP2P網６Ａ全体のルーティングを担うこととし、この中継系P2Pを、ノードネットワーク運営者が安定して運用するキャッシュサーバ１とした。これにより、Webブラウザを使うエンドユーザのクライアントPC３が、エッジ系P2Pノードとして、P2P網６Ａへの参加と離脱を自由に行ったとしても、P2P網６Ａでのルートの再計算は行われず、安定した動作が期待できる。同様に、Webアプリケーション５を動作させるWebサーバ２もエッジ系P2Pノードとして、ルーティングヘの影響を与えずに、P2P網６Ａへの参加と離脱を自由に行うことができる。
【０１３２】
（効果２）従来のP2Pは、P2PノードのIDなどを基に、リンクを張るP2Pノードを計算で算出してきた。このため、実際のネットワーク構成を考慮に入れないオーバーレイネットワークを構築してしまい、データ転送の性能低下（速度低下）などを招いてきた。本実施形態では、中継系P2Pノードをネットワーク運営者の管理とし、P2Pノード間で張るリンクを、ネットワーク運営者が選択、決定することとした。つまり、ネットワーク管理者が、実際のネットワーク構成を考慮に入れた上で、リンクを張るP2Pノードを決定するため、実際のネットワーク構成に即したオーバーレイネットワークが構築できる。その結果、ネットワーク的に近いP2Pノード間や、大きな帯域を持つP2Pノード間で、データが多く伝送されるようになり、P2P網６Ａ全体でデータの転送効率の向上が期待できる。
【０１３３】
（効果３）
P2Pでは、人気の高いデータほど、より多くのP2Pノードでキャッシュされる特長がある。本実施形態では、WebブラウザとWebアプリケーション間で転送されるデータ、または、WebアプリケーションとWebアプリケーション間で転送されるデータを、中継するP2Pノードがキャッシュする。これにより、WebブラウザとWebアプリケーション間の通信、または、WebアプリケーションとWebアプリケーション間の通信の多くがキャッシュにヒットし、途中で折り返すことができる。この結果、多くのWebアプリケーションを呼び出すマッシュアップ、あるいは、Webアプリケーションを呼び出す段数が大きいマッシュアップであっても、応答性の低下を防止できる。すなわち、応答時間の向上が期待できる。従来技術であれば、マッシュアップにより組合せるWebアプリケーションが散在する場合に、例えば利用頻度の高いWebサービスの実行時の応答性が低下するが、本実施形態によれば、このようなサービスを効率的に利用できる。
【０１３４】
以上、本発明の実施形態について説明したが、本発明はこれに限定されるものではなく、その趣旨を変えない範囲で実施することができる。例えば、本実施形態では、Webサーバ２をエッジ系P2Pノードであるものとして説明したが、変形例１（本発明の第1の観点に対応する）として、Webサーバ２を中継系P2Pノードとしてもよい。このような中継系P2PノードであるWebサーバをWebサーバ４と表記する。このWebサーバ４をネットワークシステムに含む場合には、そのWebサーバ４が属するネットワークのネットワーク運営者が、このWebサーバ４を管理することとなる。そして、このWebサーバ４は、Webアプリケーション５が動作するだけではなく、図7に示したルート情報取得制御部１４およびキャッシュ制御部１５を備える。すなわち、キャッシュサーバ１と同様な機能を備える。したがって、Webサーバ４の図示は省略し、同じ機能に同じ符号を付して説明を省略する。
【０１３５】
このキャッシュサーバ１と同様な機能を備えるWebサーバ４は、一般的なコンピュータを、当該Webサーバ４を構成する前記した各手段として機能させるプログラム（Webアプリケーション間通信プログラム）により動作させることで実現することができる。このプログラムは、通信回線を介して提供することも可能であるし、ＣＤ−ＲＯＭ等の記録媒体に書き込んで配布することも可能である。
【０１３６】
このWebサーバ４をネットワークシステムに含む場合には、さらなる変形例２（本発明の第３の観点に対応する）として、そのネットワークシステムから、キャッシュサーバ１を適宜取り除いてもよく、すべて取り除いてもよい。すなわち、1台以上のクライアントPC３と、複数のWebサーバ４とにより、ネットワークシステムを構成してもよい。その場合、ネットワーク運営者は、中継系P2Pノードとして、Webサーバ４以外にキャッシュサーバ１を設置する必要がなく、Webサーバ４だけを管理すればよいので、負担が低減する。結果として、クライアントPC３を利用するエンドユーザへのサービス向上につながる。
【０１３７】
なお、本実施形態（本発明の第２の観点に対応する）で説明したように、Webサーバ２をエッジ系P2Pノード、キャッシュサーバ１を中継系P2Pノードであるものとした場合には、ネットワーク運営者は、中継系P2Pノードとして、キャッシュサーバ１だけを管理すればよいので、負担が低減する。また、Webサーバ２がエッジ系P2PノードとしてP2P網の参加と離脱を自由に行えるので、ネットワーク構成の変動の柔軟性が増すことになる。結果として、クライアントPCを利用するエンドユーザへのサービス向上につながる。本実施形態、あるいは、変形例１、変形例２のいずれを採用するかについては、ネットワーク運営者が必要に応じて適宜決定することができる。
【符号の説明】
【０１３８】
１（１ａ，１ｂ，１ｃ，１ｄ）  キャッシュサーバ（中継系P2Pノード）
２（２ａ，２ｂ，２ｃ）        Webサーバ（エッジ系P2Pノード）
３（３ａ，３ｂ，３ｃ，３ｄ）  クライアントPC（エッジ系P2Pノード）
４                            Webサーバ（中継系P2Pノード）
５（５ａ〜５ｈ，５ｊ，６ｋ）  Webアプリケーション（Web AP）
６      実際のネットワーク（インターネット）
６Ａ    オーバーレイネットワーク（P2P網）
７（７ａ，７ｂ，７ｃ）  キャッシュデータ
１１，２１，３１  入出力部
１２，２２，３２  記憶部
１２１，２２１，３２１  ルート情報記憶部
１２２，２２２，３２２  キャッシュデータ記憶部
１３，２３，３３  転送制御部（P2P機能部）
１３１  データ受信部
１３２  データ送信部
１４    ルート情報取得制御部
１５    キャッシュ制御部
１５１  データ種別判定部
１５２  HTTP要求判定部
１５３  HTTP要求記録部（データ記録手段）
１５４  HTTP応答選択部
１５５  HTTP応答記録部（データ記録手段）
１５６  ルート選択部
２４１  データ種別判定部
２４２  マッシュアップ判定部
２４３，３４１  HTTP要求作成部
２４４  HTTP要求処理部
２４５，３４２  HTTP応答処理部
２４６  HTTP応答作成部
３４    Webブラウザ
Ｄ      表示装置
Ｋ      入力装置
【図１】
2010198116.tif 000003
【図２】
2010198116.tif 000004
【図３】
2010198116.tif 000005
【図４】
2010198116.tif 000006
【図５】
2010198116.tif 000007
【図６】
2010198116.tif 000008
【図７】
2010198116.tif 000009
【図８】
2010198116.tif 000010
【図９】
2010198116.tif 000011
【図１０】
2010198116.tif 000012
【図１１】
2010198116.tif 000013
【図１２】
2010198116.tif 000014
【図１３】
2010198116.tif 000015
【図１４】
2010198116.tif 000016
【図１５】
2010198116.tif 000017
【図１６】
2010198116.tif 000018
【図１７】
2010198116.tif 000019
【図１８】
2010198116.tif 000020
【図１９】
2010198116.tif 000021
【図２０】
2010198116.tif 000022