IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

<>
  • 特許-通信装置、通信システムおよび通信方法 図1
  • 特許-通信装置、通信システムおよび通信方法 図2
  • 特許-通信装置、通信システムおよび通信方法 図3
  • 特許-通信装置、通信システムおよび通信方法 図4
  • 特許-通信装置、通信システムおよび通信方法 図5
  • 特許-通信装置、通信システムおよび通信方法 図6
  • 特許-通信装置、通信システムおよび通信方法 図7
  • 特許-通信装置、通信システムおよび通信方法 図8
  • 特許-通信装置、通信システムおよび通信方法 図9
  • 特許-通信装置、通信システムおよび通信方法 図10
  • 特許-通信装置、通信システムおよび通信方法 図11
  • 特許-通信装置、通信システムおよび通信方法 図12
  • 特許-通信装置、通信システムおよび通信方法 図13
  • 特許-通信装置、通信システムおよび通信方法 図14
  • 特許-通信装置、通信システムおよび通信方法 図15
  • 特許-通信装置、通信システムおよび通信方法 図16
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-06-26
(45)【発行日】2023-07-04
(54)【発明の名称】通信装置、通信システムおよび通信方法
(51)【国際特許分類】
   H04L 67/06 20220101AFI20230627BHJP
   G06F 16/957 20190101ALI20230627BHJP
