(57)【特許請求の範囲】
【請求項１】
分割ダウンロードするデータの範囲を、複数の通信経路のいずれかを使用する複数のセッションの各々に振り分ける処理と、
前記複数のセッションにおいて、夫々割り当てられた前記範囲のデータを並行してダウンロードする処理と、
前記複数の通信経路のうち、いずれか一方の通信経路における通信状況が劣ると判定した場合に、当該一方の通信経路を使用するセッションの一部における未受信範囲のダウンロードを、他方の通信経路を使用するセッションに切り替える切り替え処理と
を含み、
前記切り替え処理において、
前記一方の通信経路における前記通信状況が劣ると判定し、且つ前記他方の通信経路を使用する複数のセッションのうち、前記範囲のデータのダウンロードを完了しているセッションが有ると判定した場合に、前記未受信範囲の大きさが閾値を下回ると判定したときには、前記未受信範囲の前記ダウンロードを切り替えなく、
前記一方の通信経路における前記通信状況が劣ると判定した場合に、前記範囲のデータのダウンロードを完了しているセッションが無いと判定したときには、前記未受信範囲の前記ダウンロードを切り替えない、プロセッサにより実行される無線通信方法。
【請求項２】
前記切り替え処理において、前記一方の通信経路におけるスループットに所定値を乗じた値が、前記他方の通信経路におけるスループットの値よりも小さい場合に、前記一方の通信経路における前記通信状況が劣ると判定する
請求項１記載の無線通信方法。
【請求項３】
前記切り替え処理において、前記一方の通信経路における前記通信状況が劣ると判定し、且つ前記範囲のデータのダウンロードを完了しているセッションが有ると判定した場合に、前記未受信範囲の大きさが前記閾値以上であると判定したときには、前記未受信範囲の前記ダウンロードを切り替える
請求項１又は２記載の無線通信方法。
【請求項４】
前記切り替え処理において、前記一方の通信経路を使用する複数のセッションのうち、
スループットが低いセッションを選択する
請求項１乃至３のうち１記載の無線通信方法。
【請求項５】
前記切り替え処理において、前記一方の通信経路における前記通信状況が劣ると判定し、且つ前記他方の通信経路を使用する複数のセッションのうち、前記範囲のデータのダウンロードを完了しているセッションが有ると判定した場合に、前記ダウンロードを切り替えた後のセッションによるスループットの予測値が、前記ダウンロードを切り替える前のセッションによるスループットの実績値に所定値を乗じた値以上であると判定したときには、前記未受信範囲の前記ダウンロードを切り替え、前記予測値が前記実績値に前記所定値を乗じた値よりも小さいと判定したときには、前記未受信範囲の前記ダウンロードを切り替えない
請求項１乃至４のうち１記載の無線通信方法。
【請求項６】
分割ダウンロードするデータの範囲を、複数の通信経路のいずれかを使用する複数のセッションの各々に振り分け、
前記複数のセッションにおいて、夫々割り当てられた前記範囲のデータを並行してダウンロードし、
前記複数の通信経路のうち、いずれか一方の通信経路における通信状況が劣ると判定した場合に、当該一方の通信経路を使用するセッションの一部における未受信範囲のダウンロードを、他方の通信経路を使用するセッションに切り替え、
前記切り替えにおいて、
前記一方の通信経路における前記通信状況が劣ると判定し、且つ前記他方の通信経路を使用する複数のセッションのうち、前記範囲のデータのダウンロードを完了しているセッションが有ると判定した場合に、前記未受信範囲の大きさが閾値を下回ると判定したときには、前記未受信範囲の前記ダウンロードを切り替えなく、
前記一方の通信経路における前記通信状況が劣ると判定した場合に、前記範囲のデータのダウンロードを完了しているセッションが無いと判定したときには、前記未受信範囲の前記ダウンロードを切り替えない、
処理をプロセッサに実行させるための無線通信プログラム。
【請求項７】
分割ダウンロードするデータの範囲を、複数の通信経路のいずれかを使用する複数のセッションの各々に振り分ける振り分け部と、
前記複数のセッションにおいて、夫々割り当てられた前記範囲のデータを並行してダウンロードするダウンロード部と、
前記複数の通信経路のうち、いずれか一方の通信経路における通信状況が劣ると判定した場合に、当該一方の通信経路を使用するセッションの一部における未受信範囲のダウンロードを、他方の通信経路を使用するセッションに切り替える切り替え部と
を有し、
前記切り替え部は、
前記一方の通信経路における前記通信状況が劣ると判定し、且つ前記他方の通信経路を使用する複数のセッションのうち、前記範囲のデータのダウンロードを完了しているセッションが有ると判定した場合に、前記未受信範囲の大きさが閾値を下回ると判定したときには、前記未受信範囲の前記ダウンロードを切り替えなく、
前記一方の通信経路における前記通信状況が劣ると判定した場合に、前記範囲のデータのダウンロードを完了しているセッションが無いと判定したときには、前記未受信範囲の前記ダウンロードを切り替えない、無線通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分割ダウンロード技術に関する。
【背景技術】
【０００２】
複数の経路を使用する通信において、一方の経路における通信状況が劣化した場合に、経路を切り替えて通信を継続することがある。
【０００３】
但し、複数の経路を使用する複数のセッションによる分割ダウンロードを行なう場合、通信状況の悪い経路を使用するセッションによるダウンロードを切り替えることが、一概に良いとは言い切れない。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２００９／１４２０５９号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、一側面では、分割ダウンロードの効率をより良くする。
【課題を解決するための手段】
【０００６】
一態様の無線通信方法は、（Ａ）分割ダウンロードするデータの範囲を、複数の通信経路のいずれかを使用する複数のセッションの各々に振り分ける処理と、（Ｂ）複数のセッションにおいて、夫々割り当てられた範囲のデータを並行してダウンロードする処理と、（Ｃ）複数の通信経路のうち、いずれか一方の通信経路における通信状況が劣ると判定した場合に、当該一方の通信経路を使用するセッションの一部における未受信範囲のダウンロードを、他方の通信経路を使用するセッションに切り替える切り替え処理とを含む。
【発明の効果】
【０００７】
一側面においては、分割ダウンロードの効率をより良くすることができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、分割ダウンロードの手順を示す図である。
【図２】図２は、分割ダウンロードにおけるステータスの例を示す図である。
【図３】図３は、ダウンロードを行うスレッドの切り替えを説明するための図である。
【図４】図４は、無線通信装置のモジュール構成例を示す図である。
【図５】図５は、テーブルの例を示す図である。
【図６】図６は、テーブルの例を示す図である。
【図７】図７は、制御部のモジュール構成例を示す図である。
【図８】図８は、メイン処理フローの例を示す図である。
【図９】図９は、メイン処理フローの例を示す図である。
【図１０】図１０は、第１切り替え処理フローの例を示す図である。
【図１１】図１１は、第２切り替え処理フローの例を示す図である。
【図１２】図１２は、スレッド処理フローの例を示す図である。
【図１３】図１３は、無線通信装置のハードウエア構成例を示す図である。
【発明を実施するための形態】
【０００９】
図１に、分割ダウンロードの手順を示す。無線通信装置は、１段目に示すように、ＷＥＢ上のサーバからデータの先頭ブロックを取得する。この例で、先頭ブロックのサイズは、１Ｍ（メガ）バイトである。先頭ブロックには、データ全体のサイズを示す値が設定されている。
【００１０】
無線通信装置は、２段目に示すように、データ全体のサイズに相当するデータ格納領域を確保する。この例で、データ全体のサイズは、９７Ｍバイトである。データ全体のサイズから先頭ブロックのサイズを引いた残りのデータのサイズを所定の分割数で割って、１ブロック当たりのデータサイズを算出する。この例では、残りのデータのサイズ９６Ｍバイトを分割数３２で割って、１ブロック当たりのデータサイズ３Ｍバイトが求められる。３段目に示した矢印は、ブロックの境界を指している。
【００１１】
各ブロックのダウンロードが、並行して行われる。各ブロックの先頭から受信したデータは、データ格納領域に格納される。４段目の塗りつぶした領域は、受信済みの範囲を示している。また、矢印は、受信済みデータのアドレスを示している。本実施の形態で、それぞれのタウンロードは、スレッドによって行われる。また、無線通信装置は、セルラー方式の通信経路を使用してダウンロードを行うスレッド１６個と、無線ＬＡＮ（Local Area Network）方式の通信経路を使用してダウンロードを行うスレッド１６個とを用いる。
【００１２】
図２に、分割ダウンロードにおけるステータスの例を示す。第１スレッド２０１ａ乃至第１スレッド２０１ｐは、セルラー方式の通信経路を使用してダウンロードを行う。第２スレッド２０３ａ乃至第２スレッド２０３ｐは、無線ＬＡＮ方式の通信経路を使用してダウンロードを行う。図２は、分割ダウンロードを開始してからの時間経過を示している。時刻Ｔ１において、第１スレッド２０１ｂは、割り当てられた範囲のダウンロードを完了している。従って、第１スレッド２０１ｂのステータスは、「完了」である。第１スレッド２０１ｂ以外のスレッドは、いずれも未だ割り当てられた範囲のダウンロードを完了していない。従って、第１スレッド２０１ｂ以外のスレッドのステータスは、「受信中」である。
【００１３】
このとき、無線ＬＡＮ方式の通信経路における通信状況が劣化したものと想定する。本実施の形態では、一方の通信経路における通信状況が劣化した場合に、当該一方の通信経路を使用するスレッドによるダウンロードを、他方の通信経路を使用するスレッドによるダウンロードに切り替える。
【００１４】
図３は、ダウンロードを行うスレッドの切り替えを説明するための図である。第２スレッド２０３ａ乃至第２スレッド２０３ｐのうち、スループットが低いものを選んで、その第２スレッド２０３によるダウンロードを中断させる。この例では、第２スレッド２０３ｂによるダウンロードを中断させる。そして、第２スレッド２０３ｂにおいて未だ受信していない範囲のデータを、既に当初のダウンロードが完了している第１スレッド２０１ｂにおいてダウンロードする。つまり、第１スレッド２０１ｂは、ダウンロードを再開する。この例の時刻Ｔ２において、第２スレッド２０３ｂのステータスは、「中断」である。第２スレッド２０３ｂ以外のスレッドのステータスは、「受信中」である。
【００１５】
このようにすれば、第２スレッド２０３ｂにおけるダウンロードを継続する場合よりも、早くダウンロードが完了する。但し、スレッドの切り替えに伴うオーバーヘッド、通信状況の変化、あるいは再開したスレッドにおける一時的なスループットの低下などは、効率化を妨げる要因となることがある。
【００１６】
図４に、無線通信装置４００のモジュール構成例を示す。無線通信装置４００は、アプリケーションプログラム４０１、ＨＴＴＰ（HyperText Transfer Protocol）クライアント４０３、制御部４０５、ダウンロード部４０７、ＴＣＰ（Transmission Control Protocol）／ＩＰ（Internet Protocol）ドライバ４０９、テーブル記憶部４１１及びデータ記憶部４１３を有する。
【００１７】
アプリケーションプログラム４０１は、例えばブラウザである。ＨＴＴＰクライアント４０３は、アプリケーションプログラム４０１からＷＥＢ上のサーバへのアクセス要求を受けて、ＨＴＴＰに基づく制御を行う。制御部４０５は、使用する通信経路を選択し、ダウンロードを制御する。ダウンロード部４０７は、ＷＥＢ上のサーバとの間のセッションを確立させ、レンジリクエストによって当該サーバからデータを受信する複数のスレッドを有している。
【００１８】
この例で、ダウンロード部４０７は、図１で説明した先頭ブロックを取得する先行スレッド４０８の他、セルラー方式の通信経路を使用してブロックに相当するデータを取得する１６個の第１スレッド２０１ａ乃至第１スレッド２０１ｐ及び無線ＬＡＮ方式の通信経路を使用してブロックに相当するデータを取得する１６個の第２スレッド２０３ａ乃至第２スレッド２０３ｐを有している。第１スレッド２０１ａ乃至第１スレッド２０１ｐ及び第２スレッド２０３ａ乃至第２スレッド２０３ｐの各々は、並行して動作する。
【００１９】
ＴＣＰ／ＩＰドライバ４０９ａは、セルラー方式の通信経路におけるＴＣＰ及びＩＰに基づく制御を行う。ＴＣＰ／ＩＰドライバ４０９ｂは、無線ＬＡＮ方式の通信経路におけるＴＣＰ及びＩＰに基づく制御を行う。
【００２０】
テーブル記憶部４１１は、スレッドを管理するテーブルを記憶する。データ記憶部４１３には、受信したデータを格納するためのデータ格納領域が設けられる。
【００２１】
上述したＨＴＴＰクライアント４０３、制御部４０５及びダウンロード部４０７は、ハードウエア資源（例えば、図１３）と、以下で述べる処理をプロセッサに実行させるプログラムとを用いて実現される。
【００２２】
上述したテーブル記憶部４１１及びデータ記憶部４１３は、ハードウエア資源（例えば、図１３）を用いて実現される。
【００２３】
図５及び図６に、テーブル記憶部４１１に記憶するテーブルの例を示す。この例におけるテーブルは、スレッドに対応するレコードを有している。テーブルのレコードは、スレッドＩＤを設定するためのフィールドと、開始アドレスを設定するためのフィールドと、終了アドレスを設定するためのフィールドと、ステータスを設定するためのフィールドと、受信済みデータのアドレスを設定するためのフィールドとを有している。スレッドＩＤは、スレッドを識別する。この例で、Ｃ１乃至Ｃ１６は、夫々第１スレッド２０１ａ乃至第１スレッド２０１ｐを指す。同じくＷ１乃至Ｗ１６は、夫々第２スレッド２０３ａ乃至第２スレッド２０３ｐを指す。開始アドレス及び終了アドレスは、当該スレッドにおいてダウンロードするデータの範囲を示している。ステータスには、当該スレッドの状態を示す「受信中」、「完了」あるいは「中断」が設定される。受信済みデータのアドレスは、当該スレッドにおいて既に受信したデータの最終アドレスを指している。
【００２４】
図５は、図２に示した時刻Ｔ１におけるテーブルの状態を示している。スレッドＩＤ「Ｃ２」の第１スレッド２０１ｂは、既に開始アドレス４Ｍバイト乃至終了アドレス７Ｍ−１バイトまでのデータを受信している。従って、受信済みデータのアドレスは、終了アドレス７Ｍ−１バイトと一致する。一方、第１スレッド２０１ｂ以外のスレッドにおける受信済みデータのアドレスは、開始アドレスと終了アドレスとの間のアドレスを指している。
【００２５】
図６は、図３に示した時刻Ｔ２におけるテーブルの状態を示している。スレッドＩＤ「Ｗ２」の第２スレッド２０３ｂは、ダウンロードを中断している。第２スレッド２０３ｂは、中断時点において、ＢW2バイトまで受信している。つまり、開始アドレスＢW2＋１バイト乃至終了アドレス５５Ｍ−１バイトの範囲のデータは、未だ受信していない。一方、ダウンロードを再開したスレッドＩＤ「Ｃ２」の第１スレッド２０１ｂのステータスは、「受信中」である。第１スレッド２０１ｂがダウンロードするデータの範囲には、第２スレッド２０３ｂにおいて未受信のデータ範囲（開始アドレスＢW2＋１バイトと終了アドレス５５Ｍ−１バイト）が設定される。第１スレッド２０１ｂにおける受信済アドレスＢC2は、開始アドレスＢW2＋１バイトと終了アドレス５５Ｍ−１バイトとの間のアドレスを指している。
【００２６】
図７に、制御部４０５のモジュール構成例を示す。制御部４０５は、検査部７０１、確保部７０３、振り分け部７０５、起動部７０７、計測部７０９、判定部７１１、切り替え部７１３及び指示部７１５を有する。
【００２７】
検査部７０１は、各種のチェックを行う。確保部７０３は、データ格納領域を確保する。振り分け部７０５は、各スレッドに、受信するデータの範囲を振り分ける。起動部７０７は、第１スレッド２０１及び第２スレッド２０３を起動する。計測部７０９は、各第１スレッド２０１及び各第２スレッド２０３のスループットを計測する。また、計測部７０９は、セルラー方式の通信経路におけるスループット、つまり各第１スレッド２０１のスループットを示す値の合計を算出する。更に、計測部７０９は、無線ＬＡＮ方式の通信経路におけるスループット、つまり各第２スレッド２０３のスループットを示す値の合計を算出する。判定部７１１は、各種の判定を行なう。尚、判定部７１１が後述する各判定処理において用いるスループットは、例えば移動平均であってもよい。
【００２８】
切り替え部７１３は、ダウンロードを行うスレッドを切り替える。指示部７１５は、第１スレッド２０１及び第２スレッド２０３に停止を指示する。尚、制御部４０５の外に設けられた計測部によって、セルラー方式の通信経路におけるスループット及び無線ＬＡＮ方式の通信経路におけるスループットを計測するようにしてもよい。
【００２９】
上述した検査部７０１、確保部７０３、振り分け部７０５、起動部７０７、計測部７０９、判定部７１１、切り替え部７１３及び指示部７１５は、ハードウエア資源（例えば、図１３）と、以下で述べる処理をプロセッサに実行させるプログラムとを用いて実現される。
【００３０】
以下、無線通信装置４００における処理について説明する。図８に、メイン処理フローの例を示す。検査部７０１は、ＷＥＢ上のサーバが、レンジリクエストを許容するかをチェックする（Ｓ８０１）。ＷＥＢ上のサーバがレンジリクエストを許容しない場合には、分割ダウンロードを行わない。ＷＥＢ上のサーバがレンジリクエストを許容しない場合については、従来技術によるので、これ以上説明しない。
【００３１】
検査部７０１は、セルラー方式の通信状況及び無線ＬＡＮ方式の通信状況をチェックする（Ｓ８０３）。セルラー方式の通信状況及び無線ＬＡＮ方式の通信状況が良い場合に、以下の処理を行う。セルラー方式の通信状況及び無線ＬＡＮ方式の通信状況のうち、少なくとも一方が悪い場合には、以下の処理を行わない。セルラー方式の通信状況及び無線ＬＡＮ方式の通信状況のうち、少なくとも一方が悪い場合については、従来技術によるので、これ以上説明しない。
【００３２】
先行スレッド４０８は、受信するデータの先頭ブロック（例えば、１Ｍバイト）を取得する（Ｓ８０５）。先行スレッド４０８は、取得した先頭ブロックをデータ記憶部４１３に格納する。この例で、先行スレッド４０８は、ＴＣＰ／ＩＰドライバ４０９ａを用いる。但し、先行スレッド４０８は、ＴＣＰ／ＩＰドライバ４０９ｂを用いるようにしてもよい。
【００３３】
確保部７０３は、先頭ブロックからデータサイズを読む（Ｓ８０７）。確保部７０３は、先頭ブロック以降のデータを格納する領域をデータ記憶部４１３に確保する（Ｓ８０９）。
【００３４】
振り分け部７０５は、ブロックのサイズを算出する（Ｓ８１１）。具体的には、振り分け部７０５は、データサイズから先頭ブロックのサイズを引いた残りのデータのサイズを、スレッド数（この例では、３２）で割って、ブロックのサイズを求める。但し、ブロックのサイズは、均等でなくてもよい。
【００３５】
振り分け部７０５は、ブロックのサイズに基づいて、各スレッドにおいて受信するデータの範囲を振り分ける（Ｓ８１３）。振り分けられた範囲（開始アドレス及び終了アドレス）は、テーブルの各レコードに設定される。各スレッドに振り分けられた範囲は、重複しない。また、スレッドに振り分けられた範囲は、受信するデータの全体をカバーする。
【００３６】
起動部７０７は、各第１スレッド２０１を起動する（Ｓ８１５）。起動部７０７は、更に、各第２スレッド２０３を起動する（Ｓ８１７）。各第１スレッド２０１及び各第２スレッド２０３を起動すると、ダウンロードが始まる。尚、第１スレッド２０１及び第２スレッド２０３の処理については、図１２を用いて後述する。端子Ａを介して、図９に示したＳ９０１の処理に移る。
【００３７】
判定部７１１は、セルラー方式のスループットが、無線ＬＡＮ方式のスループットの１．５倍より大きいか否かを判定する（Ｓ９０１）。セルラー方式のスループットは、第１スレッド２０１ａ乃至第１スレッド２０１ｐにおけるスループットを示す値の合計である。無線ＬＡＮ方式のスループットは、第２スレッド２０３ａ乃至第２スレッド２０３ｐにおけるスループットを示す値の合計である。無線ＬＡＮ方式のスループットに乗ずる値は、１以上であれば、他の値であってもよい。この値は、例えばスレッドの切り替えに伴うオーバーヘッド、通信状況の変化、あるいは再開したスレッドにおける一時的なスループットの低下などの要因を考慮して設定される。
【００３８】
セルラー方式のスループットが、無線ＬＡＮ方式のスループットの１．５倍より大きいと判定した場合には、制御部４０５は、第１切り替え処理を実行する（Ｓ９０３）。第１切り替え処理については、図１０を用いて後述する。第１切り替え処理を終えると、Ｓ９０９の処理に移る。
【００３９】
セルラー方式のスループットが、無線ＬＡＮ方式のスループットの１．５倍より大きくないと判定した場合には、判定部７１１は、無線ＬＡＮ方式のスループットが、セルラー方式のスループットの１．５倍より大きいか否かを判定する（Ｓ９０５）。セルラー方式のスループットに乗ずる値は、１以上であれば、他の値であってもよい。この値は、例えばスレッドの切り替えに伴うオーバーヘッド、通信状況の変化、あるいは再開したスレッドにおける一時的なスループットの低下などの要因を考慮して設定される。
【００４０】
無線ＬＡＮ方式のスループットが、セルラー方式のスループットの１．５倍より大きいと判定した場合には、制御部４０５は、第２切り替え処理を実行する（Ｓ９０７）。第２切り替え処理については、図１１を用いて後述する。第２切り替え処理を終えると、Ｓ９０９の処理に移る。
【００４１】
一方、無線ＬＡＮ方式のスループットが、セルラー方式のスループットの１．５倍より大きくないと判定した場合には、そのままＳ９０９の処理に移る。
【００４２】
判定部７１１は、すべてのスレッドのステータスが「完了」になったか否かを判定する（Ｓ９０９）。いずれかのスレッドのステータスが「完了」になっていないと判定した場合には、Ｓ９０１に示した処理に戻って、上述した処理を繰り返す。
【００４３】
一方、すべてのスレッドのステータスが「完了」になったと判定した場合には、検査部７０１は、受信したデータに対する論理チェックを行う（Ｓ９１１）。論理チェックでは、例えばデータの重複あるいはデータの形式などについてチェックする。データに誤りがあれば、例えばダウンロードをし直す。
【００４４】
データが正しければ、指示部７１５は、各第１スレッド２０１に停止を指示する（Ｓ９１３）。更に、指示部７１５は、各第２スレッド２０３に停止を指示する（Ｓ９１５）。そして、メイン処理を終了する。
【００４５】
以上、スループットによって通信状況を判定する例について説明したが、受信強度によって通信状況を判定してもよい。つまり、例えば無線ＬＡＮ方式における受信強度を示す値が小さい場合に、第１切り替え処理を実行するようにしてもよい。また、セルラー方式における受信強度を示す値が小さい場合に、第２切り替え処理を実行するようにしてもよい。また、スループット及び受信強度によって通信状況を判定するようにしてもよい。
【００４６】
図１０に、第１切り替え処理フローの例を示す。判定部７１１は、ステータスに「完了」が設定されている第１スレッド２０１があるか否かを判定する（Ｓ１００１）。ステータスに「完了」が設定されている第１スレッド２０１がないと判定した場合には、そのまま第１切り替え処理を終える。切り替え先となるスレッドが、無いからである。このようにすれば、無駄な待ち時間が生じない。
【００４７】
ステータスに「完了」が設定されている第１スレッド２０１が複数ある場合には、切り替え部７１３は、そのうち１つの第１スレッド２０１を特定する（Ｓ１００３）。ステータスに「完了」が設定されている第１スレッド２０１が１つである場合には、切り替え部７１３は、その第１スレッド２０１を特定する。
【００４８】
切り替え部７１３は、ステータスに「受信中」が設定されている第２スレッド２０３のうち、スループットが低いものを１つ選択する（Ｓ１００５）。判定部７１１は、Ｓ１００３において特定した第１スレッド２０１におけるスループットの予測値が、Ｓ１００５において選択した第２スレッド２０３におけるスループットの実測値の１．５倍よりも大きいか否かを判定する（Ｓ１００７）。第２スレッド２０３におけるスループットの実測値に乗ずる値は、１以上であれば、他の値であってもよい。また、第１スレッド２０１におけるスループットの予測値は、例えば他の第１スレッド２０１におけるスループットの平均である。
【００４９】
当該予測値が当該実測値の１．５倍よりも大きくないと判定した場合には、そのまま第１切り替え処理を終える。例えばオーバーヘッドなどの要因を考慮すると、スレッドの切り替えによる効果が期待できないと想定されるからである。
【００５０】
当該予測値が当該実測値の１．５倍よりも大きいと判定した場合には、切り替え部７１３は、Ｓ１００５において選択した第２スレッド２０３における未受信範囲を特定する（Ｓ１００９）。具体的には、当該第２スレッド２０３に対応するレコードにおける受信済みデータのアドレスに１を加えた値が、未受信範囲の開始アドレスである。また、当該第２スレッド２０３に対応するレコードにおける終了アドレスが未受信範囲の終了アドレスである。
【００５１】
判定部７１１は、未受信範囲のサイズが閾値以上であるか否かを判定する（Ｓ１０１１）。未受信範囲のサイズが閾値以上ではないと判定した場合には、そのまま第１切り替え処理を終える。例えばオーバーヘッドなどの要因を考慮すると、スレッドの切り替えによる効果が期待できないと想定されるからである。
【００５２】
未受信範囲のサイズが閾値以上であると判定した場合には、切り替え部７１３は、Ｓ１００３で特定した第１スレッド２０１に、受信するデータの範囲を割り当てる（Ｓ１０１３）。具体的には、切り替え部７１３は、Ｓ１００９において特定した未受信範囲を、Ｓ１００３で特定した第１スレッド２０１に対応するレコードにおけるデータの範囲に設定する。切り替え部７１３は、Ｓ１００５において選択した第２スレッド２０３にダウンロードの中断を指示する（Ｓ１０１５）。そして、切り替え部７１３は、Ｓ１００３において特定した第１スレッド２０１に、ダウンロードの再開を指示する（Ｓ１０１７）。
【００５３】
尚、上述したＳ１００７の処理を省き、Ｓ１００５の処理の後にＳ１００９の処理に移るようにしてもよい。上述したＳ１０１１の処理を省き、Ｓ１００９の処理の後にＳ１０１３の処理に移るようにしてもよい。また、上述したＳ１００７及びＳ１０１１の処理を省き、Ｓ１００５の処理の後にＳ１００９の処理に移り、その後Ｓ１０１３の処理に移るようにしてもよい。
【００５４】
また、Ｓ１００５において、「受信中」の第２スレッド２０３が残り１つであると判定した場合には、そのまま第１切り替え処理を終えるようにしてもよい。このようにすれば、計測部７０９において、無線ＬＡＮ方式の通信経路におけるスループットの計測を継続することができる。
【００５５】
図１１に、第２切り替え処理フローの例を示す。判定部７１１は、ステータスに「完了」が設定されている第２スレッド２０３があるか否かを判定する（Ｓ１１０１）。ステータスに「完了」が設定されている第２スレッド２０３がないと判定した場合には、そのまま第２切り替え処理を終える。切り替え先となるスレッドが、無いからである。このようにすれば、無駄な待ち時間が生じない。
【００５６】
ステータスに「完了」が設定されている第２スレッド２０３が複数ある場合には、切り替え部７１３は、そのうち１つの第２スレッド２０３を特定する（Ｓ１１０３）。ステータスに「完了」が設定されている第２スレッド２０３が１つである場合には、切り替え部７１３は、その第２スレッド２０３を特定する。
【００５７】
切り替え部７１３は、ステータスに「受信中」が設定されている第１スレッド２０１のうち、スループットが低いものを１つ選択する（Ｓ１１０５）。判定部７１１は、Ｓ１１０３において特定した第２スレッド２０３におけるスループットの予測値が、Ｓ１１０５において選択した第１スレッド２０１におけるスループットの実測値の１．５倍よりも大きいか否かを判定する（Ｓ１１０７）。第１スレッド２０１におけるスループットに乗ずる値は、１以上であれば、他の値であってもよい。また、第２スレッド２０３におけるスループットの予測値は、例えば他の第２スレッド２０３におけるスループットの平均である。
【００５８】
当該予測値が当該実測値の１．５倍よりも大きくないと判定した場合には、そのまま第２切り替え処理を終える。例えばオーバーヘッドなどの要因を考慮すると、スレッドの切り替えによる効果が期待できないと想定されるからである。
【００５９】
当該予測値が当該実測値の１．５倍よりも大きいと判定した場合には、切り替え部７１３は、Ｓ１１０５において選択した第１スレッド２０１における未受信範囲を特定する（Ｓ１１０９）。具体的には、当該第１スレッド２０１に対応するレコードにおける受信済みデータのアドレスに１を加えた値が、未受信範囲の開始アドレスである。また、当該第１スレッド２０１に対応するレコードにおける終了アドレスが未受信範囲の終了アドレスである。
【００６０】
判定部７１１は、未受信範囲のサイズが閾値以上であるか否かを判定する（Ｓ１１１１）。未受信範囲のサイズが閾値以上ではないと判定した場合には、そのまま第２切り替え処理を終える。例えばオーバーヘッドなどの要因を考慮すると、スレッドの切り替えによる効果が期待できないと想定されるからである。
【００６１】
未受信範囲のサイズが閾値以上であると判定した場合には、切り替え部７１３は、Ｓ１１０３で特定した第２スレッド２０３に、受信するデータの範囲を割り当てる（Ｓ１１１３）。具体的には、切り替え部７１３は、Ｓ１１０９において特定した未受信範囲を、Ｓ１１０３で特定した第２スレッド２０３に対応するレコードにおけるデータの範囲に設定する。切り替え部７１３は、Ｓ１１０５において選択した第１スレッド２０１にダウンロードの中断を指示する（Ｓ１１１５）。そして、切り替え部７１３は、Ｓ１１０３において特定した第２スレッド２０３に、ダウンロードの再開を指示する（Ｓ１１１７）。
【００６２】
尚、上述したＳ１１０７の処理を省き、Ｓ１１０５の処理の後にＳ１１０９の処理に移るようにしてもよい。上述したＳ１１１１の処理を省き、Ｓ１１０９の処理の後にＳ１１１３の処理に移るようにしてもよい。また、上述したＳ１１０７及びＳ１１１１の処理を省き、Ｓ１１０５の処理の後にＳ１１０９の処理に移り、その後Ｓ１１１３の処理に移るようにしてもよい。
【００６３】
また、Ｓ１１０５において、「受信中」の第１スレッド２０１が残り１つであると判定した場合には、そのまま第２切り替え処理を終えるようにしてもよい。このようにすれば、計測部７０９において、セルラー方式の通信経路におけるスループットの計測を継続することができる。
【００６４】
上述した第１切り替え処理及び第２切り替え処理では、スレッドを１つ切り替える例を示したが、スレッドを２つ以上切り替えるようにしてもよい。すなわち、通信状況が劣るスレッドのうち一部を切り替えるようにしてもよい。
【００６５】
図１２に、スレッド処理フローの例を示す。まず、第１スレッド２０１によるスレッド処理について説明する。第１スレッド２０１は、ＷＥＢ上のサーバとの間のセッションを開始する（Ｓ１２０１）。第１スレッド２０１は、ＴＣＰ／ＩＰドライバ４０９ａを介して、ＷＥＢ上のサーバにレンジリクエストを送信する（Ｓ１２０３）。具体的には、第１スレッド２０１は、当該第１スレッド２０１のレコードに設定されているデータの範囲を指定して、ＷＥＢ上のサーバにダウンロードを要求する。そして、第１スレッド２０１は、当該第１スレッド２０１のレコードにおけるステータスに「受信中」を設定する（Ｓ１２０５）。
【００６６】
第１スレッド２０１は、データを受信したか否かを判定する（Ｓ１２０７）。データを受信したと判定した場合には、第１スレッド２０１は、受信したデータをデータ格納領域に格納する（Ｓ１２０９）。そして、第１スレッド２０１は、受信済みデータのアドレスを更新する（Ｓ１２１１）。具体的には、第１スレッド２０１は、格納したデータの最終アドレスを、当該第１スレッド２０１のレコードにおける受信済みデータのアドレスに設定する。そして、Ｓ１２０７に戻って、上述した処理を繰り返す。
【００６７】
Ｓ１２０７において、データを受信していないと判定した場合には、第１スレッド２０１は、ダウンロードの中断を指示されたか否かを判定する（Ｓ１２１３）。ダウンロードの中断を指示されたと判定した場合には、第１スレッド２０１は、セッションを終了する（Ｓ１２１５）。更に、第１スレッド２０１は、当該第１スレッド２０１のレコードにおけるステータスを「中断」に変更する（Ｓ１２１７）。そして、Ｓ１２２３の処理に移る。
【００６８】
ダウンロードの中断を指示されていないと判定した場合には、第１スレッド２０１は、ダウンロードが完了したか否かを判定する（Ｓ１２１９）。第１スレッド２０１は、例えば、当該第１スレッド２０１に対応するレコードにおける受信済みデータのアドレスが、同じレコードにおける終了アドレスと一致する場合に、ダウンロードが完了していると判定する。
【００６９】
Ｓ１２１９においてダウンロードが完了していないと判定した場合には、Ｓ１２０７に戻って、上述した処理を繰り返す。
【００７０】
一方、ダウンロードが完了したと判定した場合には、第１スレッド２０１は、当該第１スレッド２０１のレコードにおけるステータスを「完了」に変更する（Ｓ１２２１）。そして、Ｓ１２２３の処理に移る。
【００７１】
第１スレッド２０１は、ダウンロードの再開を指示されたか否かを判定する（Ｓ１２２３）。ダウンロードの再開を指示されたと判定した場合には、Ｓ１２０１に示した処理に戻って、上述した処理を繰り返す。但し、セッションが成立していれば、Ｓ１２０１の処理は省いてもよい。
【００７２】
ダウンロードの再開を指示されていないと判定した場合には、第１スレッド２０１は、停止を指示されたか否かを判定する（Ｓ１２２５）。停止を指示されていないと判定した場合には、Ｓ１２２３に戻って、上述した処理を繰り返す。
【００７３】
一方、停止を指示されたと判定した場合、第１スレッド２０１は、セッションを終了する（Ｓ１２２７）。そして、スレッド処理を終える。
【００７４】
続いて、第２スレッド２０３におけるスレッド処理について説明する。Ｓ１２０３において、第２スレッド２０３は、ＴＣＰ／ＩＰドライバ４０９ｂを介してＷＥＢ上のサーバにレンジリクエストを送信する。つまり、第２スレッド２０３における処理では、ＴＣＰ／ＩＰドライバ４０９ａに代えて、ＴＣＰ／ＩＰドライバ４０９ｂを用いる。その他の処理については、第１スレッド２０１の場合と同様である。
【００７５】
無線通信装置４００のハードウエア構成について説明する。図１３は、無線通信装置４００のハードウエア構成例を示す図である。無線通信装置４００は、ＣＰＵ１３０１、記憶回路１３０３、無線通信用アンテナ１３１１ａ、無線通信制御回路１３１３ａ、無線通信用アンテナ１３１１ｂ、無線通信制御回路１３１３ｂ、スピーカ制御回路１３１５、スピーカ１３１７、マイク制御回路１３１９、マイク１３２１、ＬＣＤ制御回路１３２３、ＬＣＤ１３２５、タッチパッド１３２７及びキー群１３２９を有している。
【００７６】
ＣＰＵ１３０１は、モデムＣＰＵ（Central Processing Unit）とアプリケーションＣＰＵからなることもある。記憶回路１３０３は、例えば、ＲＯＭ（Read Only Memory）１３０５とＲＡＭ（Random Access Memory）１３０７とフラッシュメモリ１３０９とを有している。ＲＯＭ１３０５は、例えば、オペレーティングシステムなどのプログラムや予め設定されているデータを格納している。ＲＡＭ１３０７は、例えば、各種プログラムを展開する領域を含んでいる。ＲＡＭ１３０７は、一時的なデータを格納する領域も含んでいる。フラッシュメモリ１３０９は、例えば、各種プログラムや各種データを格納している。
【００７７】
ＬＣＤ制御回路１３２３は、ＬＣＤ１３２５を駆動させる。ＬＣＤ１３２５は、例えばアプリケーションプログラム４０１における操作画面を表示する。タッチパッド１３２７は、例えば、ＬＣＤ１３２５の表示画面上に配置されたパネル状のセンサであり、タッチ操作による指示を受け付ける。具体的には、ＬＣＤ１３２５とタッチパッド１３２７とを一体としたタッチパネルとして用いられる。キー群１３２９の各ハードキーは、筐体の一部に設けられている。
【００７８】
無線通信用アンテナ１３１１ａは、セルラー方式による無線電波を受信する。無線通信制御回路１３１３ａは、セルラー方式における使用周波数に応じて無線通信の制御を行う。無線通信用アンテナ１３１１ｂは、無線ＬＡＮ方式による無線電波を受信する。無線通信制御回路１３１３ｂは、無線ＬＡＮ方式における使用周波数に応じて無線通信の制御を行う。
【００７９】
スピーカ制御回路１３１５は、音データに関するデジタル／アナログ変換を行う。スピーカ１３１７は、アナログデータを音として出力する。スピーカ１３１７は、音を出力する。マイク制御回路１３１９は、音データに関するアナログ／デジタル変換を行う。マイク１３２１は、音をアナログデータに変換する。
【００８０】
本実施の形態によれば、分割ダウンロードの効率をより良くすることができる。
【００８１】
また、無線ＬＡＮ方式のスループットに所定値を乗じた値が、セルラー方式のスループットの値よりも小さい場合に、無線ＬＡＮ方式における通信状況が劣ると判定する。更にセルラー方式のスループットに所定値を乗じた値が、無線ＬＡＮ方式のスループットの値よりも小さい場合に、セルラー方式における通信状況が劣ると判定する。このようにすれば、スレッド切り替えの頻度を抑制できる。
【００８２】
また、第１切り替え処理において、ダウンロードを完了している第１スレッド２０１が無い場合に、又は第２切り替え処理において、ダウンロードを完了している第２スレッド２０３が無い場合に、スレッドを切り替えないので、無駄な待ち時間が生じない。
【００８３】
また、第１切り替え処理において、スループットが低い第２スレッド２０３を選択し、又は第２切り替え処理において、スループットが低い第１スレッド２０１を選択するので、スレッド切り替えによる効率化の効果が高まる。
【００８４】
また、切り替えた後のスレッドによるスループットの予測値と、切り替える前のスレッドによるスループットの実績値との比較結果に基づいて、未受信範囲のダウンロードを切り替えるか否かを判定するので、改善の程度が低いスレッド切り替えを防げる。
【００８５】
また、未受信範囲の大きさが閾値を下回る場合に、未受信範囲のダウンロードを切り替えないので、改善の程度が低いスレッド切り替えを防げる。
【００８６】
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上述の機能ブロック構成はプログラムモジュール構成に一致しない場合もある。
【００８７】
また、上で説明した各記憶領域の構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ、処理の順番を入れ替えることや複数の処理を並列に実行させるようにしても良い。
【００８８】
以上述べた実施の形態をまとめると、以下のようになる。
【００８９】
一態様の無線通信方法は、（Ａ）分割ダウンロードするデータの範囲を、複数の通信経路のいずれかを使用する複数のセッションの各々に振り分ける処理と、（Ｂ）複数のセッションにおいて、夫々割り当てられた範囲のデータを並行してダウンロードする処理と、（Ｃ）複数の通信経路のうち、いずれか一方の通信経路における通信状況が劣ると判定した場合に、当該一方の通信経路を使用するセッションの一部における未受信範囲のダウンロードを、他方の通信経路を使用するセッションに切り替える切り替え処理とを含む。
【００９０】
このようにすれば、分割ダウンロードの効率をより良くすることができる。
【００９１】
また、上記切り替え処理において、一方の通信経路におけるスループットに所定値を乗じた値が、他方の通信経路におけるスループットの値よりも小さい場合に、一方の通信経路における通信状況が劣ると判定するようにしてもよい。
【００９２】
このようにすれば、セッション切り替えの頻度を抑制できる。
【００９３】
また、上記切り替え処理において、他方の通信経路を使用する複数のセッションのうち、上記範囲のデータのダウンロードを完了しているセッションが有る場合に、未受信範囲のダウンロードを切り替えるようにしてもよい。
【００９４】
このようにすれば、待ち時間が生じない。
【００９５】
また、上記切り替え処理において、一方の通信経路を使用する複数のセッションのうち、スループットが低いセッションを選択するようにしてもよい。
【００９６】
このようにすれば、セッション切り替えによる効率化の効果が高まる。
【００９７】
また、上記切り替え処理において、ダウンロードを切り替えた後のセッションによるスループットの予測値と、ダウンロードを切り替える前のセッションによるスループットの実績値との比較結果に基づいて、未受信範囲のダウンロードを切り替えるか否かを判定するようにしてもよい。
【００９８】
このようにすれば、改善の程度が低いセッション切り替えを防げる。
【００９９】
また、上記切り替え処理において、未受信範囲の大きさが閾値を下回る場合に、未受信範囲のダウンロードを切り替えないようにしてもよい。
【０１００】
このようにすれば、改善の程度が低いセッション切り替えを防げる。
【０１０１】
なお、上記処理をプロセッサに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納されるようにしてもよい。尚、中間的な処理結果は、一般的にメインメモリ等の記憶装置に一時保管される。
【０１０２】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１０３】
（付記１）
分割ダウンロードするデータの範囲を、複数の通信経路のいずれかを使用する複数のセッションの各々に振り分ける処理と、
前記複数のセッションにおいて、夫々割り当てられた前記範囲のデータを並行してダウンロードする処理と、
前記複数の通信経路のうち、いずれか一方の通信経路における通信状況が劣ると判定した場合に、当該一方の通信経路を使用するセッションの一部における未受信範囲のダウンロードを、他方の通信経路を使用するセッションに切り替える切り替え処理と
を含み、プロセッサにより実行される無線通信方法。
【０１０４】
（付記２）
前記切り替え処理において、前記一方の通信経路におけるスループットに所定値を乗じた値が、前記他方の通信経路におけるスループットの値よりも小さい場合に、前記一方の通信経路における前記通信状況が劣ると判定する
付記１記載の無線通信方法。
【０１０５】
（付記３）
前記切り替え処理において、前記他方の通信経路を使用する複数のセッションのうち、前記範囲のデータのダウンロードを完了しているセッションが有る場合に、前記未受信範囲の前記ダウンロードを切り替える
付記１又は２記載の無線通信方法。
【０１０６】
（付記４）
前記切り替え処理において、前記一方の通信経路を使用する複数のセッションのうち、スループットが低いセッションを選択する
付記１乃至３のうち１記載の無線通信方法。
【０１０７】
（付記５）
前記切り替え処理において、前記ダウンロードを切り替えた後のセッションによるスループットの予測値と、前記ダウンロードを切り替える前のセッションによるスループットの実績値との比較結果に基づいて、前記未受信範囲の前記ダウンロードを切り替えるか否かを判定する
付記１乃至４のうち１記載の無線通信方法。
【０１０８】
（付記６）
前記切り替え処理において、前記未受信範囲の大きさが閾値を下回る場合に、前記未受信範囲の前記ダウンロードを切り替えない
付記１乃至５のうち１記載の無線通信方法。
【０１０９】
（付記７）
分割ダウンロードするデータの範囲を、複数の通信経路のいずれかを使用する複数のセッションの各々に振り分け、
前記複数のセッションにおいて、夫々割り当てられた前記範囲のデータを並行してダウンロードし、
前記複数の通信経路のうち、いずれか一方の通信経路における通信状況が劣ると判定した場合に、当該一方の通信経路を使用するセッションの一部における未受信範囲のダウンロードを、他方の通信経路を使用するセッションに切り替える
処理をプロセッサに実行させるための無線通信プログラム。
【０１１０】
（付記８）
分割ダウンロードするデータの範囲を、複数の通信経路のいずれかを使用する複数のセッションの各々に振り分ける振り分け部と、
前記複数のセッションにおいて、夫々割り当てられた前記範囲のデータを並行してダウンロードするダウンロード部と、
前記複数の通信経路のうち、いずれか一方の通信経路における通信状況が劣ると判定した場合に、当該一方の通信経路を使用するセッションの一部における未受信範囲のダウンロードを、他方の通信経路を使用するセッションに切り替える切り替え部と
を有する無線通信装置。
【符号の説明】
【０１１１】
２０１  第１スレッド    ２０３  第２スレッド
４００  無線通信装置    ４０１  アプリケーションプログラム
４０３  ＨＴＴＰクライアント    ４０５  制御部
４０７  ダウンロード部    ４０８  先行スレッド
４０９  ＴＣＰ／ＩＰドライバ    ４１１  テーブル記憶部
４１３  データ記憶部    ７０１  検査部
７０３  確保部    ７０５  振り分け部
７０７  起動部    ７０９  計測部
７１１  判定部    ７１３  切り替え部
７１５  指示部
【図１】
0006550868.tif 000002
【図２】
0006550868.tif 000003
【図３】
0006550868.tif 000004
【図４】
0006550868.tif 000005
【図５】
0006550868.tif 000006
【図６】
0006550868.tif 000007
【図７】
0006550868.tif 000008
【図８】
0006550868.tif 000009
【図９】
0006550868.tif 000010
【図１０】
0006550868.tif 000011
【図１１】
0006550868.tif 000012
【図１２】
0006550868.tif 000013
【図１３】
0006550868.tif 000014