(57)【要約】【課題】適切な通信制御を行うための処理負担を軽減させる。【解決手段】通信装置１００は、ネットワークを介して通信制御を行う通信部１０４と、通信部１０４に対して通信を要求するアプリケーションを実行する実行部１０７と、通信部１０４が用いるネットワーク状態を示す状態情報を検出する検出部１０９と、ネットワーク状態を示す状態情報と、アプリケーションが通信部に対して要求する通信について当該ネットワーク状態に適した制御を行う通信制御情報と、を対応づけて記憶する記憶部１０１と、検出部１０９により検出された状態情報と、記憶部１０１で対応づけられた通信制御情報に基づいて、アプリケーションが通信部１０４に対して要求する通信を制御する制御部１０６と、を備える。【選択図】        図１
2010074279.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して通信制御を行う通信部と、
前記通信部に対して通信を要求するアプリケーションを実行する実行部と、
前記通信部が用いるネットワーク状態を示す状態情報を検出する検出部と、
ネットワーク状態を示す状態情報と、前記アプリケーションが前記通信部に対して要求する通信について当該ネットワーク状態に適した制御を行う通信制御情報と、を対応づけて記憶する記憶部と、
前記検出部により検出された前記状態情報と、前記記憶部で対応づけられた前記通信制御情報に基づいて、前記アプリケーションが前記通信部に対して要求する通信を制御する制御部と、
を備えることを特徴とする通信装置。
【請求項２】
前記制御部は、さらに、前記検出部により検出された前記ネットワーク状態に基づいて、前記アプリケーションが前記通信部に対して要求する通信を制御し、
前記検出部により検出された前記状態情報と、前記制御部が行った通信の制御を示す通信制御情報とを対応づけて、前記記憶部に登録する登録部を、
さらに備えることを特徴とする請求項１に記載の通信装置。
【請求項３】
前記制御部は、前記実行部により前記アプリケーションが実行される前に、前記検出部に検出された前記状態情報と、前記記憶部で対応付けられた前記制御情報に基づいて、前記アプリケーションが要求する通信を制御するための初期値を設定すること、
を特徴とする請求項１又は２に記載の通信装置。
【請求項４】
前記ネットワーク状態においてアプリケーションが実行されている環境を識別する環境情報を取得する環境情報取得部をさらに備え、
前記記憶部は、さらに、前記環境情報を対応づけて記憶し、
前記制御部は、さらに、前記環境情報取得部が取得した前記環境情報と対応づけられた、前記通信制御情報に基づいて、前記アプリケーションが要求する通信を制御すること、
を特徴とする請求項１乃至３のいずれか一つに記載の通信装置。
【請求項５】
前記環境情報取得部は、前記環境情報として、前記アプリケーションの実行ユーザ、プロトコル、ポート番号、受信先IPアドレス・ポート番号、アプリケーションデータの種類、処理負荷、及びメモリ使用量のいずれか一つ以上の組み合わせを取得すること、
を特徴とする請求項４に記載の通信装置。
【請求項６】
前記検出部は、前記ネットワーク状態として、使用するネットワークインターフェイス、送信元ＩＰアドレス、送信先ポート番号、送信データ量、スループット、許容遅延、許容ジッタ、のいずれか一つ以上を検出すること、
を特徴とする請求項４又は５に記載の通信装置。
【請求項７】
前記制御部は、前記通信制御情報として、輻輳制御ウィンドウサイズ、受信ウィンドウサイズ、ＴＣＰ輻輳制御アルゴリズム及び制御アルゴリズムの閾値を用いて通信の制御を行うこと、
を特徴とする請求項１乃至６のいずれか一つに記載の通信装置。
【請求項８】
通信装置で実行される通信方法であって、
前記通信装置は、ネットワーク状態を示す状態情報と、前記アプリケーションが前記通信部に対して要求する通信について当該ネットワーク状態に適した制御を行う通信制御情報と、を対応づけて記憶する記憶部を備え、
通信部が、ネットワークを介して通信制御を行う通信ステップと、
実行部が、前記通信部に対して通信を要求するアプリケーションを実行する実行ステップと、
検出部が、前記通信部が用いるネットワーク状態を示す前記状態情報を検出する検出ステップと、
前記検出ステップにより検出された前記状態情報と、前記記憶部で対応づけられた前記通信制御情報に基づいて、前記アプリケーションが前記通信部に対して要求する通信を制御する制御ステップと、
を有することを特徴とする通信方法。
【請求項９】
コンピュータが、ネットワーク状態を示す状態情報と、前記アプリケーションが前記通信部に対して要求する通信について当該ネットワーク状態に適した制御を行う通信制御情報と、を対応づけて記憶する記憶部を備え、
ネットワークを介して通信制御を行う通信ステップと、
前記通信部に対して通信を要求するアプリケーションを実行する実行ステップと、
前記通信部が用いるネットワーク状態を示す前記状態情報を検出する検出ステップと、
前記検出ステップにより検出された前記状態情報と、前記記憶部で対応づけられた前記通信制御情報に基づいて、前記アプリケーションが前記通信部に対して要求する通信を制御する制御ステップと、
をコンピュータに実行させるための通信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ネットワークに応じた通信を行う通信装置、方法及びプログラムに関するものである。
【背景技術】
【０００２】
近年、コンピュータ技術の向上により、計算機が小型化する傾向にある。このため、小型化された計算機は、利用者が携帯することを容易になった。そして、利用者が一つの計算機を持ち運び、様々な状況の下で利用することが一般化している。また、当該計算機には、利用者が使用する様々なプログラムやデータが格納される傾向にある。
【０００３】
このような計算機には、利用状況に応じてネットワークに接続するために様々なネットワークインターフェイスが用意されている。様々なネットワークインターフェイスを使い分けることで、例えば、オフィスにて使用する場合には有線接続のネットワークに接続し、外出先で使用する場合には携帯電話や公衆ワイヤレスネットワークなどに接続することが可能となる。そして、オフィスでネットワークに有線接続されている場合、オフィスアプリケーション、オフィス内のコミュニケーション手段としてショートメッセージやビジュアルコミュニケーションのアプリケーションの使用が考えられる。外出先で携帯電話や公衆ワイヤレスネットワークに接続された場合、電子メールなどの限られたアプリケーションを中心に使用すると考えられる。
【０００４】
このように、計算機を使用する環境に応じて、接続手法および利用するプログラムが異なる傾向がある。しかしながら、環境に応じて計算機の利用方法が異なる場合であっても、通常の計算機では、環境にかかわらず、毎回同じ初期状態からアプリケーションを起動してネットワークを利用する。このため、環境に応じて最適なネットワーク状況を維持するのが難しい。
【０００５】
そこで、特許文献１では、ネットワークや計算機の環境に応じて、リアルタイムにアプリケーションプロトコルやトランスポートプロトコルのパラメータを調整し、最適なネットワーク状況を維持する技術が提案されている。これにより、鉄道や自動車などで移動しながら使用する場合であっても、適切な通信状態を維持できる。
【０００６】
【特許文献１】特開２０００−７８２３２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に記載された技術では、ネットワーク状況に応じて適切な通信状態を維持できるが、リアルタイムに追従する必要があるため、常に最適化パラメータを導出するための演算処理が必要となる。
【０００８】
このため、過去のネットワーク状況と同様のネットワーク状況になった場合でも、過去に導出した最適化パラメータを利用することができず、計算機の計算処理負担が大きくなる。また、計算機の計算処理負担の向上に応じて、消費する消費電力も増加する。これは、利用者が当該計算機を外出先で利用する場合に大きな問題となる。
【０００９】
本発明は、上記に鑑みてなされたものであって、ネットワーク状況に応じた制御を行うとともに、計算処理負担を軽減する通信装置、方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するために、本発明にかかる通信装置は、ネットワークを介して通信制御を行う通信部と、前記通信部に対して通信を要求するアプリケーションを実行する実行部と、前記通信部が用いるネットワーク状態を示す状態情報を検出する検出部と、ネットワーク状態を示す状態情報と、前記アプリケーションが前記通信部に対して要求する通信について当該ネットワーク状態に適した制御を行う通信制御情報と、を対応づけて記憶する記憶部と、前記検出部により検出された前記状態情報と、前記記憶部で対応づけられた前記通信制御情報に基づいて、前記アプリケーションが前記通信部に対して要求する通信を制御する制御部と、を備えることを特徴とする。
【００１１】
また、本発明にかかる通信方法は、通信装置で実行される通信方法であって、前記通信装置は、ネットワーク状態を示す状態情報と、前記アプリケーションが前記通信部に対して要求する通信について当該ネットワーク状態に適した制御を行う通信制御情報と、を対応づけて記憶する記憶部を備え、通信部が、ネットワークを介して通信制御を行う通信ステップと、実行部が、前記通信部に対して通信を要求するアプリケーションを実行する実行ステップと、検出部が、前記通信部が用いるネットワーク状態を示す前記状態情報を検出する検出ステップと、前記検出ステップにより検出された前記状態情報と、前記記憶部で対応づけられた前記通信制御情報に基づいて、前記アプリケーションが前記通信部に対して要求する通信を制御する制御ステップと、を有することを特徴とする。
【００１２】
また、本発明にかかる通信プログラムは、コンピュータが、ネットワーク状態を示す状態情報と、前記アプリケーションが前記通信部に対して要求する通信について当該ネットワーク状態に適した制御を行う通信制御情報と、を対応づけて記憶する記憶部を備え、ネットワークを介して通信制御を行う通信ステップと、前記通信部に対して通信を要求するアプリケーションを実行する実行ステップと、前記通信部が用いるネットワーク状態を示す前記状態情報を検出する検出ステップと、前記検出ステップにより検出された前記状態情報と、前記記憶部で対応づけられた前記通信制御情報に基づいて、前記アプリケーションが前記通信部に対して要求する通信を制御する制御ステップと、をコンピュータに実行させる。
【発明の効果】
【００１３】
本発明によれば、通信制御情報に基づいて通信制御を行うことで、アプリケーションからの要求に基づく通信制御を適切に行うと共に、適切・：な通信制御を行うための処理負担を軽減させるという効果を奏する。
【発明を実施するための最良の形態】
【００１４】
以下に添付図面を参照して、この発明にかかる通信装置、方法及びプログラムの最良な実施の形態を詳細に説明する。
【００１５】
（第１の実施の形態）
図１に示すように、第１の実施の形態にかかる通信装置１００は、記憶部１０１と、無線ネットワークＩ／Ｆ１０２と、有線ネットワークＩ／Ｆ１０３と、通信部１０４と、登録・更新部１０５と、制御部１０６と、実行部１０７と、環境情報取得部１０８と、検出部１０９とを備える。通信装置１００は、上述した構成以外のその他の要素を含んでいてもよいが、本実施の形態において説明として不要のため省略する。そして、通信装置１００が接続するネットワークを介して、例えばサーバ１５０との間で通信を行う。
【００１６】
無線ネットワークＩ／Ｆ１０２は、無線を用いてネットワークに接続するネットワークインターフェイスとする。無線接続方式としては、周知を問わずあらゆる方式を含むものとする。
【００１７】
有線ネットワークＩ／Ｆ１０３は、ネットワークに有線接続するネットワークインターフェイスとする。有線接続方式としては、例えば１００ＢＡＳＥ―Ｔなど、周知を問わずあらゆる方式を含むものとする。なお、通信装置１００が備えるネットワークインターフェイスは、上記種類に制限するものではない。また通信装置１００が備えるネットワークインターフェイスを２個に制限するものではなく、１個又は３個以上でも良い。
【００１８】
通信部１０４は、無線ネットワークＩ／Ｆ１０２又は有線ネットワークＩ／Ｆ１０３を用いて接続されたネットワークを介して、データ通信を行う。データ通信は、後述する実行部１０７で実行されたアプリケーションがデータの送受信に使用する。
【００１９】
検出部１０９は、通信部１０４が用いるネットワークの状態を示す状態情報を検出する。なお、状態情報の例については後述する。
【００２０】
環境情報取得部１０８は、通信部１０４により通信しているネットワーク環境下において、実行部１０７で実行されたアプリケーション及び通信装置１００自体又はこれら周辺を示す環境情報を検出する。環境情報としては、例えば、ログインしているユーザ情報、実行されているアプリケーションを識別するプログラムＩＤや、アプリケーションが通信を要求した通信先などを示した通信情報、そしてアプリケーションが送受信したデータの種類を示すデータ種類などとする。
【００２１】
記憶部１０１は、実行部１０７で実行されるアプリケーションや、制御部１０６で使用する制御情報を記憶する。図２に示すように、記憶部１０１は、通常のアプリケーションプログラム２０１と、当該アプリケーションプログラム２０１に関する制御情報２０２とを対応付けて記憶する。
【００２２】
この制御情報２０２は、対応付けられたアプリケーションプログラム２０１が実行されたときの状況に従って、登録・更新部１０５により登録又は更新が行われた情報とする。この制御情報２０２により、通信制御を行うことが可能になる。
【００２３】
アプリケーションプログラム２０１は、実行を通じて変更されることはないが、制御情報２０２は、対応するアプリケーションプログラム２０１が実行されている場合に、ネットワーク状況の変化等に基づいて登録、更新が行われる。
【００２４】
そして、図２に示すように、複数のアプリケーションについて、アプリケーションプログラム毎に制御情報が対応付けて記憶される。なお、記憶部１０１に記憶されるアプリケーションプログラムは、必ずしも上述した構成を備える必要はなく、制御情報と対応付けられていない状態で記憶されても良い。他の例としては、アプリケーションプログラムと制御情報が関連付けられた形式ではあるが、制御情報はなにも登録されておらず、アプリケーションプログラムのみ登録されているという形式でも良い。
【００２５】
記憶部１０１が記憶する制御情報は、アプリケーションプログラム２０１毎に生成されたテーブルにおいて、ネットワークの状態を示す状態情報や、通信装置１００やアプリケーションの状況を表す環境情報、アプリケーションが行う通信を制御するための通信制御情報を、検索キーと対応付けて記憶する。つまり、記憶部１０１は、検索キーを介して、ネットワークの状態を示す状態情報と、通信装置１００やアプリケーションの状況を示す環境情報と、検出されたネットワーク環境下でアプリケーションによる通信制御を調整するための通信制御情報とを対応付けて記憶する。検索キーとしては、本実施の形態では、登録や更新が行われた時刻を示す記録時刻を用いる。なお、後述するコンテキスト等を用いてもよい。
【００２６】
なお、図２に示す記憶部１０１の形式は、一例として示したものであり、アプリケーションプログラム毎に制御情報が対応付けられた構造に制限するものではない。例えば、アプリケーションプログラム及び制御情報を異なるファイルとし、当該ファイルの拡張子によってその形式を区別する手法を採用しても良い。また、アプリケーションプログラム毎の制御情報を全て一括管理し、アプリケーションプログラムを識別する情報を検索条件と設定することで、どのアプリケーションプログラムと対応付けられているのか特定可能な形式で保存しても良い。このように、アプリケーションプログラムと、当該アプリケーションプログラムに関連する制御情報との対応関係が把握できる構造が実現できればよい。
【００２７】
本実施の形態においては、図３に示すように、記憶部１０１が記憶する制御情報は、情報ＩＤと、コンテキストと、記録時刻と、値とを、対応付けて記憶する。
【００２８】
情報ＩＤは、当該エントリに保存された情報を識別する。本実施の形態にかかる情報ＩＤは、例えば、接続インターフェイスの種別、インターフェイスに付与されたＩＰアドレス、通信ごとの単位時間あたりの送信バイト数、通信ごとの単位時間あたりの受信バイト数、（ノード全体の）単位時間あたりの送信バイト数、（ノード全体の）単位時間あたりの受信バイト数、及び通信ごとのＴＣＰ制御情報などを識別するＩＤがある。そして、値に、情報ＩＤによって識別された情報についての実際の値を保持する。例えば、値は、上述した接続インターフェイスの種別を特定する値や、インターフェイスに付与されたＩＰアドレス、通信ごとの単位時間あたりの送信バイト数が格納されている。
【００２９】
コンテキストは、情報ＩＤにより識別される情報が生成されたときの、通信装置１００やネットワーク接続先などの状況を特定する。記録時刻は、情報ＩＤにより識別される情報を記憶した時刻を示す。なお、記録時刻は、各情報を取得した時刻でもよい。
【００３０】
例えば、コンテキストと記録時刻とを検索条件に設定して検索した場合に、同一の記録時刻、同一状況で行われた動作についての各情報の値を検出できる。つまり、同一記録時刻、同一状況で使用された接続インターフェイスや、インターフェイスに付与されたＩＰアドレス、単位時間あたりの送信バイト数を検出できる。
【００３１】
図３に示す例では、記憶部１０１には、３種類の情報について４個のエントリが記憶されている。エントリ３０１とエントリ３０２は、同じ情報ＩＤを保持しているため、同一種類の情報を保存しているが、記録時刻が異なる。エントリ３０１及び３０２、エントリ３０３、エントリ３０４は、それぞれ情報ＩＤが異なるため、異なる種類の情報が保存されていることを示している。エントリ３０１及び３０３は同一時刻に取得されたことを把握できる。また、エントリ３０１〜エントリ３０３は同じコンテキストＣＴＸ１を保持しているため、記録時刻が異なるものもあるが、同じ状況の元で記録されたものとなる。次に状況を識別するコンテキストについて詳細に説明する。
【００３２】
本実施の形態にかかる記憶部１０１の制御情報に保持されるコンテキストは、複数のフィールドで構成される。図４に示すコンテキストの例では、プログラムＩＤと、ユーザ情報と、通信情報と、データ種類とを対応付けて記憶している。このように、本実施の形態にかかるコンテキストには、通信装置１００にログインしているユーザ情報や、実行されているアプリケーションプログラム、通信情報（例えば送信先、プロトコル及びポート番号）等のネットワーク状況や通信装置１００の環境情報を含むものとする。これらをコンテキストとして設定することで、同一環境下で制御に用いられる制御情報を特定することが可能となる。
【００３３】
アプリケーションＩＤは、アプリケーションプログラムを識別するＩＤとする。ユーザ情報は、当該アプリケーションプログラムを使用したユーザを識別する情報とする。通信情報は、アプリケーションプログラムが通信するために設定された各種通信パラメータとする。データ種類は、当該アプリケーションプログラムが通信で利用したデータの種別とする。
【００３４】
また、コンテキストに含まれる通信情報としては、アプリケーションプログラムが通信するために設定された各通信パラメータとして、プロトコル番号、ＩＰアドレス、ポート番号から構成される組み合わせを保持する。
【００３５】
図４に示すコンテキストの例では、２個のエントリ（エントリ４０１及びエントリ４０２）が登録されている。このエントリ４０１及びエントリ４０２は、一人のユーザ（userAで識別されるユーザ）が、一つのアプリケーションプログラム（Ｗｅｂブラウザ）を利用して、一つのサーバと通信を行うことで、複数の種類のデータ（HTML及びMPEGビデオ）を送受信していることが把握できる。
【００３６】
このように、本実施の形態にかかるエントリにおいては、４個のフィールドのうち、１個でも異なる値のフィールドがあれば、別エントリとして登録される。本実施の形態においては、上述した様にコンテキストを細分化して詳細な情報を埋め込んだ。しかしながら、このようにコンテキストに詳細な情報を埋め込むのではなく、コンテキストの詳細な情報を保持する独立テーブルを生成し、この独立テーブルのエントリと、制御情報のテーブルのエントリと、を対応付ける対応表で管理しても良い。
【００３７】
また、図４に示したコンテキストを用いて各エントリを生成すると、各エントリについてかなり詳細な情報が設定されているため、かなり多くの数のエントリが登録されるにもかかわらず、現在の状況と一致するエントリが少ないということも考えられる。つまり、エントリとして詳細な情報が設定可能であるが、状況によっては、ここまで詳細に情報を設定する必要がない場合もある。そこで、本実施の形態では、設定する必要がない情報については、不定として定義することで対応する。これにより、いくつかの要素をまとめて一つのコンテキストとして定義できる。図５に示す例では、コンテキストの通信情報として、プロトコルと通信相手のポート番号だけを特定してコンテキストを生成する例とする。
【００３８】
図５に示す例では、ＴＣＰの８０番ポートから送信されて、自通信装置１００に向かう通信を含むコンテキストを表している。通信情報をこのように纏めることで、登録されるエントリの数を少なくすると供に、現在の状況と一致するエントリの抽出が容易になる。
【００３９】
図１に戻り、制御部１０６は、検出部１０９により検出されたネットワークの状態を示す状態情報と、環境情報取得部１０８により取得された環境情報と、記憶部１０１の制御情報で対応付けられた通信制御情報を用いて、アプリケーションが前記通信部１０４に対して要求する通信を制御する。
【００４０】
また、制御部１０６は、実行部１０７によりアプリケーションが実行される前に、検出部１０９に検出されたネットワーク状態、及び環境情報取得部１０８により取得された環境情報と、記憶部１０１の制御情報で対応付けられた通信制御情報に基づいて、アプリケーションが通信部１０４に対して要求する通信制御に対する初期値を設定する。
【００４１】
また、制御部１０６は、通信制御情報を用いてアプリケーションを制御した後、さらに、検出部１０９により検出されたネットワークの状態の変化に対応して、当該状態に適切になるように、実行部１０７で実行されているアプリケーションを制御する。この際、適切な通信制御情報がない場合、制御部１０６は、検出された状況情報及び取得した環境情報に対して演算を施すことで、ネットワーク状況及び通信装置１００の置かれている環境に適した通信制御情報を算出し、算出した通信制御情報でアプリケーションを制御する。この適切な通信制御情報の算出手法は、周知を問わずあらゆる手法を用いて良い。
【００４２】
実行部１０７は、通信装置１００上で様々なアプリケーションを実行する。実行するアプリケーションとしては、通信部１０４により通信された情報を用いるアプリケーションも、用いないアプリケーションも含まれる。
【００４３】
登録・更新部１０５は、検出部１０９により検出されたネットワークの状態を示す状態情報、環境情報取得部１０８により取得された環境情報、及び制御部１０６が行った制御を示す通信制御情報を、上述した様に対応付けて記憶部１０１に登録、更新する。
【００４４】
なお、図１に示した構成は一例であり、例えばネットワークインターフェイスが複数あってもよいし、実行部１０７が複数あってもよい。検出部１０９が監視対象とする状況に即した専用のセンサーを具備していてもよい。
【００４５】
次に、本実施の形態にかかる通信装置１００のアプリケーションプログラムの実行手順について、図６を用いて説明する。図６に示すシーケンス図では、通信装置１００利用者がアプリケーションプログラムを起動する時点から開始される。図６に示す処理手順では、すでに通信装置１００がネットワークに接続されているものとする。
【００４６】
まず、制御部１０６は、利用者により図示しないユーザインターフェイスを介してアプリケーションの起動が指示された場合、記憶部１０１に対して、当該アプリケーションのロードを指示する（ステップＳ６０１）。
【００４７】
これにより、記憶部１０１に記憶されたアプリケーションプログラムが、実行部１０７の作業領域にロードされる（ステップＳ６０２）。そして、作業領域に格納されたアプリケーションプログラムは実行指示があるまで待機する。
【００４８】
次に、制御部１０６は、アプリケーションプログラムのロードに続いて、環境情報取得部１０８を介して環境情報を取得する（ステップＳ６０３）。
【００４９】
その後、制御部１０６は、検出部１０９により検出された状態情報を取得する（ステップＳ６０４）。
【００５０】
ステップＳ６０３及びステップＳ６０４で取得する環境情報及び状態情報は、実行するアプリケーションプログラムの通信制御に用いる通信制御情報に対応付けされた情報と同じ種類の情報に限定して取得してもよいし、より一般的な情報を取得しても良い。このように、取得する環境情報及び状態情報は、制御部１０６が、初期値導出処理に必要な情報であればよい。
【００５１】
制御部１０６は、現在の状況を示した環境情報及び状態情報を取得した後、これら情報を検索条件に用いて、実行されるアプリケーションと記憶部１０１で対応付けられている制御情報から、現在の状況に類似する状況で使用された通信制御情報のエントリの検索を指示する（ステップＳ６０５）。
【００５２】
そして、制御部１０６は、記憶部１０１から検索結果として、実行するアプリケーションの制御に適した通信制御情報のエントリを取得する（ステップＳ６０６）。また、検索条件に合致する通信制御情報のエントリがない場合は、その旨を制御部１０６に通知する（この場合の処理は図６では省略する）。
【００５３】
例えば、取得した環境情報により、ネットワークＡに接続されていることが判明した場合、かつてネットワークＡに接続していたときにアプリケーションの制御に用いた最適なパラメータを取得する。このパラメータとしては、例えば実行するアプリケーションに適したＴＣＰのウィンドウサイズなどがある。これにより、ネットワークの状況に応じたアプリケーションの実行が可能となる。
【００５４】
取得した制御情報のエントリは、制御部１０６の作業領域に展開される。なお、制御部１０６の作業領域と、上述した実行部１０７の作業領域とは、通信装置１００が備える、図示しないメインメモリ（ＲＡＭ）上に設ける等が考えられる。
【００５５】
次に、制御部１０６は、アプリケーションを制御するために必要な通信制御情報のエントリを全て取得した後、アプリケーションを制御するための初期値を導出する（ステップＳ６０７）。
【００５６】
つまり、過去の状態情報及び環境情報と、今回の状態情報及び環境情報とが一致した場合に、過去にアプリケーションの制御に用いた最適なパラメータを初期値として設定すればよい。また、過去の状態情報及び環境情報と、今回の状態情報及び環境情報とが異なる場合にはこれらの値と過去にアプリケーションの制御に用いた最適なパラメータとに基づいて、今回に最適なパラメータを算出する。
【００５７】
そして、制御部１０６は、初期値の導出が完了すると、該初期値を実行部１０７に対して設定する（ステップＳ６０８）。その後、制御部１０６は、設定した初期値を用いて、アプリケーションを実行するよう、実行部１０７に対して実行を指示する（ステップＳ６０９）。そして、実行部１０７が、作業領域に格納されているアプリケーションプログラムを実行する（ステップＳ６１０）。
【００５８】
上述した処理手順が、本実施の形態にかかる通信装置１００における、アプリケーションプログラムを実行するまでの処理とする。これにより、ネットワークや通信装置１００の状況に応じた通信制御情報を算出することなく、最適な通信制御情報を用いてアプリケーションプログラムを実行できる。
【００５９】
次に、本実施の形態にかかる通信装置１００において、アプリケーションプログラムが実行されている間に行われる制御手順について、図７を用いて説明する。
【００６０】
まず、アプリケーションプログラムが実行されている間、実行部１０７などの通信装置１００の各構成及び周辺を示す環境情報を、環境情報取得部１０８が取得する（ステップＳ７０１）。なお、環境情報の例としては、アプリケーションが必要とするプロセッサ使用量、メモリの使用量などがある。
【００６１】
なお、プロセッサ使用量とは、通信装置１００に搭載された、図示しないＯＳが管理しているプロセッサのアプリケーションプログラムへの割り当て時間や、ハードウェアにより実現されたカウンタを用いて計測されたプロセッサのアプリケーションプログラムへの割り当て時間などから導き出された使用量とする。
【００６２】
また、検出部１０９も、アプリケーションプログラムが実行されている間、通信部１０４が、無線ネットワークＩ／Ｆ１０２又は有線ネットワークＩ／Ｆ１０３を介して行われる通信の動作状態を状態情報として検出する（ステップＳ７０２）。状態情報の例としては、使用したネットワークインターフェイスや、単位時間あたりの送受信量などがある。
【００６３】
これらステップＳ７０１及びＳ７０２で取得する環境情報及び状態情報は、図６のステップＳ６０６で取得した制御情報のエントリに含まれるパラメータ及びその導出に必要なパラメータとする。なお、本実施の形態で、取得対象となる具体的なパラメータは、上述した制御情報の各フィールド及びコンテキストを構成する詳細な情報で示したパラメータとする。なお、パラメータは、上述した名称に制限するものではなく、初期値導出ステップに用いるアルゴリズムやパラメータの調整に用いるアルゴリズム、統計値導出に用いるアルゴリズムに依存する。
【００６４】
そして、環境情報取得部１０８が取得した環境情報は、制御部１０６に対して通知される（ステップＳ７０３）と共に、検出部１０９が検出した状態情報も、制御部１０６に対して通知される（ステップＳ７０４）。通知間隔は、通信装置１００の能力などに応じて適切な値を設定する必要があり、実装依存のため説明を省略する。また、制御部１０６と、検出部１０９又は環境情報取得部１０８と、の間で行われる情報の交換について、どちらが主体的で行うかは、実装依存の事柄である。
【００６５】
さらに、制御部１０６は、統計値を導出するために必要な情報を、記憶部１０１から取得する（ステップＳ７０５）。つまり、過去に検出された状態情報や、環境情報を取得する。
【００６６】
そして、制御部１０６は、通知された環境情報及び状態情報、並びに記憶部１０１から読み出した情報に基づいて、環境情報及び状態情報で示された各パラメータに対する統計値を導出する（ステップＳ７０６）。つまり、今回新たに検出された状態情報と環境情報、そして過去に検出された状態情報と環境情報とから統計値を導出する。なお、本実施の形態では、統計値を算出したが、ステップＳ７０５及びＳ７０６の処理を省略し、新たに検出された状態情報や環境情報を用いて、パラメータを導出しても良い。
【００６７】
また、統計値を導出する場合に、記憶部１０１に格納されている、過去にアプリケーションプログラムを制御する際にロードされた通信制御情報（図６のステップＳ６０６）や、繰り返し行われる本処理手順において、過去にステップＳ７０６で導出された統計値を用いても良い。なお、各パラメータの導出するための計算手法については、周知を問わずあらゆる手法を用いて良いため、説明を省略する。
【００６８】
その後、制御部１０６は、新たに検出された状態情報や環境情報、さらには算出された状態情報や環境情報の統計値を用いて、動作中のアプリケーションプログラムの通信を制御する通信制御情報を導出する（ステップＳ７０７）。この導出手順は、図６のステップＳ６０７とほぼ同様とするが、初期値導出の際に、統計値等を用いた重み付け等を行うことができる。
【００６９】
そして、制御部１０６は、環境情報及び状態情報で示された各パラメータに対する統計値、及び導出された通信制御情報の登録を、登録・更新部１０５に対して指示する（ステップＳ７０８）。当該指示を受けて、登録・更新部１０５が、環境情報及び状態情報の統計値、及び導出された通信制御情報の対応関係を明確にして、記憶部１０１の制御情報に登録、更新する（ステップＳ７０９）。このとき、既に保存されている情報を更新するか、新たに追加するかどうか、もしく古い情報を削除するか否かといった保存の方針は、記憶部１０１の容量や必要とされる予測精度に依存する。
【００７０】
その後、制御部１０６は、導出された通信制御情報を設定し、実行されているアプリケーションプログラムが要求する通信を制御する（ステップＳ７１０）。
【００７１】
以上の処理手順で、アプリケーションプログラムが実行部１０７で動作している間の通信装置１００が行う動作を示した。
【００７２】
次に、通信装置１００が、アプリケーションプログラムが終了する際の動作について述べる。通信装置１００において、アプリケーションプログラムが終了する際、実行部１０７で実行していたアプリケーションの制御に使用していた通信制御情報を、動作中と同様に記憶部１０１に記録する処理を行う。この際、通信制御情報に含まれるパラメータによっては、アプリケーションプログラムが動作していた全期間に対する特徴的な値を算出するなどの処理を行ってもよい。例えば、全期間を通じての最小／平均／最大パケットサイズや平均スループット、平均バースト率などを算出することができる。
【００７３】
以上が、通信装置１００におけるアプリケーションプログラムの起動から終了までの一連の流れである。
【００７４】
次に、通信装置１００における初期値の導出過程について、詳細に述べる。図６の処理手順で示したように、初期値の導出は、記憶部１０１が記憶している制御情報と検出部１０９が検出したネットワークの状態情報、及び通信装置１００の構成や周辺の環境情報に基づいて行われる。まずは、記憶部１０１が記憶している制御情報と、検出部１０９が検出する状態情報の例について説明する。
【００７５】
まず、記憶部１０１が記憶する制御情報を以下に示す。
１）アプリケーション／通信相手／データごとのネットワークインターフェイスの種類
２）アプリケーション／通信相手／データごとの自ノードＩＰアドレス、サブネットマスク
３）アプリケーション／通信相手／データごとの平均送信スループット
４）アプリケーション／通信相手／データごとの平均受信スループット
５）アプリケーション／通信相手／データごとのＴＣＰ制御情報
【００７６】
なお、ＴＣＰ制御情報は、輻輳制御ウィンドウサイズ(cwnd)、受信ウィンドウサイズ(rwin)やＴＣＰ輻輳制御アルゴリズムと制御アルゴリズムの閾値(ssthresh)が含まれる。これにより、アプリケーションプログラムの制御を行うことが可能となる。
【００７７】
本実施の形態では、情報ＩＤとして‘ａ’〜‘ｆ’の６種類の情報を定義する。以下に、‘ａ’〜‘ｆ’に割り当てられた情報を示す。
ａ）ネットワークインターフェイス
ｂ）自ノードＩＰアドレス
ｃ）自ノードサブネットマスク
ｄ）平均送信スループット
ｅ）平均受信スループット
ｆ）ＴＣＰ輻輳制御情報
【００７８】
また、コンテキストは、図３に示した形式として説明を省略する。さらに、環境情報取得部１０８が取得する環境情報としては、実行するプログラムを識別するプログラムＩＤや、ログインしているユーザのユーザＩＤ、さらにアプリケーションプログラムが使用するデータのデータ種類、さらにはプロトコル名、ポート番号などコンテキストに含まれる通信情報や、アプリケーションプログラムが必要とするプロセッサ使用量、メモリの使用量等とするが、以下においては、理解を容易にするため、説明を省略する。
【００７９】
記憶部１０１において、アプリケーションプログラムＡ（Web  Browser）と対応付けられている制御情報を、図８に示す。この図８に示す制御情報では、コンテキストは、ＣＴＸ１、ＣＴＸ２及びＣＴＸ３の３種類が設定されている。
【００８０】
この３種類のコンテキストは、図９に示す詳細情報を保持している。つまり、ＣＴＸ１は、プログラムＩＤとユーザ情報のみ設定されている。ＣＴＸ２は、プログラムＩＤとユーザ情報及び通信情報が設定されている。ＣＴＸ３は、プログラムＩＤとユーザ情報及び通信情報が設定されているが、当該通信情報はＣＴＸ２の通信情報と異なる。なお、全てのコンテキストについて、データ種類は記録されていない。また、本実施の形態においては、これらコンテキストの詳細情報は、環境情報取得部１０８が取得する環境情報から設定されるものとする。なお、このコンテキストは一例であり、他の形のコンテキストも使用されうる。
【００８１】
上述したコンテキストの説明を考慮すると、図８に示された情報ＩＤ‘a’〜‘c’のコンテキストは、プログラムＩＤ及びユーザ情報のみ設定されている。そして、情報ＩＤ‘d’及び‘e’のコンテキストは、プログラムＩＤ及びユーザ情報、さらに通信情報も併せて設定されている。
【００８２】
なお、図８及び図９で示した情報は、図２に示したように、アプリケーションプログラムＡ（Web  Browser）と対応付けて記憶部１０１に記憶されている。
【００８３】
そして、通信装置１００が接続可能な、無線ネットワーク及び有線ネットワークのうち、無線ネットワークに接続しているものとする。
【００８４】
一方、検出部１０９は、通信部１０４から次の状態情報を検出する。
Ａ）接続インターフェイスの種別
Ｂ）インターフェイスに付与されたＩＰアドレス及びサブネットマスク
Ｃ）通信ごとの単位時間あたりの送信バイト数
Ｄ）通信ごとの単位時間あたりの受信バイト数
Ｅ）（ノード全体の）単位時間あたりの送信バイト数
Ｆ）（ノード全体の）単位時間あたりの受信バイト数
【００８５】
なお、制御部１０６により導出され、アプリケーションプログラムに設定された後の実際の通信ごとのＴＣＰ制御情報を、検出部１０９が検出することにしてもよい。
【００８６】
なお、検出部１０９は、環境情報取得部１０８の代わりに、通信を特定するために用いるプロトコル、ＩＰアドレス、ポート番号などの、コンテキストを構成する詳細情報のうち、ネットワークに関する情報を検出しても良い。
【００８７】
上述した制御情報を記憶部１０１が記憶し、上述した状態情報を検出部１０９が検出している場合に、初期値の導出処理について、再度図６を用いて説明する。なお、通信装置１００において、ユーザがＷｅｂブラウザの起動を指示したものとする。
【００８８】
この場合、制御部１０６は、Ｗｅｂブラウザの実行コードのロードを指示する（ステップＳ６０１）。これにより、記憶部１０１に記憶されたＷｅｂブラウザが、実行部１０７の作業領域にロードされる（ステップＳ６０２）。
【００８９】
次に、制御部１０６は、環境情報取得部１０８が取得する環境情報を取得する（ステップＳ６０３）。取得する環境情報の例としては、コンテキストとして設定される、実行されているアプリケーションプログラムのプログラムＩＤ、ユーザ情報、通信情報（プロトコル、送信先のポート番号など）、データ種類とする。
【００９０】
続いて、制御部１０６は、検出部１０９により検出された状態情報を取得する（ステップＳ６０４）。
【００９１】
状態情報として、Ａ）接続インターフェイスの種別として、無線ＬＡＮインターフェイスを、Ｂ）インターフェイスに付与されたＩＰアドレスとして、ＩＰ２'とサブネットマスクとしてＭＡＳＫ２を、Ｃ）通信ごとの単位時間あたりの送信バイト数として、０バイトを、Ｄ）通信ごとの単位時間あたりの受信バイト数として０バイトを、Ｅ）（ノード全体の）単位時間あたりの送信バイト数として、０バイトを、Ｆ）（ノード全体の）単位時間あたりの受信バイト数は０バイトを、取得する。なお、ＩＰ２'はＩＰ２からホストアドレスの部分が変化したものを表す。
【００９２】
このあと、制御部１０６は、記憶部１０１から検索結果として、実行するアプリケーションの制御に適した通信制御情報のエントリを取得するが（ステップＳ６０６）、この取得手法は実装するアルゴリズムに依存する。本実施の形態にかかるアルゴリズムにおいては、記憶部１０１に記憶されたエントリのうち、ネットワークの状態情報に一致／不一致／類似性を有するエントリを検出し、続いて当該エントリに対応付けられたエントリが有する通信制御情報（通信パラメータ）と上述した状態情報の一致／不一致／類似性とに基づいて、実際にＷｅｂブラウザを制御する通信制御情報を導出する。本実施の形態では、まず、検出されるエントリとして、ネットワークインターフェイスとサブネットとを用いる。
【００９３】
つまり、本実施の形態にかかる制御部１０６は、検出部１０９が検出した状態情報から、接続インターフェイスの種別が、無線ＬＡＮインターフェイスであることから、記憶部１０１において、情報ＩＤが‘ａ’（ネットワークインターフェイス）で、値に‘無線ＩＦ’が格納されているエントリを、検出する。なお、この際、環境情報取得部１０８が取得した環境情報に基づくコンテキストも条件として設定してもよい。
【００９４】
本実施の形態では、制御部１０６は、図８に示す制御情報から、エントリ８０１を取得できる。そして、本実施の形態において、制御部１０６が状態情報の一致／不一致／類似性を判断するためには、ＩＰアドレスとサブネットマスクの情報をさらに必要とする。
【００９５】
このため、制御部１０６は、エントリ８０１に含まれるコンテキストと記録時刻とを、検索条件とした上で、記憶部１０１から、情報ＩＤが‘ｂ’（自ノードIPアドレス）のエントリと、情報ＩＤが‘ｃ’（自ノードサブネットマスク）のエントリと、を取得する。
【００９６】
図８に示すエントリ８０１のコンテキストがＣＴＸ１、記録時刻がＴ２であることから、制御部１０６は、「情報ＩＤ＝ｂ、コンテキスト＝ＣＴＸ１、記録時刻＝Ｔ２」と、「情報ＩＤ＝ｃ、コンテキスト＝ＣＴＸ１、記録時刻＝Ｔ２」の条件に一致するエントリを取得する。結果として、エントリ８０２とエントリ８０３が取得できる。
【００９７】
このように、制御部１０６は、「コンテキスト＝ＣＴＸ１、記録時刻＝Ｔ２」を検索条件として記憶部１０１に検索を行うことで、現在のネットワークの状態情報と一致する、過去のネットワークの状態情報を取得できる。
【００９８】
つまり、制御部１０６は、現在のネットワークの状態情報として、ネットワークインターフェイスの種別：無線ＩＦ、自ノードＩＰアドレス：ＩＰ２'、自ノードサブネットマスク：ＭＡＳＫ２、導出したサブネット：ＩＰ２'/ＭＡＳＫ２＝ＮＥＴ２を取得している。
【００９９】
そして、制御部１０６は、検出した過去のネットワークの状態情報として、ネットワークインターフェイスの種別：無線Ｉ／Ｆ、自ノードＩＰアドレス：ＩＰ２、自ノードサブネットマスク：ＭＡＳＫ２、導出したサブネット：ＩＰ２/ＭＡＳＫ２＝ＮＥＴ２を取得している。
【０１００】
これらの情報に基づいて、制御部１０６は、現在のネットワークの状態情報と、検出した過去のネットワークの状態情報とが一致していると判断する。なお、この時点で、両者の情報が異なっており、制御部１０６が、不一致と判断した場合には以降の処理は行わず、Ｓ６０７においてＯＳもしくはプロトコル仕様により規定された値を初期値として導出する。または、現在のネットワークの状態情報と、検出した過去のネットワークの状態情報との類似性に注目して、エントリの再取得を試みても良い。例えば、上述した制御部１０６が行う検出処理において、記録情報を検索条件に含めずにコンテキストだけで検索を行うようにしてもよい。
【０１０１】
制御部１０６が、状態情報が一致していると判断した場合、過去の状態情報の記録時刻Ｔ２を検索条件として、記憶部１０１から他のエントリを取得する。図８に示した記憶部１０１からは、エントリ８０４、８０５、８０６及び８０７が取得できる。
【０１０２】
この結果、制御部１０６は、各エントリのコンテキストから、Ｗｅｂブラウザを用いたＴＣＰの通信を行ったこと、エントリ８０４から平均送信スループットが１００ｋｂｐｓであること、エントリ８０５から平均受信スループットが７００ｋｂｐｓであること、エントリ８０６及び８０７からＴＣＰのパラメータがＰＡＲＡＭ３、ＰＡＲＡＭ４で有ることを認識できる。
【０１０３】
これらエントリのうち、ＴＣＰのパラメータがＰＡＲＡＭ３、ＰＡＲＡＭ４が、Ｗｅｂブラウザを制御するための通信制御情報に相当する。
【０１０４】
そして、制御部１０６は、取得したエントリに含まれるコンテキストと現在のネットワークの状態情報との間の一致／不一致／類似性を確認する。各エントリのコンテキストでは、アプリケーションとして「Web  Browser（Ｗｅｂブラウザ）」が登録されているので、現在の状態情報と、アプリケーションは一致する。その他の各種エントリについても同様の判断を行うものとして、説明を省略する。なお、判断結果としては、各エントリ共に、現在の状態情報と一致する情報が含まれていると判断したものとする。
【０１０５】
なお、この時点で、制御部１０６が、現在の状態情報と一致せず適切なエントリではない判断した場合には以降の処理は行わず、Ｓ６０７においてＯＳもしくはプロトコル仕様により規定された値を初期値として導出する。または、類似性の判断を行った上で取得したエントリの値を利用しても良い。例えば、アプリケーションがＷｅｂブラウザで一致するが、通信相手のポート番号が一致しないという場合を考える。この場合は「Ｗｅｂブラウザが使用できる範囲の通信」という視点で類似性があると考えることができる。この判断によれば、取得したエントリを用いた処理が継続しても良い。この類似性の判断基準としては、アプリケーションが一致する場合、ユーザ情報が一致する場合、通信情報の一部が一致する場合、データ種類が一致する場合、及びこれらいくつかの組み合わせ等を設定すればよい。なお、どの組み合わせをどのような優先順位で判断条件として用いればよいのかは、設計事項であるため、説明を省略する。
【０１０６】
適切なエントリと判断した後、制御部１０６は、記憶部１０１から取得したエントリに含まれる通信制御情報が、現在のネットワーク環境で再現可能か否か判断する。具体的には、制御部１０６は、現在実行中の他のアプリケーションが使用するネットワークの帯域と、記憶部１０１から取得したＷｅｂブラウザが過去に使用したネットワークの帯域とに基づいて、現在起動しているＷｅｂブラウザに対して、過去と同様のネットワークの帯域を提供できるか否か判断する。なお、今回は無線ネットワークインターフェイスを用いていることから、無線インターフェイスの実効帯域も考慮する必要がある。
【０１０７】
もし、制御部１０６は、過去に使用された帯域が、現在Ｗｅｂブラウザに提供できる帯域を上回る場合、取得したＴＣＰパラメータ（通信制御情報）はそのままの値では使用できないと判断する。この場合、制御部１０６は、過去のＴＣＰ制御情報ＰＡＲＭ３と、ＰＡＲＭ４に含まれる値を小さくして、インターフェイスの実効速度を超えないように調整し（例えばウィンドウサイズを半分にしたり、４分の３にするなどの調整を行い）、初期値を導出する（ステップＳ６０７）。なお、調節後の値を、ＰＡＲＭ３’、ＰＡＲＭ４’とする。
【０１０８】
そして、制御部１０６は、初期値として、調整した値（ＰＡＲＭ３’、ＰＡＲＭ４’）を、実行部１０７に対して設定する（ステップＳ６０８）。その後、実行部１０７が、Ｗｅｂブラウザを実行する（ステップＳ６０９）。
【０１０９】
以上、図６に示す処理手順において、Ｗｅｂブラウザを実行する場合における、初期値の導出手順の一例を示した。
【０１１０】
なお、上述した通信制御情報（例えばＴＣＰ制御パラメータ）の導出手順は、通信の開始時点に制限するものではなく、通信装置１００のネットワークインターフェイスの変更や、通信装置１００のネットワーク環境が変化するタイミングで実行しても良い。例えば、通信装置１００において、無線インターフェイスから有線インターフェイスへの切り替えが発生した時には、有線インターフェイスを使用した時のエントリ（例えば記録時刻Ｔ１で記録されたエントリ）を用いて、通信制御情報を再導出できる。
【０１１１】
なお、上述した例では、通信制御情報として、ＴＣＰのパラメータについて説明したが、他のパラメータでも良い。例えば、ビデオ会議を行うアプリケーションであれば、通信制御情報として、ビデオ映像の解像度やビットレートを導出する（予想帯域が大きくなってしまう場合には、解像度やビットレートを小さくするなど）などが考えられる。
【０１１２】
他にも、検出部１０９がアプリケーションプログラムの送受信パケットサイズについて、単位サイズごとの出現頻度を検出し、検出した出現頻度を記憶部１０１に通信制御情報として記録することで、制御部１０６が、通信制御情報として取得した出現頻度に基づいて、適切な送受信間隔を実現するためにスケジューリング間隔を実行部１０７に対して設定することも考えられる。さらに、ＣＰＵと外部のパケット処理エンジンとを使い分け分ける閾値を通信制御情報として導出したり、ＱＯＳパラメータを通信制御情報として導出しても良い。
【０１１３】
また、制御部１０６が、通信制御情報から初期値を導出する処理手順として、記憶部１０１に通信制御情報として格納されている値を半分にしたり、４分の３にする例について説明した。しかしながら、このような導出手順に制限するものではなく、より解析的な調整を行っても良い。
【０１１４】
例えば、典型的な無線ネットワークモデルを内蔵し、電波状況とアプリケーションから予想されるスループットを算出するなどの処理を行っても良い。ただし、これらの処理により多量の電力を消費してしまっては本末転倒であるため、簡易なモデルに留めることが望まれる。
【０１１５】
次に、通信装置１００における、統計値導出の手順について説明する。本実施の形態においては、記憶部１０１に適切なエントリを記憶させるために、通信装置１００では、検出部１０９が検出した状態情報に基づいて、登録・更新部１０５が逐次更新を行う。なお逐次更新の対象となる情報は、実行部１０７のアプリケーションプログラムを制御する通信制御情報でも良いが、以下に示す例では記憶部１０１に保存されている状態情報を更新する場合について説明する。
【０１１６】
まず、統計値導出を行わない状態情報について説明する。検出部１０９が検出した状態情報をそのまま記憶させたい場合、登録・更新部１０５は、検出した状態情報に加工などの特別な処理を行わず、記憶部１０１に対して登録、更新を行う。特別な処理を行わない状態情報としては、例えば、ネットワークインターフェイス、当該インターフェイスに付与されているＩＰアドレスとサブネットマスク、送受信パケット数、キューのサイズ、プロセッサ使用量などが該当する。これらの情報は、過去の情報との間で何らかの演算を行うことなく保存できる。
【０１１７】
一方、何らかの加工処理が必要な状態情報も存在する。さらには、検出部１０９に検出された状態情報と、記憶部１０１にすでに記憶されていた過去の状態情報との間で、何らかの演算が必要な状態情報が存在する。これら状態情報については、記憶部１０１に記憶された状態情報を取得した後、制御部１０６が、取得した過去の状態情報と、検出された状態情報との間で演算処理を行い、統計値を導出した後、登録・更新部１０５が、記憶部１０１に対して導出した統計値の登録、更新を行う。
【０１１８】
例えば、統計値の導出が必要な状態情報として、送受信パケット数がある。この場合、制御部１０６は、検出した送受信パケットに対して、時間要素を考慮にいれて、平均送受信パケット数やバースト率などを導出する。
【０１１９】
また、記憶部１０１に送受信バイト数が記録されていれば、制御部１０６は、平均送受信スループット、最小スループット、及び最大スループットなどが算出できる。
【０１２０】
制御部１０６が、これらの値を算出するにあたり、記憶部１０１に保存された過去の監視値や統計値を利用してもよい。（図７のステップＳ７０５）。例えば、制御部１０６は、スループットを導出する場合、直前に保存された送受信バイト数を記憶部１０１から読み出し、カウンタ値との差分を求めてスループットを導出する。もし、記憶部１０１に過去の平均送受信スループットが記憶されていれば、当該値と通信開始からの経過時間を用いて平均送受信スループットを更新する。
【０１２１】
制御部１０６が、導出する統計値の種類については、実際に動作させるアプリケーションプログラムに依存する。例えば、遅延に敏感なリアルタイムアプリケーションであれば、制御部１０６が平均遅延やバースト率を導出し、これらの値を調節することで通信品質が向上するため、それらの値を導出することに意味がある。
【０１２２】
しかし、スループットについては平均値ではなく一時的な落ち込みに対して敏感に調節することが重要と考えられ、統計的なスループット情報にはメリットが少ないと考えられる。一方、バルク転送を行うアプリケーションであれば継続して高いスループットが維持されることが好ましいと考えられ、平均送受信スループットを導出するメリットがあると考えられる。このように、制御部１０６は、必要に応じて適切な統計値を導出する。
【０１２３】
本実施の形態にかかる通信装置１００では、当該通信装置１００及びアプリケーションの使用環境の取得や、ネットワークの接続状況を検出し、それら情報を、通信を制御するための通信制御情報及びアプリケーションと関連づけて記憶部１０１に記憶したため、類似した状況に遭遇した場合には過去に設定した通信制御情報に基づいて初期値を導出し、当該初期値で設定を行うことを可能とした。
【０１２４】
これにより、通信装置１００は、アプリケーションプログラムを利用する際に、特別な処理を行うことなく、現在のネットワーク環境に適切した通信制御情報（例えば初期値）を導出し、当該通信制御情報でアプリケーションプログラムを制御することができるので、状況に応じた通信状態を維持できる。さらに、通信装置１００においては、適切な通信状態を維持するために、特別な計算処理が不要なことから、計算処理負担を軽減すると共に、消費電力を削減することができる。
【０１２５】
また、従来は通信環境と関係ない初期値を設定した上で、通信環境に応じた制御を行って、適切なパラメータを導出した。これに対し、通信装置１００では、上述した様に過去に最適なものとして設定したパラメータを初期値として設定したので、適切なパラメータにより速く到達することができる。さらには、適切なパラメータにすぐに到達することが可能となったため、処理演算の負荷を軽減すると共に、処理演算による電力消費を抑止することができる。
【０１２６】
（第２の実施の形態）
第２の実施の形態では、一つのアプリケーションプログラムが、複数種類のデータを扱う例について説明する。なお、第２の実施の形態にかかる通信装置は、第１の実施の形態の通信装置１００と同様の構成を備えるものとして説明を省略する。
【０１２７】
第２の実施の形態にかかる通信装置１００では、アプリケーションプログラムとして、第１の実施の形態と同様に、Ｗｅｂブラウザを利用した例について説明する。このＷｅｂブラウザが、通信部１０４による通信で得られた複数種類のデータを同時に使用する例とする。
【０１２８】
図１０に、本実施の形態で仮定するアプリケーションプログラムの動作画面例を示す。ウィンドウ１００１は、Ｗｅｂブラウザ全体のウィンドウを示している。第１の領域１００２は、ウィンドウ１００１内でリアルタイムに受信している動画データを表示する領域とする。第２の領域１００３は、ウィンドウ１００１内で動画ではない情報（例えば、テキストデータ又は静止画など）を表示する領域とする。
【０１２９】
上述した各領域の表示は、通信部１０４の通信により得られる、複数種類のデータの取得により実現される。この受信する複数種類のデータのうち、動画データの通信は、動画データはリアルタイムで表示する必要があるため、低遅延で安定した帯域を保証して、正確にデータを取得するように通信を行う必要がある。そして、複数種類のデータのうち、テキストデータや静止画データは、帯域が空いている時間帯に受信できればよい。
【０１３０】
このため、同一アプリケーションプログラムが実行する通信であっても、データの種類毎に通信の制御を異ならせる必要がある。そこで、本実施の形態にかかる通信装置１００では、同一アプリケーションプログラムであっても、データの種類に応じて制御に用いる通信制御情報を異ならせることとした。具体的には、データ種類に応じて、コンテキストを異ならせることで、別エントリとして、記憶部１０１に記憶されることとした。
【０１３１】
図１１に示すコンテキストにおいては、エントリ１１０１にデータ種類として“video/mpeg”を登録し、エントリ１１０２にデータ種類として“text/html”を登録した。これにより、実行部１０７により実行されたアプリケーションプログラムが行う通信の制御を、データ種類に応じて明確に区別することを可能とした。つまり、第１の領域１００２で使用される動画データの通信制御に用いる通信制御情報を取得するには、エントリ１１０１のコンテキストを用い、第２の領域１００３で使用されるＨＴＭＬファイルの通信制御に用いる通信制御情報を取得するには、エントリ１１０２のコンテキストを用いる。なお、通信制御情報を取得する際の処理については、第１の実施の形態と同様として説明を省略する。
【０１３２】
このようにして、第１の実施の形態と同様に、ユーザがＷｅｂブラウザの起動を指示した場合に、Ｗｅｂブラウザが受信するデータ種類毎の通信制御に対して、通信制御情報に基づく初期値が設定される。
【０１３３】
しかしながら、通信装置１００において実行されたＷｅｂブラウザが、Ｗｅｂページに実際にアクセスするまで、受信するデータの種類が不明な場合も多い。例えば、図１２の例で示したＷｅｂページも、全体を表すＷｅｂページとして単一のＨＴＭＬで記述されており、当該Ｗｅｂページの内部を動画データとテキストデータとの領域に分かれているものとする。
【０１３４】
本実施の形態にかかる通信装置１００では、このような場合においても、データ種類毎の通信を適切に識別して制御することができる。まず、記憶部１０１には、図１２に示す制御情報を記憶しているものとする。
【０１３５】
図１２に示す状態情報において、情報ＩＤを以下に示すものとする。なお、図１２に示すコンテキストＣＴＸ１は、図１１に示したエントリ１１０１に該当し、コンテキストＣＴＸ２は、図１１に示したエントリ１１０２に該当するものとする。
【０１３６】
そして、図１２で示された‘ｅ’〜‘ｈ’の情報ＩＤは、以下に示す情報と定義されている。
ｅ）平均受信スループット
ｆ）ＴＣＰ輻輳制御情報
ｇ）受信側平均遅延
ｈ）受信側ジッタ
【０１３７】
ところで、本実施の形態にかかる通信装置１００においても、第１の実施の形態と同様に、アプリケーションプログラムが起動した場合に、ネットワーク環境に応じた通信制御情報を取得して、初期値を導出して、当該初期値を実行部１０７に対して設定するが、Ｗｅｂブラウザを起動した直後では、どのＷｅｂページにもアクセスしていないため、データの種類が特定できず、記憶部１０１に記憶されたエントリを取得できないことになり、初期値の設定ができない。
【０１３８】
このような場合に対応する手段としては、二つの手法が考えられる。まず第１の手法としては、データの種類に拘わらず、アプリケーションプログラムに関連するエントリを予め取得しておく手法がある。第２の手法としては、アプリケーションプログラムがデータの取得などの事象が発生したことをトリガーとして、取得したデータの種類がコンテキストとして設定された各エントリの取得を行う手法である。
【０１３９】
第１の手法を用いて、予めエントリを取得し、取得したエントリに基づいて、導出された初期値を設定するという実装にしたと仮定する。この場合、制御部１０６は、実行するアプリケーションプログラムと対応付けられている、データ種類全てのエントリに基づいて初期値の導出と、導出した初期値の設定とを行う。本実施の形態にかかる制御部１０６は、ＨＴＭＬファイルがデータ種類として登録されているコンテキストを有するエントリの通信制御情報に基づいて初期値の導出と、導出した初期値の設定を行うと共に、ＭＰＥＧビデオがデータ種類として登録されているコンテキストを有するエントリの通信制御情報に基づいて初期値の導出と、導出した初期値の設定を行う。なお、具体的な処理手順は第１の実施の形態と同様として説明を省略する。
【０１４０】
これにより、図１０に示すような一つのアプリケーションプログラムで、複数種類のデータの通信を実行する場合に対応することが可能となる。また、複数種類のデータに基づく複数の通信に制限するものではなく、同一種類のデータについて複数の通信が必要な場合に、通信毎に異なる初期値を設定してもよい。このように、本実施の形態にかかる通信装置１００においては、異なる性質を有する複数の通信を行う場合に、通信毎に異なる通信制御情報に基づいてパラメータ（例えば初期値）を設定して制御することができる。
【０１４１】
また、第２の手法を用いて、アプリケーションプログラムがデータの取得などの事象が発生したことをトリガーとして、取得したデータの種類がコンテキストとして設定された各エントリの取得を行う手法を実装したと仮定する。この場合、通信部１０４がＨＴＭＬファイルを受信し、次の通信要求を生成する段階で、受信したデータに対応するコンテキストを有するエントリが記憶部１０１に記憶されているか否か判断し、記憶されていると判断した場合に、当該エントリを取得し、当該エントリに含まれている通信制御情報に基づいて、通信設定を行えばよい。
【０１４２】
上述した実施の形態にかかる通信装置１００では、アプリケーションプログラムが様々なデータを扱う場合に、当該データ毎の状態情報及び通信制御情報を記憶部１０１に記憶しておくことで、一つのアプリケーションプログラムで様々な通信が行われた場合に、当該通信毎に適切に初期値を導出し、通信制御を行うことができる。これにより、各通信制御において適切なパラメータに速やかに到達することができる。
【０１４３】
本実施の形態にかかる通信装置１００では、第１の実施の形態で示した効果を有する他、一つのアプリケーションが複数の用途で用いられる場合であっても、用途毎に適切にパラメータを設定することができる。
【０１４４】
（第３の実施の形態）
第３の実施の形態では、複数ユーザが、通信装置１００を使用する場合について説明する。
【０１４５】
図４に示したように、記憶部１０１が記憶するコンテキストには、ユーザ情報が含まれている。通信制御を行う際に、ログインしているユーザと一致するユーザ情報を含むエントリを取得することで、ユーザ毎に適した通信制御を行うことができる。
【０１４６】
これにより、一つの通信装置１００を、複数のユーザで共有している場合に、ログインしているユーザ毎に適切な制御を行うことができる。つまり、複数のユーザが利用する場合に、同一の通信装置１００であっても起動するアプリケーションプログラムと考えられる。ユーザに応じて複数の異なるアプリケーションプログラムを起動することも考えられる。この場合、同一のアプリケーションプログラムであっても、ユーザ毎に割り当てる帯域を変更する方が好ましい。このように一つのアプリケーションプログラムを、複数のユーザで使用する場合に、ユーザ毎に適切な制御を行うことが可能となる。
【０１４７】
また、通信装置１００は、図１３に示すようなネットワークシステムを構成する各装置に適用することができる。
【０１４８】
図１３に示すネットワークシステムにおいては、ストレージ１３０１と、サーバ１３０２と、端末１３０３〜１３０５と、これらを接続するネットワーク１３０６とで構成されている。ストレージ１３０１に通信装置１００を実現するためのプログラムが格納されている。
【０１４９】
そして、サーバ１３０２、又は端末１３０３〜１３０５が、ネットワーク１３０６介してストレージ１３０１に記憶されたプログラムを実行することで、上記各装置が通信装置１００と同等の構成を備えることになる。
【０１５０】
サーバ１３０２が、ストレージ１３０１に記憶されたアプリケーションで、通信装置１００と同等の構成を実現する例としては、端末１３０３〜１３０５がプログラムをサーバ１３０２上でのみ実行されるシンクライアントの場合が考えられる。本実施の形態にかかる端末１３０３〜１３０５は、シンクライアントでも、プログラムをストレージ１３０１からダウンロード可能なクライアントのどちらであってもよい。
【０１５１】
さらに、ストレージ１３０１には、サーバ１３０２又は端末１３０３〜１３０５が実行する各プログラムが、図２に示す形式又はそれに準ずる形式で記憶されている。そして、ストレージ１３０１に記憶されたアプリケーションプログラム及び制御情報は、必要に応じて、サーバ１３０２や、端末１３０３〜１３０５に送信される。送信されたアプリケーションプログラム及び制御情報は、サーバ１３０２や、端末１３０３〜１３０５の図２に示す形式で、サーバ１３０２や、端末１３０３〜１３０５が備える記憶装置（例えばＲＡＭ）等に展開される。
【０１５２】
この場合に、ストレージ１３０１に記憶されている制御情報のコンテキストには、ユーザ情報が設定されている。これにより、ユーザが、どの装置（通常のクライアント又はシンクライアントして機能する端末１３０３〜１３０５）を利用しても、ネットワーク状況と使用するユーザに適切な通信制御を行うことが可能となる。
【０１５３】
このようにストレージ１３０１で複数のユーザが使用するアプリケーションプログラム及び制御情報を記憶し、当該制御情報のコンテキストにおいてユーザ情報を保持することで、各装置（端末１３０３〜１３０５）のそれぞれについて多数のユーザが共有して使用する場合に、装置に拘わらず、ログインしているユーザに適した通信制御を行うことが可能となる。
【０１５４】
図１４に、サーバ１３０２又は端末１３０３〜１３０５が備える記憶部１０１に格納された後のアプリケーションプログラム１４０１及び制御情報１４０２の例を示す。図１４に示す記憶部１０１に格納された後の制御情報１４０２では、情報ＩＤ‘ａ’が設定されたエントリが格納されている。そして、図１４に示す各エントリのコンテキストには、ユーザＡ〜ユーザＣを識別する情報が設定されていることが確認できる。なお、図１４に示すコンテキストの形式においては、実際の形式は図３で示した通りであるが、説明を容易にするためにユーザ情報に着目して記載した。
【０１５５】
このように、アプリケーションプログラムが同一且つ情報ＩＤが同一であっても、ユーザ毎に異なる値を保持させることができる。これにより、例えば、ＷｅｂブラウザをＷｅｂメールを利用する目的で、端末１３０３〜１３０５のいずれかを利用するユーザＡについては、平均受信スループットとして５００ｋｂｐｓという値が保存される。一方、端末１３０３〜１３０５のいずれかの端末で、動画を視聴する目的でＷｅｂブラウザを起動するユーザＢについては、平均受信スループットとして３Ｍｂｐｓという値が保存される。
【０１５６】
このとき、あるユーザはＷｅｂブラウザをＷｅｂメールサーバにアクセスするために利用することが多く、別のユーザは動画配信サーバにアクセスして動画を視聴するために利用することが多いと考えられる。つまり、ユーザ毎に適切な状態情報及び制御情報を記憶することができる。
【０１５７】
本実施の形態にかかる環境情報取得部１０８は、実際にアプリケーションプログラムを起動したユーザを示すユーザ情報を特定し、ストレージ１３０１がユーザの過去の使用状況を蓄積している。なお、蓄積手順については、記憶部１０１がストレージ１３０１に変更された他は、第１の実施の形態と同様として説明を省略する。
【０１５８】
また、端末１３０３〜１３０５がシンクライアントの場合、ユーザが任意の端末を使用した場合に、サーバ１３０２が、ユーザを識別するユーザ情報を特定し、当該ユーザ情報が含まれるコンテキストを有するエントリを、ストレージ１３０１から取得する。なお、ユーザ情報の特定手法は、いずれの手法でも良く、各端末１３０３〜１３０５のログイン認証時のユーザ情報を用いても良い。そして、取得したエントリから、ユーザに適した初期値の導出が可能となる。
【０１５９】
また、該アプリケーションプログラムを実行部１０７で実行している間にも、検出部１０９にてネットワークにおける動作傾向を示す情報を検出する。そして、制御部１０６が統計処理を施すことにより、特定のユーザの使用傾向を導出できる。さらに、導出した使用傾向をストレージ１３０１にアプリケーションプログラムと関連づけて記憶することで、次回の動作に備えることができる。
【０１６０】
この初期値導出過程および使用傾向の導出過程は、図６ならびに図７で述べた過程に準ずる。ただし、第１の実施の形態の詳細な説明で述べた過程とは細部が異なるため、補足する。
【０１６１】
第１の実施の形態においては一例として、ネットワークの状態情報の一致／不一致／類似性に基づいてエントリを取得し、当該エントリと関連付けられた通信に用いる制御情報の一致／不一致／類似性を判断して、初期値を導出すると説明した。これに対して、本実施の形態では、エントリを取得する際に、ユーザ情報を最高優先度で判断するように実装しても良い。こうすることでユーザ指向のパラメータ調整を確実に実行できるようになる。
【０１６２】
逆に、コンテキストに含まれるユーザ情報が異なっても他の情報が類似する場合、当該コンテキストを有するエントリを取得し、当該エントリの制御情報に基づいて、初期値を導出しても良い。例えば、ユーザＡがＷｅｂブラウザを使った情報はストレージ１３０１に記憶されているが、ユーザＣがＷｅｂブラウザを使った時の情報はストレージ１３０１に記憶されていないとする。その場合、ユーザＡが設定されたエントリを用いて、ユーザＣの初期値を導出しても良い。
【０１６３】
本実施の形態よれば、ユーザ情報を用いて、ストレージ１３０１に記憶されている制御情報から、適切なエントリを取得し、当該エントリに従ってパラメータの調整を行うこととしたため、一つのアプリケーションを複数のユーザで使用する場合であっても、適切にパラメータを調節することができる。特に、複数の端末を備えるネットワークシステムにおいて、ユーザがどの端末を使用しても、ユーザに適した通信制御を行うことが可能となる。
【０１６４】
本実施の形態の通信装置１００は、図１５に示すように、ＣＰＵ１５０１と、ＲＯＭ（Read  Only  Memory）１５０２と、ＲＡＭ１５０３と、ＨＤＤ１５０４、有線ネットワークＩ／Ｆ１０３と、無線ネットワークＩ／Ｆ１０２と、これらを接続するバス１５０５と、を備えており、通常のコンピュータを利用したハードウェア構成となっている。
【０１６５】
ＨＤＤ１５０４は、記憶部１０１に相当する。さらに検出部１０９が検出を行うための専用ハードウェアを備えても良い。また、制御部１０６や実行部１０７は、ＯＳ（オペレーティング  システム）で実現しても良い。また、実行部１０７が利用する作業領域等は、ＲＡＭ１５０３上に作成される。
【０１６６】
本実施の形態の通信装置１００で実行される通信プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【０１６７】
また、本実施の形態の通信装置１００で実行される通信プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施形態の通信装置１００で実行される通信プログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【０１６８】
また、本実施形態の通信装置１００で実行される通信プログラムを、ＲＯＭ１５０２等に予め組み込んで提供するように構成してもよい。
【０１６９】
本実施の形態の通信装置１００で実行される通信プログラムは、上述した各部（通信部、登録・更新部、制御部、実行部、環境情報取得部、検出部）を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ１５０１が上記記憶媒体から通信プログラムを読み出して実行することにより上記各部が、主記憶装置となるＲＡＭ１５０３上にロードされ、通信部、登録・更新部、制御部、実行部、環境情報取得部、検出部がＲＡＭ１５０３上に生成されるようになっている。
【図面の簡単な説明】
【０１７０】
【図１】第１の実施の形態にかかる通信装置の構成を示すブロック図である。
【図２】記憶部が記憶している情報を表した概念図である。
【図３】記憶部が記憶する制御情報のテーブル構造を示した図である。
【図４】制御情報が有するコンテキストの詳細情報の第１の例を示した図である。
【図５】制御情報が有するコンテキストの詳細情報の第２の例を示した図である。
【図６】第１の実施の形態にかかる通信装置のアプリケーションプログラムの実行手順を示すフローチャートである。
【図７】第１の実施の形態にかかる通信装置のアプリケーションプログラムが実行されている間に行われる制御手順を示すフローチャートである。
【図８】記憶部において、アプリケーションプログラムＡと対応付けられている制御情報の例を示した図である。
【図９】アプリケーションプログラムＡと対応付けられている制御情報に格納されているコンテキストの例を示した図である。
【図１０】第２の実施の形態で仮定するアプリケーションプログラムの動作画面例を示す図である。
【図１１】制御情報が有するコンテキストの詳細情報の第１の例を示した図である。
【図１２】第２の実施の形態にかかる記憶部が記憶する制御情報の例を示した図である。
【図１３】第３の実施の形態にかかるネットワークシステムを構成を示す図である。
【図１４】サーバ又は端末が備える記憶部に格納された後のアプリケーションプログラム及び制御情報の例を示す図である。
【図１５】通信装置のハードウェア構成を示した図である。
【符号の説明】
【０１７１】
１００  通信装置
１０１  記憶部
１０２  無線ネットワークＩ／Ｆ
１０３  有線ネットワークＩ／Ｆ
１０４  通信部
１０５  登録・更新部
１０６  制御部
１０７  実行部
１０８  環境情報取得部
１０９  検出部
１１１  検出部
１５０  サーバ
１３０１  ストレージ
１３０２  サーバ
１３０３〜１３０５  端末
１３０６  ネットワーク
１５０１  ＣＰＵ
１５０２  ＲＯＭ
１５０３  ＲＡＭ
１５０４  ＨＤＤ
１５０５  バス
【図１】
2010074279.tif 000003
【図２】
2010074279.tif 000004
【図３】
2010074279.tif 000005
【図４】
2010074279.tif 000006
【図５】
2010074279.tif 000007
【図６】
2010074279.tif 000008
【図７】
2010074279.tif 000009
【図８】
2010074279.tif 000010
【図９】
2010074279.tif 000011
【図１０】
2010074279.tif 000012
【図１１】
2010074279.tif 000013
【図１２】
2010074279.tif 000014
【図１３】
2010074279.tif 000015
【図１４】
2010074279.tif 000016
【図１５】
2010074279.tif 000017