【FI】
H04L67/06
G06F16/957
【請求項の数】 9
(21)【出願番号】P 2019148913
(22)【出願日】2019-08-14
(65)【公開番号】P2021033356
(43)【公開日】2021-03-01
【審査請求日】2022-05-17
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】舟橋 涼一
(72)【発明者】
【氏名】長谷川 尚己
(72)【発明者】
【氏名】多田 厚子
(72)【発明者】
【氏名】増井 誠生
(72)【発明者】
【氏名】倉木 健介
(72)【発明者】
【氏名】加藤 圭造
【審査官】小林 義晴
(56)【参考文献】
【文献】特開2008-234406(JP,A)
【文献】特開2003-108464(JP,A)
【文献】特開平07-184062(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 67/00
G06F 16/957
(57)【特許請求の範囲】
【請求項1】
リクエストをサーバに送信して、前記サーバからリクエストに対応する第1レスポンスを受信し、軽量化パラメータに基づいて、前記リクエストを軽量化した軽量化データを前記サーバに送信して、前記サーバから前記軽量化データに対応する第2レスポンスを受信し、前記第1レスポンスと前記第2レスポンスとの比較結果を基にして、前記軽量化パラメータを学習データに登録する処理を、前記軽量化パラメータを変更しつつ繰り返し実行する学習部と、
前記学習データを、前記リクエストの送信元に通知する通知部と
を有することを特徴とする通信装置。
【請求項2】
前記学習部は、前記第1レスポンスと前記第2レスポンスとの差分が許容範囲に含まれる場合に、前記リクエストを軽量化した際の軽量化パラメータを、前記学習データに登録することを特徴とする請求項1に記載の通信装置。
【請求項3】
前記学習部は、前記リクエストのデータ形式、または、前記リクエストによって前記サーバに呼び出されるAPI(Application Programming Interface)の識別情報と、前記軽量化パラメータとを対応付けて、前記学習データに登録することを特徴とする請求項1または2に記載の通信装置。
【請求項4】
サーバ側に配置される第1通信装置と、クライアント側に配置される第2通信装置とを有する通信システムであって、
前記第1通信装置は、
前記第2通信装置から受信したリクエストを、前記サーバに送信して、前記サーバからリクエストに対応する第1レスポンスを受信し、軽量化パラメータに基づいて、前記リクエストを軽量化した軽量化データを前記サーバに送信して、前記サーバから前記軽量化データに対応する第2レスポンスを受信し、前記第1レスポンスと前記第2レスポンスとの比較結果を基にして、前記軽量化パラメータを学習データに登録する処理を、前記軽量化パラメータを変更しつつ繰り返し実行する学習部と、
前記学習データを、前記第通信装置に通知する通知部と
を有することを特徴とする通信システム。
【請求項5】
前記第2通信装置は、前記学習データを基にして、リクエストを軽量化した軽量化データを生成し、前記軽量化データを前記第1通信装置に送信する軽量化部を有することを特徴とする請求項4に記載の通信システム。
【請求項6】
リクエストをサーバ側の他の通信装置に転送する転送部と、
前記リクエストに対応する前記サーバからの第1レスポンスと、複数の軽量化パラメータのうちいずれかの軽量化パラメータにより前記リクエストを軽量化した軽量化データに対応する前記サーバからの第2レスポンとの比較結果に基づいて選別された軽量化パラメータを含む学習データを前記他の通信装置から受信する受信部と、
前記学習データを基にして、軽量化対象のリクエストを軽量化した軽量化データを生成し、前記軽量化データを前記他の通信装置に送信する軽量化部と
を有することを特徴とする通信装置。
【請求項7】
前記軽量化部は、前記学習データに複数の軽量化パラメータが含まれる場合、前記複数の軽量化パラメータのうち、前記リクエストを軽量化した際の軽量化データのデータ量が最小となる軽量化パラメータを選択し、選択した軽量化パラメータによって、前記軽量化対象のリクエストを軽量化することで、前記軽量化データを生成することを特徴とする請求項6に記載の通信装置。
【請求項8】
前記学習データは、前記リクエストのデータ形式、または、前記リクエストによって前記サーバに呼び出されるAPI(Application Programming Interface)の識別情報と、前記軽量化パラメータとを対応付けたデータであり、
前記軽量化部は、前記軽量化対象のリクエストのデータ形式、または、前記軽量化対象のリクエストによって前記サーバに呼び出されるAPIの識別情報を更に用いて、軽量化パラメータを選択し、選択した軽量化パラメータによって、前記軽量化データを生成することを特徴とする請求項7に記載の通信装置。
【請求項9】
サーバ側に配置される第1通信装置と、クライアント側に配置される第2通信装置とを有する通信システムの通信方法であって、
前記第1通信装置は、前記第2通信装置からリクエストを受信し、
前記第1通信装置は、受信したリクエストを、前記サーバに送信して、前記サーバからリクエストに対応する第1レスポンスを受信し、軽量化パラメータに基づいて、前記リクエストを軽量化した軽量化データを前記サーバに送信して、前記サーバから前記軽量化データに対応する第2レスポンスを受信し、前記第1レスポンスと前記第2レスポンスとの比較結果を基にして、前記軽量化パラメータを学習データに登録する処理を、前記軽量化パラメータを変更しつつ繰り返し実行し、
前記第1通信装置は、前記学習データを、前記第通信装置に通知する
処理を実行することを特徴とする通信方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信装置等に関する。
【背景技術】
【0002】
クライアントがリクエストデータをWebAPI(Application Programming Interface)サーバに送信し、WebAPIサーバはリクエストデータに対応する各種のサービスをクライアントに提供するシステムが普及している。
【0003】
ここで、クライアントがリクエストデータをそのままWebAPIに送信すると、ネットワークコストが増大し、レスポンスが低下する場合がある。ネットワークコストを削減するための従来技術として、たとえば、従来技術1、2がある。
【0004】
従来技術1は、クライアントと、サーバとの間において、通信データに対して汎用的な圧縮を行う圧縮プロキシを配置する技術である。従来技術1では、通信データがテキストデータ等である場合に、ネットワークコストの削減効果がある。
【0005】
従来技術2は、クライアントおよびサーバがそれぞれキャッシュを保持し、通信データとキャッシュのデータとの差分のみを送受信する技術である。従来技術2では、類似した通信データを複数回送受信する場合に、ネットワークコストの削減効果がある。
【先行技術文献】
【特許文献】
【0006】
【文献】特開2005-267499号公報
【文献】特開2007-293894号公報
【文献】特開2005-190339号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
画像データや映像データは既に圧縮された形式で利用されるため、従来技術1の圧縮プロキシによる圧縮は、ネットワークコストの削減効果が少ない。また、類似した通信データを複数回送受信しない場合には、従来技術2による、ネットワークコストの削減効果が少ない。
【0008】
なお、単純に、リクエストデータを軽量化し、軽量化したリクエストデータをWebAPIサーバに送信することで、ネットワークコストの削減を図ることも考えられる。しかし、単純に軽量化したリクエストデータを軽量化すると、WebAPIサーバから適切な応答データを得られない場合がある。
【0009】
このため、リクエストデータを軽量化した場合でも応答データの品質を保証することが望ましい。
【0010】
1つの側面では、本発明は、リクエストデータを軽量化した場合でも応答データの品質を保証することができる通信装置、通信システムおよび通信方法を提供することを目的とする。
【課題を解決するための手段】
【0011】
第1の案では、通信装置は、学習部と、通知部とを有する。学習部は、リクエストをサーバに送信して、前記サーバからリクエストに対応する第1レスポンスを受信する。学習部は、軽量化パラメータに基づいて、リクエストを軽量化した軽量化データをサーバに送信して、サーバから軽量化データに対応する第2レスポンスを受信し、第1レスポンスと第2レスポンスとの比較結果を基にして、軽量化パラメータを学習データに登録する処理を、軽量化パラメータを変更しつつ繰り返し実行する。通知部は、学習データを、前記リクエストの送信元に通知する。
【発明の効果】
【0012】
リクエストデータを軽量化した場合でも応答データの品質を保証することができる。
【図面の簡単な説明】
【0013】
図1図1は、本実施例に係る通信システムの一例を示す図である。
図2図2は、学習フェーズにおける通信システムの処理手順を示すフローチャートである。
図3図3は、新規リクエスト時における通信システムの処理手順を示すフローチャートである。
図4図4は、本実施例に係るサーバの構成を示す機能ブロック図である。
図5図5は、モジュールテーブルのデータ構造の一例を示す図である。
図6図6は、本実施例に係るクライアント側のプロキシサーバの構成を示す機能ブロック図である。
図7図7は、学習データのデータ構造の一例を示す図である。
図8図8は、軽量化パラメータのデータ構造の一例を示す図である。
図9図9は、本実施例に係るサーバ側のプロキシサーバの構成を示す機能ブロック図である。
図10図10は、軽量化パラメータテーブルのデータ構造の一例を示す図である。
図11図11は、クライアント側のプロキシサーバの処理手順を示すフローチャートである。
図12図12は、サーバ側のプロキシサーバの処理手順を示すフローチャートである。
図13図13は、本実施例に係る通信システムの効果を説明するための図である。
図14図14は、サーバと同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
図15図15は、クライアント側のプロキシサーバと同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
図16図16は、サーバ側のプロキシサーバと同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【0014】
以下に、本願の開示する通信装置、通信システムおよび通信方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例
【0015】
図1は、本実施例に係る通信システムの一例を示す図である。図1に示すように、この通信システムは、クライアント端末50と、サーバ60と、プロキシサーバ100と、プロキシサーバ200とを有する。クライアント端末50は、プロキシサーバ100に接続される。プロキシサーバ100は、ネットワーク5を介して、プロキシサーバ200に接続される。プロキシサーバ200は、サーバ60に接続される。プロキシサーバ100,200は、通信装置の一例である。
【0016】
クライアント端末50は、サーバ60を宛先として、リクエストデータをプロキシサーバ100に送信する装置である。クライアント端末50は、リクエストデータに対応する応答データを、プロキシサーバ100,200を介して、サーバ60から受信する。
【0017】
サーバ60は、プロキシサーバ200から、API(Application Programming Interface)コールを受け付け、リクエストデータを受信した場合に、APIコールに対応するモジュールによって、リクエストデータを処理する。サーバ60は、リクエストデータの処理結果となる「応答データ」を、プロキシサーバ200に送信する。サーバ60は、「WebAPIサーバ」の一例である。
【0018】
本実施例において、サーバ60が処理するリクエストデータには、軽量化パラメータによって、軽量化されたリクエストデータ、または、軽量化されていないリクエストデータが含まれる。以下の説明では、特に区別する場合、軽量化されたリクエストデータを「軽量化データ」と表記する。軽量化されていないリクエストデータを「元データ」と表記する。
【0019】
プロキシサーバ100,200は、クライアント端末50から、リクエストデータを受信すると、サーバ60にアクセスして、サーバ60から応答データを受信し、応答データをクライアント端末50に送信する装置である。以下において、本実施例の学習フェーズの通信システムの処理と、新規リクエスト時の通信システムの処理について説明する。
【0020】
学習フェーズの処理について説明する。学習フェーズにおいて、プロキシサーバ200は、サーバ60にAPIコールを行って元データをサーバ60に送信し、サーバ60から得られる応答データを受信する。学習フェーズの処理において、元データに対するサーバ60からの応答データを、「第1応答データ」と表記する。第1応答データは、第1レスポンスの一例である。プロキシサーバ200は、第1応答データを、プロキシサーバ100を介して、クライアント端末50に送信する。
【0021】
また、プロキシサーバ200は、軽量化パラメータを用いて、元データを軽量化した軽量化データを生成する。プロキシサーバ200は、サーバ60にAPIコールを行って軽量化データをサーバ60に送信し、サーバ60から得られる応答データを受信する。学習フェーズの処理において、軽量化データに対するサーバ60からの応答データを「第2応答データ」と表記する。第2応答データは、第2レスポンスの一例である。プロキシサーバ200は、第1応答データと第2応答データとの差分が許容範囲に含まれる場合、学習データに軽量化パラメータを登録する。プロキシサーバ200は、軽量化パラメータを変更しつつ、上記処理を繰り返し実行し、学習データに複数の軽量化パラメータを蓄積する。プロキシサーバ200は、学習データをプロキシサーバ100に通知し、プロキシサーバ100は、学習データを登録し、新規リクエスト時に利用する。
【0022】
図2は、学習フェーズにおける通信システムの処理手順を示すフローチャートである。図2に示すように、クライアント端末50は、元データをプロキシサーバ100に送信する(ステップS10)。プロキシサーバ100は、元データを受信し、元データをプロキシサーバ200に転送する(ステップS11)。
【0023】
プロキシサーバ200は、元データを受信する(ステップS12)。プロキシサーバ200は、サーバ60に対してAPIコールを実行し、元データをサーバ60に送信する(ステップS13)。
【0024】
サーバ60は、プロキシサーバ200からAPIコールを受け付け、元データを受信する(ステップS14)。サーバ60は、APIコールに対応するモジュールを用いて、第1応答データを計算する(ステップS15)。サーバ60は、第1応答データを、プロキシサーバ200に送信する(ステップS16)。
【0025】
プロキシサーバ200は、第1応答データを受信し、第1応答データをプロキシサーバ100に転送する(ステップS17)。プロキシサーバ100は、第1応答データを受信し、第1応答データをクライアント端末50に転送する(ステップS18)。クライアント端末50は、第1応答データを受信する(ステップS19)。
【0026】
プロキシサーバ200およびサーバ60は、軽量化パラメータ学習処理を実行する(ステップS20)。ステップS20において、プロキシサーバ200は、軽量化パラメータを用いて、元データを軽量化した軽量化データを生成する。プロキシサーバ200は、サーバ60にAPIコールを行って軽量化データをサーバ60に送信し、サーバ60から第2応答データを受信する。プロキシサーバ200は、第1応答データと第2応答データとの差分が許容範囲に含まれる場合、学習データに軽量化パラメータを登録する。プロキシサーバ200は、軽量化パラメータを変更しつつ、上記処理を繰り返し実行し、学習データに複数の軽量化パラメータを蓄積する。
【0027】
プロキシサーバ200は、学習データをプロキシサーバ100に送信する(ステップS21)。プロキシサーバ100は、学習データを受信し、記憶する(ステップS22)。
【0028】
続いて、新規リクエスト時の処理について説明する。新規リクエスト時において、プロキシサーバ100は、クライアント端末50から元データを受信すると、学習データを基にして、複数の軽量化パラメータのうち、軽量化データのデータ量が最小となる軽量化パラメータを選択する。プロキシサーバ100は、選択した軽量化パラメータによって、元データを軽量化することで、軽量化データを生成し、生成した軽量化パラメータをプロキシサーバ200に送信する。プロキシサーバ200は、サーバ60にAPIコールを行って軽量化データをサーバ60に送信し、サーバ60から得られる応答データを受信し、受信した応答データを、プロキシサーバ100を介して、クライアント端末50に送信する。
【0029】
図3は、新規リクエスト時における通信システムの処理手順を示すフローチャートである。図3に示すように、クライアント端末50は、元データをプロキシサーバ100に送信する(ステップS30)。プロキシサーバ100は、元データを受信する(ステップS31)。
【0030】
プロキシサーバ100は、軽量化処理を実行する(ステップS32)。ステップS32において、プロキシサーバ100は、学習データを基にして、複数の軽量化パラメータのうち、軽量化データのデータ量が最小となる軽量化パラメータを選択する。プロキシサーバ100は、選択した軽量化パラメータによって、元データを軽量化することで、軽量化データを生成する。
【0031】
プロキシサーバ100は、軽量化データをプロキシサーバ200に送信する(ステップS33)。プロキシサーバ200は、軽量化データを受信する(ステップS34)。プロキシサーバ200は、APIコールを実行し、軽量化データをサーバ60に送信する(ステップS35)。
【0032】
サーバ60は、APIコールを受け付け、軽量化データを受信する(ステップS36)。サーバ60は、APIコールに対応するモジュールを用いて、応答データを計算する(ステップS37)。サーバ60は、応答データをプロキシサーバ200に送信する(ステップS38)。
【0033】
プロキシサーバ200は、応答データを受信し、受信した応答データをプロキシサーバ100に転送する(ステップS39)。プロキシサーバ100は、応答データを受信し、受信した応答データをクライアント端末50に転送する(ステップS40)。クライアント端末50は、応答データを受信する(ステップS41)。
【0034】
上記のように、本実施例に係る通信システムでは、元データに対するサーバ60からの応答データと同様の回答を得られる軽量化データに用いる軽量化パラメータのうち、軽量化データのデータ量が最小となる軽量化パラメータを学習する。通信システムは、学習した軽量化パラメータを用いて、元データを軽量化した軽量化データを生成し、サーバ60に送信する。これによって、軽量化したリクエストデータの応答情報の品質を保証することができる。また、学習した軽量化パラメータは、元データと同様の回答を得るための必要最低限の品質であるため、ネットワークの負荷を減らし、レスポンスを向上させることができる。
【0035】
次に、図1に示したサーバ60、プロキシサーバ100、プロキシサーバ200の構成の一例について順に説明する。
【0036】
図4は、本実施例に係るサーバの構成を示す機能ブロック図である。図4に示すように、このサーバ60は、通信部61と、入力部62と、表示部63と、記憶部64と、制御部65とを有する。
【0037】
通信部61は、プロキシサーバ200との間でデータ通信を実行する処理部である。通信部61は、通信装置の一例である。後述する制御部65は、通信部61を介して、プロキシサーバ200とデータをやり取りする。
【0038】
入力部62は、サーバ60に各種のデータを入力するための入力装置である。入力部62は、キーボードやマウス、タッチパネル等に対応する。
【0039】
表示部63は、制御部65から出力される各種のデータを表示するための表示装置である。表示部63は、液晶ディスプレイ、有機EL(Electro-Luminescence)ディスプレイ、タッチパネル等に対応する。
【0040】
記憶部64は、モジュールテーブル64aを保持する。記憶部64は、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子や、HDD(Hard Disk Drive)などの記憶装置に対応する。
【0041】
モジュールテーブル64aは、APIコールによって呼び出される各APIのモジュールをそれぞれ保持するテーブルである。各モジュールは、それぞれ固有の処理手順が定義されている。たとえば、各モジュールに実行される処理は、人物検出処理、文字認識処理、音声認識処理、人物特定処理等が含まれる。本実施例では説明を省略するが、モジュールは、他の処理を実行してもよい。
【0042】
図5は、モジュールテーブルのデータ構造の一例を示す図である。図5に示すように、このモジュールテーブル64aは、API識別情報と、モジュールとを対応付けて保持する。API識別情報は、APIを一意に識別する情報である。モジュールは、モジュール固有の処理を実行するものである。
【0043】
たとえば、API識別情報「API1」に対応するモジュールは、人物検出処理を実行する。この人物検出処理を実行するモジュールは、リクエストデータを分析し、リクエストデータ(画像データ)に含まれる人物の位置座標を検出する。
【0044】
API識別情報「API2」に対応するモジュールは、文字認識処理を実行する。この文字認識処理を実行するモジュールは、リクエストデータを分析し、リクエストデータ(画像データ)に含まれる文字列を検出する。
【0045】
API識別情報「API3」に対応するモジュールは、音声認識処理を実行する。この音声認識処理を実行するモジュールは、リクエストデータを分析し、リクエストデータ(音声データ)に含まれる音声を文字列に変換する。
【0046】
API識別情報「API4」に対応するモジュールは、人物特定処理を実行する。この人物特定処理を実行するモジュールは、リクエストデータに含まれる音声の特徴を基にして、発話している人物が、予め定義した特定の人物であるか否かを判定する。
【0047】
図4の説明に戻る。制御部65は、受付部65aと、処理実行部65bと、応答部65cとを有する。制御部65は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などによって実現できる。また、制御部65は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などのハードワイヤードロジックによっても実現できる。
【0048】
受付部65aは、プロキシサーバ200から、APIコールを受け付ける処理部である。APIコールには、API識別情報が含まれる。また、受付部65aは、プロキシサーバ200から、処理対象となる元データまたは軽量化データを受信する。図4におけるサーバ60の説明において、元データまたは軽量化データを、リクエストデータと表記する。受付部65aは、APIコールのAPI識別情報およびリクエストデータを、処理実行部65bに出力する。
【0049】
処理実行部65bは、APIコールのAPI識別情報に対応するモジュールを、モジュールテーブル64aから取得し、取得したモジュールで定義された処理を、リクエストデータに対して実行する処理部である。処理実行部65bは、モジュールで定義された処理の処理結果のデータを、応答部65cに出力する。
【0050】
たとえば、処理実行部65bは、APIコールのAPI識別情報が「API1」である場合には、人物検出処理を実行するモジュールを取得し、リクエストデータを基にして、人物の位置座標を検出する。
【0051】
処理実行部65bは、APIコールのAPI識別情報が「API2」である場合には、文字認識処理を実行するモジュールを取得し、リクエストデータ(画像データ)を基にして、文字列を検出する。
【0052】
処理実行部65bは、APIコールのAPI識別情報が「API3」である場合には、音声認識処理を実行するモジュールを取得し、リクエストデータ(音声データ)を基にして、文字列を検出する。
【0053】
処理実行部65bは、APIコールのAPI識別情報が「API4」である場合には、人物特定処理を実行するモジュールを取得し、リクエストデータ(音声データ)を基にして、発話している人物が、予め定義した特定の人物であるか否かを判定する。
【0054】
応答部65cは、処理実行部65bから取得する処理結果のデータを、応答データに格納し、応答データを、プロキシサーバ200に送信する処理部である。
【0055】
次に、図1に示したプロキシサーバ100の構成について説明する。図6は、本実施例に係るクライアント側のプロキシサーバの構成を示す機能ブロック図である。図6に示すように、このプロキシサーバ100は、通信部110、入力部120、表示部130、記憶部140、制御部150を有する。
【0056】
通信部110は、クライアント端末50およびプロキシサーバ200との間でデータ通信を実行する処理部である。通信部110は、通信装置の一例である。後述する制御部150は、通信部110を介して、クライアント端末50およびプロキシサーバ200とデータをやり取りする。
【0057】
入力部120は、プロキシサーバ100に各種のデータを入力するための入力装置である。入力部120は、キーボードやマウス、タッチパネル等に対応する。
【0058】
表示部130は、制御部150から出力される各種のデータを表示するための表示装置である。表示部130は、液晶ディスプレイ、有機ELディスプレイ、タッチパネル等に対応する。
【0059】
記憶部140は、バッファ140a、学習データ140bを有する。記憶部140は、RAM、フラッシュメモリなどの半導体メモリ素子や、HDDなどの記憶装置に対応する。
【0060】
バッファ140aは、リクエストデータ(元データ)、軽量化データ、応答データ等を一時的に格納するバッファである。
【0061】
学習データ140bは、リクエストデータを軽量化するための軽量化パラメータを保持するテーブルである。学習データ140bは、学習フェーズにおいて、プロキシサーバ200により生成される。
【0062】
図7は、学習データのデータ構造の一例を示す図である。図7に示すように、この学習データ140bは、API識別情報と、軽量化パラメータとを対応付ける。API識別情報は、APIを一意に識別する情報である。軽量化パラメータは、元データのデータ量を削減するパラメータである。
【0063】
たとえば、APIコールによって処理されるリクエストデータが画像データである場合には、軽量化パラメータには、解像度等が含まれる。リクエストデータが映像データである場合には、軽量化パラメータには、解像度、フレームレート等が含まれる。リクエストデータが音声データである場合には、軽量化パラメータには、サンプリングレート、量子化パラメータ、モノラルへの変換有無等が含まれる。なお、本実施例では一例として、API識別情報と、軽量化パラメータとを対応付けたが、API識別情報の代わりに、リクエストデータのデータ形式を対応付けてもよい。
【0064】
図8は、軽量化パラメータのデータ構造の一例を示す図である。図8に示す軽量化パラメータは、たとえば、API識別情報「API1」に対応する軽量化パラメータである。かかるパラメータには、軽量化パラメータ「解像度1/2」、「解像度1/3」が含まれる。
【0065】
図6の説明に戻る。制御部150は、転送部150a、受信部150b、軽量化部150cを有する。制御部150は、CPUやMPUなどによって実現できる。また、制御部150は、ASICやFPGAなどのハードワイヤードロジックによっても実現できる。
【0066】
制御部150は、学習フェーズが否かに応じて、異なる処理を実行する。学習フェーズの期間は、管理者が入力部120を操作して、プロキシサーバ100に入力してもよいし、プロキシサーバ100の外部に接続される端末装置(図示略)を操作して、プロキシサーバ100に通知してもよい。
【0067】
学習フェーズにおける転送部150aの処理について説明する。転送部150aは、クライアント端末50から、リクエストデータを受信すると、リクエストデータをバッファ140aに格納する。また、転送部150aは、バッファ140aに格納したリクエストデータを、プロキシサーバ200に転送する。
【0068】
新規リクエスト時(学習フェーズ以外)における転送部150aの処理について説明する。転送部150aは、クライアント端末50から、リクエストデータを受信すると、リクエストデータをバッファ140aに格納する。転送部150aは、リクエストデータに対する軽量化処理の要求を、軽量化部150cに出力する。
【0069】
なお、学習フェーズであるか否かに限らず、転送部150aは、プロキシサーバ200から応答データを受信すると、応答データをバッファ140aに格納する。また、転送部150aは、バッファ140aに格納した応答データを、クライアント端末50に転送する。
【0070】
受信部150bは、学習フェーズにおいて、プロキシサーバ200から、学習データ140bを受信する処理部である。受信部150bは、受信した学習データ140bを、記憶部140に登録する。
【0071】
軽量化部150cは、転送部150aから、軽量化処理要求を受け付けた場合に、バッファ140aに格納されたリクエストデータ(元データ)を軽量化することで、軽量化データを生成する処理部である。軽量化部150cは、軽量化データを、プロキシサーバ200に送信する。以下において、軽量化部150cの処理の一例について説明する。
【0072】
軽量化部150cは、リクエストデータに対応するAPI識別情報を特定する。ここで、クライアント端末50が、リクエストデータをプロキシサーバ100に送信する場合に、リクエストデータにAPI識別情報を格納しておいてもよい。また、軽量化部150cは、リクエストデータのデータ形式とAPI識別情報とを対応付けたテーブル(図示略)を基にして、API識別情報を特定してもよい。
【0073】
軽量化部150cは、特定したAPI識別情報と、学習データ140bとを比較して、特定したAPI識別情報に対応する軽量化パラメータを取得する。軽量化部150cは、取得した軽量化パラメータに複数の軽量化パラメータが含まれている場合には、軽量化データのデータ量が最小となる軽量化パラメータを選択する。
【0074】
解像度は値が小さいほど、データ量が小さくなる。このため、軽量化部150cは、軽量化パラメータに複数の解像度が含まれている場合には、複数の解像度のうち、最小の解像度を選択する。たとえば、図8で説明したように、軽量化パラメータとして「解像度1/2」、「解像度1/3」が含まれている場合、軽量化部150cは、「解像度1/3」を選択する。
【0075】
フレームレートは値が小さいほど、データ量が小さくなる。このため、軽量化部150cは、軽量化パラメータに複数のフレームレートが含まれている場合には、複数のフレームレートのうち、最小のフレームレートを選択する。
【0076】
サンプリングレートは値が小さいほど、データ量が小さくなる。このため、軽量化部150cは、軽量化パラメータに複数のサンプリングレートが含まれている場合には、複数のサンプリングレートのうち、最小のサンプリングレートを選択する。
【0077】
量子化パラメータのステップ幅が大きいほど、データ量が小さくなる。このため、軽量化部150cは、軽量化パラメータに複数の量子化パラメータが含まれている場合には、複数の量子化パラメータのうち、ステップ幅が最大となる量子化パラメータを選択する。
【0078】
軽量化部150cは、選択した軽量化パラメータによって、リクエストデータを軽量化することで、軽量化データを生成し、バッファ140aに格納する。軽量化部150cは、バッファ140aに格納した軽量化データを、プロキシサーバ200に送信する。
【0079】
ところで、軽量化部150cは、軽量化パラメータに複数種類の軽量化パラメータが含まれている場合には、データ量がより小さくなる組み合わせを選択し、軽量化を行ってもよい。たとえば、軽量化部150cは、軽量化パラメータに解像度およびフレームレートが含まれる場合には、最小の解像度と、最小のフレームレートとの組を選択し、リクエストデータの軽量化を行う。軽量化部150cは、軽量化パラメータにサンプリングレートおよび量子化パラメータが含まれる場合には、最小のサンプリングレートと、最大のステップ幅となる量子化パラメータとの組を選択し、リクエストデータの軽量化を行う。
【0080】
なお、軽量化部150cは、特定したAPI識別情報と、学習データ140bとを比較し、特定したAPI識別情報に対応する軽量化パラメータが、学習データ140bに存在しない場合には、元データを、プロキシサーバ200に送信する。
【0081】
次に、図1に示したプロキシサーバ200の構成について説明する。図9は、本実施例に係るサーバ側のプロキシサーバの構成を示す機能ブロック図である。図9に示すように、このプロキシサーバ200は、通信部210、入力部220、表示部230、記憶部240、制御部250を有する。
【0082】
通信部210は、プロキシサーバ100およびサーバ60との間でデータ通信を実行する処理部である。後述する制御部250は、通信部210を介して、プロキシサーバ100およびサーバ60との間でデータをやり取りする。
【0083】
入力部220は、プロキシサーバ200に各種のデータを入力するための入力装置である。入力部220は、キーボードやマウス、タッチパネル等に対応する。
【0084】
表示部230は、制御部250から出力される各種のデータを表示するための表示装置である。表示部230は、液晶ディスプレイ、有機ELディスプレイ、タッチパネル等に対応する。
【0085】
記憶部240は、バッファ240a、軽量化パラメータテーブル240b、学習データ140bを有する。記憶部240は、RAM、フラッシュメモリなどの半導体メモリ素子や、HDDなどの記憶装置に対応する。
【0086】
バッファ240aは、リクエストデータ(元データ)、軽量化データ、応答データ等を一時的に格納するバッファである。
【0087】
軽量化パラメータテーブル240bは、リクエストデータを軽量化するための軽量化パラメータの基本を保持するテーブルである。図10は、軽量化パラメータテーブルのデータ構造の一例を示す図である。図10に示すように、この軽量化パラメータテーブル240bは、API識別情報と、軽量化パラメータの基本値とを対応付ける。API識別情報は、APIを一意に識別する情報である。
【0088】
軽量化パラメータの基本値は、学習フェーズにおいて、1回目の軽量化を行う場合に用いる軽量化パラメータであり、予め設定される。軽量化パラメータは、第1応答データと第2応答データとの差分が許容範囲に含まれる範囲で、順に更新される。
【0089】
学習データ140bは、リクエストデータを軽量化するための軽量化パラメータを保持するテーブルである。
【0090】
制御部250は、学習部250a、通知部250b、呼び出し部250c、転送部250dを有する。制御部250は、CPUやMPUなどによって実現できる。また、制御部250は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などのハードワイヤードロジックによっても実現できる。
【0091】
制御部250は、学習フェーズが否かに応じて、異なる処理を実行する。学習フェーズの期間は、管理者が入力部220を操作して、プロキシサーバ200に入力してもよいし、プロキシサーバ200の外部に接続される端末装置(図示略)を操作して、プロキシサーバ200に通知してもよい。
【0092】
学習フェーズにおいて、学習部250a、通知部250b、転送部260dが動作する。学習部250aは、プロキシサーバ100から、元データを受信し、受信した元データをバッファ240aに格納する。学習部250aは、「前処理」を実行した後に、「学習処理」を繰り返し実行する。
【0093】
学習部250aが実行する「前処理」について説明する。学習部250aは、APIコールをサーバ60に対して実行し、元データをサーバ60に送信することで、サーバ60から第1応答データを受信する。学習部250aは、APIコールをサーバ60に実行する場合に、元データに対応するAPI識別情報を特定し、特定したAPI識別情報を、APIコールに設定する。学習部250aは、API識別情報と、第1応答データとを対応付けて、バッファ240aに格納する。
【0094】
学習部250aが実行する「学習処理」について説明する。学習部250aは、元データに対応するAPI識別情報と、軽量化パラメータテーブル240bとを比較して、API識別情報に対応する軽量化パラメータの基本値を取得し、取得した軽量化パラメータの基本値によって、元データを軽量化することで、軽量化データを生成する。学習部250aは、APIコールをサーバ60に対して実行し、軽量化データをサーバ60に送信することで、サーバ60から第2応答データを受信する。
【0095】
学習部250aは、第1応答データと第2応答データとの差分が許容範囲に含まれる場合に、API識別情報と、軽量化パラメータとを対応付けて、学習データ140bに登録する。また、学習部250aは、軽量化データのデータ量がより小さくなるように(軽量化されるように)、前回の軽量化パラメータを更新する。学習部250aは、更新した軽量化パラメータによって、元データを軽量化することで、軽量化データを生成する。学習部250aは、APIコールをサーバ60に対して実行し、軽量化データをサーバ60に送信することで、サーバ60から第2応答データを受信する。そして、学習部250aは、第1応答データと第2応答データとの差分が許容範囲に含まれる場合に、API識別情報と、軽量化パラメータとを対応付けて、学習データ140bに登録する。学習部250aは、第1応答データと第2応答データとの差分が許容範囲に含まる間、上記処理を繰り返し実行する。
【0096】
第1応答データと第2応答データとの差分が許容範囲に含まれるか否かの判定基準について説明する。第1応答データと第2応答データとの差分が許容範囲に含まれるか否かの判定基準は、API識別情報によって異なる。たとえば、API識別情報が「API1」である場合、人物の位置座標が、第1応答データおよび第2応答データに含まれる。学習部250aは、第1応答データの位置座標と、第2応答データの位置座標との距離が、所定距離未満である場合に、第1応答データと第2応答データとの差分が許容範囲に含まれると判定する。
【0097】
API識別情報が「API2」である場合、リクエストデータ(画像データ)から抽出される文字列が、第1応答データおよび第2応答データに含まれる。学習部250aは、第1応答データの文字列と、第2応答データの文字列との一致率が所定の一致率以上である場合に、第1応答データと第2応答データとの差分が許容範囲に含まれると判定する。
【0098】
API識別情報が「API3」である場合に、リクエストデータ(音声データ)から抽出される文字列が、第1応答データおよび第2応答データに含まれる。学習部250aは、第1応答データの文字列と、第2応答データの文字列との一致率が所定の一致率以上である場合に、第1応答データと第2応答データとの差分が許容範囲に含まれると判定する。
【0099】
API識別情報が「API4」である場合に、リクエストデータ(音声データ)から特定される発話した人物が、第1応答データおよび第2応答データに含まれる。学習部250aは、第1応答データの人物と、第2応答データの人物とが同一人物である場合に、第1応答データと第2応答データとの差分が許容範囲に含まれると判定する。
【0100】
学習部250aが実行する軽量化パラメータの更新について説明する。学習部250aは、軽量化パラメータが「解像度」である場合には、前回の解像度を所定割合小さくすることで、軽量化パラメータを更新する。学習部250aは、軽量化パラメータが「フレームレート」である場合には、前回のフレームレートを所定割合小さくすることで、軽量化パラメータを更新する。
【0101】
学習部250aは、軽量化パラメータが「サンプリングレート」である場合には、前回のサンプリングレートを所定割合小さくすることで、軽量化パラメータを更新する。学習部250aは、軽量化パラメータが「量子化パラメータ」である場合には、前回の量子化パラメータのステップ幅を所定割合大きくすることで、軽量化パラメータを更新する。
【0102】
学習部250aは、第1応答データと第2応答データとの差分が許容範囲に含まれない場合、または、学習フェーズの期間が終了した場合に、学習が終了した旨の情報を通知部250bに出力する。
【0103】
通知部260bは、学習が終了した旨の情報を学習部250aから取得した場合に、学習データ140bを、プロキシサーバ100に通知する処理部である。
【0104】
転送部250dは、学習部250aが実行する「前処理」において、サーバ60から送信される第1応答データを、プロキシサーバ100に転送する。
【0105】
新規リクエスト時(学習フェーズ以外)において、呼び出し部250c、転送部250dが動作する。呼び出し部250cは、プロキシサーバ100からリクエストデータ(元データまたは軽量化データ)を受信した場合、APIコールをサーバ60に対して実行し、リクエストデータをサーバ60に送信することで、サーバ60から応答データを受信する。
【0106】
転送部250dは、サーバ60から受信した応答データを、プロキシサーバ100に転送する。
【0107】
次に、クライアント側のプロキシサーバ100が、軽量化データを生成する処理の一例について説明する。図11は、クライアント側のプロキシサーバの処理手順を示すフローチャートである。図11に示す処理は、図3のステップS32で説明した軽量化処理に対応する。
【0108】
図11に示すように、プロキシサーバ100の軽量化部150cは、元データのAPI識別情報を特定する(ステップS101)。軽量化部150cは、特定したAPI識別情報に対応する軽量化パラメータが、学習データ140bに存在するか否かを判定する(ステップS102)。
【0109】
軽量化部150cは、学習データ140bに存在する場合には(ステップS103,Yes)、軽量化パラメータを基にして、軽量化データを生成する(ステップS104)。軽量化部150cは、軽量化データをプロキシサーバ200に送信する(ステップS105)。
【0110】
一方、軽量化部150cは、学習データ140bに存在しない場合には(ステップS103,No)、元データをプロキシサーバ200に送信する(ステップS106)。
【0111】
次に、サーバ側のプロキシサーバ200が、学習データを生成する処理の一例について説明する。図12は、サーバ側のプロキシサーバの処理手順を示すフローチャートである。
【0112】
図12に示すように、プロキシサーバ200の学習部250aは、プロキシサーバ100から元データを受信し元データをバッファ240aに登録する(ステップS201)。学習部250aは、サーバ60に元データを送信する(ステップS202)。学習部250aは、サーバ60から第1応答データを受信する(ステップS203)。
【0113】
学習部250aは、第1応答データをバッファ240aに登録し、プロキシサーバ100に転送する(ステップS204)。学習部250aは、API識別情報に対応する軽量化パラメータを選択する(ステップS205)。
【0114】
学習部250aは、軽量化パラメータに基づいて元データを軽量化することで軽量化データを生成する(ステップS206)。学習部250aは、軽量化データをサーバ60に送信する(ステップS207)。
【0115】
学習部250aは、サーバから第2応答データを受信する(ステップS208)。学習部250aは、第1応答データと第2応答データとの差分が許容範囲に含まれるか否かを判定する(ステップS209)。学習部250aは、許容範囲に含まれない場合には(ステップS210,No)、学習部250aは、学習を終了する(ステップS211)。プロキシサーバ200の通知部250bは、学習データをプロキシサーバ100に通知する(ステップS212)。
【0116】
一方、学習部250aは、学習部250aは、許容範囲に含まれる場合には(ステップS210,Yes)、軽量化パラメータを学習データ140bに登録する(ステップS213)。学習部250aは、よりデータ量が軽量化される軽量化パラメータに更新し(ステップS214)、ステップS206に移行する。
【0117】
次に、本実施例に係る通信システムの効果について説明する。本実施例の通信システムでは、元データに対するサーバ60からの応答データと同様の回答を得られる軽量化データに用いる軽量化パラメータのうち、軽量化データのデータ量が最小となる軽量化パラメータを学習する。そして、通信システムは、学習した軽量化パラメータを用いて、元データを軽量化した軽量化データを生成し、サーバ60に送信する。これによって、軽量化したリクエストデータの応答情報の品質を保証することができる。また、学習した軽量化パラメータは、元データと同様の回答を得るための必要最低限の品質であるため、ネットワークの負荷を減らし、レスポンスを向上させることができる。
【0118】
図13は、本実施例に係る通信システムの効果を説明するための図である。図13の上段の図は、プロキシサーバを配置しない従来の通信システム(クライアントサーバシステム、図示略)のレスポンス時間を説明するものである。クライアントは、時刻T1に元データをサーバに送信するものとする。クライアントが元データを送信してから、元データがサーバに到達するまでの時間を「ta1」とする。サーバが元データを処理する時間を「ta2」とする。サーバが応答データを送信してから、応答データがクライアントに到達するまでの時間を「ta3」とする。そうすると、レスポンス時間は「TA」となる。
【0119】
図13の下段の図は、リクエストデータの軽量化を行う本実施例のシステムのレスポンス時間を説明するための図である。クライアント側のプロキシサーバ100が、クライアント端末50から、時刻T1に元データを受信したものとする。プロキシサーバ100による軽量化等のプロキシ処理の時間を「tb1」とする。プロキシサーバ100が軽量化データを送信してから、プロキシサーバ200に到達するまでの時間を「tb2」とする。プロキシサーバ200が、APIコールを実行して、サーバ60に軽量化データの処理を送信して応答データを得るまでの時間を「tb3」とする。プロキシサーバ200が応答データを送信してから、プロキシサーバ100に到達するまでの時間を「tb4」とする。プロキシサーバ100がプロキシ処理を実行する時間を「tb5」とする。そうすると、レスポンス時間は「TA」となる。
【0120】
本実施例に係る通信システムでは、プロキシ処理による時間が発生するものの、軽量化データによって、通信時間、処理時間を短くすることができ、レスポンス時間を減らすことができる。なお、本実施例に係る通信システムでは、データそのものが過去のデータと類似していなくても、レスポンス時間を減らすことができる。
【0121】
本実施例の通信システムに含まれるプロキシサーバ200は、第1応答データと第2応答データとの差分が許容範囲に含まれる場合、学習データ140bに軽量化パラメータを登録する。これによって、元データと同様の応答データを得ることができる軽量化パラメータを学習することができる。
【0122】
プロキシサーバ200は、リクエストデータのデータ形式、または、APIの識別情報と対応付けて、軽量化パラメータを学習データに登録する。このため、呼び出すAPIが異なる各リクエストデータを軽量化するめの、各軽量化パラメータを学習することができる。
【0123】
本実施例の通信システムに含まれるプロキシサーバ100は、プロキシサーバ200から通知された学習データを用いて、クライアント端末50のリクエストデータを軽量化し、軽量化した軽量化データを、プロキシサーバ200にする。これによって、ネットワークコストを削減することができると共に、レスポンス時間を短縮することができる。
【0124】
プロキシサーバ100は、学習データに複数の軽量化パラメータが含まれる場合、軽量化パラメータのうち、リクエストを軽量化した際の軽量化データのデータ量が最小となる軽量化パラメータを選択し、リクエストを軽量化する。これによって、応答データの品質を保証しつつ、ネットワークコスト、レスポンス時間をより短縮することができる。
なお、本実施例では一例として、WebAPIサーバに相当するサーバ60を用いて説明したが、これに限定されるものではない。たとえば、何らかのサービスを提供するシステム間のやり取り(HTTPプロトコルを用いないデータのやり取り)で、一般的なAPIを用いる場合も同様に本発明を適用することが可能である。
【0125】
次に、上記実施例に示したサーバ60、プロキシサーバ100、プロキシサーバ200と同様の機能を実現するコンピュータのハードウェア構成の一例について順に説明する。
【0126】
図14は、サーバと同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。図14に示すように、コンピュータ300は、各種演算処理を実行するCPU301と、ユーザからのデータの入力を受け付ける入力装置302と、ディスプレイ303と、読み取り装置304とを有する。また、コンピュータ300は、ネットワークを介して、プロキシサーバ200等との間でデータの授受を行うインタフェース装置305とを有する。コンピュータ300は、各種情報を一時記憶するRAM306と、ハードディスク装置307とを有する。そして、各装置301~307は、バス308に接続される。
【0127】
ハードディスク装置307は、受付プログラム307a、処理実行プログラム307b、応答プログラム307cを有する。CPU301は、受付プログラム307a、処理実行プログラム307b、応答プログラム307cを読み出してRAM306に展開する。
【0128】
受付プログラム307aは、受付プロセス306aとして機能する。処理実行プログラム307bは、処理実行プロセス306bとして機能する。応答プログラム307cは、応答プロセス306cとして機能する。
【0129】
受付プロセス306aの処理は、受付部65aの処理に対応する。処理実行プロセス306bの処理は、処理実行部65bの処理に対応する。応答プロセス306cの処理は、応答部65cの処理に対応する。
【0130】
なお、各プログラム307a~307cについては、必ずしも最初からハードディスク装置307に記憶させておかなくてもよい。例えば、コンピュータ300に挿入されるフレキシブルディスク(FD)、CD-ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ300が各プログラム307a~307cを読み出して実行するようにしてもよい。
【0131】
図15は、クライアント側のプロキシサーバと同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。図15に示すように、コンピュータ400は、各種演算処理を実行するCPU401と、ユーザからのデータの入力を受け付ける入力装置402と、ディスプレイ403と、読み取り装置404とを有する。また、コンピュータ400は、ネットワークを介して、クライアント端末50、プロキシサーバ200等との間でデータの授受を行うインタフェース装置405とを有する。コンピュータ400は、各種情報を一時記憶するRAM406と、ハードディスク装置407とを有する。そして、各装置401~407は、バス408に接続される。
【0132】
ハードディスク装置407は、転送プログラム407a、受信プログラム407b、軽量化プログラム407cを有する。CPU401は、転送プログラム407a、受信プログラム407b、軽量化プログラム407cを読み出してRAM406に展開する。
【0133】
転送プログラム407aは、転送プロセス406aとして機能する。受信プログラム407bは、受信プロセス406bとして機能する。軽量化プログラム407cは、軽量化プロセス406cとして機能する。
【0134】
転送プロセス406aの処理は、転送部150aの処理に対応する。受信プロセス406bの処理は、受信部150bの処理に対応する。軽量化プロセス406cの処理は、軽量化部150cの処理に対応する。
【0135】
なお、各プログラム407a~407cについては、必ずしも最初からハードディスク装置407に記憶させておかなくてもよい。例えば、コンピュータ400に挿入されるフレキシブルディスク(FD)、CD-ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ400が各プログラム407a~407cを読み出して実行するようにしてもよい。
【0136】
図16は、サーバ側のプロキシサーバと同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。図16に示すように、コンピュータ500は、各種演算処理を実行するCPU501と、ユーザからのデータの入力を受け付ける入力装置502と、ディスプレイ503と、読み取り装置504とを有する。また、コンピュータ500は、ネットワークを介して、サーバ60、プロキシサーバ100等との間でデータの授受を行うインタフェース装置505とを有する。コンピュータ500は、各種情報を一時記憶するRAM506と、ハードディスク装置507とを有する。そして、各装置501~507は、バス508に接続される。
【0137】
ハードディスク装置507は、学習プログラム507a、通知プログラム507b、呼び出しプログラム507c、転送プログラム507dを有する。CPU501は、学習プログラム507a、通知プログラム507b、呼び出しプログラム507c、転送プログラム507dを読み出してRAM506に展開する。
【0138】
学習プログラム507aは、学習プロセス506aとして機能する。通知プログラム507bは、通知プロセス506bとして機能する。呼び出しプログラム507cは、呼び出しプロセス506cとして機能する。転送プログラム507dは、転送プロセス506dとして機能する。
【0139】
学習プロセス506aの処理は、学習部250aの処理に対応する。通知プロセス506bの処理は、通知部250bの処理に対応する。呼び出しプロセス506cの処理は、呼び出し部250cの処理に対応する。転送プロセス506cの処理は、転送部250dの処理に対応する。
【0140】
なお、各プログラム507a~507dについては、必ずしも最初からハードディスク装置507に記憶させておかなくてもよい。例えば、コンピュータ500に挿入されるフレキシブルディスク(FD)、CD-ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ500が各プログラム507a~507dを読み出して実行するようにしてもよい。
【0141】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【0142】
(付記1)リクエストをサーバに送信して、前記サーバからリクエストに対応する第1レスポンスを受信し、軽量化パラメータに基づいて、前記リクエストを軽量化した軽量化データを前記サーバに送信して、前記サーバから前記軽量化データに対応する第2レスポンスを受信し、前記第1レスポンスと前記第2レスポンスとの比較結果を基にして、前記軽量化パラメータを学習データに登録する処理を、前記軽量化パラメータを変更しつつ繰り返し実行する学習部と、
前記学習データを、前記リクエストの送信元に通知する通知部と
を有することを特徴とする通信装置。
【0143】
(付記2)前記学習部は、前記第1レスポンスと前記第2レスポンスとの差分が許容範囲に含まれる場合に、前記リクエストを軽量化した際の軽量化データを、前記学習データに登録することを特徴とする付記1に記載の通信装置。
【0144】
(付記3)前記学習部は、前記リクエストのデータ形式、または、前記リクエストによって前記サーバに呼び出されるAPI(Application Programming Interface)の識別情報と、前記軽量化パラメータとを対応付けて、前記学習データに登録することを特徴とする付記1または2に記載の通信装置。
【0145】
(付記4)サーバ側に配置される第1通信装置と、クライアント側に配置される第2通信装置とを有する通信システムであって、
前記第1通信装置は、
前記第2通信装置から受信したリクエストを、前記サーバに送信して、前記サーバからリクエストに対応する第1レスポンスを受信し、軽量化パラメータに基づいて、前記リクエストを軽量化した軽量化データを前記サーバに送信して、前記サーバから前記軽量化データに対応する第2レスポンスを受信し、前記第1レスポンスと前記第2レスポンスとの比較結果を基にして、前記軽量化パラメータを学習データに登録する処理を、前記軽量化パラメータを変更しつつ繰り返し実行する学習部と、
前記学習データを、前記第1通信装置に通知する通知部と
を有することを特徴とする通信システム。
【0146】
(付記5)前記第2通信装置は、前記学習データを基にして、リクエストを軽量化した軽量化データを生成し、前記軽量化データを前記第1通信装置に送信する軽量化部を有することを特徴とする付記4に記載の通信システム。
【0147】
(付記6)リクエストをサーバ側の他の通信装置に転送する転送部と、
前記リクエストに対応する前記サーバからの第1レスポンスと、複数の軽量化パラメータのうちいずれかの軽量化パラメータにより前記リクエストを軽量化した軽量化データに対応する前記サーバからの第2レスポンとの比較結果に基づいて選別された軽量化パラメータを含む学習データを前記他の通信装置から受信する受信部と、
前記学習データを基にして、軽量化対象のリクエストを軽量化した軽量化データを生成し、前記軽量化データを前記他の通信装置に送信する軽量化部と
を有することを特徴とする通信装置。
【0148】
(付記7)前記軽量化部は、前記学習データに複数の軽量化パラメータが含まれる場合、前記複数の軽量化パラメータのうち、前記リクエストを軽量化した際の軽量化データのデータ量が最小となる軽量化パラメータを選択し、選択した軽量化パラメータによって、前記軽量化対象のリクエストを軽量化することで、前記軽量化データを生成することを特徴とする付記6に記載の通信装置。
【0149】
(付記8)前記学習データは、前記リクエストのデータ形式、または、前記リクエストによって前記サーバに呼び出されるAPI(Application Programming Interface)の識別情報と、前記軽量化パラメータとを対応付けたデータであり、
前記軽量化部は、前記軽量化対象のリクエストのデータ形式、または、前記軽量化対象のリクエストによって前記サーバに呼び出されるAPIの識別情報を更に用いて、軽量化パラメータを選択し、選択した軽量化パラメータによって、前記軽量化データを生成することを特徴とする付記7に記載の通信装置。
【0150】
(付記9)サーバ側に配置される第1通信装置と、クライアント側に配置される第2通信装置とを有する通信システムの通信方法であって、
前記第1通信装置は、前記第2通信装置からリクエストを受信し、
前記第1通信装置は、受信したリクエストを、前記サーバに送信して、前記サーバからリクエストに対応する第1レスポンスを受信し、軽量化パラメータに基づいて、前記リクエストを軽量化した軽量化データを前記サーバに送信して、前記サーバから前記軽量化データに対応する第2レスポンスを受信し、前記第1レスポンスと前記第2レスポンスとの比較結果を基にして、前記軽量化パラメータを学習データに登録する処理を、前記軽量化パラメータを変更しつつ繰り返し実行し、
前記第1通信装置は、前記学習データを、前記第1通信装置に通知する
処理を実行することを特徴とする通信方法。
【0151】
(付記10)前記第2通信装置は、前記学習データを基にして、リクエストを軽量化した軽量化データを生成し、前記軽量化データを前記第1通信装置に送信する処理を更に実行することを特徴とする付記9に記載の通信方法。
【符号の説明】
【0152】
61,110,210 通信部
62、120,220 入力部
63,130,230 表示部
64,140,240 記憶部
64a モジュールテーブル
65,150,250 制御部
65a 受付部
65b 処理実行部
65c 応答部
100,200 プロキシサーバ
140a,240a バッファ
140b 学習データ
150a,250d 転送部
150b 受信部
150c 軽量化部
240b 軽量化パラメータテーブル
250a 学習部
250b 通知部
250c 呼び出し部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16