(57)【特許請求の範囲】
【請求項１】
近接デバイスをアップデートするためのシステムであって、
モバイル・プロキシ・デバイスに関連付けられ、アップデート・データを記憶しているメモリ領域と、
プロセッサであって、
前記モバイル・プロキシ・デバイスにより、前記モバイル・プロキシ・デバイスに近接する少なくとも１つのユーザ・デバイスからアップデート・リクエストを受信し、ここで、前記アップデート・リクエストは、ユーザ・デバイス識別子及びユーザ・デバイス状態を少なくとも含み、
前記の受信されたアップデート・リクエストに応答して、前記ユーザ・デバイス識別子及び前記ユーザ・デバイス状態に関連付けられている前記アップデート・データにアクセスし、
前記のアクセスされたアップデート・データを、前記モバイル・プロキシ・デバイスから前記ユーザ・デバイスに送信し、
前記のアクセスされたアップデート・データの送信に少なくとも関連するアップデート・メトリックスを生成し、
前記の生成されたアップデート・メトリックスをクラウド・サービスに公開する
ようプログラムされているプロセッサと、
を備えた、システム。
【請求項２】
前記アップデート・メトリックスは、受信されたアップデート・リクエストの数、送信されたアップデート・データの量、前記アップデート・データの各送信に関連する期間、アップデート成功率、及びアップデート失敗率のうちの少なくとも１つを含む、請求項１記載のシステム。
【請求項３】
前記プロセッサは、さらに、前記アップデート・データの送信時間、前記アップデート・データの送信中の前記モバイル・プロキシ・デバイスの位置、及び前記のアクセスされたアップデート・データに関連付けられている識別子のうちの少なくとも１つを示すデータを収集するようプログラムされている、請求項１又は２記載のシステム。
【請求項４】
前記プロセッサは、さらに、前記の生成されたアップデート・メトリックスから、予め定められた閾値を超えるアップデート成功率を有する前記アップデート・データを識別するようプログラムされている、請求項１乃至３いずれか一項記載のシステム。
【請求項５】
前記プロセッサは、さらに、前記ユーザ・デバイスの製造業者に、前記の生成されたアップデート・メトリックスのうちの１以上を通知するようプログラムされている、請求項１乃至４いずれか一項記載のシステム。
【請求項６】
前記アップデート・データにアクセスすることは、前記モバイル・プロキシ・デバイスがアクセス可能な前記メモリ領域を検索することを含む、請求項１乃至５いずれか一項記載のシステム。
【請求項７】
プロキシ・デバイスが、前記プロキシ・デバイスに近接する少なくとも１つのユーザ・デバイスから、アップデート・リクエストを受信するステップであって、前記アップデート・リクエストは、ユーザ・デバイス識別子及びユーザ・デバイス状態を少なくとも含む、ステップと、
前記プロキシ・デバイスが、前記の受信されたアップデート・リクエストに応答して、前記ユーザ・デバイス識別子及び前記ユーザ・デバイス状態に関連付けられているアップデート・データにアクセスするステップと、
前記プロキシ・デバイスが、前記ユーザ・デバイスに、前記のアクセスされたアップデート・データを送信するステップと、
前記プロキシ・デバイスが、前記のアクセスされたアップデート・データの送信に少なくとも関連するアップデート・メトリックスを生成するステップと、
前記プロキシ・デバイスが、前記の生成されたアップデート・メトリックスをクラウド・サービスに公開するステップと、
を含む、方法。
【請求項８】
プロキシ・デバイスに請求項７記載の方法を実行させるコンピュータ・プログラム。
【請求項９】
請求項８記載のコンピュータ・プログラムを記憶しているコンピュータ読み取り可能記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
いくつかのユーザ・デバイスは、インターネット等のグローバル・ネットワークを介して、リモート・デバイスに接続することができる。そのようなデバイスは、接続を可能にするための、ネットワーク・スタック、ネットワーク・アダプタ、コンプレックス・ユーザ・インタフェース（complex  user  interface）、サポーティング・ロジック（supporting  logic）等の追加のハードウェア及びソフトウェアを有する。しかしながら、この追加のハードウェア及びソフトウェアは、特に（例えば、ユーザ・デバイスに対するアップデートを時折得るために）そのような接続がめったに使用されない場合、ユーザ・デバイスの増大されるコスト及び複雑さをもたらす。さらに、追加のハードウェア及びソフトウェアが、ユーザ・デバイスに含まれる場合であっても、（例えば、近くにアクセス・ポイントがないことに起因して）グローバル・ネットワークへの接続が利用できないこともある。
【０００２】
そのようなユーザ・デバイス及びグローバル・ネットワークに接続する能力を有さないユーザ・デバイスに関して、ユーザは、手動でアップデートを取得してそのアップデートをユーザ・デバイスに提供することがある。例えば、ユーザは、コンピュータ又はポータブル・ドライブ（例えば、フラッシュ・ドライブ）をプリンタに接続して、プリンタ上のソフトウェアにアップデートを適用することがある。しかしながら、そのような既存のプロセスは、特に異なるアップデートを異なるユーザ・デバイスに適用しようと試みる場合、手動で、退屈で、間違いを犯しやすく、時間を消費するものである。このような既存のシステムは、効率的にアップデートを取得してそのアップデートをユーザ・デバイスに提供するように設計されてはいない。
【発明の概要】
【０００３】
本開示の実施形態は、プロキシ・デバイスからユーザ・デバイスにアップデート・データを送信する。プロキシ・デバイスは、プロキシ・デバイスに近接するユーザ・デバイスから、アップデート・リクエストを受信する。アップデート・リクエストは、ユーザ・デバイス識別子及びユーザ・デバイス状態を少なくとも含む。受信されたアップデート・リクエストに応答して、ユーザ・デバイス識別子及びユーザ・デバイス状態に関連付けられたアップデート・データが、プロキシ・デバイスによりアクセスされる。アクセスされたアップデート・データは、プロキシ・デバイスからユーザ・デバイスに送信される。
【０００４】
この概要は、発明を実施するための形態において以下でさらに説明されるコンセプトのうち選択したものを簡略化した形で紹介するために提供される。この概要は、特許請求される主題の主要な特徴又は必要不可欠な特徴を特定することを意図するものではないし、特許請求される主題の範囲を決定する際の助けとして使用されることを意図するものでもない。
【図面の簡単な説明】
【０００５】
対応する参照符号は、図面を通して、対応する部分を示す。
【図１】アップデート・ソースからモバイル・プロキシ・デバイスを介してユーザ・デバイスにアップデート・データを送信するためのシステムを示す例示的なブロック図。
【図２】アップデート・データを取得してそのアップデート・データをユーザ・デバイスに送信するための実行可能コンポーネントを有するプロキシ・デバイスを示す例示的なブロック図。
【図３】アップデート・データを求めるリクエストに応答して、デバイス固有のアップデート・データをユーザ・デバイスに送信するプロキシ・デバイスのオペレーションを示す例示的なフローチャート。
【図４】アップデート・ソースからのデバイス固有のアップデート・データをユーザ・デバイスに送信するプロキシ・デバイス上のアップデート・サービスの実行を示す例示的なシーケンス図。
【発明を実施するための形態】
【０００６】
図１〜図４を参照すると、本開示の実施形態は、デバイス固有のアップデート・データ１１２を取得して、デバイス固有のアップデート・データ１１２をプロキシ・デバイス１０２からユーザ・デバイス１０８に送信する。いくつかの実施形態において、ユーザ・デバイス１０８は、アップデート・データ１１２を取得するための、アップデート・ソース１０６への接続を欠如している。例えば、ユーザ・デバイス１０８は、アップデート・プロセスをサポートするためのユーザ・インタフェース、アップデートの進行を示すためのユーザ・インタフェース、ネットワーク・スタック、アップデート・ソース１０６と通信するためのハードウェア、及び／又はアップデート・ソース１０６に接続するための通信インタフェースを欠如していることがある。別の例として、ユーザ・デバイス１０８は、アップデート・ソース１０６からアップデート・データ１１２を取得する能力を有しているかもしれないが、（例えば、ネットワークの問題、アクセス・ポイントの欠如等に起因して）接続が利用できない。
【０００７】
本開示の態様は、モバイル及び非モバイル（例えば、固定位置における、永続的又は一時的）の両方を含む任意のプロキシ・デバイスとともに動作可能である。すなわち、いくつかの実施形態において、プロキシ・デバイス１０２は、図示し本明細書で説明する機能を提供するために、移動する必要はない。
【０００８】
いくつかの実施形態において、プロキシ・デバイス１０２は、プロキシ・デバイス１０２の通信インタフェースのレンジ内にある少なくとも１つのユーザ・デバイス１０８に、（例えば、プロトコル１１０を用いて）周期的及び／又は間欠的にアップデート・サービス２１２をブロードキャストすることができる。プロキシ・デバイス１０２は、プロキシ・デバイス１０２が、プロキシ・デバイス１０２に近接して位置する少なくとも１つのユーザ・デバイス１０８を検出したときに、アップデート・サービス２１２をブロードキャストすることができる。ユーザ・デバイス１０８がプロキシ・デバイス１０２のレンジ内にあるときに、ユーザ・デバイス１０８は、プロキシ・デバイス１０２に近接して位置していると言える。レンジは、変わり得るものであり、ユーザ・デバイス１０８の近接領域（proximity）を判定するためにプロキシ・デバイス１０２により使用される技術に依存する（例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標）の通信モジュールは、１０メートルという例示的なレンジを有し、近距離通信（ＮＦＣ）は、０．２メートルという例示的なレンジを有する、等）。
【０００９】
ユーザ・デバイス１０８が、プロキシ・デバイス１０２に近接しているときに、プロキシ・デバイス１０２は、ユーザ・デバイス１０８から、ユーザ・デバイス識別子及びユーザ・デバイス状態を少なくとも含むアップデート・リクエストを受信する。例えば、プロキシ・デバイス１０２は、アップデート・サービス２１２をブロードキャストした直後に、アップデート・サービス２１２のブロードキャスト後の予め定められた時間期間後に、且つ／あるいは、ユーザ・デバイス１０８がプロキシ・デバイス１０２に近接する次の時間に、アップデート・リクエストを受信することができる。他の実施形態において、プロキシ・デバイス１０２は、アップデート・サービス２１２を始めにブロードキャストすることなく、ユーザ・デバイス１０８から、アップデート・リクエストを受信してもよい。
【００１０】
受信されたアップデート・リクエストに応答して、プロキシ・デバイス１０２は、アップデート・ソース１０６から、ユーザ・デバイス識別子及び／又はユーザ・デバイス状態に関連付けられたアップデート・データ１１２にアクセスする。アクセスされたアップデート・データ１１２は、プロキシ・デバイス１０２から、アップデート・リクエストが受信された元であるユーザ・デバイス１０８に送信される。いくつかの実施形態において、アクセスされたアップデート・データ１１２は、アップデート・リクエストが受信された元であるユーザ・デバイス１０８のユーザ・デバイス識別子及び／又はユーザ・デバイス状態を含む特性を共有する全ての近接ユーザ・デバイス１０８に送信され得る。
【００１１】
本開示の態様は、さらに、アップデート・プロセスを実行するための適切なサポートを欠如していることがあるユーザ・デバイス１０８が、アップデート・ソース１０６からプロキシ・デバイス１０２を介して受信されたアップデート・データ１１２を用いてアップデートされることを可能にする。例えば、例示的なユーザ・デバイス１０８のいくつかは、アップデート・ソース１０６への接続を有していないことがあるが、本開示の態様は、アップデート・ソース１０６への接続を可能にするためにそのようなユーザ・デバイス１０８にハードウェア及び／又はソフトウェアを追加するというさらなる負担なく、アップデートを提供するよう動作する。例えば、ユーザ・デバイス１０８は、アップデート・プロセスを実行するためのユーザ・インタフェースを有していないこともあるし、且つ／あるいは、アップデート・ソース１０６に接続する能力を有していないこともあるが、それでも、本開示の態様を用いてアップデートすることができる。さらに、ユーザ・デバイス１０８は、設計において簡略化され、アップデートしやすく、少なくなったハードウェア・コスト及び／又はソフトウェア・コストに起因して、低減された価格を有することができる。例えば、各ユーザ・デバイス１０８上のエージェントが、アップデートを実行する。
【００１２】
ユーザ・デバイス１０８が、プロキシ・デバイス１０２からアップデートを受信したときに、ユーザ・デバイス１０８は、直ちにアップデートをインストールしてもよいし、ユーザ・デバイス１０８がオフラインになる将来の時間に（例えば、メンテナンス・サイクル中に）インストールを遅らせてもよい。アップデートは、以前のソフトウェア・ファイルを上書きしてユーザ・デバイス１０８をリブートすることにより、インストールすることができる。アップデートをインストールする代替実施形態は、アップデート・ペイロードが圧縮されている場合、アップデート・ペイロードを展開することができる、且つ／あるいは、アップデート・ファイルをインストールする前に、アップデート・ファイルの整合性及び信頼性を確実にするために、ハッシュ検証又は暗号署名チェックを任意的に実行することができる。ユーザ・デバイス１０８は、既存ファイルの完全に新たなコピーではなく、ユーザ・デバイス１０８上の既存ファイルに対する変更のみを含むより小さな差分アップデートをインストールすることができるアップデート・パッチ・インストーラを含み得る。ユーザ・デバイス１０８にソフトウェア・コマンドを介して新たなソフトウェアを使用させる前に、あるいは、ユーザ・デバイス１０８が新たなソフトウェア・バージョンをロードして実行するときにユーザ・デバイス１０８を単にリブートする前に、プロキシ・デバイス１０２は、リモート・ファイル・システムとしてユーザ・デバイス１０８にマウントして、アップデートされるファイルをユーザ・デバイス１０８に書き込んでもよいことを理解すべきである。
【００１３】
図１を参照すると、例示的なブロック図は、プロキシ・デバイス１０２に通信可能に接続されたユーザ・デバイス１０８に対して、（図２に示す）アップデート・サービス２１２をプロトコル１１０としてブロードキャストするプロキシ・デバイス１０２を示している。ユーザ・デバイス１０８は、例えば、ユーザ・デバイス＃１〜ユーザ・デバイス＃Ｎを含む。図１のプロキシ・デバイス１０２は、モバイル・プロキシ・デバイスであり得る。図１の例において、ユーザ・デバイス１０８に関連付けられたプロキシ・デバイス１０２は、デバイス固有のアップデート・データ１１２を近接ユーザ・デバイス１０８に送信するためのシステムを表している。
【００１４】
プロキシ・デバイス１０２は、モバイル・コンピューティング・デバイス又は任意の他のポータブル・デバイスを含み得る。いくつかの実施形態において、モバイル・コンピューティング・デバイスは、携帯電話機、ラップトップ、タブレット、コンピューティング・パッド、ネットブック、ゲーム・デバイス、携帯情報端末（ＰＤＡ）、及び／又はポータブル・メディア・プレーヤを含む。さらに、プロキシ・デバイス１０２は、処理ユニット又は他のコンピューティング・デバイスのグループを表し得る。プロキシ・デバイス１０２はまた、モデム、ゲートウェイ、及び、Ｗｉ−Ｆｉ（登録商標）ルータ又はネットワーク・スイッチ等のルータ型デバイスを表し得る。
【００１５】
ユーザ・デバイス１０８は、デスクトップ・パーソナル・コンピュータ、キオスク、冷蔵庫、テレビジョン、ホーム・アプライアンス、産業用制御デバイス、無線充電ステーション、電気自動車充電ステーション、プログラム可能な加熱デバイス及び／又は冷却デバイス、エレベータ、ミシン、大容量記憶デバイス、並びに卓上デバイス等のポータブル性の低い（less  portable）デバイスを含み得る。いくつかの実施形態において、ユーザ・デバイス１０８は、車両内エンターテイメント・システムであり得る。例示的な実施形態において、プロキシ・デバイス１０２の機能を使用できないとき等（例えば、プロキシ・デバイス１０２は、ネットワーク１０４から一時的に切断されていることがある）、ユーザ・デバイス１０８のうちの１つは、プロキシ・デバイス１０２として動作することができる。そのような例において、ユーザ・デバイス１０８は、例えば図３に示されるような命令を用いて、特別にプログラムされる。
【００１６】
いくつかの実施形態において、ユーザ・デバイス１０８は、同じ地理的領域（例えば、家、オフィス、車、レストラン、ショッピング・モール、ビルディング等）内に位置することがある。他の実施形態において、ユーザ・デバイス１０８は、複数の地理的位置にわたって分散している。例えば、ユーザ・デバイス１０８のうちの１以上の製造業者に関連する技術者は、道路をドライブして、道路上の家の中に位置するユーザ・デバイス１０８をアップデートしようと試みることができる。別の例において、ショッピング・モールのオーナー又はユーザ・デバイス１０８の製造業者は、そのモール内の全ての店に対してアップデート・サービス２１２を提供することができる。
【００１７】
プロキシ・デバイス１０２は、ユーザ・デバイス１０８のうちの１以上にアップデート・サービス２１２をブロードキャストする。ユーザ・デバイス１０８は、プロキシ・デバイス１０２に近接して位置している。例示的なユーザ・デバイス１０８は、アップデート・ソース１０６への接続を欠如していることがある。例えば、ユーザ・デバイス１０８は、ユーザ・デバイス１０８からリモートにあるアップデート・ソース１０６への直接接続を欠如していることがある。アップデート・サービス２１２は、プロキシ・デバイス１０２上で実行中であり得、対応するアップデート・サービスは、アップデート・ソース１０６上で実行中であり得る。アップデート・ソース１０６は、例えば、クラウドベースのサービス、サーバ、サーバのクラスタ、複数の異なるサーバ、及び／又はピア・デバイスであり得る。例示的な実施形態において、異なるユーザ・デバイス１０８に対応する異なるアップデート・データ１１２を有する複数のアップデート・ソース１０６が存在し得る。アップデート・データ１１２は、温度、地理的位置（例えば、全地球測位システム位置）、時刻、サービス内データ（in-service  data）、使用統計量（usage  statistics）等のユーザ・デバイス１０８の属性（attribute）と、プロキシ・デバイス１０２の地理的位置等のプロキシ・デバイス１０２の属性と、により決定され得る。
【００１８】
プロキシ・デバイス１０２は、ユーザ・デバイス１０８から、アップデート・リクエストを受信する。いくつかの実施形態において、アップデート・リクエストは、ユーザ・デバイス識別子及びユーザ・デバイス状態を少なくとも含む。ユーザ・デバイス識別子は、ユーザ・デバイス１０８に関連付けられた、型、モデル番号、シリアル番号、製造業者名、バージョン、及び／又は日付を含む。ユーザ・デバイス状態は、ユーザ・デバイス１０８に関連付けられた、ソフトウェア状態、ファームウェア状態、及び／又はハードウェア状態を含む。ユーザ・デバイス識別子及びユーザ・デバイス状態のこれらのリストは、例示的に過ぎないと意図されるものであり、当業者は、その全てが本開示の範囲内であると意図される代替を認識するであろう。ユーザ・デバイス状態は、アップデート・ソース１０６から取得されるアップデート・データ１１２によりアップデート可能な、ユーザ・デバイス１０８内の任意のコンポーネントに対応し得る。アップデート・リクエストは、任意の他の例示的な特性（property）又は他のユーザ・デバイス１０８からユーザ・デバイス１０８を一意に識別するための識別子をさらに含み得る。例えば、ユーザ・デバイス１０８に関連付けられたバッチ番号及び／又はアップデート・データ１１２を受信するユーザ・デバイス１０８のための所望の時間が、アップデート・リクエストとともに受信され得る。ユーザ・デバイス１０８は、全地球測位システム（ＧＰＳ）位置、使用統計量、及び時刻等の情報を送信することができる。プロキシ・デバイス１０２は、この情報自体を使用してもよいし、この情報に基づいて、アップデート・ソース１０６から異なるアップデート・データ１１２を取得してもよい。
【００１９】
ユーザ・デバイス１０８から受信されたアップデータ・リクエストに応答して、プロキシ・デバイス１０２は、アップデート・ソース１０６から、ネットワーク１０４を介して、アップデート・データ１１２を取得する。アップデート・データ１１２は、受信されたアップデート・リクエストからのユーザ・デバイス識別子及びユーザ・デバイス状態に関連付けられている。取得されたアップデート・データ１１２は、プロキシ・デバイス１０２からユーザ・デバイス１０８に送信される。
【００２０】
本開示の態様において、プロキシ・デバイス１０２は、ＣＤＭＡ（cellular  division  multiple  access）、ＧＳＭ（登録商標）（global  system  for  mobile  communication）、ＷｉＦｉ（登録商標）（wireless  fidelity）、４Ｇ／Ｗｉ−Ｍａｘ（登録商標）等を含む任意の数及びタイプの無線通信モード及び／又は有線通信モードをサポートするネットワーク１０４を介して、アップデート・データ１１２を取得する。当業者により認識されるように、ネットワーク１０４の他の通信モードも、本開示の範囲内である。いくつかの実施形態におけるユーザ・デバイス１０８は、そのようなネットワーク１０４のためのサポートを実装する機能を有することができるが、本開示の態様は、そのような機能を用いるユーザ・デバイス１０８の代わりに動作可能である。
【００２１】
アップデート・データ１１２は、プロキシ・デバイス１０２から、短波長無線信号、高周波数無線信号、及び／又は有線シリアル接続を介して、ユーザ・デバイス１０８に送信される。例えば、アップデート・データ１１２は、プロキシ・デバイス１０２から、任意のタイプの無線接続及び／又は有線接続を介して、ユーザ・デバイス１０８に送信され得る。そのような無線接続及び／又は有線接続は、ＷｉＦｉ（登録商標）、ＢＬＵＥＴＯＯＴＨ（登録商標）通信、ＩｒＤＡ（infrared  data  association）プロトコル、無線周波数（ＲＦ）通信、イーサネット（登録商標）、ユニバーサル・シリアル・バス（ＵＳＢ）、ＦｉｒｅＷｉｒｅ（登録商標）通信、近距離通信（ＮＦＣ）等を含む。
【００２２】
ユーザ・デバイス１０８は、例えば、アップデートを適用する前にバックアップを実行する能力、アップデートの複数のバージョンを記憶する能力、及び／又はアップデート履歴を記憶する能力を欠如している。ユーザ・デバイス１０８はまた、アップデート・ソース１０６に接続するための完全なネットワーキング・スタックを欠如していることもある。いくつかの実施形態において、アップデートの進行を伴うユーザ・インタフェースは、ユーザ・デバイス１０８上に表示されない。例示的な実施形態において、アップデートの進行を伴うユーザ・インタフェースが、プロキシ・デバイス１０２上で表示され得るのに対し、別の実施形態においては、アップデートの進行を伴うユーザ・インタフェースは、ユーザ・デバイス１０８上又はプロキシ・デバイス１０２上のいずれにおいても表示され得ない。ユーザ・デバイス１０８上のアップデートは、ユーザ・デバイス１０８及び／又はプロキシ・デバイス１０２上でのいかなるユーザ・インタラクションも伴うことなく、自動的に実行され得る。したがって、本開示のユーザ・デバイス１０８上にインストールされるコード（例えば、ソフトウェア）の量は、アップデート・プロセス及び／又はネットワーキング・スタック、並びに関連ハードウェアを実装する既存システムのユーザ・デバイスと比較すると、（例えば、１０パーセントだけ）低減され得る。さらに、ソフトウェアの複雑さと、アップデート・ソース１０６から正しいソフトウェアを選択してそのソフトウェアを伝送するためにいくつかの既存システムにおいて必要とされるセキュリティと、は、ユーザ・デバイス１０８の各々により必要とされない。さらに、本開示のユーザ・デバイス１０８は、アップデート・ソース１０６に直接アクセスしてアップデート・データ１１２を取得するために信頼される必要はない。実行されるアップデート・サービスのための料金がユーザ・デバイス１０８に請求される実施形態において、プロキシ・デバイス１０２は、この料金の処理に対処することができる。
【００２３】
一例において、ユーザ・デバイス１０８は、プロキシ・デバイス１０２を介して、アップデート・データ１１２を受信する、あるいは受信しないよう構成され得る。そのようなシナリオにおいて、ユーザ・デバイス１０８は、アップデート・サービス２１２のブロードキャストをリスンすることができない。ユーザ・デバイス１０８はまた、予め定められた日又は予め定められた時間に、アップデート・データ１１２を受信するよう構成され得る。例えば、ユーザ・デバイス１０８は、週末ではなく平日のみアップデート・データ１１２を受信することができる。ユーザ・デバイス１０８は、夜の間ではなく、日中の間等、特定の時間の間のみアップデート・データ１１２を受信するよう構成され得る。アップデート・データ１１２を受信する、あるいは受信しないようユーザ・デバイス１０８を構成するための予め定められた日及び予め定められた時間の任意の組合せが可能であり、これは本開示の範囲内である。さらに別の例において、ユーザ・デバイス１０８は、通常のオペレーションを再開する前のパワー・サイクル後にのみアップデート・データ１１２を受け入れるよう構成され得る。アップデートが生じるときを制限する構成可能なイベントの他の例も本開示の範囲内である。
【００２４】
プロキシ・デバイス１０２のユーザ又はアドミニストレータは、ユーザ・デバイス１０８から受信されるアップデート・リクエストを拒否又は拒絶することができる。例えば、プロキシ・デバイス１０２は、ユーザ・デバイス１０８に関連付けられた、アップデート・データ１１２を受信するためのサブスクリプション（subscription）が満了したとき、又は以前のアップデートの支払いが未払いのままであるとき、アップデート・リクエストを拒絶することができる。別の例示的な実施形態において、ユーザ・デバイス１０８のユーザは、アップデート・データ１１２を受信することを拒否してもよい。そのようなシナリオにおいて、ユーザ・デバイス１０８には、アップデートを受け入れるか又は拒否するかのオプションが提示され得、そのオプションは、ハード・ボタン、ソフト・ボタン、又はユーザ・デバイス１０８上の他の同様のユーザ・インタフェース要素を押すことにより実行され得る。別の例として、ユーザ・デバイス１０８及び／又はプロキシ・デバイス１０２は、重要なバージョン・インクリメント（version  increment）又は重大なバージョン・インクリメントを表すアップデートのみ受け入れる、あるいは実行することができるのに対し、重要性の低いソフトウェア・インクリメント（less  significant  software  increment）をスキップすることができる。例えば、ユーザ・デバイス１０８及び／又はプロキシ・デバイス１０２は、アップデート・データ１１２のベータ・バージョンをスキップするよう構成され得る。別の例において、ユーザ・デバイス１０８及び／又はプロキシ・デバイス１０２は、全ての利用可能なアップデートを受信するよう構成されてもよい。
【００２５】
本開示の態様は、コーポレート・ポリシー又は契約上のポリシーによりアップデート・ソース１０６に直接アクセスすることを許可されないユーザ・デバイス１０８とともに動作可能である。例えば、コーポレート・ファイアウォールの後ろに位置するユーザ・デバイス１０８又は政府防衛請負業者（government  defense  contractor）により使用されるユーザ・デバイス１０８は、本明細書で説明するように、プロキシ・デバイス１０２を介してアップデートされ得る。
【００２６】
次に図２を参照すると、プロキシ・デバイス１０２は、少なくとも１つのプロセッサ２０６と、プロセッサ２０６に関連付けられたメモリ領域２０８と、を有するコンピューティング・デバイスである。プロセッサ２０６は、任意の数の処理ユニットを含み、本開示の態様を実装するコンピュータ実行可能命令を実行するようプログラムされている。この命令は、プロキシ・デバイス１０２内で動作する１以上のプロセッサ２０６により実行されてもよいし、プロキシ・デバイス１０２の外部にあるプロセッサ２０６により実行されてもよい。いくつかの実施形態において、プロセッサ２０６は、図（例えば、図３）に示される命令等の命令を実行するよう、特別にプログラムされている。
【００２７】
いくつかの実施形態において、プロセッサ２０６は、本明細書で説明するオペレーションを実行するアナログ技術の実装を表す。例えば、そのようなオペレーションは、アナログ・コンピューティング・デバイス及び／又はデジタル・コンピューティング・デバイスにより実行され得る。
【００２８】
プロキシ・デバイス１０２は、さらに、メモリ領域２０８等の１以上のコンピュータ読み取り可能媒体を有する。メモリ領域２０８は、コンピューティング・デバイスに関連付けられた、あるいはコンピューティング・デバイスによりアクセス可能な任意の数の媒体を含む。メモリ領域２０８は、（図２に示されるように）コンピューティング・デバイスの内部にあってもよいし、コンピューティング・デバイスの外部にあってもよいし（図示せず）、それらの両方であってもよい（図示せず）。いくつかの実施形態において、メモリ領域２０８は、読み取り専用メモリ及び／又はアナログ・コンピューティング・デバイスに有線接続されたメモリを含む。
【００２９】
メモリ領域２０８は、データの中でもとりわけアップデート・データ１１２と、アップデート・サービス２１２と、を記憶する。メモリ領域２０８は、任意的に、プロキシ・デバイス１０２によりアップデートされ得るユーザ・デバイス１０８に関連付けられた予め定められたユーザ・デバイス識別子（図示せず）を記憶してもよい。したがって、プロキシ・デバイス１０２は、ユーザ・デバイス１０８の識別子がメモリ領域２０８に記憶されているユーザ・デバイス１０８にのみ、アップデート・データ１１２を送信することができる。予め定められたユーザ・デバイス識別子は、次の例示的な条件の下で記憶され得る：ユーザ・デバイス１０８が、アップデート・データ１１２を受信するために自身を登録した後、プロキシ・デバイス１０２のユーザが、プロキシ・デバイス１０２を介してアップデート・データ１１２を受信することが可能であり得るユーザ・デバイス識別子を入力した後、プロキシ・デバイス１０２が、プロキシ・デバイス１０２を検出した後、及び／又は、プロキシ・デバイス１０２が、アップデートをユーザ・デバイス１０８に適用した後。
【００３０】
メモリ領域２０８は、さらに、１以上のコンピュータ実行可能コンポーネントを記憶する。例示的なコンポーネントは、通信インタフェース・コンポーネント２１８、検索コンポーネント２２０、及び統計コンポーネント（statistics  component）２２２を含む。これらコンピュータ実行可能コンポーネントのオペレーションについては、図３及び図４を参照して次に説明する。
【００３１】
次に図３を参照すると、例示的なフローチャートは、アップデート・データ１１２を近接ユーザ・デバイス１０８に送信するプロキシ・デバイス１０２のオペレーションを示している。３０６において、プロキシ・デバイス１０２は、コンピューティング・デバイスに近接している少なくとも１つのユーザ・デバイス１０８から、アップデート・リクエストを受信する。アップデート・リクエストは、ユーザ・デバイス識別子及びユーザ・デバイス状態を少なくとも含む。プロキシ・デバイス１０２は、異なるユーザ・デバイス１０８から、複数のアップデート・リクエストを同時に受信することができる。いくつかの実施形態において、プロキシ・デバイス１０２は、同じユーザ・デバイス１０８から、複数のアップデート・リクエストを受信することができる。
【００３２】
他の実施形態において、プロキシ・デバイス１０２は、アップデート・サービス２１２をブロードキャストすることなく、ユーザ・デバイス１０８から、アップデート・リクエストのうちの１以上を受信してもよい。例えば、ユーザ・デバイス１０８は、プロキシ・デバイス１０２がいずれは利用可能になる（例えば、近接領域内に存在するようになる）という期待をもって、「ｐｉｎｇ」メッセージとしてアップデート・リクエストを周期的に送信することができる。
【００３３】
受信されたアップデート・リクエストに応答して、本開示の態様は、３０８において、ユーザ・デバイス識別子及びユーザ・デバイス状態に関連付けられたアップデート・データ１１２にアクセスする。アップデート・リクエストは、例えば、認証情報（authentication  information）、許可情報（authorization  information）、及び／又はパーミッション（permission）を含む。認証情報は、いくつかの実施形態において、ユーザ・デバイス１０８間で一意である、各ユーザ・デバイス１０８についての識別子を含む。許可情報は、アップデート・ソース１０６へのアクセスを許可し得るユーザ名及びパスワード等の情報を含む。アップデート・ソース上で利用可能な様々なバージョンが存在し得るが、ユーザ・デバイス識別子及びユーザ・デバイス状態に関連付けられたアップデート・データ１１２が、プロキシ・デバイス１０２によりアクセスされる。
【００３４】
いくつかの実施形態において、アップデート・リクエストの一部としてユーザ・デバイス１０８から受信される認証情報は、アップデート・データ１１２にアクセスするときに、アップデート・ソース１０６に提示される。認証情報は、ユーザ・デバイス識別子を含み得る。いくつかの実施形態において、認証情報は、アップデート・サービス２１２に対するユーザ・デバイス１０８の登録時に、１回のみ提示される。いくつかの実施形態において、プロキシ・デバイス１０２は、ユーザ・デバイス１０８に関連付けられた認証情報を記憶することができ、アップデート・リクエストを受信したときに、その認証情報をアップデート・ソース１０６に提示することができる。例示的な実施形態において、認証情報は、プロキシ・デバイス１０２がアップデート・リクエストを受信するたびに、ユーザ・デバイス１０８から受信される。このように、プロキシ・デバイス１０２は、特定のユーザ・デバイス１０８に関連付けられたデータを提示することにより、デバイス固有のアップデートをリクエストすることができる。
【００３５】
いくつかの実施形態において、プロキシ・デバイス１０２は、受信した認証情報、許可情報、及び／又はパーミッションをアップデート・ソース１０６に提示しなくてもよい。例えば、アップデート・ソース１０６は、周期的及び／又は間欠的に、ユーザ・デバイス識別子及びユーザ・デバイス状態に関連付けられたアップデート・データ１１２をプロキシ・デバイス１０２にプッシュすることができる。アップデート・ソース１０６は、いくつかの例において、ユーザ・デバイス１０８のためのアップデート・データ１１２を、それらユーザ・デバイス１０８の近接領域内に位置するプロキシ・デバイス１０２にのみプッシュすることができる。アップデート・ソース１０６は、それらユーザ・デバイス１０８の位置を識別するために、販売又は保証登録データに依拠し得る。
【００３６】
別の例示的な実施形態において、プロキシ・デバイス１０２は、アップデート・リクエストを拒絶してもよく、ユーザ・デバイス１０８から受信した情報をアップデート・ソース１０６に提示しなくてもよい。例えば、プロキシ・デバイス１０２は、予め定められた時間期間後、又は、その特定のユーザ・デバイス１０８（又は、ユーザ・デバイス１０８のクラス、モデル、製造業者等）に予め定められた数のアップデートを提供した後、アップデート・リクエストを拒絶してもよい。予め定められた時間期間は、アップデート・データ１１２がユーザ・デバイス１０８に送信されることを許可される有効期間（例えば、サブスクリプション期間）を定める。予め定められた数のアップデートは、ユーザ・デバイス１０８のユーザにより購入された、あるいはユーザ・デバイス１０８のユーザに利用可能なアップデートの数により定められる（例えば、ユーザは、ユーザ・デバイス１０８を購入した後の保証期間内である、複数の前払いのアップデートが購入に含まれていた、等）。許可された数のアップデートの適用後、ユーザ・デバイス１０８のユーザは、必要に応じて、追加のアップデートを購入することができる。いくつかの実施形態において、ユーザは、定められた時間期間の間、アップデートの適用を無効にしてもよいし、マイナー・アップデートの適用を無効にしてもよい（例えば、インクリメンタルなアップデート（incremental  update）を無視して、メジャー・アップデートのみ適用する、等）。
【００３７】
いくつかの実施形態において、予め定められた時間期間（例えば、サブスクリプション期間）後、又は予め定められた数のアップデート（例えば、保証期間）が終了した後、受信された認証情報が、アップデート・ソース１０６に提示され得る。
【００３８】
プロキシ・デバイス１０２は、例えば、ユーザ・デバイス１０８のうちの少なくとも１つに近接しているときのみ、及び／又は近接ユーザ・デバイス１０８のうちの少なくとも１つがアップデートを受信するためにターゲットにされている、あるいは識別されているときのみ、アップデート・サービス２１２を選択的にブロードキャストしてもよい。これは、不必要なブロードキャストを取り除くことにより、プロキシ・デバイス１０２のバッテリ・パワーを節約する。
【００３９】
アップデート・データ１１２にアクセスすることは、ユーザ・デバイス１０８からリモートにあるアップデート・ソース１０６からアップデート・データ１１２を取得することを含む。いくつかの実施形態において、アップデート・データ１１２が、プロキシ・デバイス１０２にすでに存在する場合、又は、アップデート・ソース１０６におけるアップデート・データ１１２が、より古いバージョンである場合、アップデート・データ１１２は、リモートのアップデート・ソース１０６から取得されない。例えば、ユーザ・デバイス１０８は、アップデート・ソース１０６上で利用可能なものよりも新しいバージョンを有していることがある。例示的な実施形態において、アップデート・リクエストに対応するアップデート・データ１１２のバージョン・チェック及び／又はエラー・ハンドリングが、図４に示されるように、プロキシ・デバイス１０２、アップデート・ソース１０６、又はそれら両方で実行される。
【００４０】
別の実施形態において、アップデート・データ１１２は、プロキシ・デバイス１０２がアクセス可能なメモリ領域２０８を検索することによりアクセスされる。例えば、アップデート・ソース１０６は、アップデート・リクエストに対応するウェブ検索を実行することにより見つけることができる。いくつかの実施形態において、アップデート・ソース１０６は、プロキシ・デバイス１０２上で、予め定められ得る（例えば、予めロードされる、予め取得される、等）。いくつかの他の実施形態において、アップデート・ソース１０６は、プロキシ・デバイス１０２のユーザにより提供され得る。例えば、プロキシ・デバイス１０２のユーザは、アップデート・ソース１０６のＵＲＬ（universal  resource  locator）を入力することができる。例示的な実施形態において、ユーザ・デバイス１０８からのアップデート・リクエストは、アップデート・ソース１０６も含む。例えば、アップデート・ソース１０６にアクセスするためのＵＲＬが、アップデート・リクエストとともに受信される（例えば、ユーザ・デバイス１０８の製造業者によりプログラムされている）。
【００４１】
アップデート・データ１１２は、任意のアップデートに対応する。このアップデートは、ユーザ・デバイス１０８上の、ソフトウェア・アップデート、アプリケーション・アップデート、及び／又は任意の他のコンポーネント・アップデートを含むが、これらに限定されるものではない。例示的な実施形態において、アップデート・データ１１２は、ユーザ・デバイス１０８が受信するよう構成される、ニュース・アップデート、ウェザー・アップデート、ストック・アップデート、及び任意の他のアップデートを提供することができる。
【００４２】
３１０において、プロキシ・デバイス１０２は、アクセスされたアップデート・データ１１２を、プロキシ・デバイス１０２からユーザ・デバイス１０８に送信する。いくつかの実施形態において、アップデート・データ１１２は、バージョン・チェック及び／又はエラー・ハンドリングが終了した後にのみ送信される。例えば、バージョン・チェックは、ユーザ・デバイス１０８上のバージョンをアップデート・ソース１０６上のバージョンと比較することにより実行され得るのに対し、エラー・ハンドリングは、アップデートのインストールが失敗した場合にユーザ・デバイス１０８のバックアップから以前の状態に戻すことにより実行され得る。バージョン・チェック及びエラー・ハンドリングは、プロキシ・デバイス１０２で実行されてもよいし、アップデート・ソース１０６で実行されてもよいし、それら両方で実行されてもよい。本明細書で説明しないバージョン・チェック及びエラー・ハンドリングを実行する他の方法も、本開示の範囲内である。
【００４３】
プロキシ・デバイス１０２は、例えば、ファイル転送プロトコル（ＦＴＰ）、セキュア・シェア（secure  share）、及び／又はハイパーテキスト転送プロトコル（ＨＴＴＰ）を介して、アクセスされたアップデート・データ１１２を送信する。プロキシ・デバイス１０２からユーザ・デバイス１０８にアップデート・データ１１２を送信する任意の他の手段も、本開示の範囲内である。
【００４４】
メモリ領域２０８は、ユーザ・デバイス状態のバックアップを記憶することができる。プロキシ・デバイス１０２は、取得されたアップデート・データ１１２を送信する前に、そのバックアップを受信することができる。いくつかの実施形態において、プロキシ・デバイス１０２は、アップデート・データ１１２を送信する前に、ユーザ・デバイス状態のバックアップを送信するユーザ・デバイス１０８に対してインジケーションを送信する。例示的な実施形態において、プロキシ・デバイス１０２は、アップデート・データ１１２をユーザ・デバイス状態のバックアップのコピーに適用し、コピーへのアップデート・データ１１２の適用が成功した後にのみ、アップデート・データ１１２をユーザ・デバイス１０８に送信する。
【００４５】
メモリ領域２０８は、図２に示される例示的なコンポーネントを記憶する。例えば、プロキシ・デバイス１０２のプロセッサ２０６により実行されたとき、通信インタフェース・コンポーネント２１８は、プロセッサ２０６に、プロキシ・デバイス１０２に近接する少なくとも１つのユーザ・デバイス１０８からのアップデート・リクエストを、プロキシ・デバイス１０２により受信させる。アップデート・リクエストは、ユーザ・デバイス識別子及びユーザ・デバイス状態を少なくとも含む。
【００４６】
通信インタフェース・コンポーネント２１８は、プロキシ・デバイス１０２のプロセッサ２０６に、プロキシ・デバイス１０２に近接して位置する少なくとも１つのユーザ・デバイス１０８にアップデート・サービス２１２をブロードキャストさせる命令を実行する。いくつかの実施形態において、ユーザ・デバイス１０８の近接領域は、プロキシ・デバイス１０２とユーザ・デバイス１０８との間の通信インタフェースに対応するレンジにより定められる（例えば、ＢＬＵＥＴＯＯＴＨ（登録商標）通信モジュールは、１０メートルという例示的なレンジを提供する）。プロキシ・デバイス１０２は、異なる通信インタフェースを用いて、複数のユーザ・デバイス１０８から、アップデート・リクエストを受信することができる。アップデート・リクエストは、複数のユーザ・デバイス１０８から、プロキシ・デバイス１０２により同時に受信され得る。
【００４７】
いくつかの実施形態において、アップデート・リクエストは、プロキシ・デバイス１０２により、バッチ・モードで処理され得る。例えば、プロキシ・デバイス１０２のユーザは、地理的領域を歩き回り、ユーザ・デバイス１０８からのアップデート・リクエストを収集する。プロキシ・デバイス１０２は、次いで、後の時間上のポイントで、収集されたアップデート・リクエストに対してバッチ処理を実行することができる。例えば、プロキシ・デバイス１０２は、次いで、アップデート・リクエストが収集されるユーザ・デバイス１０８のうちの１以上に対応するアップデート・データ１１２を取得することができる。プロキシ・デバイス１０２のユーザは、再度地理的領域を歩き回り、ユーザ・デバイス１０８に対応する取得されたアップデート・データ１１２を送信することができる。いくつかの実施形態において、アップデート・データ１１２は、最後の使用から所定の時間後に削除されるまで、あるいはより最近要求されたアップデート・データ１１２を記憶するために追加のスペースが必要とされるまで、プロキシ・デバイス１０２のキャッシュに存在し続けることができる。
【００４８】
アップデート・リクエストは、ユーザ・デバイス識別子、ユーザ・デバイス状態、モバイル・デバイスの位置、及び／又はその位置でその時間にユーザ・デバイス１０８をアップデートすることに関連する使用料（usage  charge）に基づいて、プロキシ・デバイス１０２により優先順位付けされ得る。使用料は、例えば、自宅位置の外でローミング中は高いこともあれば低いこともあるし、ピーク時間のアップデート又は非ピーク時間のアップデートでは、異なる使用料が存在し得る。
【００４９】
プロキシ・デバイス１０２は、周期的及び／又は間欠的に、アップデート・サービス２１２をブロードキャストすることができる。別の実施形態において、バッテリ・パワーを節約するために、プロキシ・デバイス１０２は、プロキシ・デバイス１０２のユーザからの入力に基づいて、アップデート・サービス２１２をユーザ・デバイス１０８にブロードキャストしてもよい。いくつかの実施形態において、ユーザ・デバイス１０８は、プロキシ・デバイス１０２からブロードキャストされるアップデート・サービス２１２を継続的にリスンする。
【００５０】
ユーザ・デバイス１０８は、特定のパラメータが満たされる場合、アップデート・リクエストをプロキシ・デバイス１０２に送信することができる。例示的なパラメータは、ユーザ・デバイス１０８がアップデート・ソース１０６に接続できないこと、ブロードキャストするプロキシ・デバイス１０２がアップデート・データ１１２をユーザ・デバイス１０８に渡すことを許可されること、及び／又は、周期的なアップデートの予め定められた時間間隔が過ぎること、を含むが、これらに限定されるものではない。
【００５１】
いくつかの実施形態において、通信インタフェース・コンポーネント２１８は、ネットワーク・インタフェース・カード及び／又はネットワーク・インタフェース・カードを動作させるためのコンピュータ実行可能命令（例えば、ドライバ）を含む。プロキシ・デバイス１０２とユーザ・デバイス１０８との間の通信は、任意の有線接続又は無線接続を介する任意のプロトコル又はメカニズムを用いて生じ得る。例えば、本開示の態様は、無線通信インタフェース及び／又は有線通信インタフェースの任意の組合せを介して動作可能である。そのような無線通信インタフェース及び／又は有線通信インタフェースは、ＷｉＦｉ（登録商標）、ＢＬＵＥＴＯＯＴＨ（登録商標）通信モジュール、ＩｒＤＡプロトコル・セット、無線周波数（ＲＦ）通信、イーサネット（登録商標）、ユニバーサル・シリアル・バス（ＵＳＢ）、ＦｉｒｅＷｉｒｅ（登録商標）の通信モジュール等を含む。いくつかの実施形態において、通信インタフェースは、近距離通信（ＮＦＣ）タグとともに動作可能である。例えば、プロキシ・デバイス１０２のユーザは、アップデート・プロセスを開始するために、プロキシ・デバイス１０２をユーザ・デバイス１０８にタップすることができる。
【００５２】
検索コンポーネント２２０は、実行されたとき、少なくとも１つのプロセッサ２０６に、受信されたアップデート・リクエストに応答して、ユーザ・デバイス識別子及びユーザ・デバイス状態に関連付けられたアップデート・データ１１２にアクセスさせる。通信インタフェース・コンポーネント２１８は、プロキシ・デバイス１０２からユーザ・デバイス１０８に、アクセスされたアップデート・データ１１２を送信する。例示的な実施形態において、アップデート・データ１１２は、プロキシ・デバイス１０２により、アップデート・ソース１０６から取得される。プロキシ・デバイス１０２は、（例えば、同じモデルの他のユーザ・デバイス１０８、同じデバイス状態を有する他のユーザ・デバイス１０８等に適用するために）予め定められた時間期間の間、アップデート・データ１１２を記憶することができる。アップデート・データ１１２は、予め定められた時間期間の満了又は経過後、プロキシ・デバイス１０２から除去され得る。別の実施形態において、プロキシ・デバイス１０２は、アップデート・リクエストが受信されるたびに、アップデート・データ１１２を取得してもよい。
【００５３】
統計コンポーネント２２２は、実行されたとき、少なくとも１つのプロセッサ２０６に、通信インタフェース・コンポーネント２１８による、アクセスされたアップデート・データ１１２の送信に少なくとも関連するアップデート・メトリックス（update  metrics）を生成させる。アップデート・メトリックスは、受信されたアップデート・リクエストの数、送信されたアップデート・データ１１２の量、アップデート・データ１１２の各送信に関連する期間、アップデート成功率、及び／又はアップデート失敗率を含む。アップデート・メトリックスは、ユーザ・デバイス１０８をアップデートすることに関連する使用料、アップデート・リクエストのタイプ、未処理の（pending）アップデート・リクエストの数をさらに含んでもよい。プロキシ・デバイス１０２は、未処理のアップデート・リクエストのタイプの類似性に基づいて、アップデート・データ１１２を保持することを決定することができる。例えば、頻繁に送信されるアップデート・データ１１２又は人気のあるアップデート・データ１１２は、ネットワーク使用料を最小限にするため、将来の使用のためにプロキシ・デバイス１０２により記憶され得る。
【００５４】
使用料は、個々のアップデート、アップデート・タイプ及びバージョン、各ユーザ・デバイス１０８、ユーザ・デバイス１０８のユーザ、プロキシ・デバイス１０２、プロキシ・デバイス１０２の位置、アップデートの時間、及び／又はプロキシ・デバイス１０２のユーザに対応し得る。ユーザ・デバイス１０８のユーザ及びプロキシ・デバイス１０２のユーザは、アップデート・ソース１０６上に保持される使用料アカウント（usage  charge  account）を有することができる。これらのユーザは、アップデート・リクエストから識別可能である（例えば、認証情報に含まれる）。使用料は、ユーザが、アップデート・データを受信するか否かを選択することを決定するのを助け得る。
【００５５】
統計コンポーネント２２２は、データをユーザに表示しデータをユーザから受け取るためのグラフィックス・カードを含む。統計コンポーネント２２２はまた、グラフィックス・カードを動作させるためのコンピュータ実行可能命令（例えば、ドライバ）を含み得る。さらに、統計コンポーネント２２２は、ディスプレイ（例えば、タッチ・スクリーン・ディスプレイ又はナチュラル・ユーザ・インタフェース）及び／又はディスプレイを動作させるためのコンピュータ実行可能命令（例えば、ドライバ）を含み得る。統計コンポーネント２２２はまた、データをユーザに提供する、あるいはデータをユーザから受け取るための次のうちの１以上を含み得る：スピーカ、サウンド・カード、カメラ、マイクロフォン、振動モータ、１以上の加速度計、ＢＬＵＥＴＯＯＴＨ（登録商標）の通信モジュール、全地球測位システム（ＧＰＳ）ハードウェア、及び／又は光受容光センサ。例えば、ユーザは、プロキシ・デバイス１０２を特定の方向に動かすことにより、コマンドを入力することができる、あるいはデータを操作することができる。
【００５６】
統計コンポーネント２２２は、例えば、アップデート・データ１１２の送信時間、アップデート・データ１１２の送信中のプロキシ・デバイス１０２の位置、及び／又はアクセスされたアップデート・データ１１２に関連付けられた識別子を示すデータを収集する。いくつかの実施形態において、統計コンポーネント２２２は、プロキシ・デバイス１０２のユーザからのリクエストに基づいて、生成されたアップデート・メトリックスをプロキシ・デバイス１０２に公開することができる。別の実施形態において、統計コンポーネント２２２は、生成されたアップデート・メトリックスをクラウド・サービスに公開する。生成されたアップデート・メトリックスから、統計コンポーネント２２２は、予め定められた閾値を超えるアップデート成功率を有するアップデート・データ１１２を識別することができる。アップデート成功率を使用して、将来のアップデートを実行するための特定の時間及び／又は位置を決定することができる。統計コンポーネント２２２は、各ユーザ・デバイス１０８についてのアップデート・メトリックスを公開してもよいし、複数のユーザ・デバイス１０８についての集約されたメトリックスを公開してもよい。
【００５７】
いくつかの実施形態において、通信インタフェース・コンポーネント２１８は、ユーザ・デバイス１０８の製造業者に、統計コンポーネント２２２により生成されたアップデート・メトリックスのうちの１以上を通知することができる。製造業者は、その通知に基づいて、是正措置又は予防措置を取ることができる。例えば、製造業者は、アップデート・メトリックスに基づいて、一部のユーザ・デバイス１０８をリコールすることができる。別の例として、製造業者は、アップデート成功率がより高い又はより低い特定の位置で、宣伝をすることができる。製造業者は、アップデート・サービス２１２をユーザ・デバイス１０８にブロードキャストするために、そのような位置でプロキシ・デバイス１０２を提供することさえできる。
【００５８】
次に図４を参照すると、シーケンス図は、データの受信／送信の例示的な時間を示している。図４は、いくつかの実施形態において実行され得る、あるいは実行され得ないいくつかのオペレーションを列挙している。さらに、そのようなオペレーションのいくつかは、列挙された時間とは異なる時間に実行されてもよい。図４に列挙されていないが、本開示のどこかで説明するいくつかの他のオペレーションもまた、本開示の範囲内である。
【００５９】
時間Ｔ１において、プロキシ・デバイス１０２は、近接ユーザ・デバイス１０８を検出しようと試みる。プロキシ・デバイス１０２が、アップデートを実行するのに利用可能な十分なリソースを有している場合、プロキシ・デバイス１０２は、多数のユーザ・デバイス１０８をアップデートすることを提供することができる。他のシナリオにおいて、例えば、ユーザ・デバイス１０８の数が、プロキシ・デバイス１０２のリソースを凌駕するとき、又はプロキシ・デバイス１０２の数を上回るとき、プロキシ・デバイス１０２は、ユーザ・デバイス１０８に提供されるアップデートの数を調整することができる。代替実施形態において、プロキシ・デバイス１０２は、時間Ｔ１において、ユーザ・デバイス１０８に遭遇し得る。例えば、ユーザ・デバイス１０８は、アップデート・リクエストを送信中であり得、プロキシ・デバイス１０２がユーザ・デバイス１０８の近くに移動したとき、プロキシ・デバイス１０２は、ユーザ・デバイス１０８に遭遇し得る。
【００６０】
時間Ｔ２において、プロキシ・デバイス１０２は、アップデート・サービス２１２をブロードキャストする。アップデート・サービス２１２の送信は、周期的に、間欠的に、且つ／あるいは、ユーザ・デバイス１０８のうちの少なくとも１つの検出時にのみ、行われ得る。いくつかの実施形態において、プロキシ・デバイス１０２が、すでにユーザ・デバイス１０８に遭遇していたとき等、プロキシ・デバイス１０２は、アップデート・サービス２１２をブロードキャストしなくてもよい。
【００６１】
時間Ｔ３において、プロキシ・デバイス１０２は、ユーザ・デバイス１０８から、アップデート・リクエストを受信する。代替実施形態において、ユーザ・デバイス１０８は、時間Ｔ１においてプロキシ・デバイス１０２がユーザ・デバイス１０８を検出することなく、且つ時間Ｔ２においてアップデート・サービス２１２をブロードキャストすることなく、プロキシ・デバイス１０２とのコンタクトを開始する。例えば、ユーザ・デバイス１０８は、プロキシ・デバイス１０２により受信されるアップデート・リクエストをブロードキャストすることにより、コンタクトを開始することができる。
【００６２】
時間Ｔ４において、プロキシ・デバイス１０２は、アップデート・ソース１０６からのアップデート・データ１１２にアクセスする、且つ／あるいはアップデート・ソース１０６からアップデート・データ１１２を取得する。時間Ｔ５において、バージョン・チェック及び／又はエラー・ハンドリングが、プロキシ・デバイス１０２、アップデート・ソース１０６、又はそれら両方で実行される。
【００６３】
いくつかの実施形態において、アップデート・データ１１２が、アップデート・ソース１０６から、プロキシ・デバイス１０２を介して、ユーザ・デバイス１０８にプッシュされるとき等、アップデート・リクエストは、プロキシ・デバイス１０２により受信されない。
【００６４】
時間Ｔ６において、プロキシ・デバイス１０２は、ユーザ・デバイス１０８のデータ・バックアップを受信することができる。時間Ｔ７において、プロキシ・デバイス１０２は、アップデート・データ１１２をユーザ・デバイス１０８に送信する。いくつかの実施形態において、プロキシ・デバイス１０２は、ユーザ・デバイス１０８からデータ・バックアップを受信することなく、時間Ｔ７において、アップデート・データ１１２を送信する。時間Ｔ８において、エラー・ハンドリングが、プロキシ・デバイス１０２により実行され得る。例えば、アップデート・プロセス中にエラーが検出された場合、ユーザ・デバイス１０８の修復が、データ・バックアップから実行される。
【００６５】
追加の例
本開示の態様は、次に説明するシナリオ等の追加のシナリオを可能にする。例示的なシナリオにおいて、携帯電話機は、アップデート・データ１１２をユーザ・デバイス１０８（例えば、車両内エンターテイメント・システム）に送信することができる。そのようなシナリオにおけるユーザ・デバイス１０８は、アップデート・ソース１０６との接続を有さなくてよい、あるいは、ユーザ・デバイス１０８は、いかなるアップデート・サービス又はアップデート・インタフェースも有さなくてよい。
【００６６】
ユーザ・デバイス１０８及びプロキシ・デバイス１０２は、互いに近くに位置し得る（例えば、家の中）。プロキシ・デバイス１０２とユーザ・デバイス１０８との間の通信のレンジは、アップデート・リクエストを受信する、あるいはアップデート・サービス２１２をブロードキャストするプロキシ・デバイス１０２により使用される通信インタフェースに依存し得る。プロキシ・デバイス１０２は、プロキシ・デバイス１０２上の複数の通信インタフェース（例えば、ＷｉＦｉ（登録商標）及びＢＬＵＥＴＯＯＴＨ（登録商標））を介して、複数のアップデート・リクエストを同時に受信することができる。同様に、プロキシ・デバイス１０２は、複数の通信インタフェース上で、アップデート・サービス２１２を同時にブロードキャストすることができる。
【００６７】
ユーザ・デバイス１０８及びプロキシ・デバイス１０２は、ピア・ツー・ピア関係又はクライアント−サーバ関係で動作することができる。例えば、モバイル・サーバ・デバイス（例えば、プロキシ・デバイス１０２）は、大容量記憶デバイスとしてのクライアント・デバイス（例えば、ユーザ・デバイス１０８）に接続することができる。モバイル・サーバ・デバイスは、次いで、アップデート・データ１１２をクライアント・デバイス（例えば、ユーザ・デバイス１０８）に送信することができる。アップデート・データ１１２は、クライアント・デバイス上のデータを直接上書きし得る。
【００６８】
モバイル・サーバ・デバイスは、複数の異なる種類又はタイプのユーザ・デバイス１０８をアップデートすることができる。そのようなシナリオにおいて、プロキシ・デバイス１０２は、それら異なる種類のユーザ・デバイス１０８をカバーする複数の異なるアップデート・サービス２１２を同時にブロードキャストすることができる。
【００６９】
プロキシ・デバイス１０２は、プロキシ・デバイス１０２に関連するオペレーション及び機能を実装する命令（例えば、アプリケーション・プログラム、オペレーティング・システム機能、又はそれら両方としての）を実行する任意のコンピューティング・デバイスを表す。
【００７０】
いくつかの実施形態において、ユーザ・デバイス１０８は、ブロードキャストされたアップデート・サービス２１２に応答して、バーコード、アップデート・ステータス、ソフトウェア・ステータス、現在のソフトウェア・バージョン、ユーザ・デバイス１０８がフォールト・トレラントであるかどうかのインジケーション、及び／又はアップデートの前にユーザ・デバイス１０８のデータをバックアップするかどうかのインジケーション等の情報を送信することができる。プロキシ・デバイス１０２は、この情報を使用して、汎用アップデートを全てのユーザ・デバイス１０８に単にブロードキャストするのではなく、アップデート・プロセスを、特定のユーザ・デバイス１０８に固有のものにすることができる。例えば、プロキシ・デバイス１０２は、ユーザ・デバイス１０８から受信した情報に基づいて、アップデート・プロセス中にさらなるオペレーション又はより少ないオペレーションを実行することにより、アップデート・プロセスを、ユーザ・デバイス１０８に固有のものにする。
【００７１】
例示的なシナリオにおいて、アップデート・プロセスは、連合ユーザ・デバイス１０８のセットが、アップデートをリクエストすることを可能にし、対応するアップデート・データ１１２が、許可されたホスト・デバイス（例えば、プロキシ・デバイス１０２）から自動的に配信される。いくつかの実施形態において、プロキシ・デバイス１０２は、地理的領域をローミングし、プロキシ・デバイス１０２がアップデート権限及び／又は許可を有する、近接領域内のユーザ・デバイス１０８をアップデートする。例示的な実施形態において、ユーザ・デバイス１０８の各々は、アップデート権限及び／又は許可を有するプロキシ・デバイス１０２のセットを識別することができる。
【００７２】
プロキシ・デバイス１０２は、アップデート・サービス２１２のブロードキャストをいつ開始するかを構成するための設定を、プロキシ・デバイス１０２のユーザに提供することができる。アップデート許可が、ユーザ・デバイス１０８の特定のパラメータ（例えば、マシン・アクセス制御（ＭＡＣ）アドレス）又は接続固有のパラメータ（例えば、インターネット・プロトコル（ＩＰ）アドレス）に基づくように望まれない場合、プロキシ・デバイス１０２のユーザは、アップデートを許可するのに使用されるアップデート・パスワードを定めることができる。
【００７３】
例示的な実施形態において、プロキシ・デバイス１０２は、ユーザ・デバイス識別子及びユーザ・デバイス状態に基づいてアップデート・ソース１０６を識別する検索エンジンに、アップデート・リクエストを渡す。
【００７４】
別の例示的な実施形態において、プロキシ・デバイス１０２が、第１のユーザ・デバイス１０８から受信したアップデート・リクエストを処理中であり、新たなアップデート・リクエストが、第２のユーザ・デバイス１０８から受信される場合、第２のユーザ・デバイス１０８からの新たなアップデート・リクエストは、その後の処理のために待ち行列に入れられてもよいし、新たなアップデート・リクエストは、進行中のアップデート・リクエストの処理と並行して処理されてもよい。さらに、プロキシ・デバイス１０２は、ユーザ・デバイス１０８とプロキシ・デバイス１０２との間の接続インタフェースが壊れた場合又はレンジ外である場合、アップデート・プロセスを中断する。そのようなシナリオにおいて、アップデートは、ユーザ・デバイス１０８上で行われない。
【００７５】
アップデートが、以前の試行中に成功しなかった場合、アップデート・プロセスは、アップデート・プロセスが中断されたポイントから再開することができる。アップデート・プロセスの再開は、プロキシ・デバイス１０２がユーザ・デバイス１０８の近くに再度移動したときに生じる。いくつかの実施形態において、アップデート・プロセスは、プロキシ・デバイス１０２が予め定められた時間期間の間（例えば、１分間）ユーザ・デバイス１０８に近接しているときに実行される。この予め定められた時間期間は、プロキシ・デバイス１０２とユーザ・デバイス１０８との間の接続が安定している可能性が高いこと、又はその接続が特定のサービス品質（例えば、接続速度）を確認するためにテストされることを判定することを助ける。
【００７６】
アップデート・データ１１２がプロキシ・デバイス１０２からユーザ・デバイス１０８に送信されると、アップデート・プロセスは終了する。アップデート・データ１１２が送信された後、ユーザ・デバイス１０８との接続インタフェースが壊れたとしても、あるいはユーザ・デバイス１０８がレンジ外になったとしても、ユーザ・デバイス１０８は、アップデート・データ１１２を適用することにより、それでもアップデートを完了させることができる。
【００７７】
図１及び図２の様々な要素の機能の少なくとも一部は、図１の他の要素、図２の他の要素、又は図１若しくは図２に示されていないエンティティ（例えば、プロセッサ、ウェブ・サービス、サーバ、アプリケーション・プログラム、コンピューティング・デバイス等）により実行されてもよい。
【００７８】
いくつかの実施形態において、図３及び図４に示したオペレーションは、コンピュータ読み取り可能媒体上に符号化されたソフトウェア命令として実装されてもよいし、オペレーションを実行するようプログラム又は設計されたハードウェアにより実装されてもよいし、それら両方であってもよい。例えば、本開示の態様は、システム・オン・チップ又は複数の相互接続された電気的導電性要素を含む他の回路として実装されてもよい。
【００７９】
本明細書で使用される用語「ＮＦＣ」は、いくつかの実施形態において、短距離にわたるデータの交換のための短距離高周波数無線通信技術を指す。本明細書で使用される用語「Ｗｉ−Ｆｉ（登録商標）」は、いくつかの実施形態において、データの送信のための高周波数無線信号を用いる無線ローカル・エリア・ネットワークを指す。本明細書で使用される用語「ＢＬＵＥＴＯＯＴＨ（登録商標）」は、いくつかの実施形態において、短波長無線伝送を用いて短距離にわたってデータを交換するための無線技術標準を指す。
【００８０】
例示的な動作環境
例示的なコンピュータ読み取り可能媒体は、フラッシュ・メモリ・ドライブ、デジタル多用途ディスク（ＤＶＤ）、コンパクト・ディスク（ＣＤ）、フロッピー（登録商標）・ディスク、及びテープ・カセットを含む。例えば、コンピュータ読み取り可能媒体は、コンピュータ記憶媒体及び通信媒体を含むが、これらに限定されるものではない。コンピュータ記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、又は他のデータ等の情報の記憶のために任意の方法又は技術により実装された、揮発性及び不揮発性の取り外し可能な媒体及び取り外し不可能な媒体を含む。コンピュータ記憶媒体は、有形であり、通信媒体とは相互に排他的である。いくつかの実施形態において、コンピュータ記憶媒体は、ハードウェアにより実装される。例示的なコンピュータ記憶媒体は、ハード・ディスク、フラッシュ・ドライブ、及び他のソリッド・ステート・メモリを含む。反対に、通信媒体は、通常、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、又は他のデータを、搬送波又は他の搬送メカニズム等の変調されたデータ信号内に具現化するものであり、任意の情報配信媒体を含む。
【００８１】
例示的なコンピューティング・システム環境に関連して説明するが、本開示の実施形態は、多数の他の汎用又は専用コンピューティング・システム環境、構成、又はデバイスとともに実装可能である。
【００８２】
本発明の態様とともに使用するのに適し得る周知のコンピューティング・システム、環境、及び／又は構成の例は、モバイル・コンピューティング・デバイス、パーソナル・コンピュータ、サーバ・コンピュータ、ハンドヘルド・デバイス又はラップトップ・デバイス、マルチプロセッサ・システム、ゲーム・コンソール、マイクロプロセッサベースのシステム、セット・トップ・ボックス、プログラム可能な消費家電、携帯電話機、ウェアラブル・フォーム・ファクタ又はアクセサリ・フォーム・ファクタのモバイル・コンピューティング・デバイス及び／又はモバイル通信デバイス（例えば、時計、眼鏡、ヘッドセット、又はイヤフォン）、ネットワークＰＣ、ミニコンピュータ、メインフレーム・コンピュータ、上記システム又はデバイスのいずれかを含む分散コンピューティング環境等を含むが、これらに限定されるものではない。このようなシステム又はデバイスは、キーボード又はポインティング・デバイス等の入力デバイスから、ジェスチャ入力、近接入力（例えば、ホバリングにより）、及び／又は音声入力を介して等、形はどうであれ、ユーザから入力を受け取ることができる。
【００８３】
本発明の実施形態は、ソフトウェア、ファームウェア、ハードウェア、又はそれらの組合せにおいて、１以上のコンピュータ又は他のデバイスにより実行されるプログラム・モジュール等のコンピュータ実行可能命令の一般的なコンテキストにおいて説明され得る。コンピュータ実行可能命令は、１以上のコンピュータ実行可能コンポーネント又はモジュールに編成され得る。一般に、プログラム・モジュールは、特定のタスクを実行する、あるいは特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、及びデータ構造を含むが、これらに限定されるものではない。本発明の態様は、任意の数及び編成のそのようなコンポーネント又はモジュールを用いて実装され得る。例えば、本発明の態様は、図に示し本明細書で説明した特定のコンピュータ実行可能命令又は特定のコンポーネント若しくはモジュールに限定されるものではない。本発明の他の実施形態は、図示し本明細書で説明した機能よりも多い又は少ない機能を有する異なるコンピュータ実行可能命令又はコンポーネントを含んでもよい。
【００８４】
本発明の態様は、本明細書で説明した命令を実行するよう構成されるとき、汎用コンピュータを専用コンピューティング・デバイスに変換する。
【００８５】
図示し本明細書で説明した実施形態に加えて、本明細書で具体的に説明していないが本発明の態様の範囲内である実施形態は、ユーザ・デバイス１０８を検出してアップデートするための例示的な手段を構成する。
【００８６】
図示し本明細書で説明した本発明の実施形態におけるオペレーションの実行の順番は、別途明示されない限り、必須ではない。すなわち、オペレーションは、別途明示されない限り、任意の順番で実行されてもよく、本発明の実施形態は、本明細書で開示したオペレーションよりも多い又は少ないオペレーションを含んでもよい。例えば、別のオペレーションより前に、別のオペレーションと同時に、あるいは別のオペレーションの後に特定のオペレーションを実行することも本発明の態様の範囲内であることが意図されている。
【００８７】
本発明又はその実施形態の態様の要素を導入するとき、品詞「ａ」、「ａｎ」、「ｔｈｅ」、及び「ｓａｉｄ」は、それら要素の１以上が存在することを意味するよう意図されている。用語「備える」、用語「含む」、及び用語「有する」は、非排他的であり、列挙された要素以外の追加の要素が存在してもよいことを意味するよう意図されている。用語「例示的」は、「〜の一例」を意味するよう意図されている。語句「Ａ、Ｂ、及びＣのうちの１以上」は、「Ａのうちの少なくとも１つ、及び／又は、Ｂのうちの少なくとも１つ、及び／又は、Ｃのうちの少なくとも１つ」を意味する。
【００８８】
本発明の態様を詳細に説明したが、添付の特許請求の範囲において定められるように、本発明の態様の範囲から逸脱することなく、修正及び変形が可能であることが明らかであろう。本発明の態様の範囲から逸脱することなく、上記構成、製品、及び方法において、様々な変更を施すことが可能であるので、上記説明に含まれ添付の図面に示された全ての事項は、限定ではなく、例示として解釈されるべきであることが意図されている。
【図１】
0006396332.tif 000002
【図２】
0006396332.tif 000003
【図３】
0006396332.tif 000004
【図４】
0006396332.tif 000005