(57)【特許請求の範囲】
【請求項１】
少なくとも一つのプロセッサと；命令が記憶されている記憶可読媒体とを有するデータを更新するためのシステムであって、
前記命令は、前記少なくとも一つのプロセッサによって実行されたときに、前記プロセッサを：
コンピューティング装置からの更新要求を受領する段階であって、前記更新要求は、前記コンピューティング装置上に記憶されているデータの現行セットのプロファイルを含み、データの前記現行セットの前記プロファイルが前記コンピューティング装置上に記憶されているライブラリのリストのハッシュを含む、段階と；
データの前記現行セットをデータの更新されたセットに変換するためのデータのデルタ・セットが以前に生成されたかどうかを判定することを、前記コンピューティング装置上に記憶されているライブラリのリストの前記ハッシュを、別のコンピューティング装置上に記憶されているライブラリのリストの第二のハッシュと比較することによって行なう段階であって、前記第二のハッシュは前記別のコンピューティング装置から以前に受領された更新要求に含まれるプロファイルに含まれていたものである、段階と；
データの前記デルタ・セットが以前に生成されていないとの判定に基づいて、
前記コンピューティング装置上に記憶されているライブラリのリストを同定することを、ハッシュからライブラリのリストへのマッピングを使って、または、ライブラリの識別情報を前記コンピューティング装置に要求して受領することによって行ない；
データの前記デルタ・セットを生成し、
前記コンピューティング装置によりデータの前記デルタ・セットを取得するためのアドレスを前記コンピューティング装置に送信する段階とを実行するよう構成するものである、
システム。
【請求項２】
前記命令は、前記少なくとも一つのプロセッサによって実行されたときに、前記少なくとも一つのプロセッサを：
少なくとも部分的にはデータの前記現行セットの前記プロファイルに基づいて、データの前記更新されたセットが利用可能であることを判別する段階を実行するよう構成するものである、
請求項１記載のシステム。
【請求項３】
データの前記現行セットの前記プロファイルが前記コンピューティング装置上にインストールされているソフトウェアのバージョンを同定し、データの前記更新されたセットが利用可能であることを判別するために、前記少なくとも一つのプロセッサが、前記ソフトウェアのより新しいバージョンが利用可能であると判別するよう構成される、請求項２記載のシステム。
【請求項４】
データの前記デルタ・セットが、前記コンピューティング装置上にインストールされている前記ソフトウェアを、前記ソフトウェアの前記より新しいバージョンに更新するためのインストーラーを含む、請求項３記載のシステム。
【請求項５】
データの前記更新されたセットが利用可能であることを判別するために、前記少なくとも一つのプロセッサが、前記ライブラリのうち少なくとも一つのライブラリが置換されたことを判別するよう構成される、請求項２記載のシステム。
【請求項６】
データの前記デルタ・セットが、データの前記現行セットおよびデータの前記更新されたセットのバイナリーにおける差に基づく、請求項１記載のシステム。
【請求項７】
前記命令は、前記少なくとも一つのプロセッサによって実行されたときに、前記少なくとも一つのプロセッサを：
第二のコンピューティング装置からの第二の更新要求を受領する段階であって、前記第二の更新要求は、前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、段階と；
前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前に受領されたプロファイルに一致すると判別することに基づいて：
前記第二のコンピューティング装置による取得のために、データの前記デルタ・セットへのアドレスを前記第二のコンピューティング装置に送信する段階とを実行するよう構成するものである、
請求項１記載のシステム。
【請求項８】
前記コンピューティング装置上に記憶されているデータの現行セットの前記プロファイルおよび前記第二のコンピューティング装置上に記憶されているデータの現行セットの前記プロファイルが、データのそれぞれの現行セットのそれぞれのハッシュを含む、請求項７記載のシステム。
【請求項９】
前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前に受領されたプロファイルに一致すると判別するために、前記少なくとも一つのプロセッサはデータの前記それぞれの現行セットの前記それぞれのハッシュを比較するよう構成される、請求項８記載のシステム。
【請求項１０】
前記命令は、前記少なくとも一つのプロセッサによって実行されたときに、前記少なくとも一つのプロセッサを：
第二のコンピューティング装置からの第二の更新要求を受領する段階であって、前記第二の更新要求は、前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、段階と；
前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットのプロファイルに一致しないとの判別に基づいて：
データの第二のデルタ・セットを生成し、
前記第二のコンピューティング装置による取得のためにデータの前記第二のデルタ・セットへのアドレスを前記第二のコンピューティング装置に送信する段階とを実行するよう構成するものである、
請求項１記載のシステム。
【請求項１１】
データを更新する方法であって、
コンピューティング装置からの更新要求を受領する段階であって、前記更新要求は、前記コンピューティング装置上に記憶されているデータの現行セットのプロファイルを含み、データの前記現行セットの前記プロファイルが前記コンピューティング装置上に記憶されているライブラリのリストのハッシュを含む、段階と；
データの前記現行セットをデータの更新されたセットに変換するためのデータのデルタ・セットが以前に生成されたかどうかを判定することを、前記コンピューティング装置上に記憶されているライブラリのリストの前記ハッシュを、別のコンピューティング装置上に記憶されているライブラリのリストの第二のハッシュと比較することによって行なう段階であって、前記第二のハッシュは前記別のコンピューティング装置から以前に受領された更新要求に含まれるプロファイルに含まれていたものである、段階と；
データの前記デルタ・セットが以前に生成されていないとの判定に基づいて、
前記コンピューティング装置上に記憶されているライブラリのリストを同定することを、ハッシュからライブラリのリストへのマッピングを使って、または、ライブラリの識別情報を前記コンピューティング装置に要求して受領することによって行ない；
データの前記デルタ・セットを生成し、
前記コンピューティング装置によりデータの前記デルタ・セットを取得するためのアドレスを前記コンピューティング装置に送信する段階とを含む、
方法。
【請求項１２】
少なくとも部分的にはデータの前記現行セットの前記プロファイルに基づいて、データの前記更新されたセットが利用可能であることを判別する段階をさらに含む、
請求項１１記載の方法。
【請求項１３】
データの前記現行セットの前記プロファイルが前記コンピューティング装置上にインストールされているソフトウェアのバージョンを同定し、データの前記更新されたセットが利用可能であることを判別することが、前記ソフトウェアのより新しいバージョンが利用可能であると判別することを含む、請求項１２記載の方法。
【請求項１４】
データの前記デルタ・セットが、前記コンピューティング装置上にインストールされている前記ソフトウェアを、前記ソフトウェアの前記より新しいバージョンに更新するためのインストーラーを含む、請求項１３記載の方法。
【請求項１５】
データの前記更新されたセットが利用可能であることを判別することが、前記ライブラリのうち少なくとも一つのライブラリが置換されたことを判別することを含む、請求項１２記載の方法。
【請求項１６】
データの前記デルタ・セットが、データの前記現行セットおよびデータの前記更新されたセットのバイナリーにおける差に基づく、請求項１１記載の方法。
【請求項１７】
第二のコンピューティング装置からの第二の更新要求を受領する段階であって、前記第二の更新要求は、前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、段階と；
前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前に受領されたプロファイルに一致すると判別することに基づいて：
前記第二のコンピューティング装置による取得のために、データの前記デルタ・セットへのアドレスを前記第二のコンピューティング装置に送信する段階とをさらに含む、
請求項１１記載の方法。
【請求項１８】
前記コンピューティング装置上に記憶されているデータの現行セットの前記プロファイルおよび前記第二のコンピューティング装置上に記憶されているデータの現行セットの前記プロファイルが、データのそれぞれの現行セットのそれぞれのハッシュを含む、請求項１７記載の方法。
【請求項１９】
前記第二のコンピューティング装置上に記憶されているデータの現行セットの第二のプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前に受領されたプロファイルに一致すると判別することが、データの前記それぞれの現行セットの前記それぞれのハッシュを比較することを含む、請求項１８記載の方法。
【請求項２０】
第二のコンピューティング装置からの第二の更新要求を受領する段階であって、前記第二の更新要求は、前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、段階と；
前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前のプロファイルに一致しないとの判別に基づいて：
データの第二のデルタ・セットを生成し、
前記第二のコンピューティング装置による取得のためにデータの前記第二のデルタ・セットへのアドレスを前記第二のコンピューティング装置に送信する段階とをさらに含む、
請求項１１記載の方法。
【請求項２１】
機械に請求項１１ないし２０のうちいずれか一項記載の方法を実行させるためのコンピュータ・プログラム。
【請求項２２】
請求項１１ないし２０のうちいずれか一項記載の方法を実行する手段を有する装置。
【請求項２３】
請求項２１記載のコンピュータ・プログラムを記憶している少なくとも一つの機械可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本稿に記載される実施形態はデータ・ファイル配送に、限定しないが特に動的なデータ差分生成および配送に関する。
【背景技術】
【０００２】
電子装置は、該装置に機能を提供する多くのデータ・ファイルを有する。時折、これらのデータ・ファイルは更新される。装置は、これらのデータ・ファイルの一つまたは複数に対する更新を得るために、サーバーに要求を送信してもよい。
【図面の簡単な説明】
【０００３】
図面は必ずしも縮尺通りに描かれていない。図面において、同様の参照符号は異なる図における類似の構成要素を記述することがある。異なる文字サフィックスをもつ同様の参照符号は、類似の構成要素の異なるインスタンスを表わすことがある。いくつかの実施形態が、限定ではなく例として、付属の図面に示されている。
【図１】さまざまな実施形態に基づく、プログラム更新を要求する諸装置の概略図である。
【図２】さまざまな実施形態に基づく、ライブラリ更新を要求する装置の概略図である。
【図３】さまざまな例に基づく、装置型ごとのインストーラーのリストを示す図である。
【図４】さまざまな例に基づく、データのセットを更新する方法のフローチャートである。
【図５】ある例示的実施形態に基づく、本稿で論じられる技法（たとえば方法）の任意の一つまたは複数が実行されうる例示的な機械を示すブロック図である。
【発明を実施するための形態】
【０００４】
ユーザーはますます装置が正しいソフトウェア（たとえばファームウェア、アプリケーション、ドライバ、ライブラリなど）で常時更新され続けることを期待するようになっている。多くの場合、自分の装置を更新され続けるようにする負担はユーザーに課されるが、ユーザーが所有する装置の多さのため、それは困難なタスクとなっている。
【０００５】
既存の自動更新技法には数多くの技術的問題がある。たとえば、更新のサイズは、装置が限られた記憶スペースをもつときおよび帯域幅が貴重であるときには格別な困難を呈する。頻繁なまたは限られたネットワーク・アクセスをもつ領域では、更新のサイズが、成功裏の更新と失敗との間の差となりうる。よって、より小さく、より知的な更新は、成功裏の更新の可能性を改善しうる。さらに、ソフトウェアは、多様な理由のため常に最新バージョンに更新されることはできない。そのため、製造業者は、展開された装置の多くの異なる構成を維持することを必要とされる。その結果、装置メーカーはソフトウェアの複数のバージョンを同時に展開させておく必要があることがあり、更新経路は複雑になる。
【０００６】
プログラム更新のためには、静的なバイナリー・パッチ当て（バイナリーdiff〔差分〕またはbdiffとしても知られる）が、ペイロード・サイズを低減する助けになりうるが、あらゆる可能なパッチの生成は大きな複雑なシステムについては実際的ではないことがある。たとえば、より伝統的なシナリオにおいて、ソフトウェアの製造業者は、更新パッチ・インストーラーの限られたセットを（たとえば、バージョン1.1ないしバージョン2.0、バージョン1.5ないし2.0など）維持することがある。このタスクは、（たとえばモノのインターネット（IoT）環境において）数多くのコンポーネントおよび装置構成があるときには、パッチ・インストーラーの数が急速に増大するので、ずっと難しくなる。さらに、製造業者は、特定のパッチ・インストーラーが必要とされるかどうかを知りさえしないことがありうる。よって、無用な処理パワーおよび記憶スペースを使うことになる。
【０００７】
本稿に記載されるさまざまな例において、更新要求に応答して動的に（たとえばオンデマンドで）バイナリーdiff――あるいはフル・サイズより小さな更新――を生成するために更新管理システムが使われる。そのようなシステムは、複雑で大きなIoTエコシステムにおいて、より低い全体的な計算、伝送および記憶コストを下げることができる。当業者には明白であろうように、他の恩恵も実現されうる。
【０００８】
図１は、さまざまな実施形態に基づく、プログラム更新を要求する諸装置の概略図である。この図は、ネットワーク（図示せず）を介して更新管理システム１０６と通信する装置１０２および装置１０４を含んでいる。更新管理システム１０６は、diff生成サブシステム１０８、更新要求サブシステム１１０、諸diffインストーラー１１２および諸プログラム・ファイル１１４を含む。さらに詳細に論じるように、装置１０２は更新管理システム１０６に更新要求１１６を送信して、返信でインストーラー応答１１８を受信するものとして示されている。同様に、装置１０４は更新要求１２０を送信して、インストーラー応答１２０を受信する。更新管理システム１０６は、diff生成コマンド１２４の例をも含んでいる。
【０００９】
図１の諸装置は、多くの形を取りうる。たとえば、装置は動きセンサー、ドローンまたはサーモスタットのような単一目的装置であってもよい。装置は、スマートフォン、タブレットまたはラップトップ・コンピュータのようなより汎用の装置であってもよい。これらの装置は、これらの装置の非一時的なコンピュータ可読媒体上に記憶されたさまざまなデータ・ファイルを有していてもよい。データ・ファイルは、アプリケーション・プログラム、ネットワーク・プロトコル、サポート・ファイル（たとえば、動的リンク・ライブラリ（DLL）、共有オブジェクト（so））および資源ファイル（たとえばマップ、画像、ビデオ）を含んでいてもよいが、それに限られない。
【００１０】
さまざな例において、図１に示した諸コンポーネントは、一つまたは複数のネットワークを介して通信してもよい。ネットワークは、ローカル・エリア・ネットワーク（LAN）、広域ネットワーク（WAN）、無線ネットワーク（たとえば802.11またはセルラー・ネットワーク）、公衆電話交換網（PSTN）ネットワーク、アドホック・ネットワーク、セルラー、パーソナル・エリア・ネットワークまたはピアツーピア（たとえばブルートゥース（登録商標）、Wi-Fi  Direct）またはネットワーク・プロトコルおよびネットワーク型の他の組み合わせまたは置換を含みうる。ネットワークは、単一のローカル・エリア・ネットワーク（LAN）または広域ネットワーク（WAN）またはインターネットのようなLANもしくはWANの組み合わせを含んでいてもよい。
【００１１】
更新管理システム１０６は、一つまたは複数のコンピューティング装置上で実行される一つまたは複数のサブシステムとして実装されてもよい。サブシステムは、ソフトウェア・モジュールのようなコンピューティング装置のプロセッサ上で実行される記憶媒体上に記憶されたコードを表わしていてもよい。サブシステムの動作は、二つ以上の地理的位置にあってもよい多くのコンピューティング装置を横断して分散されていてもよい。いくつかの事例では、同じ動作が二つ以上のコンピューティング装置によって完了されてもよい。
【００１２】
更新管理システム１０６内に記述されているデータ――たとえばdiffインストーラー１１２およびプログラム・ファイル１１４――は多様な仕方で記憶されていてもよい。データは、一つまたは複数のデータベースに、あるいはファイル・システムの一部として記憶されてもよい。データベースにおいて使用される特定の記憶レイアウトおよびモデルはいくつかの形を取りうる――実際、各データベースが複数のモデルを利用してもよい。データベースは、リレーショナル・データベース（たとえばSQL）、非リレーショナル・データベース（NoSQL）フラット・ファイル・データベース、オブジェクト・モデル、文書詳細モデルまたはファイル・システム階層であってもよい。データベースは一つまたは複数の記憶装置（たとえばハードディスク、ランダム・アクセス・メモリ（RAM）など）上にデータを記憶してもよい。記憶装置は、スタンドアローン・アレイ、一つまたは複数のサーバー内にあってもよく、一つまたは複数の地理的領域に位置していてもよい。データベース管理システム（DBMS）はデータベースからのレコードを生成し、取得し（たとえば問い合わせから）、更新し、削除するために使用されうる。
【００１３】
更新管理システム１０６は、プログラムの最新バージョンについてのプログラム・ファイル１１４内の情報を記憶してもよい。議論の目的のために、図１は、プログラムに関して記述されるが、他の型のデータ・ファイルが使われてもよい。図２は、ライブラリを使う別の更新プロセスを記述する。プログラム・ファイル１１４は、実際のプログラム・ファイルまたは最新プログラム・ファイルのリストをそれぞれのバージョンとともに記憶していてもよい。更新管理システム１０６は、複数のプログラム・プロバイダーによって使用されてもよいので、プログラム・ファイル１１４はプログラムのプロバイダーをも示してもよい。プログラム・ファイル１１４は、プログラムの古くなったバージョンまたは古くなったバージョン間の以前に計算されたデルタをも、プログラムの最新バージョンへのインストーラーを生成する際に使うために、記憶していてもよい。
【００１４】
プログラム・ファイル１１４中のリストは、いくつかの仕方で表現されることができ、バージョン番号以外の情報を含んでいてもよい。一つの方法は、プログラムの名前およびバージョンのプレーンテキスト・エントリーを含めることでありうる。もう一つの方法は、プログラム・ファイルのハッシュを含めることでありうる。リストは、ハッシュまたはプログラムのデジタル署名されたバージョンを含んでいてもよい。
【００１５】
さらに、更新管理システム１０６は、ウェブ・サーバーを介してアプリケーション・プログラミング・インターフェース（API）を提供してもよい。APIは、更新管理システム１０６から更新を要求することおよび要求に応答してインストーラーを提供することのためのコマンドを含んでいてもよい。APIは、プログラムの新バージョンが利用可能であることを示すためにアプリケーション・プロバイダーによって使われてもよい――プログラム・ファイル１１４への更新がしかるべくなされうる。
【００１６】
図１では、装置１０２は、更新要求１１６を発するためにAPIへの呼び出しを生成してもよい。API呼び出しは、更新要求に含められてもよいいくつかのパラメータを定義してもよい。更新要求は少なくとも一つの［プログラム識別情報、バージョン］対を含んでいてもよい。今の例では、更新要求１１６は三つのそのような対を含む。しかしながら、単一の要求の代わりに複数の更新要求が送信されてもよい。
【００１７】
更新要求は現行プログラムに基づくハッシュ――たとえば図２に関して下記でより詳細に論じるもの――または各アプリケーションに一つずつの一連のハッシュであってもよい。もう一つのオプションは、更新要求に一つまたは複数のアプリケーション署名を含めることでありうる。さらに、更新要求における情報は、（たとえば装置の製造業者またはアプリケーションの発行者の鍵によって）デジタル署名されるとともに暗号化されてもよい。
【００１８】
更新要求は、装置の型のような追加的な情報を含んでいてもよい。型は、装置がドローンであることおよびドローンの特定のモデル番号を示してもよい。他の型はルーター、センサー、ラップトップ、携帯電話などおよびそれぞれのモデル番号を含んでいてもよい。
【００１９】
更新要求サブシステム１１０は、API呼び出しに含まれる情報を受領し、それを処理して、プログラムの更新されたバージョンが利用可能であるかどうかを判定してもよい。更新要求サブシステム１１０は、プログラム・ファイル１１４のようなプログラムの最新のリストを含むデータ記憶部に問い合わせしてもよい。問い合わせは、更新要求１１６からのプログラム識別情報を含んでいてもよい。問い合わせへの応答は、問い合わせにおいて同定されたプログラムの最新バージョン番号を含んでいてもよい。次いで、更新要求サブシステム１１０は、プログラムの現行バージョンを更新要求１１６に含まれているバージョンと比較して、プログラムの更新バージョンが装置１０２のために利用可能であるかどうかを判定してもよい。
【００２０】
図のように、装置１０２はすでにプログラムBおよびCの最も最新のバージョンを有している。対照的に、装置１０２上のプログラムAはまだバージョン1.0であるが、プログラム・ファイル１１４は2.0バージョンが利用可能であることを示している。装置１０４に関しては、プログラムAおよびBが古くなっているが、Cは更新を必要としない。
【００２１】
更新要求サブシステム１１０が一つまたは複数のプログラムの更新バージョンが利用可能であると判定することに基づいて、その後の問い合わせがdiffインストーラー１１２に対してなされてもよい。この問い合わせは、古くなっていると見なされる装置１０２または装置１０４上のプログラムの現行バージョンを含んでいてもよい。このその後の問い合わせに応答して含められるデータは、プログラムの現行バージョンをプログラムの更新バージョンに更新するためのインストーラーが利用可能であるかどうかを示してもよい。
【００２２】
装置１０２に関し、diffインストーラー１１２は、プログラムAについてバージョン1.0から2.0へのインストーラーを含む。同様に、装置１０４のためにはバージョン1.1から2.0への更新を含む。しかしながら、diffインストーラー１１２は装置１０２のためのプログラムBについての1.0から2.5へのインストーラーは含まない。更新要求サブシステム１１０がインストーラーが利用可能でないと判定すると、diff生成サブシステム１０８に対して自動要求がなされてもよい。diff生成サブシステム１０８への要求は、プログラムの（装置１０４に記憶されている）現行バージョンおよびプログラム識別情報を含んでいてもよい。
【００２３】
diff生成サブシステム１０８は、たとえば装置１０４のためにプログラムBのバージョン1.0をバージョン2.5に更新するためのインストーラーを生成するためにdiff生成コマンド１２４を実行してもよい。結果として得られるインストーラーはdiffインストーラー１１２に記憶されてもよい。結果として、次にある装置がプログラムBについてバージョン1.0からバージョン2.5更新する必要があるときは、インストーラーがすでに利用可能であり、再び生成される必要はない。
【００２４】
さまざまな例において、インストーラーは、プログラムのバージョン間の差に基づいて生成されてもよい。インストーラーは、二つのバージョンの間で同様であるデータを除外し、それによりインストーラーの全体的なサイズを減らすことを含んでいてもよい。インストーラーの生成は、二つのバージョンの間でどこに変化が存在するかを同定することおよび（たとえばbdiffおよびbpatchコマンドライン・ツールまたは同様のプログラムを使って）これらの領域を現行バージョンに更新するためのパッチ・ファイルを生成することを含んでいてもよい。
【００２５】
インストーラーの生成後、インストーラー応答１１８およびインストーラー応答１２２が装置１０２および装置１０４にそれぞれ送信されてもよい。これらのインストーラー応答は、diffインストーラー１１２におけるインストーラーを得る場所のリンクを含んでいてもよい。リンクは、直接リンクであってもよく、あるいは更新管理システム１０６へのその後のAPI呼び出しにおいて使うための情報を含んでいてもよい。該情報は、諸diffインストーラー１１２から正しいインストーラーを取り出し、それを要求元装置に返すために更新管理システム１０６によって使用されうるパス情報（たとえば、「/progA/v1-to-v2」）を含んでいてもよい。インストーラー応答１１８およびインストーラー応答１２２における情報は暗号化されてもよい。
【００２６】
図２は、さまざまな実施形態に基づく、ライブラリ更新を要求する装置の概略図である。図２は、装置ライブラリ・リスト２０２、更新要求２０４、最新リスト２０６、最新ハッシュ２０８、更新要求サブシステム２１０およびdiff生成サブシステム２１２を含んでいる。更新要求サブシステム２１０は、ハッシュ比較動作２１４、diff要求動作２１６および応答生成器２１８を含む。diff生成サブシステム２１２はdiff生成動作２２０、diff記憶動作２２２を含む。別個のコンポーネントとして示されているが、更新要求サブシステム２１０、diff生成サブシステム２１２および最新リスト２０６は単一のコンピューティング装置とともに存在していてもよい。
【００２７】
図２は、装置のライブラリを更新する例を示している。（プログラム識別情報、バージョン）対を送信する代わりに、図２は、装置ライブラリ・リスト２０２を同定するために単一のハッシュを使うことを示している。これは、数百のライブラリが装置上に記憶されており、装置が帯域幅が貴重な位置にある状況において、有用でありうる。そのような状況では、数百の個々の要求を送ることは実際的ではないことがある。
【００２８】
そのような状況において技術的困難を軽減するために、装置に記憶されているライブラリのリストに基づいてハッシュが生成されてもよい。リストは［ライブラリAバージョン1.0，ライブラリBバージョン2.2，…］であってもよい。別の例では、ハッシュは、各ライブラリの最初の数バイトを使った結果であってもよい。装置は、ハッシュを生成し、それを更新要求２０４――これは任意的に装置の型を含む――において更新要求サブシステム２１０に送信してもよい。更新要求サブシステム２１０は、更新管理システムの一部であってもよい。
【００２９】
更新要求サブシステム２１０は、更新要求２０４に含まれる装置型について最新ハッシュ２０８を受領してもよい。更新要求サブシステム２１０は、更新要求サブシステム２１０からハッシュ生成サブシステム（図示せず）への要求に応答して該ハッシュを受領してもよい。ハッシュ生成サブシステムは、装置が装置ライブラリ・リスト２０２を記憶するのと同様の仕方で最新リスト２０６を使ってハッシュを計算してもよい。
【００３０】
更新要求サブシステム２１０は、ハッシュ比較動作２１４を実行して、更新要求２０４と最新ハッシュ２０８が同じハッシュを含むことを判定してもよい。それらのハッシュが同じであれば、利用可能な更新がないことを示す応答が装置に送り返されてもよい。それらのハッシュが異なっていれば――このことは利用可能な、より新しいバージョンがあることを含意する――更新要求サブシステム２１０は、インストーラーのリストに問い合わせをして、ハッシュ装置プログラム・リスト２０２から最新リスト２０６へのインストーラーが利用可能であるかどうかを調べてもよい。
【００３１】
図３は、さまざまな例に基づく、装置型ごとのインストーラーのリストを示している。図３は装置型１のインストーラー３０４および装置型２のインストーラー３０６を示しているが、本開示の範囲から外れることなく、より多くの装置型が加えられてもよい。見て取れるように、装置型１のインストーラー３０４はHash(A,B,C)をもつ装置をHash(A,B,D)に更新するためのエントリーおよびライブラリ（E,F,G）を（Q,R,X）に更新するためのエントリーを含んでいる。簡単のため、ハッシュは、ハッシュの出力ではなく、そのもとになったライブラリによって表わされる。ハッシュの出力を使うとこの情報がわかりにくくなるであろう。
【００３２】
エントリーは、インストーラー（たとえばパッチ・ファイル）、インストーラーへのリンク、生成日および最終使用日を含んでいてもよい。エントリーはこの情報のすべてを必要とするわけではない。時間とともに、インストーラーが使用されることは少なくなっていく。よって、システム（たとえば更新管理システム１０６）は、古いインストーラーを削除してもよい。削除は、生成日および最終使用日の一つまたは複数に基づいていてもよい。より大量の更新が必要とされる場合には、新しいデルタを生成する必要性を検出するために、高速存在検出アルゴリズム（たとえばブルーム・フィルタ）が使われてもよい。たとえば、インストーラーは、一年後に削除されてもよく、あるいは過去60日以内に使われなかった場合に削除されてもよい。
【００３３】
削除のための基準は、更新管理システム１０６内に記憶されていてもよい。定期的に（たとえば毎日または毎週）、更新管理システム１０６はdiffインストーラー３０２を調べて、生成日および最終使用日を検査してもよい。基準が満たされたら、インストーラーは削除されてもよい。別の例では、インストーラーは、削除される代わりに、三次的な記憶装置に移されてもよい。
【００３４】
図２に戻って参照するに、諸diffインストーラー３０２のうちにインストーラーが利用可能でないときは、diff要求動作２１６が呼び出されてもよい。diff要求動作２１６は、装置ライブラリ・リスト２０２から最新リスト２０６へのインストーラーを生成するために、diff生成サブシステム２１２に転送されてもよい。
【００３５】
diff生成サブシステム２１２は、diff生成動作２２０、diff記憶動作２２２を含む。ハッシュが使われるので、diff生成サブシステム２１２は、バイナリーdiffを実行するためのファイルをすぐには利用可能でないことがありうる。さらに、ハッシュから実際のライブラリ・リストを取得することは、計算上困難である。よって、いくつかの例では、ハッシュのライブラリ・リストへのマッピングが記憶される（この情報は、装置の製造業者から受領されてもよい）。もう一つの例では、インストーラーが利用可能でないと判定したのち、更新要求２０４を送信した装置に、ライブラリの識別情報および任意的にはバージョンの要求が送信されてもよい。このようにして、比較的高い帯域幅使用が、更新要求サブシステム２１０が更新が必要とされており、すぐ利用可能ではないと判別したときに限定されうる。
【００３６】
マップまたは装置から実際のライブラリ・リストを取得したのち、diff生成動作２２０は図１で論じたのと同様の仕方で実行されてもよい。次いで、diff記憶動作２２２が実行されて、（たとえば諸diffインストーラー３０２において）インストーラーを記憶してもよい。記憶後、該インストーラーへのリンクが生成されてもよい。リンクは、応答生成器２１８において装置に送り返されてもよい。
【００３７】
上記で論じた例は概括的にはライブラリまたはプログラムへの更新に焦点を当ててきたが、他の使用事例も可能である。たとえば、ドローン上にあるライブラリの集合［A,B,C］をもつ装置を考える。各ライブラリは、他のライブラリとは独立であってもよい。たとえば、ライブラリAはオブジェクト検出のために使用されてもよく、ライブラリBは位置特定のために、ライブラリCは動きのために使用されてもよい。ドローン製造業者は、オブジェクト検出ソフトウェアの別のプロバイダーが今や利用可能であり、ライブラリAの代わりにライブラリDが使用されるべきであると判断することがありうる。そのような場合、バージョン番号は潜在的には無意味である。よって、更新管理システム１０６は、ライブラリが入れ替えられるべきかどうかを判定するために、バージョンに加えて（またはバージョンの代わりに）ライブラリのリストを検査してもよい。
【００３８】
さらなる粒度が、ライブラリまたはプログラム自身内で使われてもよい。たとえば、実行コードはプログラムについて変化しなくてもよく、資源（たとえば音楽ファイル、画像ファイルなど）が更新されてもよい。更新管理システム１０６はそのような更新を、資源のハッシュを使って処理してもよい。ハッシュが一致しなければ、新たな資源へのリンクが提供されてもよい。
【００３９】
図４は、さまざまな例に基づくデータのセットを更新する方法のフローチャートである。本方法は、本稿に記載されるサブシステムの一つまたは複数を使って実行されてもよい。動作４０２では、コンピューティング装置からの更新要求が受領されてもよい。更新要求は、更新管理システムにおいて受領されてもよい。更新要求は、コンピューティング装置上に記憶されているデータの現行のセットのプロファイルを含んでいてもよい。データのセットは、装置上のアプリケーション、ライブラリまたは資源を含んでいてもよい。データの現行のセットのプロファイルは、コンピューティング装置上にインストールされているソフトウェアのバージョンを同定してもよい。
【００４０】
いくつかの例では、更新要求は、更新管理システム（または他のシステム）が利用可能な更新を求めて更新管理システムをチェックするようメッセージをコンピューティング装置に送信することに応答して受領されてもよい。他の例では、更新要求は、コンピューティング装置から開始されてもよい。更新要求はコンピューティング装置から定期的に送信されてもよい。
【００４１】
一例では、動作４０４において、少なくとも部分的にはデータの現行セットのプロファイルに基づいて、データの更新されたセットが利用可能であることが判別される。判別は、ソフトウェアのより新しいバージョンが利用可能であることを判別することを含んでいてもよい。一例では、データの現行セットのプロファイルは、コンピューティング装置上に記憶されているライブラリのリストを含み、データの更新セットが利用可能であることを判別することは、ライブラリの少なくとも一部が置換されたことを判別することを含んでいてもよい。
【００４２】
動作４０６では、一例において、データの現行セットをデータの更新されたセットに変換するためにデータのデルタ・セットが以前に生成されたかどうかが判定される。データのデルタ・セットは、コンピューティング装置上にインストールされているソフトウェアを該ソフトウェアのより新しいバージョンに更新するためのインストーラーを含んでいてもよい。データのデルタ・セットは、データの現行セットとデータの更新されたセットのバイナリーにおける差に基づいていてもよい。
【００４３】
データのデルタ・セットが以前に生成されていないと判定されたら、データのデルタ・セットが生成されてもよい（動作４０８）。動作４１０では、データのデルタ・セットを取得するためのアドレスがコンピューティング装置に送信されてもよい。
【００４４】
図４に示した方法は、第二のコンピューティング装置から第二の更新要求を受領することをさらに含んでいてもよい。該更新要求は、第二のコンピューティング装置上に記憶されているデータの現行セットの第二のプロファイルを含む。第二のコンピューティング装置に記憶されているデータの現行セットの第二のプロファイルが、コンピューティング装置に記憶されているデータの現行セットのプロファイルに一致すると判定することに基づいて、データのデルタ・セットへのアドレスが、第二のコンピューティング装置による取得のために、第二のコンピューティング装置に送信されてもよい。
【００４５】
一例では、コンピューティング装置に記憶されているデータの現行セットのプロファイルおよび第二のコンピューティング装置に記憶されているデータの現行セットの第二のプロファイルは、データのそれぞれの現行セットのそれぞれのハッシュを含む。さらに、第二のコンピューティング装置に記憶されているデータの現行セットの第二のプロファイルが、コンピューティング装置に記憶されているデータの現行セットのプロファイルに一致すると判定することは、データのそれぞれの現行セットのそれぞれのハッシュを比較することを含んでいてもよい。
【００４６】
図４に示した方法は、第二のコンピューティング装置から第二の更新要求を受信することを含んでいてもよい。該更新要求は、第二のコンピューティング装置に記憶されているデータの現行セットの第二のプロファイルを含む。第二のコンピューティング装置に記憶されているデータの現行セットの第二のプロファイルが、コンピューティング装置に記憶されているデータの現行セットのプロファイルに一致しないと判定することに基づいて、データの第二のデルタ・セットが生成されてもよい。データの第二のデルタ・セットへのアドレスが、第二のコンピューティング装置による取得のために、第二のコンピューティング装置に送信されてもよい。
【００４７】
例示的なコンピューティング・システム
本稿に記載される実施形態は、ハードウェア、ファームウェアおよびソフトウェアの一つまたは組み合わせにおいて実装されてもよい。実施形態は、本稿に記載される動作を実行するために少なくとも一つのプロセッサによって読まれ、実行されうる機械可読記憶デバイスに記憶された命令として実装されてもよい。機械可読記憶デバイスは、機械（たとえばコンピュータ）によって読み取り可能な形で情報を記憶するための任意の非一時的な機構を含みうる。たとえば、機械可読記憶デバイスは、読み出し専用メモリ（ROM）、ランダム・アクセス・メモリ（RAM）、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリ・デバイスおよび他の記憶デバイスおよび媒体を含みうる。
【００４８】
本稿に記載されるような例は、論理またはいくつかのコンポーネント、モジュールもしくは機構を含んでいてもよく、またはそれに基づいて動作してもよい。モジュールは、本稿に記載される動作を実行するために一つまたは複数のプロセッサに通信上結合されたハードウェア、ソフトウェアまたはファームウェアであってもよい。モジュールは、ハードウェア・モジュールであってもよく、そのようなモジュールは、指定された動作を実行することのできる有体のエンティティであると考えられてもよく、ある仕方で構成または配置されてもよい。一例では、回路はモジュールとして指定された仕方で構成されてもよい（たとえば内部的にまたは他の回路のような外部エンティティに関して）。一例では、一つまたは複数のコンピュータ・システム（たとえば、スタンドアローン、クライアントまたはサーバー・コンピュータ・システム）または一つまたは複数のハードウェア・プロセッサの全体または一部は、ファームウェアまたはソフトウェア（たとえば命令、アプリケーション部分またはアプリケーション）によって、指定された動作を実行するよう動作するモジュールとして構成されてもよい。一例では、ソフトウェアは機械可読媒体上に存在してもよい。一例では、ソフトウェアは、モジュールの根底にあるハードウェアによって実行されると、該ハードウェアに指定された動作を実行させる。よって、ハードウェア・モジュールという用語は、指定された仕方で動作するまたは本稿に記載される任意の動作の一部または全部を実行するために、物理的に構築され具体的に設定されている（たとえば結線されている）ものであろうと、一時的に（たとえば暫定的に）構成されている（たとえばプログラムされている）ものであろうと、有体のエンティティを包含するものと理解される。モジュールが一時的に構成される例を考えると、任意の一つの時点において、各モジュールがインスタンス生成されている必要はない。たとえば、モジュールがソフトウェアを使って構成される汎用ハードウェア・プロセッサを有する場合、汎用ハードウェア・プロセッサは、異なる時点においてそれぞれ異なるモジュールとして構成されうる。よって、ソフトウェアは、たとえばある時点ではある特定のモジュールをなし、異なる時点では異なるモジュールをなすようハードウェア・プロセッサをしかるべく構成してもよい。モジュールは、本稿に記載される方法論を実行するよう動作するソフトウェアまたはファームウェア・モジュールであってもよい。
【００４９】
図５は、コンピュータ・システム５００の例示的な形での機械を示すブロック図である。この中で、ある実施形態に基づく、本稿で論じられた方法論のいずれかを該機械に実行させるために命令のセットまたはシーケンスが実行されうる。代替的な実施形態では、機械はスタンドアローン装置として動作してもよく、あるいは他の機械に接続（たとえばネットワーク接続）されてもよい。ネットワーク接続された展開では、機械は、サーバー‐クライアント・ネットワーク環境におけるサーバーまたはクライアント機械のいずれかの役割で動作しうる。あるいはピアツーピア（または分散式）ネットワーク環境においてピア機械として作用できる。機械は、車載システム、ウェアラブル装置、パーソナル・コンピュータ（PC）、タブレットPC、ハイブリッド・タブレット、携帯情報端末（PDA）、携帯電話または当該機械が取るべき行動を指定する命令（逐次的またはそれ以外の）を実行することができる任意の機械であることができる。さらに、単一の機械しか示されていないが、用語「機械」は、本稿で論じた方法論の任意の一つまたは複数を実行するための命令のセット（または複数のセット）を個々にまたは合同して実行する機械の任意の集合を含むものとも解釈される。同様に、「プロセッサ・ベースのシステム」は、本稿で論じた方法論の任意の一つまたは複数を実行するための命令を個々にまたは合同して実行するプロセッサ（たとえばコンピュータ）によって制御されるまたは操作される一つまたは複数の機械の任意の集合を含むものと解釈される。
【００５０】
例示的なコンピュータ・システム５００は少なくとも一つのプロセッサ５０２（たとえば、中央処理ユニット（CPU）、グラフィック処理ユニット（GPU）または両方、プロセッサ・コア、計算ノードなど）、メイン・メモリ５０４および静的メモリ５０５を含み、これらはリンク５０８（たとえばバス）を介して互いと通信する。コンピュータ・システム５００はさらに、ビデオ・ディスプレイ・ユニット５１０、英数字入力装置５１２（たとえばキーボード）およびユーザー・インターフェース（UI）ナビゲーション装置５１４（たとえばマウス）を含むことができる。ある実施形態では、ビデオ・ディスプレイ・ユニット５１０、入力装置５１２およびUIナビゲーション装置５１４はタッチスクリーン・ディスプレイに組み込まれる。コンピュータ・システム５００はさらに、記憶装置５１６（たとえばドライブ・ユニット）、信号生成装置５１８（たとえばスピーカー）、ネットワーク・インターフェース装置５２０および一つまたは複数のセンサー（図示せず）たとえば全地球測位システム（GPS）センサー、コンパス、加速度計または他のセンサーを含むことができる。
【００５１】
記憶装置５１６は、本稿に記述される方法論または機能の任意の一つまたは複数を具現するまたはそれによって利用されるデータ構造および命令５２４（たとえばソフトウェア）の一つまたは複数のセットが記憶されている機械可読媒体５２２を含む。命令５２４は、コンピュータ・システム５００によるその実行中、完全にまたは少なくとも部分的に、メイン・メモリ５０４、静的メモリ５０６内および／またはプロセッサ５０２内に存在することもできる。メイン・メモリ５０４、静的メモリ５０６およびプロセッサ５０２も機械可読媒体をなす。
【００５２】
機械可読媒体５２２は例示的な実施形態では単一の媒体として示されているが、用語「機械可読媒体」は、前記一つまたは複数の命令５２４を記憶する単一の媒体または複数の媒体（たとえば中央集中されたまたは分散されたデータベースおよび／または関連したキャッシュおよびサーバー）を含むことができる。用語「機械可読媒体」は、機械による実行のための、該機械に本開示の方法論の任意の一つまたは複数を実行させる命令を記憶、エンコードまたは担持することができる、あるいはそのような命令によって利用されるまたはそのような命令に関連するデータ構造を記憶、エンコードまたは担持することができる任意の有体の媒体を含むものと解釈される。よって、用語「機械可読媒体」は、固体メモリおよび光学式および磁気式媒体を含むがそれに限られないものと解釈される。機械可読媒体の具体例は、たとえば半導体メモリ・デバイス（たとえば、電気的にプログラム可能な読み出し専用メモリ（EPROM）、電気的に消去可能なプログラム可能型読み出し専用メモリ（EEPROM））およびフラッシュメモリ・デバイス；内蔵ハードディスクおよびリムーバブル・ハードディスクのような磁気ディスク；光磁気ディスク；およびCD-ROMおよびDVD-ROMディスクを含むがそれに限られない不揮発性メモリを含む。
【００５３】
命令５２４はさらに、いくつものよく知られた転送プロトコル（たとえばHTTP）の任意のものを利用するネットワーク・インターフェース装置５２０を介して伝送媒体を使って通信ネットワーク５２６上で送信または受信されることができる。通信ネットワークの例は、ローカル・エリア・ネットワーク（LAN）、広域ネットワーク（WAN）、インターネット、モバイル電話ネットワーク、旧来式電話（POTS）ネットワークおよび無線データ・ネットワーク（たとえばWi-Fi、5Gおよび4G  LTE/LTE-AまたはWiMAXネットワーク）を含む。用語「伝送媒体」は、機械による実行のための命令を記憶、エンコードまたは担持することができる任意の有体でない媒体を含むと解釈され、デジタルまたはアナログ通信信号またはそのようなソフトウェアの通信を容易にするための他の有体でない媒体を含む。
【００５４】
実施例１は、少なくとも一つのプロセッサと；命令が記憶されている記憶可読媒体とを有するデータを更新するためのシステムであって、前記命令は、前記少なくとも一つのプロセッサによって実行されたときに、前記プロセッサを：コンピューティング装置からの更新要求を受領する段階であって、前記更新要求は、前記コンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、段階と；データの前記現行セットをデータの更新されたセットに変換するためのデータのデルタ・セットが以前に生成されたかどうかを判定する段階と；データの前記デルタ・セットが以前に生成されていないとの判定に基づいて、データの前記デルタ・セットを生成し、前記コンピューティング装置によりデータの前記デルタ・セットを取得するためのアドレスを前記コンピューティング装置に送信する段階とを実行するよう構成するものである、システムである。
【００５５】
実施例２では、実施例１の主題が任意的に、前記命令は、前記少なくとも一つのプロセッサによって実行されたときに、前記少なくとも一つのプロセッサを：少なくとも部分的にはデータの前記現行セットの前記プロファイルに基づいて、データの前記更新されたセットが利用可能であることを判別する段階を実行するよう構成するものである、ことを含む。
【００５６】
実施例３では、実施例２の主題が任意的に、データの前記現行セットの前記プロファイルが前記コンピューティング装置上にインストールされているソフトウェアのバージョンを同定し、データの前記更新されたセットが利用可能であることを判別するために、前記少なくとも一つのプロセッサが、前記ソフトウェアのより新しいバージョンが利用可能であると判別するよう構成される、ことを含む。
【００５７】
実施例４では、実施例３の主題が任意的に、データの前記デルタ・セットが、前記コンピューティング装置上にインストールされている前記ソフトウェアを、前記ソフトウェアの前記より新しいバージョンに更新するためのインストーラーを含む、ことを含む。
【００５８】
実施例５では、実施例２ないし４のうちいずれか一項記載の主題が任意的に、データの前記現行セットの前記プロファイルが前記コンピューティング装置上に記憶されているライブラリのリストを含み、データの前記更新されたセットが利用可能であることを判別するために、前記少なくとも一つのプロセッサが、前記ライブラリのうち少なくとも一つのライブラリが置換されたことを判別するよう構成される、ことを含む。
【００５９】
実施例６では、実施例１ないし５のうちいずれか一項記載の主題が任意的に、データの前記デルタ・セットが、データの前記現行セットおよびデータの前記更新されたセットのバイナリーにおける差に基づく、ことを含む。
【００６０】
実施例７では、実施例１ないし６のうちいずれか一項記載の主題が任意的に、前記命令は、前記少なくとも一つのプロセッサによって実行されたときに、前記少なくとも一つのプロセッサを：第二のコンピューティング装置からの第二の更新要求を受領する段階であって、前記第二の更新要求は、前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、段階と；前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前に受領されたプロファイルに一致すると判別することに基づいて：前記第二のコンピューティング装置による取得のために、データの前記デルタ・セットへのアドレスを前記第二のコンピューティング装置に送信する段階とを実行するよう構成するものである、ことを含む。
【００６１】
実施例８では、実施例７記載の主題が任意的に、前記コンピューティング装置上に記憶されているデータの現行セットの前記プロファイルおよび前記第二のコンピューティング装置上に記憶されているデータの現行セットの前記プロファイルが、データのそれぞれの現行セットのそれぞれのハッシュを含む、ことを含む。
【００６２】
実施例９では、実施例７または８記載の主題が任意的に、前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前に受領されたプロファイルに一致すると判別するために、前記少なくとも一つのプロセッサはデータの前記それぞれの現行セットの前記それぞれのハッシュを比較するよう構成される、ことを含む。
【００６３】
実施例１０では、実施例１ないし９のうちいずれか一項記載の主題が任意的に、前記命令は、前記少なくとも一つのプロセッサによって実行されたときに、前記少なくとも一つのプロセッサを：第二のコンピューティング装置からの第二の更新要求を受領する段階であって、前記第二の更新要求は、前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、段階と；前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットのプロファイルに一致しないとの判別に基づいて：データの第二のデルタ・セットを生成し、前記第二のコンピューティング装置による取得のためにデータの前記第二のデルタ・セットへのアドレスを前記第二のコンピューティング装置に送信する段階とを実行するよう構成するものである、ことを含む。
【００６４】
実施例１１は、データを更新する方法であって、コンピューティング装置からの更新要求を受領する段階であって、前記更新要求は、前記コンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、段階と；データの前記現行セットをデータの更新されたセットに変換するためのデータのデルタ・セットが以前に生成されたかどうかを判定する段階と；データの前記デルタ・セットが以前に生成されていないとの判定に基づいて、データの前記デルタ・セットを生成し、前記コンピューティング装置によりデータの前記デルタ・セットを取得するためのアドレスを前記コンピューティング装置に送信する段階とを含む、方法である。
【００６５】
実施例１２では、実施例１１の主題が任意的に、少なくとも部分的にはデータの前記現行セットの前記プロファイルに基づいて、データの前記更新されたセットが利用可能であることを判別する段階をさらに含む。
【００６６】
実施例１３では、実施例１２記載の主題が任意的に、データの前記現行セットの前記プロファイルが前記コンピューティング装置上にインストールされているソフトウェアのバージョンを同定し、データの前記更新されたセットが利用可能であることを判別することが、前記ソフトウェアのより新しいバージョンが利用可能であると判別することを含む、ことを含む。
【００６７】
実施例１４では、実施例１３記載の主題が任意的に、データの前記デルタ・セットが、前記コンピューティング装置上にインストールされている前記ソフトウェアを、前記ソフトウェアの前記より新しいバージョンに更新するためのインストーラーを含む、ことを含む。
【００６８】
実施例１５では、実施例１２ないし１４のうちいずれか一項記載の主題が任意的に、データの前記現行セットの前記プロファイルが前記コンピューティング装置上に記憶されているライブラリのリストを含み、データの前記更新されたセットが利用可能であることを判別することが、前記ライブラリのうち少なくとも一つのライブラリが置換されたことを判別することを含む、ことを含む。
【００６９】
実施例１６では、実施例１１ないし１５のうちいずれか一項記載の主題が任意的に、データの前記デルタ・セットが、データの前記現行セットおよびデータの前記更新されたセットのバイナリーにおける差に基づく、ことを含む。
【００７０】
実施例１７では、実施例１１ないし１６のうちいずれか一項記載の主題が任意的に、第二のコンピューティング装置からの第二の更新要求を受領する段階であって、前記第二の更新要求は、前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、段階と；前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前に受領されたプロファイルに一致すると判別することに基づいて：前記第二のコンピューティング装置による取得のために、データの前記デルタ・セットへのアドレスを前記第二のコンピューティング装置に送信する段階とをさらに含む、ことを含む。
【００７１】
実施例１８では、実施例１７記載の主題が任意的に、前記コンピューティング装置上に記憶されているデータの現行セットの前記プロファイルおよび前記第二のコンピューティング装置上に記憶されているデータの現行セットの前記第二のプロファイルが、データのそれぞれの現行セットのそれぞれのハッシュを含む、ことを含む。
【００７２】
実施例１９では、請求項１７または１８記載の主題が任意的に、前記第二のコンピューティング装置上に記憶されているデータの現行セットの第二のプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前に受領されたプロファイルに一致すると判別することが、データの前記それぞれの現行セットの前記それぞれのハッシュを比較することを含む、ことを含む。
【００７３】
実施例２０では、請求項１１ないし１９のうちいずれか一項記載の主題が任意的に、第二のコンピューティング装置からの第二の更新要求を受領する段階であって、前記第二の更新要求は、前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、段階と；前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前のプロファイルに一致しないとの判別に基づいて：データの第二のデルタ・セットを生成し、前記第二のコンピューティング装置による取得のためにデータの前記第二のデルタ・セットへのアドレスを前記第二のコンピューティング装置に送信する段階とをさらに含む。
【００７４】
実施例２１は、機械によって実行されたときに機械に実施例１１ないし２０のうちいずれか一項記載の方法の動作を実行させるための命令を含む少なくとも一つの機械可読媒体である。
【００７５】
実施例２２は、実施例１１ないし２０のうちいずれか一項記載の方法を実行する手段を有する装置である。
【００７６】
実施例２３は、データを更新する装置であって、コンピューティング装置からの更新要求を受領する手段であって、前記更新要求は、前記コンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、手段と；データの前記現行セットをデータの更新されたセットに変換するためのデータのデルタ・セットが以前に生成されたかどうかを判定する手段と；データの前記デルタ・セットが以前に生成されていないとの判定に基づいて、データの前記デルタ・セットを生成する手段と、前記コンピューティング装置によりデータの前記デルタ・セットを取得するためのアドレスを前記コンピューティング装置に送信する手段とを有する、装置である。
【００７７】
実施例２４では、実施例２３の主題が任意的に、少なくとも部分的にはデータの前記現行セットの前記プロファイルに基づいて、データの前記更新されたセットが利用可能であることを判別する手段をさらに含むことを含む。
【００７８】
実施例２５では、実施例２４記載の主題が任意的に、データの前記現行セットの前記プロファイルが前記コンピューティング装置上にインストールされているソフトウェアのバージョンを同定し、データの前記更新されたセットが利用可能であることを判別する手段が、前記ソフトウェアのより新しいバージョンが利用可能であると判別する手段を含む、ことを含む。
【００７９】
実施例２６では、実施例２５記載の主題が任意的に、データの前記デルタ・セットが、前記コンピューティング装置上にインストールされている前記ソフトウェアを、前記ソフトウェアの前記より新しいバージョンに更新するためのインストーラーを含む、ことを含む。
【００８０】
実施例２７では、実施例２４ないし２６のうちいずれか一項記載の主題が任意的に、データの前記現行セットの前記プロファイルが前記コンピューティング装置上に記憶されているライブラリのリストを含み、データの前記更新されたセットが利用可能であることを判別する手段が、前記ライブラリのうち少なくとも一つのライブラリが置換されたことを判別する手段を含む、ことを含む。
【００８１】
実施例２８では、実施例２３ないし２７のうちいずれか一項記載の主題が任意的に、データの前記デルタ・セットが、データの前記現行セットおよびデータの前記更新されたセットのバイナリーにおける差に基づく、ことを含む。
【００８２】
実施例２９では、実施例２３ないし２８のうちいずれか一項記載の主題が任意的に、第二のコンピューティング装置からの第二の更新要求を受領する手段であって、前記第二の更新要求は、前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、手段と；前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前に受領されたプロファイルに一致すると判別することに基づいて：前記第二のコンピューティング装置による取得のために、データの前記デルタ・セットへのアドレスを前記第二のコンピューティング装置に送信する手段とをさらに含む、ことを含む。
【００８３】
実施例３０では、実施例２９記載の主題が任意的に、前記コンピューティング装置上に記憶されているデータの現行セットの前記プロファイルおよび前記第二のコンピューティング装置上に記憶されているデータの現行セットの前記第二のプロファイルが、データのそれぞれの現行セットのそれぞれのハッシュを含む、ことを含む。
【００８４】
実施例３１では、請求項２９または３０記載の主題が任意的に、前記第二のコンピューティング装置上に記憶されているデータの現行セットの第二のプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前に受領されたプロファイルに一致すると判別する手段が、データの前記それぞれの現行セットの前記それぞれのハッシュを比較する手段を含む、ことを含む。
【００８５】
実施例３２では、請求項２３ないし３１のうちいずれか一項記載の主題が任意的に、第二のコンピューティング装置からの第二の更新要求を受領する手段であって、前記第二の更新要求は、前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、手段と；前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前のプロファイルに一致しないとの判別に基づいて：データの第二のデルタ・セットを生成する手段と、前記第二のコンピューティング装置による取得のためにデータの前記第二のデルタ・セットへのアドレスを前記第二のコンピューティング装置に送信する手段とをさらに含む。
【００８６】
上記の詳細な説明は付属の図面への参照を含むが、図面は詳細な説明の一部をなす。図面は、例として、実施されうる個別的な実施形態を示す。これらの実施形態は、本稿では「例」とも称される。そのような例は、図示または記述されたものに加えて諸要素を含んでいてもよい。しかしながら、図示または記述された要素を含む例も考えられる。さらに、特定の例（またはその一つまたは複数の側面）に関してであれ他の例（またはその一つまたは複数の側面）に関してであれ図示または記述した要素（またはその一つまたは複数の側面）の任意の組み合わせまたは置換を使う例も考えられる。
いくつかの態様を記載しておく。
〔態様１〕
少なくとも一つのプロセッサと；命令が記憶されている記憶可読媒体とを有するデータを更新するためのシステムであって、
前記命令は、前記少なくとも一つのプロセッサによって実行されたときに、前記プロセッサを：
コンピューティング装置からの更新要求を受領する段階であって、前記更新要求は、前記コンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、段階と；
データの前記現行セットをデータの更新されたセットに変換するためのデータのデルタ・セットが以前に生成されたかどうかを判定する段階と；
データの前記デルタ・セットが以前に生成されていないとの判定に基づいて、
データの前記デルタ・セットを生成し、
前記コンピューティング装置によりデータの前記デルタ・セットを取得するためのアドレスを前記コンピューティング装置に送信する段階とを実行するよう構成するものである、
システム。
〔態様２〕
前記命令は、前記少なくとも一つのプロセッサによって実行されたときに、前記少なくとも一つのプロセッサを：
少なくとも部分的にはデータの前記現行セットの前記プロファイルに基づいて、データの前記更新されたセットが利用可能であることを判別する段階を実行するよう構成するものである、
態様１記載のシステム。
〔態様３〕
データの前記現行セットの前記プロファイルが前記コンピューティング装置上にインストールされているソフトウェアのバージョンを同定し、データの前記更新されたセットが利用可能であることを判別するために、前記少なくとも一つのプロセッサが、前記ソフトウェアのより新しいバージョンが利用可能であると判別するよう構成される、態様２記載のシステム。
〔態様４〕
データの前記デルタ・セットが、前記コンピューティング装置上にインストールされている前記ソフトウェアを、前記ソフトウェアの前記より新しいバージョンに更新するためのインストーラーを含む、態様３記載のシステム。
〔態様５〕
データの前記現行セットの前記プロファイルが前記コンピューティング装置上に記憶されているライブラリのリストを含み、データの前記更新されたセットが利用可能であることを判別するために、前記少なくとも一つのプロセッサが、前記ライブラリのうち少なくとも一つのライブラリが置換されたことを判別するよう構成される、態様２記載のシステム。
〔態様６〕
データの前記デルタ・セットが、データの前記現行セットおよびデータの前記更新されたセットのバイナリーにおける差に基づく、態様１記載のシステム。
〔態様７〕
前記命令は、前記少なくとも一つのプロセッサによって実行されたときに、前記少なくとも一つのプロセッサを：
第二のコンピューティング装置からの第二の更新要求を受領する段階であって、前記第二の更新要求は、前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、段階と；
前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前に受領されたプロファイルに一致すると判別することに基づいて：
前記第二のコンピューティング装置による取得のために、データの前記デルタ・セットへのアドレスを前記第二のコンピューティング装置に送信する段階とを実行するよう構成するものである、
態様１記載のシステム。
〔態様８〕
前記コンピューティング装置上に記憶されているデータの現行セットの前記プロファイルおよび前記第二のコンピューティング装置上に記憶されているデータの現行セットの前記プロファイルが、データのそれぞれの現行セットのそれぞれのハッシュを含む、態様７記載のシステム。
〔態様９〕
前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前に受領されたプロファイルに一致すると判別するために、前記少なくとも一つのプロセッサはデータの前記それぞれの現行セットの前記それぞれのハッシュを比較するよう構成される、態様７記載のシステム。
〔態様１０〕
前記命令は、前記少なくとも一つのプロセッサによって実行されたときに、前記少なくとも一つのプロセッサを：
第二のコンピューティング装置からの第二の更新要求を受領する段階であって、前記第二の更新要求は、前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、段階と；
前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットのプロファイルに一致しないとの判別に基づいて：
データの第二のデルタ・セットを生成し、
前記第二のコンピューティング装置による取得のためにデータの前記第二のデルタ・セットへのアドレスを前記第二のコンピューティング装置に送信する段階とを実行するよう構成するものである、
態様１記載のシステム。
〔態様１１〕
データを更新する方法であって、
コンピューティング装置からの更新要求を受領する段階であって、前記更新要求は、前記コンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、段階と；
データの前記現行セットをデータの更新されたセットに変換するためのデータのデルタ・セットが以前に生成されたかどうかを判定する段階と；
データの前記デルタ・セットが以前に生成されていないとの判定に基づいて、
データの前記デルタ・セットを生成し、
前記コンピューティング装置によりデータの前記デルタ・セットを取得するためのアドレスを前記コンピューティング装置に送信する段階とを含む、
方法。
〔態様１２〕
少なくとも部分的にはデータの前記現行セットの前記プロファイルに基づいて、データの前記更新されたセットが利用可能であることを判別する段階をさらに含む、
態様１１記載の方法。
〔態様１３〕
データの前記現行セットの前記プロファイルが前記コンピューティング装置上にインストールされているソフトウェアのバージョンを同定し、データの前記更新されたセットが利用可能であることを判別することが、前記ソフトウェアのより新しいバージョンが利用可能であると判別することを含む、態様１２記載の方法。
〔態様１４〕
データの前記デルタ・セットが、前記コンピューティング装置上にインストールされている前記ソフトウェアを、前記ソフトウェアの前記より新しいバージョンに更新するためのインストーラーを含む、態様１３記載の方法。
〔態様１５〕
データの前記現行セットの前記プロファイルが前記コンピューティング装置上に記憶されているライブラリのリストを含み、データの前記更新されたセットが利用可能であることを判別することが、前記ライブラリのうち少なくとも一つのライブラリが置換されたことを判別することを含む、態様１２記載の方法。
〔態様１６〕
データの前記デルタ・セットが、データの前記現行セットおよびデータの前記更新されたセットのバイナリーにおける差に基づく、態様１１記載の方法。
〔態様１７〕
第二のコンピューティング装置からの第二の更新要求を受領する段階であって、前記第二の更新要求は、前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、段階と；
前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前に受領されたプロファイルに一致すると判別することに基づいて：
前記第二のコンピューティング装置による取得のために、データの前記デルタ・セットへのアドレスを前記第二のコンピューティング装置に送信する段階とをさらに含む、
態様１１記載の方法。
〔態様１８〕
前記コンピューティング装置上に記憶されているデータの現行セットの前記プロファイルおよび前記第二のコンピューティング装置上に記憶されているデータの現行セットの前記第二のプロファイルが、データのそれぞれの現行セットのそれぞれのハッシュを含む、態様１７記載の方法。
〔態様１９〕
前記第二のコンピューティング装置上に記憶されているデータの現行セットの第二のプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前に受領されたプロファイルに一致すると判別することが、データの前記それぞれの現行セットの前記それぞれのハッシュを比較することを含む、態様１７記載の方法。
〔態様２０〕
第二のコンピューティング装置からの第二の更新要求を受領する段階であって、前記第二の更新要求は、前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルを含む、段階と；
前記第二のコンピューティング装置上に記憶されているデータの現行セットのプロファイルが、前記コンピューティング装置上に記憶されているデータの現行セットの以前のプロファイルに一致しないとの判別に基づいて：
データの第二のデルタ・セットを生成し、
前記第二のコンピューティング装置による取得のためにデータの前記第二のデルタ・セットへのアドレスを前記第二のコンピューティング装置に送信する段階とをさらに含む、
態様１１記載の方法。
〔態様２１〕
機械に態様１１ないし２０のうちいずれか一項記載の方法を実行させるためのコンピュータ・プログラム。
〔態様２２〕
態様１１ないし２０のうちいずれか一項記載の方法を実行する手段を有する装置。
〔態様２３〕
態様２１記載のコンピュータ・プログラムを記憶している少なくとも一つの機械可読媒体。
【符号の説明】
【００８７】
１０２  装置
１０４  装置
１０６  更新管理システム
１０８  差分生成サブシステム
１１０  更新要求サブシステム
１１２  差分インストーラー
１１４  プログラム
１１６  更新要求
１２０  更新要求
１２２  リンク
２０２  現行の装置ライブラリ
２０６  最新リスト
２１０  更新要求サブシステム
２１２  差分生成サブシステム
２１４  ハッシュ比較
２１６  差分要求
２１８  応答生成器
２２０  差分生成
２２２  差分記憶
３０２  差分インストーラー
４０２  コンピューティング装置からの更新要求を受領。更新要求は、コンピューティング装置上に記憶されているデータの現行のセットのプロファイルを含む
４０４  少なくとも部分的にはデータの現行セットのプロファイルに基づいて、データの更新されたセットが利用可能であることを判別
４０６  データの現行セットをデータの更新されたセットに変換するためにデータのデルタ・セットが以前に生成されたかどうかを判定
４０８  データのデルタ・セットを生成
４１０  コンピューティング装置によりデータのデルタ・セットを取得するためのアドレスをコンピューティング装置に送信
５０２  プロセッサ
５０４  メイン・メモリ
５０６  静的メモリ
５１０  ビデオ・ディスプレイ
５１２  英数字入力装置
５１４  UIナビゲーション装置
５１６  記憶装置
５１８  信号生成装置
５２０  ネットワーク・インターフェース装置
５２２  機械可読媒体
５２４  命令
５２６  ネットワーク
【図１】
0006373939.tif 000002
【図２】
0006373939.tif 000003
【図３】
0006373939.tif 000004
【図４】
0006373939.tif 000005
【図５】
0006373939.tif 000006