情報処理装置、情報処理方法およびコンピュータ読み取り可能な記録媒体
【課題】クライアント‐サーバ間での情報の送受信を制御し、クライアント‐サーバ間の通信量を低減することが可能な情報処理装置を提供する。
【解決手段】本発明の情報処理装置は、ネットワーク10を介してデータを保持するサーバ2と接続されたクライアント端末1に設けられ、クライアント端末1内の1または複数のアプリケーションからのリクエストを受けて、サーバ2との情報の送受信を制御する。かかる情報処理装置は、サーバ2にアクセスするためのユーザの認証情報を保持する認証情報記憶部と、クライアント端末1内のアプリケーションからのリクエストに基づいて、リクエストに当該クライアント端末1のユーザの認証情報を付加して、サーバへ送信するリクエスト送信部142と、を備える。
【解決手段】本発明の情報処理装置は、ネットワーク10を介してデータを保持するサーバ2と接続されたクライアント端末1に設けられ、クライアント端末1内の1または複数のアプリケーションからのリクエストを受けて、サーバ2との情報の送受信を制御する。かかる情報処理装置は、サーバ2にアクセスするためのユーザの認証情報を保持する認証情報記憶部と、クライアント端末1内のアプリケーションからのリクエストに基づいて、リクエストに当該クライアント端末1のユーザの認証情報を付加して、サーバへ送信するリクエスト送信部142と、を備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法およびコンピュータ読み取り可能な記録媒体に関する。
【背景技術】
【0002】
近年、モバイル情報端末において、パーソナルコンピュータのように、アプリケーションを追加してユーザ毎にカスタマイズすることの可能なシステムが注目されている。ここでいうアプリケーションには、第三ベンダが開発するアプリケーションも含まれる。また、個々のアプリケーションとサーバ側との親密性はより高まってきており、同一クライアントに、サーバを利用して処理を実行するアプリケーションが複数種類存在することも多い。
【0003】
ユーザ毎に認証情報を必要とするサーバとアプリケーションとが連携する場合、アプリケーション毎にユーザに対して認証情報の入力を要求し、シングルサインインのためには、その認証情報を保持しておく必要がある。これは、ユーザにとって面倒な操作に他ならない。また、サーバの認証情報を保持する領域が増加することや、第三ベンダにサーバの認証情報が与えられることからセキュリティ面の問題も存在する。さらに、各アプリケーションが個々に同一サーバに対して通信を行うことは非効率であり、サーバの通信コストや負荷が増加したり、クライアント端末の電池寿命に影響を及ぼしたりすることも考えられる。
【0004】
サーバの通信コストや負荷を軽減する方法として、例えば、特許文献1には、ネットワーク上にゲートウェイ装置を設け、各クライアントからのセッション制御用メッセージを集約して新しいメッセージを生成し、サーバに送信することで、セッションリソースを低減させる通信制御方法が開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2009−218631号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかし、上記特許文献1のようにクライアントとサーバとの間にゲートウェイ装置を配置することは有効であるが、クライアントの各アプリケーションが個々にサーバと通信することには変わりなく、クライアントから送信される通信量は削減されないという問題があった。このようなクライアントからの通信量は、端末のメモリや電池、およびユーザの通信コスト等に影響することになる。
【0007】
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、クライアント‐サーバ間での情報の送受信を制御し、クライアント‐サーバ間の通信量を低減することが可能な、新規かつ改良された情報処理装置、情報処理方法およびコンピュータ読み取り可能な記録媒体を提供することにある。
【課題を解決するための手段】
【0008】
上記課題を解決するために、本発明のある観点によれば、ネットワークを介してデータを保持するサーバと接続されたクライアント端末に設けられ、クライアント端末内の1または複数のアプリケーションからのリクエストを受けて、サーバとの情報の送受信を制御する、情報処理装置が提供される。
【0009】
情報処理装置は、サーバにアクセスするためのユーザの認証情報を保持する認証情報記憶部と、クライアント端末内のアプリケーションからのリクエストに基づいて、リクエストに当該クライアント端末のユーザの認証情報を付加して、サーバへ送信するリクエスト送信部と、を備えることができる。
【0010】
アプリケーションから受け取るリクエストには、サーバへ送信する優先順位を示す優先情報が含まれており、リクエスト送信部は、優先情報に基づいて、リクエストをサーバへ送信してもよい。
【0011】
また、リクエスト送信部は、優先情報より優先順位の低いリクエストは、リクエスト合成部により集約してサーバへ送信してもよい。
【0012】
情報処理装置は、複数のアプリケーションからサーバに対する複数のリクエストを受け取ったとき、複数のリクエストを合成して集約リクエストを生成するリクエスト合成部と、集約リクエストに対するサーバからの集約レスポンスを、各リクエストに対応するレスポンスに分解するレスポンス分解部と、を備えることもできる。
【0013】
アプリケーションからのリクエストに対するサーバからのレスポンスを保持するレスポンス蓄積部と、レスポンス蓄積部に保持されたレスポンスを管理するキャッシュ判断部と、を備え、キャッシュ判断部は、アプリケーションから、レスポンス蓄積部に蓄積されたレスポンスをサーバから取得するリクエストを受けたとき、レスポンス蓄積部からレスポンスを取得してアプリケーションに送信することもできる。
【0014】
レスポンス蓄積部は、蓄積された各レスポンスに対して当該レスポンスを保持する有効期限情報を記憶しており、キャッシュ判断部は、有効期限情報に基づいて、アプリケーションからのリクエストに対するレスポンスをレスポンス蓄積部から取得するか否かを判断してもよい。
【0015】
少なくともリクエスト端末の通信環境の良否、電池残量またはメモリ残量を監視する端末状態監視部をさらに備え、リクエスト送信部は、端末状態監視部によるリクエスト端末の監視結果に基づいて、リクエストを送信してもよい。
【0016】
リクエスト送信部は、複数のアプリケーションからサーバへのリクエストに所定の文字列が含まれているとき、所定の文字列を当該文字列に対応する情報に変換して、サーバへ送信してもよい。
【0017】
認証情報記憶部には、複数ユーザの認証情報が記憶され、リクエスト送信部は、複数のアプリケーションからリクエストを受け取ったとき、クライアント端末にログインしているユーザのサーバ上の領域に対して、リクエストを送信することもできる。
【0018】
また、アプリケーションからリクエストを受け取った際に、アプリケーションおよびリクエストの内容に基づいて、当該リクエストのサーバへの送信の実行可否を判断する、実行判断部をさらに備えることもできる。
【0019】
また、上記課題を解決するために、本発明の別の観点によれば、ネットワークを介してデータを保持するサーバと接続され、クライアント端末内の1または複数のアプリケーションからのリクエストを受けて、サーバとの情報の送受信を制御する、情報処理方法が提供される。
【0020】
さらに、上記課題を解決するために、本発明の別の観点によれば、コンピュータに、ネットワークを介してデータを保持するサーバと接続されたクライアント端末に設けられる、クライアント端末内の1または複数のアプリケーションからのリクエストを受けて、サーバとの情報の送受信を制御する、情報処理装置として機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体が提供される。
【発明の効果】
【0021】
以上説明したように本発明によれば、クライアント‐サーバ間での情報の送受信を制御し、クライアント‐サーバ間の通信量を低減することが可能な、情報処理装置、情報処理方法およびコンピュータ読み取り可能な記録媒体を提供することができる。
【図面の簡単な説明】
【0022】
【図1】本発明の実施形態に係るシステムの概略構成を示す概念図である。
【図2】同実施形態にかかるクライアント‐サーバ構成の一例を示す説明図である。
【図3】同実施形態に係るGWアプリの機能構成を示すブロック図である。
【図4】リクエストID DBのテーブル構成例を示す説明図である。
【図5】キャッシュDBのテーブル構成例を示す説明図である。
【図6】同一リクエストDBのテーブル構成例を示す説明図である。
【図7】キューDBのテーブル構成例を示す説明図である。
【図8】認証情報DBのテーブル構成例を示す説明図である。
【図9】アプリケーションからリクエストを受けたときの、当該アプリケーションとGWアプリとの間で行われる情報のやり取りを示すフローチャートである。
【図10A】アプリケーションからリクエストを受けたときの、GWアプリとサーバとの間で行われる情報のやり取りを示すフローチャートである。
【図10B】アプリケーションからリクエストを受けたときの、GWアプリとサーバとの間で行われる情報のやり取りを示すフローチャートである。
【図11】GWアプリが複数のアプリケーションからリクエストを受けたときの、GWアプリの一動作例を示す説明図である。
【図12】リクエストXMLの一例を示す説明図である。
【図13】リクエストXMLの他の一例を示す説明図である。
【図14】集約リクエストXMLの一例を示す説明図である。
【図15】レスポンスXMLの一例を示す説明図である。
【図16】レスポンスXMLの他の一例を示す説明図である。
【図17】集約レスポンスXMLの一例を示す説明図である。
【図18】キャッシュの許可情報が含まれるレスポンスXMLの一例を示す説明図である。
【図19】リクエストIDが含まれるレスポンスXMLの一例を示す説明図である。
【図20】多ユーザの認証情報を管理する場合の認証情報DBのテーブル構成例を示す説明図である。
【図21】複数ユーザがログインしている状態でリクエストXMLが渡された時の動作例を示す説明図である。
【発明を実施するための形態】
【0023】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【0024】
なお、説明は以下の順序で行うものとする。
1.システム構成例
2.機能構成
3.クライアント‐サーバ間の通信処理
【0025】
<1.システム構成例>
まず、図1および図2を参照して、本発明の実施形態に係るシステムの概略構成について説明する。なお、図1は、本実施形態に係るシステムの概略構成を示す概念図である。図2は、本実施形態に係るクライアント‐サーバ構成の一例を示す説明図である。
【0026】
本実施形態に係るシステムは、1または複数のクライアント端末1と、各クライアント端末1へデータを提供するサーバ2とが、ネットワーク10を介して接続されている。例えば、図1に示すように、4つのクライアント端末1A〜1Dとサーバ2とが接続されたデータ同期システムを構築することができる。クライアント端末1とサーバ2との通信は、無線通信であってもよく、有線通信であってもよい。また、クライアント端末1A〜1Dのユーザは、それぞれ異なるユーザであってもよく、同一ユーザであってもよい。
【0027】
クライアント端末1は、サーバ2から所望のデータを取得可能な情報処理端末であって、例えば、携帯電話やPDA(Personal Digital Assistants)等の通信端末や、コンピュータ、テレビジョン受像機等である。クライアント端末1は、サーバ2から取得したデータを用いて、アプリケーションの機能を実現する。サーバ2は、データを保持し、クライアント1からの要求によりデータを提供する。
【0028】
本実施形態のクライアント端末1は、ユーザ毎に、アプリケーションを自由に追加して、カスタマイズ可能な端末を想定している。これらのアプリケーションには、サーバと通信することによりその機能を実現するものもある。このようなアプリケーションは、サーバが提供するAPI(Application Program Interface)を用いることによって、サーバ2を提供しているベンダのみならず第三ベンダによっても開発することができるものである。
【0029】
本実施形態に係るクライアント端末1とサーバ2との間で行われる通信は、図2に示すように行われる。例えば、ユーザBのクライアント端末1Bに、アプリA、アプリB、アプリC、アプリD、・・・のような複数のアプリケーションがインストールされているとする。各アプリケーションは、サーバ2の機能をネットワーク10経由で利用することで、クライアント端末1Bにその機能を提供することができる。このため、アプリケーションの機能を実現させるためには、サーバ2と通信して、必要な情報の提供を受ける必要がある。
【0030】
サーバ2は、登録ユーザ毎に異なるサービスを提供するサーバである。ユーザがサーバ2より当該サービスを受けるためには、ユーザアカウントによる認証が必要である。ここで、本実施形態に係るクライアント端末1Bは、アプリケーションによるサーバ2へのアクセスを代替して行うゲートウェイアプリケーション(以下、「GWアプリ」と称する。)100を備える。GWアプリ100は、アプリA〜Dの代わりにサーバ2へアクセスするための認証情報を認証情報DB146に保持している。例えば、図2に示すユーザBによって使用されるクライアント端末1Bは、ユーザBの認証情報をGWアプリ100の認証情報DB146に保持している。
【0031】
アプリケーションよりサーバ2への代替アクセス要求を受けたGWアプリ100は、ユーザBの認証情報をサーバ2へ送信する。そして、サーバ2により認証されると、サーバ2がユーザBに対して提供する情報を保持するユーザ領域Bへのアクセスが可能となる。このような状態となってアプリケーションはサーバ2から機能の実行に必要な情報の提供を受けることができる。
【0032】
本実施形態では、クライアント‐サーバ間の通信の際に必要となる認証情報をクライアント端末1のGWアプリ100にて保持し、各アプリケーションからサーバ2へのアクセス処理をGWアプリ100が代替して実行する。また、GWアプリ100は、クライアント‐サーバ間の通信を効率よく行うため、サーバ2との情報の送受信を制御することも行うことができる。これにより、クライアント‐サーバ間の通信量を低減することができ、認証情報が外部へ漏れるのを防止することができる。以下、クライアント端末1に設けられるGWアプリ100の構成とこれを用いたクライアント‐サーバ間の通信処理について説明していく。
【0033】
<2.機能構成>
まず、図3に基づいて、本実施形態に係るGWアプリ100の機能構成について説明する。なお、図3は、本実施形態に係るGWアプリ100の機能構成を示すブロック図である。
【0034】
GWアプリ100は、上述したように、クライアント端末1にインストールされたアプリケーションとサーバ2とのアクセス処理を代替する。GWアプリ100は、図3に示すように、アプリ入出力インタフェース部110と、データ解析部120と、リクエスト/レスポンス変換部130と、サーバ送受信インタフェース部140とを備える。
【0035】
アプリ入出力インタフェース部110は、各アプリケーションとGWアプリ100との間で情報を送受信するためのインタフェースであって、リクエスト入力部112と、レスポンス出力部114とからなる。リクエスト入力部112は、アプリケーションから受けたサーバ2へ対するアクセス要求を、データ解析部120へ出力する。レスポンス出力部114は、データ解析部120から入力されたサーバ2からの応答を、各アプリケーションへ通知する。
【0036】
データ解析部120は、各アプリケーションとサーバ2との間で通信される情報を生成し、処理する。データ解析部120は、アプリキー認証部121と、リクエストID変換部122と、キャッシュ判断部123と、同一リクエスト保管部124と、送信リクエスト保管部125と、端末状態監視部126とを備える。
【0037】
アプリキー認証部121は、各アプリケーションからのリクエストの通信の可否を判断する。各アプリケーションは、サーバ2へのリクエストを送信する際、リクエストとともにアプリキーをGWアプリ100へ送信する。アプリキーは、サーバ2の開発元から発行される情報であり、審査を経て、アプリキーおよび使用可能なAPIレベルを示すデータが各アプリケーションに発行されている。このデータは、サーバ2の開発元によって認証子が付加されており、サーバ2の開発元以外から当該データの内容を取得することはできないものとなっている。
【0038】
一方、GWアプリ100は、かかるデータの内容を取得することができ、各アプリケーションから送信されたアプリキーにサーバ2に対してリクエストする権限があるか否かを、アプリキーDBを参照して確認することができる。アプリキーDBは、サーバ2によって更新され、通信を許可もしくは禁止されるアプリケーションのアプリキーのリストを保持している。アプリキー認証部121は、アプリキーDBに記憶されている上方に基づき、データからセキュリティレベルを確認し、アプリケーションからのリクエストの内容が呼び出し元のアプリケーションのセキュリティレベルで送信可能か否かを判定する。そして、送信可能と判定した場合、アプリキー認証部121は、送信リクエスト保管部125にアプリケーションからのリクエストを送信する。一方、送信不可と判定した場合には、リクエストの送信を拒絶する内容を、アプリ入出力インタフェース部110を介して、呼び出し元のアプリケーションへ通知する。
【0039】
リクエストID変換部122は、クライアント‐サーバ間で頻繁に送信されるリクエストを表すリクエストXMLと、リクエストXMLに固有のリクエストIDとの変換処理を行う。リクエストID変換部122は、このようなリクエストXMLとリクエストIDとを、リクエストID DBに関連付けて記憶している。リクエストID DBは、例えば、図4に示すように、リクエストXML(またはID)1221と、リクエストID1222とを保持するテーブル構成とすることができる。
【0040】
リクエストID変換部122は、アプリケーションから、クライアント‐サーバ間で頻繁に送信されるリクエストの送信を受けた場合、リクエストIDに変換してサーバ2へ送信する。これにより、リクエストXMLと比べてデータ量の小さいデータに変換してサーバ2へ送信するため、通信負荷を低減することができる。また、サーバ2からのレスポンスにリクエストIDが含まれている場合、リクエストID変換部122は、リクエストID DBを参照して、リクエストIDを、当該リクエストIDに対応するリクエストXMLに変換する。
【0041】
キャッシュ判断部123は、サーバ2からのレスポンスにキャッシュの許可情報が含まれているか否かを判断する。キャッシュ判断部123は、レスポンスにキャッシュの許可情報が含まれていると判断すると、許可されたリクエストXML、レスポンスXMLおよびそのキャッシュの有効期限をキャッシュDBに記録する。キャッシュDBは、例えば図5に示すように、許可されたリクエストXML(またはID)1231、レスポンスXML1232およびそのキャッシュの有効期限1233を保持するテーブル構成とすることができる。このように、サーバ2からのレスポンス情報をキャッシュDBに蓄積することにより、アプリケーションから同じリクエストを受けたときに、キャッシュDBを参照してレスポンスすることが可能となる。これにより、サーバ2との通信を省略することができ、通信負荷を軽減することができる。
【0042】
同一リクエスト保管部124は、GWアプリ100のキューDBに既に格納されているリクエストをアプリケーションから受けた場合に、当該リクエストを要求したアプリケーションを特定するための情報を保持して管理する。同一リクエスト保管部124は、リクエストの呼び出し元であるアプリケーションのアプリIDと、当該リクエストと同一のリクエストの送信について現在キューDBに記憶されている情報のキューインデックスとを関連付けて同一リクエストDBに記憶する。同一リクエストDBは、例えば図6に示すように、キューインデックス1241と、アプリID1242とを保持するテーブル構成とすることができる。このように、同一のリクエストをサーバ2に対して行うアプリケーションを管理することで、同一のリクエストを重複してサーバ2に送信することを防止でき、通信負荷を軽減することができる。
【0043】
送信リクエスト保管部125は、サーバ2へ送信するリクエストを保持して管理する。送信リクエスト保管部125は、アプリキー認証部121にて送信可能と判定されたリクエストを、キューDBに記憶する。キューDBは、例えば図7に示すように、キューインデックス1251と、アプリID1252と、優先度1253と、リクエストXML1254とを保持するテーブル構成とすることができる。キューインデックス1251は、キューDBに記録されたリクエストの順序を示す番号であり、アプリID1252は、リクエストの呼び出し元のアプリケーションを特定する、アプリケーションに固有のIDである。
【0044】
優先度1253は、リクエストを実行させるべき優先順位を示す値であり、値が大きいほど早急に実行することが要求されるリクエストであることを示している。また、優先度が0以下である場合は、リアルタイム性が要求されていないことを示している。例えば、図7のキューインデックス1251が「1」、「2」、「3」のリクエストは、リアルタイム性を要求するものではない。優先度は、各アプリケーションがリクエストを要求するときに合わせて設定するようにしてもよく、あるいはアプリケーションによって予め設定されていてもよく、実行したいAPIに応じて決定されるものであってもよい。キューDBに記憶されたリクエストは、端末状態監視部126の判断に基づき、サーバ2へ順次送信される。
【0045】
端末状態監視部126は、クライアント端末1の通信環境を確認する。端末状態監視部126は、例えば、クライアント端末1の電池の残量や、メモリ使用量、電波状態を確認し、サーバ2へ送信可能なデータ量を判断する。そして、端末状態監視部126は、クライアント端末1の通信環境に応じて、サーバ2へ送信するデータ量を決定する。端末状態監視部126により決定されたデータ量内のリクエストがキューDBから選択され、サーバ2へ送信される。
【0046】
リクエスト/レスポンス変換部130は、データ解析部120にて作成されたリクエストおよびサーバ2から受信したレスポンスの形式を変換する機能部であって、リクエスト合成部132と、レスポンス分解部134とを備える。リクエスト合成部132とは、データ解析部120から入力されたリクエストをマージし、サーバ送受信部インタフェース部140へ出力する。レスポンス分解部134は、サーバ送受信部インタフェース部140を介して受信したサーバ2のレスポンスを分解し、データ解析部120へ出力する。
【0047】
サーバ送受信インタフェース部140は、サーバ2とGWアプリ100との間で情報を送受信するためのインタフェースであって、リクエスト送信部142と、レスポンス受信部144とからなる。リクエスト送信部142は、リクエスト/レスポンス変換部130から入力されたリクエストをサーバ2へ送信する。また、リクエスト送信部142は、ユーザの認証情報を記憶する認証情報DB146を保持している。レスポンス受信部144は、サーバ2から受信したレスポンスを、リクエスト/レスポンス変換部130へ出力する。
【0048】
サーバ送受信インタフェース部140に設けられた認証情報DB146は、例えば図8に示すように、ユーザID1461と、クライアントID1462と、パスワード1463と、サーバURL1464とを保持するテーブル構成とすることができる。ユーザID1461は、ユーザを特定する、ユーザに固有のIDであり、クライアントID1462は、サーバ2によって決定される、クライアント端末1を特定するIDである。また、パスワード1463は、サーバ2によって決定され、クライアントIDと関連付けられた情報であり、サーバURL1464は、当該クライアント端末1からサーバ2上の自身の領域に対してAPIを実行するためのURLである。認証情報DB146に格納された情報は、GWアプリ100によって一元管理され、GWアプリ以外のクライアント端末1の各アプリケーションからは参照できない形式で保持されている。
【0049】
このように、各アプリケーションの認証情報を、アプリケーション自身ではなくGWアプリ100に保持させることにより、各アプリケーションは、GWアプリ100を介さなければサーバ2へアクセスすることができないようになっている。
【0050】
以上、本実施形態に係るGWアプリ100の機能構成について説明した。
【0051】
<3.クライアント‐サーバ間の通信処理>
次に、図9〜図11に基づいて、本実施絵形態に係るGWアプリ100を用いたクライアント‐サーバ間の通信処理について説明する。なお、図9は、アプリケーションからリクエストを受けたときの、当該アプリケーションとGWアプリ100との間で行われる情報のやり取りを示すフローチャートである。図10Aおよび図10Bは、アプリケーションからリクエストを受けたときの、GWアプリ100とサーバ2との間で行われる情報のやり取りを示すフローチャートである。図11は、GWアプリ100が複数のアプリケーションからリクエストを受けたときの、GWアプリ100の一動作例を示す説明図である。
【0052】
[アプリケーションとGWアプリとの間で行われる情報処理]
これらによって示されるクライアント‐サーバ間の通信処理は、クライアント端末1にインストールされたアプリケーションが、サーバ2と連携して機能を提供するために実行される処理である。当該処理は、まず、図9に示すように、サーバ2のAPIを実行するために、各アプリケーションがサーバ2へのリクエストをGWアプリ100へ送信することから開始される。GWアプリ100は、各アプリケーションからリクエストを受け取る(ステップS100)。サーバ2のAPIは、クライアントURLに、ヘッダとしてクライアントIDおよびパスワードをセットして、利用したいサーバ2のAPI名とその引数とで構成される、XML形式のテキスト(リクエストXML)を受信することで実行される。かかるリクエストXMLは、各アプリケーションで作成され、例えば図12、図13に示すように記述することができる。
【0053】
例えば、図12に示すリクエストXMLでは、実行させるAPI名「アプリ1」と引数xとを通知している。また、図13に示すリクエストXMLでは、実行させるAPI名「アプリ2」と引数y、zとを通知している。なお、リクエストは、このようなXML形式のテキストのみでなく、その他のデータ交換フォーマットを利用することもできる。
【0054】
ステップS100の処理は、例えば図11に示す例では、クライアント端末(例えば、ユーザBのクライアント端末1B)のアプリケーション群のアプリケーションから、リクエストXMLがGWアプリ100へ送信される処理に対応する。リクエストXMLを受信したGWアプリ100のリクエスト入力部112は、当該リクエストXMLをアプリキー認証部121へ送信する。
【0055】
次いで、アプリキー認証部121は、受信したリクエストXMLをサーバ2へ送信してもよいか否かを判定する(ステップS102)。アプリキー認証部121は、呼び出し元にアプリケーションから受信したアプリキーおよびリクエストの内容に基づいて、リクエストの通信の可否を判定する。アプリキー認証部121は、送信要求を受けたリクエストが、必要とするセキュリティレベルに満たないアプリケーションから呼び出された場合には、サーバ2への送信は不可と判定し、呼び出し元のアプリケーションへセキュリティエラーを通知する(ステップS104)。
【0056】
一方、アプリケーションから受信したデータのセキュリティレベルを確認し、リクエストの内容より呼び出し元のアプリケーションのセキュリティレベルで送信可能と判定した場合には、アプリキー認証部121は、当該リクエストの内容(リクエストXML)がキャッシュDBに記憶されているか否かを、キャッシュ判断部123に判定させる。すなわち、キャッシュ判断部123は、アプリキー認証部121から通知されたリクエストXMLでキャッシュDBをクエリし(ステップS106)、当該リクエストXMLのレスポンス情報が記憶されているか否かを確認する(ステップS108)。
【0057】
ステップS108にて、キャッシュDBに当該リクエストXMLのレスポンス情報が記憶されていると判断した場合、キャッシュ判断部123は、当該リクエストXMLに対応するキャッシュの有効期限を確認し、有効期限が過ぎていないか否かを判定する(ステップS110)。ステップS110において、キャッシュの有効期限が過ぎていないと判定された場合には、キャッシュ判断部123は、呼び出し元のアプリケーションに対して当該リクエストXMLに対するレスポンス情報(レスポンスXML)を、レスポンス出力部114を介して送信する(ステップS112)。
【0058】
一方、ステップS110にて、キャッシュの有効期限が過ぎている場合には、サーバ2へ再度アクセスし、情報を取得する必要がある。この場合、まず、キャッシュ判断部123は、キャッシュDBから当該リクエストXMLに対応するキャッシュ情報を削除する(ステップS114)。そして、ステップS106において当該リクエストXMLでリクエストID変換部122のリクエストID DBをクエリした結果に基づいて、リクエストID変換部122は、当該リクエストXMLと合致するリクエストXMLが記憶されているか否かを判定する(ステップS116)。
【0059】
リクエストID DBに合致するリクエストXMLが記憶されていると判定した場合には、リクエストID変換部122は、当該リクエストXMLをリクエストIDに変換する(ステップS118)一方、リクエストID DBに合致するリクエストXMLが記憶されていないと判定した場合には、リクエストIDへの変換は行われず、ステップS120の処理へ進む。ステップS120では、送信リクエスト保管部125にて、当該リクエストXMLでキューDBをクエリする処理が行われる。これにより、同一のリクエストが既にキューDBに記憶されているかいないを判定する。
【0060】
ステップS120にて当該リクエストXMLと同一の当該リクエストXMLがキューDBに記憶されていると判定した場合、送信リクエスト保管部125は、同一リクエスト保管部124に対して、同一リクエストDBに、当該リクエストXMLの送信処理を示すキューインデックスと、当該リクエストXMLの読み出し元のアプリIDを、同一リクエストDBに記録させる(ステップS122)。一方、ステップS120にて当該リクエストXMLと同一の当該リクエストXMLがキューDBに記憶されていないと判定した場合、送信リクエスト保管部125は、キューDBに、当該リクエスト、優先度およびアプリIDを記録する(ステップS124)。
【0061】
以上、アプリケーションからリクエストを受けたときの、当該アプリケーションとGWアプリ100との間で行われる情報のやり取りについて説明した。
【0062】
[サーバとGWアプリとの間で行われる情報処理]
次に、図10Aおよび図10Bに基づいて、GWアプリ100とサーバ2との間で行われる情報のやり取りについて説明する。まず、GWアプリ100は、サーバ2に送信するリクエストを保持するキューDBに対して、優先度が0より大きいリクエストをクエリして特定する(ステップS200)。ステップS200は、リアルタイム性の要求されるリクエストを抽出し、他のリクエストに優先して送信するために行われる。そして、優先度が0より大きいリクエストが存在するか否かを判定し(ステップS202)、存在する場合には、端末状態監視部126によりクライアント端末1の通信環境の状態が良好であるか否かを確認する(ステップS204)。
【0063】
ステップS204では、通信環境の状態として、電波環境について確認する。電波環境が良好である場合には、送信データ量が多くても通信エラーが発生する確率は低い。したがって、電波環境が良好である場合には、キューDBから最大y個のリクエストを取得して(ステップS210)、サーバ2への送信対象とする。一方、電波環境が良好ではない場合には、優先度の高いリクエストのみをサーバ2への送信対象とする。
【0064】
ステップS202に戻り、優先度の高いリクエストが抽出されなかった場合にも、端末状態監視部126によりクライアント端末1の通信環境の状態が良好であるか否かを確認する(ステップS206)。この場合、端末状態監視部126は、通信環境の状態として、メモリ使用量や、電池残量、電波環境を確認する。メモリの空き容量が少ない場合に通信を行うとユーザがクライアント端末1を操作する際の操作感が悪化してしまう。また、電池残量が十分でない場合は、優先順位の低い通信を避け、電池を節約することが望ましい。そこで、優先度の低いリクエストについては、クライアント端末1の操作感を維持することや電池を節約することを優先させて、サーバ2へは送信せず、処理を終了する。一方、通信環境が良好である場合には、キューDBに記憶されているリクエストの数と、リクエストの送信を開始する蓄積数(閾値x)とを比較して、リクエストの送信を開始するか否かを判定する(ステップS208)。
【0065】
リクエストは、通常、複数まとめて送信される。このため、キューDBに蓄積されたリクエストの数が所定数(閾値x)を超えたときに、サーバ2へのリクエストの送信処理が開始される。すなわち、ステップS208では、リクエストの送信を開始する数のリクエストがキューDBに蓄積されているか否かを確認している。ステップS208において、キューDBに蓄積されたリクエストの数が閾値x以下である場合には、サーバ2へのリクエストの送信は行わず、処理を終了する。一方、キューDBに蓄積されたリクエストの数が閾値xを超えた場合には、キューDBから最大y個のリクエストを取得して送信対象とする(ステップS210)。
【0066】
ステップS210において、キューDBから取得する最大のリクエスト数yは、後述するステップS212において、マージする最大のリクエスト数となる。送信リクエスト保管部125は、キューDBに格納されているすべてのリクエストからy個のリクエストを取得して、リクエスト合成部132へ出力する。
【0067】
なお、ステップS208の閾値xおよびステップS210のリクエスト数yは、ユーザの設定、もしくは端末の状態に応じて、適宜変更可能である。これにより、通信環境やクライアント端末1、サーバ2の状態に応じて通信状態を最適化することができる。一方、電波状態が悪い場合や、優先度の高いリクエストのデータ量が多い場合には、優先度の高いリクエストの通信エラーの確率を低くするために、優先度の低いリクエストを通信対象から除外するようにしてもよい。
【0068】
リクエスト合成部132は、送信リクエスト保管部124からキューDBのリクエストを受けると、受け取ったリクエストが複数であるか否かを確認する。そして、リクエストが複数である場合には、これらをまとめて新しいリクエストを生成する(ステップS212)。サーバ2へ送信されるリクエストが1つである場合には、例えば、図12、図13に示したリクエストXMLがそのまま、あるいはリクエストIDに変換されて、サーバ2へ送信される。一方、サーバ2へ送信されるリクエストが複数ある場合には、XMLの階層構造を利用して、複数のAPIを1つのリクエストXMLに記述して、一回の通信でサーバに通信することができる。
【0069】
例えば、図12および図13に示す2つのリクエストXMLをサーバ2へ送信するとする。このとき、2つのリクエストXMLは、例えば図14に示すように、図12のリクエストXMLを1番目に実行されるAPIとして、図13のリクエストXMLを2番目に実行されるAPIとして、記述することが可能である。これにより、サーバ2との通信回数を低減することが可能となる。リクエスト合成部132は、サーバ2へ複数のリクエストを送信する場合にはこれらをまとめたリクエストXML(集約リクエストXML)を作成して、リクエスト送信部142へ出力する。そして、リクエスト送信部142は、リクエストをサーバ2へ送信(POST)する(ステップS214)。
【0070】
その後、サーバ2はリクエストを受け取ると、リクエストXMLより実行すべきコマンドを解釈し、クライアントURLが指し示すユーザ領域に対してコマンドを実行する。そして、サーバ2は、この実行結果を示すXML形式のテキストをレスポンスXMLとして、クライアント端末1のGWアプリ100のレスポンス受信部144に送信する。レスポンス受信部144は、レスポンスXMLをレスポンス分解部134へ出力する。そして、レスポンスXMLに複数のリクエストXMLに対する応答が含まれている場合、レスポンス分解部134は、レスポンスXMLを複数のレスポンスに分解する(ステップS216)。
【0071】
ここで、サーバ2から送信されるレスポンスXMLは、例えば図15、図16に示すように記述されている。図15に示すレスポンスXMLは、図12のリクエストXMLに対する応答であり、図16に示すレスポンスXMLは、図13のリクエストXMLに対する応答である。レスポンスXMLには、アプリケーションから要求されたAPI実行の成否と、実行結果が含まれる。また、図14に示すように、複数のリクエストXMLを合成した集約リクエストXMLがサーバ2へ送信された場合には、例えば図17に示すように、各リクエストXMLに対する応答を含むレスポンスXMLを受け取る。図17のレスポンスXMLには、1番目のAPI実行の成否とその実行結果、および2番目のAPI実行の成否とその実行結果が含まれる。このように、レスポンスXMLが複数のリクエストXMLに対する応答を含む場合には、レスポンス分解部134により、各リクエストXMLに対する個々のレスポンスXMLに分解される。分解されたレスポンスXMLは、データ解析部120へ出力される。
【0072】
サーバ2から受け取ったレスポンスXMLには、APIの実行結果の他に、例えば、当該リクエストに対するレスポンスのキャッシュ可否や、リクエストXMLに対するリクエストIDの付与の要否等の情報が含まれる。データ解析部120は、これらの情報を解析して、次にアプリケーションからリクエストを受けたときのサーバ2の通信負荷を低減するための処理を実行する。
【0073】
まず、データ解析部120のキャッシュ判断部123は、リクエストに対するレスポンスのキャッシュの可否を確認する(ステップS218)。キャッシュ判断部123は、レスポンスXMLにキャッシュを許可する許可情報が含まれているかを確認し、許可情報が含まれていれば当該レスポンスXMLをキャッシュし、許可情報が含まれていなければ当該レスポンスXMLはキャッシュしない。キャッシュの許可情報が含まれているレスポンスXMLの一例を図18に示す。図18に示すように、キャッシュの許可情報は、例えばキャッシュの有効期限であり、この有効期限がレスポンスXMLに含まれている場合には、キャッシュが許可されていることを意味する。
【0074】
このように、キャッシュの許可情報を含むレスポンスXMLを受け取ったキャッシュ判断部123は、キャッシュすることを許可されたリクエストXML、レスポンスXML、そのキャッシュの有効期限をキャッシュDB(図5参照)に記録する(ステップS220)。このとき、レスポンスXMLを要求したリクエストが、XML形式で記述されたものではなく、リクエストIDによって与えられたものであった場合には、リクエストID DB(図4)を参照して、リクエストIDをリクエストXMLに変換してからキャッシュDBに記録する。なお、ステップS218において、レスポンスXMLにキャッシュの許可情報が含まれていない場合には、キャッシュすることは許可されていないため、このリクエストXMLに対するレスポンスXMLはキャッシュDBに記録されない。
【0075】
次いで、ステップS218と同様に、リクエストID変換部122により、サーバ2からのレスポンスXMLにリクエストIDが含まれているか否かを確認する(ステップS222)。リクエストIDは、サーバ2との通信負荷を低減するために、アプリケーションとサーバ2との間で頻繁にやり取りされるリクエストXMLの代わりに用いられる情報である。リクエストID変換部122は、サーバ2からのレスポンスXMLにリクエストIDが含まれていることを確認すると、当該リクエストIDと、そのリクエストIDに対応するリクエストXMLをリクエストID DB(図4参照)に記録する(ステップS224)。
【0076】
リクエストIDを含むレスポンスXMLの一例を図19に示す。図19に示すように、リクエストIDは、サーバ2から指定される情報として、レスポンスXML内に記述されている。リクエストID変換部122は、このようにレスポンスXMLに含まれるリクエストIDをリクエストID DBに記録することにより、その後アプリケーションから同一のリクエストを受けた場合には、リクエストIDに変換してサーバ2へ送信することができる。なお、ステップS222において、レスポンスXMLにリクエストIDが含まれていない場合には、このリクエストXMLに対するリクエストIDはなく、リクエストID DBにも記録されない。
【0077】
さらに、同一リクエスト保管部124は、当該リクエストXMLと同一のリクエストの送信を要求した他のクライアント端末1が存在するか否かを確認する(ステップS226)。同一リクエスト保管部124は、同一リクエストDBを参照して、当該リクエストXMLの送信処理と関連付けられたキューインデックスが同一リクエストDBに存在するか否かを確認する。そして、同一のキューインデックスが存在する場合には、当該キューインデックスを関連付けられたアプリIDを、レスポンスXMLの出力先に含める(ステップS228)。そして、同一リクエスト保管部124は、同一リクエストDBにより、実行されたインデックスを削除する(ステップS230)。
【0078】
なお、ステップS226にて、同一リクエスト保管部124により、当該リクエストXMLと同一のリクエストの送信を要求した他のクライアント端末1が存在しないと判定された場合には、ステップS228、S230の処理は行われず、ステップS232の処理が実行される。
【0079】
ステップS218〜S230までの、レスポンスXMLの解析が終了すると、データ解析部120は、レスポンス出力部114を介して呼び出し元のアプリケーションにレスポンスXMLを送信する(ステップS232)。その後、送信リクエスト保管部125は、実行されたキューインデックスとこれに関連付けられた情報をキューDBから削除する(ステップS234)。
【0080】
以上、図9から図11に示したように、クライアント‐サーバ間の通信が行われる。このように、ユーザ毎に認証情報を必要とするサーバのAPIを利用して機能を提供する、クライアントにインストールされたアプリケーションは、従来ではアプリケーション毎に、ユーザに対し認証情報の入力を要求し、その認証情報を各々のアプリケーションが保持しておく必要があった。これは、ユーザにとって面倒な操作を与えるだけでなく、サーバの認証情報を保持する箇所が多くなることや、第三ベンダにユーザはサーバの認証情報をあたえることから、セキュリティ面の問題が存在した。また、各アプリケーションが個々に同一のサーバに対して通信を行うため非効率であり、サーバの通信コストおよび負荷の増加、クライアントの電池寿命に影響していた。
【0081】
そこで、本実施形態のGWアプリを利用することにより、サーバは第三ベンダにユーザの認証情報を漏らすとこなく、APIを提供することができる。また、クライアント端末内でリクエストの内容をまとめることで、セッションリソースを節約することができ、サーバの通信量を減らすことができる。ユーザにとっては認証情報を守れるほか、対応アプリ毎にログインする手間が省け、また端末の電池やメモリに応じた動作をするため快適に各アプリを扱うことが可能になる。クライアントからの通信量が減ることにより、ユーザは通信料の負担も軽減される。アプリを作成する第三ベンダにとってはサーバとの通信や認証情報を保持する部分の検討が不要になり、開発を容易に行うことができるようになる。
【0082】
なお、リクエストをキューDBから取得してサーバ2との通信を行う処理は、通常、マルチスレッドによって並列に処理される。GWアプリ100が大量のリクエストを複数まとめてサーバ2へ送信している際に優先度の高いリクエストがキューに入った場合に、シングルスレッドでは対応できないためである。なお、スレッド数が多いほどパフォーマンスは向上するが、メモリや電池を消費するため、GWアプリ100は、スレッドの数をクライアント端末1の空きメモリ残量、電池の使用量に応じて動的に変化させることができる。
【0083】
GWアプリ100の認証情報DBに格納されたデータは、GWアプリ100以外からの参照はできないが、各アプリケーションは、そのデータをリクエストXMLの中に入力したい場合がある。このため、GWアプリ100は各アプリケーションに、GWアプリ100内で認証情報DB146のデータと自動変換するための、ある決まった文字列を提供する。各アプリケーションは、リクエストXMLに含めたい認証情報DB146内のデータがある場合に、その決まった文字列を該当箇所に記述しておく。GWアプリ100がそのリクエストを受け取ると、リクエスト送信部142にて、その文字列と認証情報DB146内の希望されているデータを入れ替える。これにより、認証情報DB146内のデータは、GWアプリ100以外に漏れることなく、各アプリケーションから使用することが可能となる。
【0084】
また、図20に示すように、GWアプリ100は認証情報DB146に1ユーザのみでなく、多ユーザの認証情報を管理することができる。図20は、多ユーザの認証情報を管理する場合の認証情報DB146のテーブル構成例である。また、各ユーザのログイン/ログオフといった状態を、GWアプリ100が提供するAPIによって切り替えることが可能である。
【0085】
図21に複数ユーザがログインしている状態でリクエストXMLが渡された時の動作例を示す。図21に示すように、GWアプリ100は、各アプリケーションからリクエストXMLを受け取ると、ログインしているユーザの認証情報を用いてサーバに対しリクエストを行う。GWアプリ100において複数のユーザがログイン状態に設定されている場合、GWアプリ100は各アプリケーションからリクエストXMLを受け取ると、そのリクエストXMLをそれぞれの認証情報を利用して、サーバ2上の各ユーザの領域に対してAPIを実行する。GWアプリ100は各レスポンスをまとめて一つのレスポンスXMLとして呼び出し元のアプリケーションに返す。
【0086】
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
【0087】
例えば、上記実施形態では、GWアプリ100は、アプリケーションからのリクエストに認証情報を付加してサーバ2へ送信したが、本発明はかかる例に限定されない。クライアント端末1内のアプリケーションがリクエストするサーバ2のAPIには、ユーザの認証情報を必要としないものもある。例えば、GWアプリ100は、複数のユーザによる複数のアプリケーションのリクエストをまとめて、各ユーザの個人領域ではなくサーバ2の共通領域に対してAPIを実行することも可能である。このように、本発明のGWアプリ100は、複数のアプリケーションからのリクエストを束ねて効率よくサーバ2と通信できるよう制御する。
【符号の説明】
【0088】
1 クライアント端末
2 サーバ
100 GWアプリ
110 アプリ入出力インタフェース部
120 データ解析部
121 アプリキー認証部
122 リクエストID変換部
123 キャッシュ判断部
124 同一リクエスト保管部
125 送信リクエスト保管部
126 端末状態監視部
130 リクエスト/レスポンス変換部
140 サーバ送受信インタフェース部140
146 認証情報DB
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法およびコンピュータ読み取り可能な記録媒体に関する。
【背景技術】
【0002】
近年、モバイル情報端末において、パーソナルコンピュータのように、アプリケーションを追加してユーザ毎にカスタマイズすることの可能なシステムが注目されている。ここでいうアプリケーションには、第三ベンダが開発するアプリケーションも含まれる。また、個々のアプリケーションとサーバ側との親密性はより高まってきており、同一クライアントに、サーバを利用して処理を実行するアプリケーションが複数種類存在することも多い。
【0003】
ユーザ毎に認証情報を必要とするサーバとアプリケーションとが連携する場合、アプリケーション毎にユーザに対して認証情報の入力を要求し、シングルサインインのためには、その認証情報を保持しておく必要がある。これは、ユーザにとって面倒な操作に他ならない。また、サーバの認証情報を保持する領域が増加することや、第三ベンダにサーバの認証情報が与えられることからセキュリティ面の問題も存在する。さらに、各アプリケーションが個々に同一サーバに対して通信を行うことは非効率であり、サーバの通信コストや負荷が増加したり、クライアント端末の電池寿命に影響を及ぼしたりすることも考えられる。
【0004】
サーバの通信コストや負荷を軽減する方法として、例えば、特許文献1には、ネットワーク上にゲートウェイ装置を設け、各クライアントからのセッション制御用メッセージを集約して新しいメッセージを生成し、サーバに送信することで、セッションリソースを低減させる通信制御方法が開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2009−218631号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかし、上記特許文献1のようにクライアントとサーバとの間にゲートウェイ装置を配置することは有効であるが、クライアントの各アプリケーションが個々にサーバと通信することには変わりなく、クライアントから送信される通信量は削減されないという問題があった。このようなクライアントからの通信量は、端末のメモリや電池、およびユーザの通信コスト等に影響することになる。
【0007】
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、クライアント‐サーバ間での情報の送受信を制御し、クライアント‐サーバ間の通信量を低減することが可能な、新規かつ改良された情報処理装置、情報処理方法およびコンピュータ読み取り可能な記録媒体を提供することにある。
【課題を解決するための手段】
【0008】
上記課題を解決するために、本発明のある観点によれば、ネットワークを介してデータを保持するサーバと接続されたクライアント端末に設けられ、クライアント端末内の1または複数のアプリケーションからのリクエストを受けて、サーバとの情報の送受信を制御する、情報処理装置が提供される。
【0009】
情報処理装置は、サーバにアクセスするためのユーザの認証情報を保持する認証情報記憶部と、クライアント端末内のアプリケーションからのリクエストに基づいて、リクエストに当該クライアント端末のユーザの認証情報を付加して、サーバへ送信するリクエスト送信部と、を備えることができる。
【0010】
アプリケーションから受け取るリクエストには、サーバへ送信する優先順位を示す優先情報が含まれており、リクエスト送信部は、優先情報に基づいて、リクエストをサーバへ送信してもよい。
【0011】
また、リクエスト送信部は、優先情報より優先順位の低いリクエストは、リクエスト合成部により集約してサーバへ送信してもよい。
【0012】
情報処理装置は、複数のアプリケーションからサーバに対する複数のリクエストを受け取ったとき、複数のリクエストを合成して集約リクエストを生成するリクエスト合成部と、集約リクエストに対するサーバからの集約レスポンスを、各リクエストに対応するレスポンスに分解するレスポンス分解部と、を備えることもできる。
【0013】
アプリケーションからのリクエストに対するサーバからのレスポンスを保持するレスポンス蓄積部と、レスポンス蓄積部に保持されたレスポンスを管理するキャッシュ判断部と、を備え、キャッシュ判断部は、アプリケーションから、レスポンス蓄積部に蓄積されたレスポンスをサーバから取得するリクエストを受けたとき、レスポンス蓄積部からレスポンスを取得してアプリケーションに送信することもできる。
【0014】
レスポンス蓄積部は、蓄積された各レスポンスに対して当該レスポンスを保持する有効期限情報を記憶しており、キャッシュ判断部は、有効期限情報に基づいて、アプリケーションからのリクエストに対するレスポンスをレスポンス蓄積部から取得するか否かを判断してもよい。
【0015】
少なくともリクエスト端末の通信環境の良否、電池残量またはメモリ残量を監視する端末状態監視部をさらに備え、リクエスト送信部は、端末状態監視部によるリクエスト端末の監視結果に基づいて、リクエストを送信してもよい。
【0016】
リクエスト送信部は、複数のアプリケーションからサーバへのリクエストに所定の文字列が含まれているとき、所定の文字列を当該文字列に対応する情報に変換して、サーバへ送信してもよい。
【0017】
認証情報記憶部には、複数ユーザの認証情報が記憶され、リクエスト送信部は、複数のアプリケーションからリクエストを受け取ったとき、クライアント端末にログインしているユーザのサーバ上の領域に対して、リクエストを送信することもできる。
【0018】
また、アプリケーションからリクエストを受け取った際に、アプリケーションおよびリクエストの内容に基づいて、当該リクエストのサーバへの送信の実行可否を判断する、実行判断部をさらに備えることもできる。
【0019】
また、上記課題を解決するために、本発明の別の観点によれば、ネットワークを介してデータを保持するサーバと接続され、クライアント端末内の1または複数のアプリケーションからのリクエストを受けて、サーバとの情報の送受信を制御する、情報処理方法が提供される。
【0020】
さらに、上記課題を解決するために、本発明の別の観点によれば、コンピュータに、ネットワークを介してデータを保持するサーバと接続されたクライアント端末に設けられる、クライアント端末内の1または複数のアプリケーションからのリクエストを受けて、サーバとの情報の送受信を制御する、情報処理装置として機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体が提供される。
【発明の効果】
【0021】
以上説明したように本発明によれば、クライアント‐サーバ間での情報の送受信を制御し、クライアント‐サーバ間の通信量を低減することが可能な、情報処理装置、情報処理方法およびコンピュータ読み取り可能な記録媒体を提供することができる。
【図面の簡単な説明】
【0022】
【図1】本発明の実施形態に係るシステムの概略構成を示す概念図である。
【図2】同実施形態にかかるクライアント‐サーバ構成の一例を示す説明図である。
【図3】同実施形態に係るGWアプリの機能構成を示すブロック図である。
【図4】リクエストID DBのテーブル構成例を示す説明図である。
【図5】キャッシュDBのテーブル構成例を示す説明図である。
【図6】同一リクエストDBのテーブル構成例を示す説明図である。
【図7】キューDBのテーブル構成例を示す説明図である。
【図8】認証情報DBのテーブル構成例を示す説明図である。
【図9】アプリケーションからリクエストを受けたときの、当該アプリケーションとGWアプリとの間で行われる情報のやり取りを示すフローチャートである。
【図10A】アプリケーションからリクエストを受けたときの、GWアプリとサーバとの間で行われる情報のやり取りを示すフローチャートである。
【図10B】アプリケーションからリクエストを受けたときの、GWアプリとサーバとの間で行われる情報のやり取りを示すフローチャートである。
【図11】GWアプリが複数のアプリケーションからリクエストを受けたときの、GWアプリの一動作例を示す説明図である。
【図12】リクエストXMLの一例を示す説明図である。
【図13】リクエストXMLの他の一例を示す説明図である。
【図14】集約リクエストXMLの一例を示す説明図である。
【図15】レスポンスXMLの一例を示す説明図である。
【図16】レスポンスXMLの他の一例を示す説明図である。
【図17】集約レスポンスXMLの一例を示す説明図である。
【図18】キャッシュの許可情報が含まれるレスポンスXMLの一例を示す説明図である。
【図19】リクエストIDが含まれるレスポンスXMLの一例を示す説明図である。
【図20】多ユーザの認証情報を管理する場合の認証情報DBのテーブル構成例を示す説明図である。
【図21】複数ユーザがログインしている状態でリクエストXMLが渡された時の動作例を示す説明図である。
【発明を実施するための形態】
【0023】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【0024】
なお、説明は以下の順序で行うものとする。
1.システム構成例
2.機能構成
3.クライアント‐サーバ間の通信処理
【0025】
<1.システム構成例>
まず、図1および図2を参照して、本発明の実施形態に係るシステムの概略構成について説明する。なお、図1は、本実施形態に係るシステムの概略構成を示す概念図である。図2は、本実施形態に係るクライアント‐サーバ構成の一例を示す説明図である。
【0026】
本実施形態に係るシステムは、1または複数のクライアント端末1と、各クライアント端末1へデータを提供するサーバ2とが、ネットワーク10を介して接続されている。例えば、図1に示すように、4つのクライアント端末1A〜1Dとサーバ2とが接続されたデータ同期システムを構築することができる。クライアント端末1とサーバ2との通信は、無線通信であってもよく、有線通信であってもよい。また、クライアント端末1A〜1Dのユーザは、それぞれ異なるユーザであってもよく、同一ユーザであってもよい。
【0027】
クライアント端末1は、サーバ2から所望のデータを取得可能な情報処理端末であって、例えば、携帯電話やPDA(Personal Digital Assistants)等の通信端末や、コンピュータ、テレビジョン受像機等である。クライアント端末1は、サーバ2から取得したデータを用いて、アプリケーションの機能を実現する。サーバ2は、データを保持し、クライアント1からの要求によりデータを提供する。
【0028】
本実施形態のクライアント端末1は、ユーザ毎に、アプリケーションを自由に追加して、カスタマイズ可能な端末を想定している。これらのアプリケーションには、サーバと通信することによりその機能を実現するものもある。このようなアプリケーションは、サーバが提供するAPI(Application Program Interface)を用いることによって、サーバ2を提供しているベンダのみならず第三ベンダによっても開発することができるものである。
【0029】
本実施形態に係るクライアント端末1とサーバ2との間で行われる通信は、図2に示すように行われる。例えば、ユーザBのクライアント端末1Bに、アプリA、アプリB、アプリC、アプリD、・・・のような複数のアプリケーションがインストールされているとする。各アプリケーションは、サーバ2の機能をネットワーク10経由で利用することで、クライアント端末1Bにその機能を提供することができる。このため、アプリケーションの機能を実現させるためには、サーバ2と通信して、必要な情報の提供を受ける必要がある。
【0030】
サーバ2は、登録ユーザ毎に異なるサービスを提供するサーバである。ユーザがサーバ2より当該サービスを受けるためには、ユーザアカウントによる認証が必要である。ここで、本実施形態に係るクライアント端末1Bは、アプリケーションによるサーバ2へのアクセスを代替して行うゲートウェイアプリケーション(以下、「GWアプリ」と称する。)100を備える。GWアプリ100は、アプリA〜Dの代わりにサーバ2へアクセスするための認証情報を認証情報DB146に保持している。例えば、図2に示すユーザBによって使用されるクライアント端末1Bは、ユーザBの認証情報をGWアプリ100の認証情報DB146に保持している。
【0031】
アプリケーションよりサーバ2への代替アクセス要求を受けたGWアプリ100は、ユーザBの認証情報をサーバ2へ送信する。そして、サーバ2により認証されると、サーバ2がユーザBに対して提供する情報を保持するユーザ領域Bへのアクセスが可能となる。このような状態となってアプリケーションはサーバ2から機能の実行に必要な情報の提供を受けることができる。
【0032】
本実施形態では、クライアント‐サーバ間の通信の際に必要となる認証情報をクライアント端末1のGWアプリ100にて保持し、各アプリケーションからサーバ2へのアクセス処理をGWアプリ100が代替して実行する。また、GWアプリ100は、クライアント‐サーバ間の通信を効率よく行うため、サーバ2との情報の送受信を制御することも行うことができる。これにより、クライアント‐サーバ間の通信量を低減することができ、認証情報が外部へ漏れるのを防止することができる。以下、クライアント端末1に設けられるGWアプリ100の構成とこれを用いたクライアント‐サーバ間の通信処理について説明していく。
【0033】
<2.機能構成>
まず、図3に基づいて、本実施形態に係るGWアプリ100の機能構成について説明する。なお、図3は、本実施形態に係るGWアプリ100の機能構成を示すブロック図である。
【0034】
GWアプリ100は、上述したように、クライアント端末1にインストールされたアプリケーションとサーバ2とのアクセス処理を代替する。GWアプリ100は、図3に示すように、アプリ入出力インタフェース部110と、データ解析部120と、リクエスト/レスポンス変換部130と、サーバ送受信インタフェース部140とを備える。
【0035】
アプリ入出力インタフェース部110は、各アプリケーションとGWアプリ100との間で情報を送受信するためのインタフェースであって、リクエスト入力部112と、レスポンス出力部114とからなる。リクエスト入力部112は、アプリケーションから受けたサーバ2へ対するアクセス要求を、データ解析部120へ出力する。レスポンス出力部114は、データ解析部120から入力されたサーバ2からの応答を、各アプリケーションへ通知する。
【0036】
データ解析部120は、各アプリケーションとサーバ2との間で通信される情報を生成し、処理する。データ解析部120は、アプリキー認証部121と、リクエストID変換部122と、キャッシュ判断部123と、同一リクエスト保管部124と、送信リクエスト保管部125と、端末状態監視部126とを備える。
【0037】
アプリキー認証部121は、各アプリケーションからのリクエストの通信の可否を判断する。各アプリケーションは、サーバ2へのリクエストを送信する際、リクエストとともにアプリキーをGWアプリ100へ送信する。アプリキーは、サーバ2の開発元から発行される情報であり、審査を経て、アプリキーおよび使用可能なAPIレベルを示すデータが各アプリケーションに発行されている。このデータは、サーバ2の開発元によって認証子が付加されており、サーバ2の開発元以外から当該データの内容を取得することはできないものとなっている。
【0038】
一方、GWアプリ100は、かかるデータの内容を取得することができ、各アプリケーションから送信されたアプリキーにサーバ2に対してリクエストする権限があるか否かを、アプリキーDBを参照して確認することができる。アプリキーDBは、サーバ2によって更新され、通信を許可もしくは禁止されるアプリケーションのアプリキーのリストを保持している。アプリキー認証部121は、アプリキーDBに記憶されている上方に基づき、データからセキュリティレベルを確認し、アプリケーションからのリクエストの内容が呼び出し元のアプリケーションのセキュリティレベルで送信可能か否かを判定する。そして、送信可能と判定した場合、アプリキー認証部121は、送信リクエスト保管部125にアプリケーションからのリクエストを送信する。一方、送信不可と判定した場合には、リクエストの送信を拒絶する内容を、アプリ入出力インタフェース部110を介して、呼び出し元のアプリケーションへ通知する。
【0039】
リクエストID変換部122は、クライアント‐サーバ間で頻繁に送信されるリクエストを表すリクエストXMLと、リクエストXMLに固有のリクエストIDとの変換処理を行う。リクエストID変換部122は、このようなリクエストXMLとリクエストIDとを、リクエストID DBに関連付けて記憶している。リクエストID DBは、例えば、図4に示すように、リクエストXML(またはID)1221と、リクエストID1222とを保持するテーブル構成とすることができる。
【0040】
リクエストID変換部122は、アプリケーションから、クライアント‐サーバ間で頻繁に送信されるリクエストの送信を受けた場合、リクエストIDに変換してサーバ2へ送信する。これにより、リクエストXMLと比べてデータ量の小さいデータに変換してサーバ2へ送信するため、通信負荷を低減することができる。また、サーバ2からのレスポンスにリクエストIDが含まれている場合、リクエストID変換部122は、リクエストID DBを参照して、リクエストIDを、当該リクエストIDに対応するリクエストXMLに変換する。
【0041】
キャッシュ判断部123は、サーバ2からのレスポンスにキャッシュの許可情報が含まれているか否かを判断する。キャッシュ判断部123は、レスポンスにキャッシュの許可情報が含まれていると判断すると、許可されたリクエストXML、レスポンスXMLおよびそのキャッシュの有効期限をキャッシュDBに記録する。キャッシュDBは、例えば図5に示すように、許可されたリクエストXML(またはID)1231、レスポンスXML1232およびそのキャッシュの有効期限1233を保持するテーブル構成とすることができる。このように、サーバ2からのレスポンス情報をキャッシュDBに蓄積することにより、アプリケーションから同じリクエストを受けたときに、キャッシュDBを参照してレスポンスすることが可能となる。これにより、サーバ2との通信を省略することができ、通信負荷を軽減することができる。
【0042】
同一リクエスト保管部124は、GWアプリ100のキューDBに既に格納されているリクエストをアプリケーションから受けた場合に、当該リクエストを要求したアプリケーションを特定するための情報を保持して管理する。同一リクエスト保管部124は、リクエストの呼び出し元であるアプリケーションのアプリIDと、当該リクエストと同一のリクエストの送信について現在キューDBに記憶されている情報のキューインデックスとを関連付けて同一リクエストDBに記憶する。同一リクエストDBは、例えば図6に示すように、キューインデックス1241と、アプリID1242とを保持するテーブル構成とすることができる。このように、同一のリクエストをサーバ2に対して行うアプリケーションを管理することで、同一のリクエストを重複してサーバ2に送信することを防止でき、通信負荷を軽減することができる。
【0043】
送信リクエスト保管部125は、サーバ2へ送信するリクエストを保持して管理する。送信リクエスト保管部125は、アプリキー認証部121にて送信可能と判定されたリクエストを、キューDBに記憶する。キューDBは、例えば図7に示すように、キューインデックス1251と、アプリID1252と、優先度1253と、リクエストXML1254とを保持するテーブル構成とすることができる。キューインデックス1251は、キューDBに記録されたリクエストの順序を示す番号であり、アプリID1252は、リクエストの呼び出し元のアプリケーションを特定する、アプリケーションに固有のIDである。
【0044】
優先度1253は、リクエストを実行させるべき優先順位を示す値であり、値が大きいほど早急に実行することが要求されるリクエストであることを示している。また、優先度が0以下である場合は、リアルタイム性が要求されていないことを示している。例えば、図7のキューインデックス1251が「1」、「2」、「3」のリクエストは、リアルタイム性を要求するものではない。優先度は、各アプリケーションがリクエストを要求するときに合わせて設定するようにしてもよく、あるいはアプリケーションによって予め設定されていてもよく、実行したいAPIに応じて決定されるものであってもよい。キューDBに記憶されたリクエストは、端末状態監視部126の判断に基づき、サーバ2へ順次送信される。
【0045】
端末状態監視部126は、クライアント端末1の通信環境を確認する。端末状態監視部126は、例えば、クライアント端末1の電池の残量や、メモリ使用量、電波状態を確認し、サーバ2へ送信可能なデータ量を判断する。そして、端末状態監視部126は、クライアント端末1の通信環境に応じて、サーバ2へ送信するデータ量を決定する。端末状態監視部126により決定されたデータ量内のリクエストがキューDBから選択され、サーバ2へ送信される。
【0046】
リクエスト/レスポンス変換部130は、データ解析部120にて作成されたリクエストおよびサーバ2から受信したレスポンスの形式を変換する機能部であって、リクエスト合成部132と、レスポンス分解部134とを備える。リクエスト合成部132とは、データ解析部120から入力されたリクエストをマージし、サーバ送受信部インタフェース部140へ出力する。レスポンス分解部134は、サーバ送受信部インタフェース部140を介して受信したサーバ2のレスポンスを分解し、データ解析部120へ出力する。
【0047】
サーバ送受信インタフェース部140は、サーバ2とGWアプリ100との間で情報を送受信するためのインタフェースであって、リクエスト送信部142と、レスポンス受信部144とからなる。リクエスト送信部142は、リクエスト/レスポンス変換部130から入力されたリクエストをサーバ2へ送信する。また、リクエスト送信部142は、ユーザの認証情報を記憶する認証情報DB146を保持している。レスポンス受信部144は、サーバ2から受信したレスポンスを、リクエスト/レスポンス変換部130へ出力する。
【0048】
サーバ送受信インタフェース部140に設けられた認証情報DB146は、例えば図8に示すように、ユーザID1461と、クライアントID1462と、パスワード1463と、サーバURL1464とを保持するテーブル構成とすることができる。ユーザID1461は、ユーザを特定する、ユーザに固有のIDであり、クライアントID1462は、サーバ2によって決定される、クライアント端末1を特定するIDである。また、パスワード1463は、サーバ2によって決定され、クライアントIDと関連付けられた情報であり、サーバURL1464は、当該クライアント端末1からサーバ2上の自身の領域に対してAPIを実行するためのURLである。認証情報DB146に格納された情報は、GWアプリ100によって一元管理され、GWアプリ以外のクライアント端末1の各アプリケーションからは参照できない形式で保持されている。
【0049】
このように、各アプリケーションの認証情報を、アプリケーション自身ではなくGWアプリ100に保持させることにより、各アプリケーションは、GWアプリ100を介さなければサーバ2へアクセスすることができないようになっている。
【0050】
以上、本実施形態に係るGWアプリ100の機能構成について説明した。
【0051】
<3.クライアント‐サーバ間の通信処理>
次に、図9〜図11に基づいて、本実施絵形態に係るGWアプリ100を用いたクライアント‐サーバ間の通信処理について説明する。なお、図9は、アプリケーションからリクエストを受けたときの、当該アプリケーションとGWアプリ100との間で行われる情報のやり取りを示すフローチャートである。図10Aおよび図10Bは、アプリケーションからリクエストを受けたときの、GWアプリ100とサーバ2との間で行われる情報のやり取りを示すフローチャートである。図11は、GWアプリ100が複数のアプリケーションからリクエストを受けたときの、GWアプリ100の一動作例を示す説明図である。
【0052】
[アプリケーションとGWアプリとの間で行われる情報処理]
これらによって示されるクライアント‐サーバ間の通信処理は、クライアント端末1にインストールされたアプリケーションが、サーバ2と連携して機能を提供するために実行される処理である。当該処理は、まず、図9に示すように、サーバ2のAPIを実行するために、各アプリケーションがサーバ2へのリクエストをGWアプリ100へ送信することから開始される。GWアプリ100は、各アプリケーションからリクエストを受け取る(ステップS100)。サーバ2のAPIは、クライアントURLに、ヘッダとしてクライアントIDおよびパスワードをセットして、利用したいサーバ2のAPI名とその引数とで構成される、XML形式のテキスト(リクエストXML)を受信することで実行される。かかるリクエストXMLは、各アプリケーションで作成され、例えば図12、図13に示すように記述することができる。
【0053】
例えば、図12に示すリクエストXMLでは、実行させるAPI名「アプリ1」と引数xとを通知している。また、図13に示すリクエストXMLでは、実行させるAPI名「アプリ2」と引数y、zとを通知している。なお、リクエストは、このようなXML形式のテキストのみでなく、その他のデータ交換フォーマットを利用することもできる。
【0054】
ステップS100の処理は、例えば図11に示す例では、クライアント端末(例えば、ユーザBのクライアント端末1B)のアプリケーション群のアプリケーションから、リクエストXMLがGWアプリ100へ送信される処理に対応する。リクエストXMLを受信したGWアプリ100のリクエスト入力部112は、当該リクエストXMLをアプリキー認証部121へ送信する。
【0055】
次いで、アプリキー認証部121は、受信したリクエストXMLをサーバ2へ送信してもよいか否かを判定する(ステップS102)。アプリキー認証部121は、呼び出し元にアプリケーションから受信したアプリキーおよびリクエストの内容に基づいて、リクエストの通信の可否を判定する。アプリキー認証部121は、送信要求を受けたリクエストが、必要とするセキュリティレベルに満たないアプリケーションから呼び出された場合には、サーバ2への送信は不可と判定し、呼び出し元のアプリケーションへセキュリティエラーを通知する(ステップS104)。
【0056】
一方、アプリケーションから受信したデータのセキュリティレベルを確認し、リクエストの内容より呼び出し元のアプリケーションのセキュリティレベルで送信可能と判定した場合には、アプリキー認証部121は、当該リクエストの内容(リクエストXML)がキャッシュDBに記憶されているか否かを、キャッシュ判断部123に判定させる。すなわち、キャッシュ判断部123は、アプリキー認証部121から通知されたリクエストXMLでキャッシュDBをクエリし(ステップS106)、当該リクエストXMLのレスポンス情報が記憶されているか否かを確認する(ステップS108)。
【0057】
ステップS108にて、キャッシュDBに当該リクエストXMLのレスポンス情報が記憶されていると判断した場合、キャッシュ判断部123は、当該リクエストXMLに対応するキャッシュの有効期限を確認し、有効期限が過ぎていないか否かを判定する(ステップS110)。ステップS110において、キャッシュの有効期限が過ぎていないと判定された場合には、キャッシュ判断部123は、呼び出し元のアプリケーションに対して当該リクエストXMLに対するレスポンス情報(レスポンスXML)を、レスポンス出力部114を介して送信する(ステップS112)。
【0058】
一方、ステップS110にて、キャッシュの有効期限が過ぎている場合には、サーバ2へ再度アクセスし、情報を取得する必要がある。この場合、まず、キャッシュ判断部123は、キャッシュDBから当該リクエストXMLに対応するキャッシュ情報を削除する(ステップS114)。そして、ステップS106において当該リクエストXMLでリクエストID変換部122のリクエストID DBをクエリした結果に基づいて、リクエストID変換部122は、当該リクエストXMLと合致するリクエストXMLが記憶されているか否かを判定する(ステップS116)。
【0059】
リクエストID DBに合致するリクエストXMLが記憶されていると判定した場合には、リクエストID変換部122は、当該リクエストXMLをリクエストIDに変換する(ステップS118)一方、リクエストID DBに合致するリクエストXMLが記憶されていないと判定した場合には、リクエストIDへの変換は行われず、ステップS120の処理へ進む。ステップS120では、送信リクエスト保管部125にて、当該リクエストXMLでキューDBをクエリする処理が行われる。これにより、同一のリクエストが既にキューDBに記憶されているかいないを判定する。
【0060】
ステップS120にて当該リクエストXMLと同一の当該リクエストXMLがキューDBに記憶されていると判定した場合、送信リクエスト保管部125は、同一リクエスト保管部124に対して、同一リクエストDBに、当該リクエストXMLの送信処理を示すキューインデックスと、当該リクエストXMLの読み出し元のアプリIDを、同一リクエストDBに記録させる(ステップS122)。一方、ステップS120にて当該リクエストXMLと同一の当該リクエストXMLがキューDBに記憶されていないと判定した場合、送信リクエスト保管部125は、キューDBに、当該リクエスト、優先度およびアプリIDを記録する(ステップS124)。
【0061】
以上、アプリケーションからリクエストを受けたときの、当該アプリケーションとGWアプリ100との間で行われる情報のやり取りについて説明した。
【0062】
[サーバとGWアプリとの間で行われる情報処理]
次に、図10Aおよび図10Bに基づいて、GWアプリ100とサーバ2との間で行われる情報のやり取りについて説明する。まず、GWアプリ100は、サーバ2に送信するリクエストを保持するキューDBに対して、優先度が0より大きいリクエストをクエリして特定する(ステップS200)。ステップS200は、リアルタイム性の要求されるリクエストを抽出し、他のリクエストに優先して送信するために行われる。そして、優先度が0より大きいリクエストが存在するか否かを判定し(ステップS202)、存在する場合には、端末状態監視部126によりクライアント端末1の通信環境の状態が良好であるか否かを確認する(ステップS204)。
【0063】
ステップS204では、通信環境の状態として、電波環境について確認する。電波環境が良好である場合には、送信データ量が多くても通信エラーが発生する確率は低い。したがって、電波環境が良好である場合には、キューDBから最大y個のリクエストを取得して(ステップS210)、サーバ2への送信対象とする。一方、電波環境が良好ではない場合には、優先度の高いリクエストのみをサーバ2への送信対象とする。
【0064】
ステップS202に戻り、優先度の高いリクエストが抽出されなかった場合にも、端末状態監視部126によりクライアント端末1の通信環境の状態が良好であるか否かを確認する(ステップS206)。この場合、端末状態監視部126は、通信環境の状態として、メモリ使用量や、電池残量、電波環境を確認する。メモリの空き容量が少ない場合に通信を行うとユーザがクライアント端末1を操作する際の操作感が悪化してしまう。また、電池残量が十分でない場合は、優先順位の低い通信を避け、電池を節約することが望ましい。そこで、優先度の低いリクエストについては、クライアント端末1の操作感を維持することや電池を節約することを優先させて、サーバ2へは送信せず、処理を終了する。一方、通信環境が良好である場合には、キューDBに記憶されているリクエストの数と、リクエストの送信を開始する蓄積数(閾値x)とを比較して、リクエストの送信を開始するか否かを判定する(ステップS208)。
【0065】
リクエストは、通常、複数まとめて送信される。このため、キューDBに蓄積されたリクエストの数が所定数(閾値x)を超えたときに、サーバ2へのリクエストの送信処理が開始される。すなわち、ステップS208では、リクエストの送信を開始する数のリクエストがキューDBに蓄積されているか否かを確認している。ステップS208において、キューDBに蓄積されたリクエストの数が閾値x以下である場合には、サーバ2へのリクエストの送信は行わず、処理を終了する。一方、キューDBに蓄積されたリクエストの数が閾値xを超えた場合には、キューDBから最大y個のリクエストを取得して送信対象とする(ステップS210)。
【0066】
ステップS210において、キューDBから取得する最大のリクエスト数yは、後述するステップS212において、マージする最大のリクエスト数となる。送信リクエスト保管部125は、キューDBに格納されているすべてのリクエストからy個のリクエストを取得して、リクエスト合成部132へ出力する。
【0067】
なお、ステップS208の閾値xおよびステップS210のリクエスト数yは、ユーザの設定、もしくは端末の状態に応じて、適宜変更可能である。これにより、通信環境やクライアント端末1、サーバ2の状態に応じて通信状態を最適化することができる。一方、電波状態が悪い場合や、優先度の高いリクエストのデータ量が多い場合には、優先度の高いリクエストの通信エラーの確率を低くするために、優先度の低いリクエストを通信対象から除外するようにしてもよい。
【0068】
リクエスト合成部132は、送信リクエスト保管部124からキューDBのリクエストを受けると、受け取ったリクエストが複数であるか否かを確認する。そして、リクエストが複数である場合には、これらをまとめて新しいリクエストを生成する(ステップS212)。サーバ2へ送信されるリクエストが1つである場合には、例えば、図12、図13に示したリクエストXMLがそのまま、あるいはリクエストIDに変換されて、サーバ2へ送信される。一方、サーバ2へ送信されるリクエストが複数ある場合には、XMLの階層構造を利用して、複数のAPIを1つのリクエストXMLに記述して、一回の通信でサーバに通信することができる。
【0069】
例えば、図12および図13に示す2つのリクエストXMLをサーバ2へ送信するとする。このとき、2つのリクエストXMLは、例えば図14に示すように、図12のリクエストXMLを1番目に実行されるAPIとして、図13のリクエストXMLを2番目に実行されるAPIとして、記述することが可能である。これにより、サーバ2との通信回数を低減することが可能となる。リクエスト合成部132は、サーバ2へ複数のリクエストを送信する場合にはこれらをまとめたリクエストXML(集約リクエストXML)を作成して、リクエスト送信部142へ出力する。そして、リクエスト送信部142は、リクエストをサーバ2へ送信(POST)する(ステップS214)。
【0070】
その後、サーバ2はリクエストを受け取ると、リクエストXMLより実行すべきコマンドを解釈し、クライアントURLが指し示すユーザ領域に対してコマンドを実行する。そして、サーバ2は、この実行結果を示すXML形式のテキストをレスポンスXMLとして、クライアント端末1のGWアプリ100のレスポンス受信部144に送信する。レスポンス受信部144は、レスポンスXMLをレスポンス分解部134へ出力する。そして、レスポンスXMLに複数のリクエストXMLに対する応答が含まれている場合、レスポンス分解部134は、レスポンスXMLを複数のレスポンスに分解する(ステップS216)。
【0071】
ここで、サーバ2から送信されるレスポンスXMLは、例えば図15、図16に示すように記述されている。図15に示すレスポンスXMLは、図12のリクエストXMLに対する応答であり、図16に示すレスポンスXMLは、図13のリクエストXMLに対する応答である。レスポンスXMLには、アプリケーションから要求されたAPI実行の成否と、実行結果が含まれる。また、図14に示すように、複数のリクエストXMLを合成した集約リクエストXMLがサーバ2へ送信された場合には、例えば図17に示すように、各リクエストXMLに対する応答を含むレスポンスXMLを受け取る。図17のレスポンスXMLには、1番目のAPI実行の成否とその実行結果、および2番目のAPI実行の成否とその実行結果が含まれる。このように、レスポンスXMLが複数のリクエストXMLに対する応答を含む場合には、レスポンス分解部134により、各リクエストXMLに対する個々のレスポンスXMLに分解される。分解されたレスポンスXMLは、データ解析部120へ出力される。
【0072】
サーバ2から受け取ったレスポンスXMLには、APIの実行結果の他に、例えば、当該リクエストに対するレスポンスのキャッシュ可否や、リクエストXMLに対するリクエストIDの付与の要否等の情報が含まれる。データ解析部120は、これらの情報を解析して、次にアプリケーションからリクエストを受けたときのサーバ2の通信負荷を低減するための処理を実行する。
【0073】
まず、データ解析部120のキャッシュ判断部123は、リクエストに対するレスポンスのキャッシュの可否を確認する(ステップS218)。キャッシュ判断部123は、レスポンスXMLにキャッシュを許可する許可情報が含まれているかを確認し、許可情報が含まれていれば当該レスポンスXMLをキャッシュし、許可情報が含まれていなければ当該レスポンスXMLはキャッシュしない。キャッシュの許可情報が含まれているレスポンスXMLの一例を図18に示す。図18に示すように、キャッシュの許可情報は、例えばキャッシュの有効期限であり、この有効期限がレスポンスXMLに含まれている場合には、キャッシュが許可されていることを意味する。
【0074】
このように、キャッシュの許可情報を含むレスポンスXMLを受け取ったキャッシュ判断部123は、キャッシュすることを許可されたリクエストXML、レスポンスXML、そのキャッシュの有効期限をキャッシュDB(図5参照)に記録する(ステップS220)。このとき、レスポンスXMLを要求したリクエストが、XML形式で記述されたものではなく、リクエストIDによって与えられたものであった場合には、リクエストID DB(図4)を参照して、リクエストIDをリクエストXMLに変換してからキャッシュDBに記録する。なお、ステップS218において、レスポンスXMLにキャッシュの許可情報が含まれていない場合には、キャッシュすることは許可されていないため、このリクエストXMLに対するレスポンスXMLはキャッシュDBに記録されない。
【0075】
次いで、ステップS218と同様に、リクエストID変換部122により、サーバ2からのレスポンスXMLにリクエストIDが含まれているか否かを確認する(ステップS222)。リクエストIDは、サーバ2との通信負荷を低減するために、アプリケーションとサーバ2との間で頻繁にやり取りされるリクエストXMLの代わりに用いられる情報である。リクエストID変換部122は、サーバ2からのレスポンスXMLにリクエストIDが含まれていることを確認すると、当該リクエストIDと、そのリクエストIDに対応するリクエストXMLをリクエストID DB(図4参照)に記録する(ステップS224)。
【0076】
リクエストIDを含むレスポンスXMLの一例を図19に示す。図19に示すように、リクエストIDは、サーバ2から指定される情報として、レスポンスXML内に記述されている。リクエストID変換部122は、このようにレスポンスXMLに含まれるリクエストIDをリクエストID DBに記録することにより、その後アプリケーションから同一のリクエストを受けた場合には、リクエストIDに変換してサーバ2へ送信することができる。なお、ステップS222において、レスポンスXMLにリクエストIDが含まれていない場合には、このリクエストXMLに対するリクエストIDはなく、リクエストID DBにも記録されない。
【0077】
さらに、同一リクエスト保管部124は、当該リクエストXMLと同一のリクエストの送信を要求した他のクライアント端末1が存在するか否かを確認する(ステップS226)。同一リクエスト保管部124は、同一リクエストDBを参照して、当該リクエストXMLの送信処理と関連付けられたキューインデックスが同一リクエストDBに存在するか否かを確認する。そして、同一のキューインデックスが存在する場合には、当該キューインデックスを関連付けられたアプリIDを、レスポンスXMLの出力先に含める(ステップS228)。そして、同一リクエスト保管部124は、同一リクエストDBにより、実行されたインデックスを削除する(ステップS230)。
【0078】
なお、ステップS226にて、同一リクエスト保管部124により、当該リクエストXMLと同一のリクエストの送信を要求した他のクライアント端末1が存在しないと判定された場合には、ステップS228、S230の処理は行われず、ステップS232の処理が実行される。
【0079】
ステップS218〜S230までの、レスポンスXMLの解析が終了すると、データ解析部120は、レスポンス出力部114を介して呼び出し元のアプリケーションにレスポンスXMLを送信する(ステップS232)。その後、送信リクエスト保管部125は、実行されたキューインデックスとこれに関連付けられた情報をキューDBから削除する(ステップS234)。
【0080】
以上、図9から図11に示したように、クライアント‐サーバ間の通信が行われる。このように、ユーザ毎に認証情報を必要とするサーバのAPIを利用して機能を提供する、クライアントにインストールされたアプリケーションは、従来ではアプリケーション毎に、ユーザに対し認証情報の入力を要求し、その認証情報を各々のアプリケーションが保持しておく必要があった。これは、ユーザにとって面倒な操作を与えるだけでなく、サーバの認証情報を保持する箇所が多くなることや、第三ベンダにユーザはサーバの認証情報をあたえることから、セキュリティ面の問題が存在した。また、各アプリケーションが個々に同一のサーバに対して通信を行うため非効率であり、サーバの通信コストおよび負荷の増加、クライアントの電池寿命に影響していた。
【0081】
そこで、本実施形態のGWアプリを利用することにより、サーバは第三ベンダにユーザの認証情報を漏らすとこなく、APIを提供することができる。また、クライアント端末内でリクエストの内容をまとめることで、セッションリソースを節約することができ、サーバの通信量を減らすことができる。ユーザにとっては認証情報を守れるほか、対応アプリ毎にログインする手間が省け、また端末の電池やメモリに応じた動作をするため快適に各アプリを扱うことが可能になる。クライアントからの通信量が減ることにより、ユーザは通信料の負担も軽減される。アプリを作成する第三ベンダにとってはサーバとの通信や認証情報を保持する部分の検討が不要になり、開発を容易に行うことができるようになる。
【0082】
なお、リクエストをキューDBから取得してサーバ2との通信を行う処理は、通常、マルチスレッドによって並列に処理される。GWアプリ100が大量のリクエストを複数まとめてサーバ2へ送信している際に優先度の高いリクエストがキューに入った場合に、シングルスレッドでは対応できないためである。なお、スレッド数が多いほどパフォーマンスは向上するが、メモリや電池を消費するため、GWアプリ100は、スレッドの数をクライアント端末1の空きメモリ残量、電池の使用量に応じて動的に変化させることができる。
【0083】
GWアプリ100の認証情報DBに格納されたデータは、GWアプリ100以外からの参照はできないが、各アプリケーションは、そのデータをリクエストXMLの中に入力したい場合がある。このため、GWアプリ100は各アプリケーションに、GWアプリ100内で認証情報DB146のデータと自動変換するための、ある決まった文字列を提供する。各アプリケーションは、リクエストXMLに含めたい認証情報DB146内のデータがある場合に、その決まった文字列を該当箇所に記述しておく。GWアプリ100がそのリクエストを受け取ると、リクエスト送信部142にて、その文字列と認証情報DB146内の希望されているデータを入れ替える。これにより、認証情報DB146内のデータは、GWアプリ100以外に漏れることなく、各アプリケーションから使用することが可能となる。
【0084】
また、図20に示すように、GWアプリ100は認証情報DB146に1ユーザのみでなく、多ユーザの認証情報を管理することができる。図20は、多ユーザの認証情報を管理する場合の認証情報DB146のテーブル構成例である。また、各ユーザのログイン/ログオフといった状態を、GWアプリ100が提供するAPIによって切り替えることが可能である。
【0085】
図21に複数ユーザがログインしている状態でリクエストXMLが渡された時の動作例を示す。図21に示すように、GWアプリ100は、各アプリケーションからリクエストXMLを受け取ると、ログインしているユーザの認証情報を用いてサーバに対しリクエストを行う。GWアプリ100において複数のユーザがログイン状態に設定されている場合、GWアプリ100は各アプリケーションからリクエストXMLを受け取ると、そのリクエストXMLをそれぞれの認証情報を利用して、サーバ2上の各ユーザの領域に対してAPIを実行する。GWアプリ100は各レスポンスをまとめて一つのレスポンスXMLとして呼び出し元のアプリケーションに返す。
【0086】
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
【0087】
例えば、上記実施形態では、GWアプリ100は、アプリケーションからのリクエストに認証情報を付加してサーバ2へ送信したが、本発明はかかる例に限定されない。クライアント端末1内のアプリケーションがリクエストするサーバ2のAPIには、ユーザの認証情報を必要としないものもある。例えば、GWアプリ100は、複数のユーザによる複数のアプリケーションのリクエストをまとめて、各ユーザの個人領域ではなくサーバ2の共通領域に対してAPIを実行することも可能である。このように、本発明のGWアプリ100は、複数のアプリケーションからのリクエストを束ねて効率よくサーバ2と通信できるよう制御する。
【符号の説明】
【0088】
1 クライアント端末
2 サーバ
100 GWアプリ
110 アプリ入出力インタフェース部
120 データ解析部
121 アプリキー認証部
122 リクエストID変換部
123 キャッシュ判断部
124 同一リクエスト保管部
125 送信リクエスト保管部
126 端末状態監視部
130 リクエスト/レスポンス変換部
140 サーバ送受信インタフェース部140
146 認証情報DB
【特許請求の範囲】
【請求項1】
ネットワークを介してデータを保持するサーバと接続されたクライアント端末に設けられ、
前記クライアント端末内の1または複数のアプリケーションからのリクエストを受けて、前記サーバとの情報の送受信を制御する、情報処理装置。
【請求項2】
前記サーバにアクセスするためのユーザの認証情報を保持する認証情報記憶部と、
前記クライアント端末内のアプリケーションからのリクエストに基づいて、前記リクエストに当該クライアント端末のユーザの認証情報を付加して、前記サーバへ送信するリクエスト送信部と、
を備える、請求項1に記載の情報処理装置。
【請求項3】
前記アプリケーションから受け取る前記リクエストには、前記サーバへ送信する優先順位を示す優先情報が含まれており、
前記リクエスト送信部は、前記優先情報に基づいて、前記リクエストを前記サーバへ送信する、請求項2に記載の情報処理装置。
【請求項4】
複数の前記アプリケーションから前記サーバに対する複数のリクエストを受け取ったとき、
複数の前記リクエストを合成して集約リクエストを生成するリクエスト合成部と、
前記集約リクエストに対する前記サーバからの集約レスポンスを、各前記リクエストに対応するレスポンスに分解するレスポンス分解部と、
を備える、請求項1〜3のいずれか1項に記載の情報処理装置。
【請求項5】
前記リクエスト送信部は、前記優先情報より優先順位の低い前記リクエストは、前記リクエスト合成部により集約して前記サーバへ送信する、請求項4に記載の情報処理装置。
【請求項6】
前記アプリケーションからのリクエストに対する前記サーバからのレスポンスを保持するレスポンス蓄積部と、
前記レスポンス蓄積部に保持されたレスポンスを管理するキャッシュ判断部と、
を備え、
前記キャッシュ判断部は、前記アプリケーションから、前記レスポンス蓄積部に蓄積されたレスポンスを前記サーバから取得するリクエストを受けたとき、前記レスポンス蓄積部から前記レスポンスを取得して前記アプリケーションに送信する、請求項1〜5のいずれか1項に記載の情報処理装置。
【請求項7】
前記レスポンス蓄積部は、蓄積された前記各レスポンスに対して当該レスポンスを保持する有効期限情報を記憶しており、
前記キャッシュ判断部は、前記有効期限情報に基づいて、前記アプリケーションからのリクエストに対するレスポンスを前記レスポンス蓄積部から取得するか否かを判断する、請求項6に記載の情報処理装置。
【請求項8】
少なくとも前記リクエスト端末の通信環境の良否、電池残量またはメモリ残量を監視する端末状態監視部をさらに備え、
前記リクエスト送信部は、前記端末状態監視部による前記リクエスト端末の監視結果に基づいて、前記リクエストを送信する、請求項1〜7のいずれか1項に記載の情報処理装置。
【請求項9】
前記リクエスト送信部は、複数の前記アプリケーションから前記サーバへのリクエストに所定の文字列が含まれているとき、前記所定の文字列を当該文字列に対応する情報に変換して、前記サーバへ送信する、請求項1〜8のいずれか1項に記載の情報処理装置。
【請求項10】
前記認証情報記憶部には、複数ユーザの認証情報が記憶され、
前記リクエスト送信部は、複数の前記アプリケーションから前記リクエストを受け取ったとき、前記クライアント端末にログインしている前記ユーザの前記サーバ上の領域に対して、前記リクエストを送信する、請求項1〜9のいずれか1項に記載の情報処理装置。
【請求項11】
前記アプリケーションから前記リクエストを受け取った際に、前記アプリケーションおよび前記リクエストの内容に基づいて、当該リクエストの前記サーバへの送信の実行可否を判断する、実行判断部をさらに備える、請求項1〜10のいずれか1項に記載の情報処理装置。
【請求項12】
ネットワークを介してデータを保持するサーバと接続され、クライアント端末内の1または複数のアプリケーションからのリクエストを受けて、前記サーバとの情報の送受信を制御する、情報処理方法。
【請求項13】
コンピュータに、
ネットワークを介してデータを保持するサーバと接続されたクライアント端末に設けられる、前記クライアント端末内の1または複数のアプリケーションからのリクエストを受けて、前記サーバとの情報の送受信を制御する、情報処理装置として機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項1】
ネットワークを介してデータを保持するサーバと接続されたクライアント端末に設けられ、
前記クライアント端末内の1または複数のアプリケーションからのリクエストを受けて、前記サーバとの情報の送受信を制御する、情報処理装置。
【請求項2】
前記サーバにアクセスするためのユーザの認証情報を保持する認証情報記憶部と、
前記クライアント端末内のアプリケーションからのリクエストに基づいて、前記リクエストに当該クライアント端末のユーザの認証情報を付加して、前記サーバへ送信するリクエスト送信部と、
を備える、請求項1に記載の情報処理装置。
【請求項3】
前記アプリケーションから受け取る前記リクエストには、前記サーバへ送信する優先順位を示す優先情報が含まれており、
前記リクエスト送信部は、前記優先情報に基づいて、前記リクエストを前記サーバへ送信する、請求項2に記載の情報処理装置。
【請求項4】
複数の前記アプリケーションから前記サーバに対する複数のリクエストを受け取ったとき、
複数の前記リクエストを合成して集約リクエストを生成するリクエスト合成部と、
前記集約リクエストに対する前記サーバからの集約レスポンスを、各前記リクエストに対応するレスポンスに分解するレスポンス分解部と、
を備える、請求項1〜3のいずれか1項に記載の情報処理装置。
【請求項5】
前記リクエスト送信部は、前記優先情報より優先順位の低い前記リクエストは、前記リクエスト合成部により集約して前記サーバへ送信する、請求項4に記載の情報処理装置。
【請求項6】
前記アプリケーションからのリクエストに対する前記サーバからのレスポンスを保持するレスポンス蓄積部と、
前記レスポンス蓄積部に保持されたレスポンスを管理するキャッシュ判断部と、
を備え、
前記キャッシュ判断部は、前記アプリケーションから、前記レスポンス蓄積部に蓄積されたレスポンスを前記サーバから取得するリクエストを受けたとき、前記レスポンス蓄積部から前記レスポンスを取得して前記アプリケーションに送信する、請求項1〜5のいずれか1項に記載の情報処理装置。
【請求項7】
前記レスポンス蓄積部は、蓄積された前記各レスポンスに対して当該レスポンスを保持する有効期限情報を記憶しており、
前記キャッシュ判断部は、前記有効期限情報に基づいて、前記アプリケーションからのリクエストに対するレスポンスを前記レスポンス蓄積部から取得するか否かを判断する、請求項6に記載の情報処理装置。
【請求項8】
少なくとも前記リクエスト端末の通信環境の良否、電池残量またはメモリ残量を監視する端末状態監視部をさらに備え、
前記リクエスト送信部は、前記端末状態監視部による前記リクエスト端末の監視結果に基づいて、前記リクエストを送信する、請求項1〜7のいずれか1項に記載の情報処理装置。
【請求項9】
前記リクエスト送信部は、複数の前記アプリケーションから前記サーバへのリクエストに所定の文字列が含まれているとき、前記所定の文字列を当該文字列に対応する情報に変換して、前記サーバへ送信する、請求項1〜8のいずれか1項に記載の情報処理装置。
【請求項10】
前記認証情報記憶部には、複数ユーザの認証情報が記憶され、
前記リクエスト送信部は、複数の前記アプリケーションから前記リクエストを受け取ったとき、前記クライアント端末にログインしている前記ユーザの前記サーバ上の領域に対して、前記リクエストを送信する、請求項1〜9のいずれか1項に記載の情報処理装置。
【請求項11】
前記アプリケーションから前記リクエストを受け取った際に、前記アプリケーションおよび前記リクエストの内容に基づいて、当該リクエストの前記サーバへの送信の実行可否を判断する、実行判断部をさらに備える、請求項1〜10のいずれか1項に記載の情報処理装置。
【請求項12】
ネットワークを介してデータを保持するサーバと接続され、クライアント端末内の1または複数のアプリケーションからのリクエストを受けて、前記サーバとの情報の送受信を制御する、情報処理方法。
【請求項13】
コンピュータに、
ネットワークを介してデータを保持するサーバと接続されたクライアント端末に設けられる、前記クライアント端末内の1または複数のアプリケーションからのリクエストを受けて、前記サーバとの情報の送受信を制御する、情報処理装置として機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10A】
【図10B】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10A】
【図10B】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【公開番号】特開2011−171983(P2011−171983A)
【公開日】平成23年9月1日(2011.9.1)
【国際特許分類】
【出願番号】特願2010−33550(P2010−33550)
【出願日】平成22年2月18日(2010.2.18)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】
【公開日】平成23年9月1日(2011.9.1)
【国際特許分類】
【出願日】平成22年2月18日(2010.2.18)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】
[ Back to top ]