(57)【特許請求の範囲】
【請求項１】
コンピューティング装置によってモバイルアプリケーションのアプリケーションコードをロードすることと、
１つ以上のポリシーファイルに基づいて前記アプリケーションの実行を管理するように構成され、前記アプリケーションコードの１つ以上の機能を傍受するように構成されたアプリケーションラッパで前記アプリケーションをラッピングするように、前記コンピューティング装置によって前記アプリケーションコードを修正することであって、前記１つ以上のポリシーファイルはそれぞれ、１つ以上のユーザ装置上の装置管理システムによって行われる１つ以上のアクセス制御を定義する、修正することと、
前記コンピューティング装置によって、前記ラッパによって傍受された前記機能のうちの１つ以上にリンクされた実施コードを定義するフィールドプログラマブルビジネスロジックを含むライブラリファイルを作成することと、
前記コンピューティング装置によって前記ラッピングされたアプリケーション及び前記ライブラリファイルを少なくとも１つのユーザ装置に提供することと、
前記ラッピングされたアプリケーション及び前記ライブラリファイルを前記少なくとも１つのユーザ装置に提供した後、前記コンピューティング装置によって、更新されたライブラリファイルを作成することであって、前記更新されたライブラリファイルは、前記ラッパによって傍受された機能にリンクされた、更新された実施コードを定義する、更新されたフィールドプログラマブルビジネスロジックを含む、作成することと、
前記コンピューティング装置によって、前記更新されたライブラリファイルを前記少なくとも１つのユーザ装置に提供し、前記アプリケーションラッパに前記更新されたビジネスロジックを使用させ、前記ラッピングされたアプリケーションの実行を管理することとを含む、方法。
【請求項２】
１つ以上の他のアプリケーションコードが、１つ以上の他のアプリケーションの実行を管理するように構成された１つ以上の他のラッパによって修正され、前記機能のうちの１つ以上にリンクされた前記実施コードが前記１つ以上の他のラッパによって傍受される、請求項１に記載の方法。
【請求項３】
前記アプリケーションコードを修正することが、少なくとも１つのスタブ機能を前記アプリケーションラッパに追加することを含み、前記少なくとも１つのスタブ機能は、前記ライブラリファイルに提供される前記実施コードを参照する、請求項１に記載の方法。
【請求項４】
前記アプリケーションコードを修正することが、前記フィールドプログラマブルビジネスロジックにおいて定義されている前記実施コードの少なくとも一部の実行を引き起こすように、前記アプリケーションによって使用されるアプリケーションプログラミングインターフェースにおいて定義されている機能をリネーミングすることを含む、請求項１に記載の方法。
【請求項５】
前記アプリケーションコードを修正することが、少なくとも１つのアプリケーションフックを前記アプリケーションに挿入することを含み、前記少なくとも１つのアプリケーションフックは、前記フィールドプログラマブルビジネスロジックにおいて定義されている前記実施コードの一部の実行を引き起こす、請求項１に記載の方法。
【請求項６】
前記更新されたライブラリファイルが、前記少なくとも１つのユーザ装置が更新前のビジネスロジックを使用しているという判定に応答して、前記少なくとも１つのユーザ装置に提供される、請求項１に記載の方法。
【請求項７】
前記ラッピングされたアプリケーション及び前記ライブラリファイルを前記少なくとも１つのユーザ装置に提供した後、前記コンピューティング装置によって、更新されたライブラリファイルを作成することであって、前記更新されたライブラリファイルは、前記ラッパによって傍受された機能にリンクされた、更新された実施コードを定義する、更新されたフィールドプログラマブルビジネスロジックを含む、作成することと、
前記コンピューティング装置によって、前記更新されたライブラリファイルを前記少なくとも１つのユーザ装置に提供し、前記アプリケーションラッパ及び前記１つ以上の他のラッパに前記更新されたビジネスロジックを使用させ、前記ラッピングされたアプリケーション及び前記１つ以上の他のアプリケーションの実行を管理することとをさらに含む、請求項２に記載の方法。
【請求項８】
命令を記憶する１つ以上の非一時的コンピュータ可読媒体であって、前記記憶された命令は、少なくとも１つのコンピューティング装置によって実行されるとき、前記少なくとも１つのコンピューティング装置に、
モバイルアプリケーションのアプリケーションコードをロードすることと、
１つ以上のポリシーファイルに基づいて前記アプリケーションの実行を管理するように構成され、前記アプリケーションコードの１つ以上の機能を傍受するように構成されたアプリケーションラッパで前記アプリケーションをラッピングするように前記アプリケーションコードを修正することであって、前記１つ以上のポリシーファイルはそれぞれ、１つ以上のユーザ装置上の装置管理システムによって行われる１つ以上のアクセス制御を定義する、修正することと、
前記ラッパによって傍受された前記機能のうちの１つ以上にリンクされた実施コードを定義するフィールドプログラマブルビジネスロジックを備えたライブラリファイルを作成することと、
前記ラッピングされたアプリケーション及び前記ライブラリファイルを少なくとも１つのユーザ装置に提供することと、
前記ラッピングされたアプリケーション及び前記ライブラリファイルを提供した後、更新されたライブラリファイルを作成することであって、前記更新されたライブラリファイルは、前記ラッパによって傍受された機能にリンクされた更新された実施コードを定義する更新されたフィールドプログラマブルビジネスロジックを含む、作成することと、
前記更新されたライブラリファイルを前記少なくとも１つのユーザ装置に提供して、前記アプリケーションラッパに、前記更新されたビジネスロジックを使用して前記ラッピングされたアプリケーションの実行を管理させることと、を行わせる、非一時的コンピュータ可読媒体。
【請求項９】
１つ以上の他のアプリケーションコードが、１つ以上の他のアプリケーションの実行を管理するように構成された１つ以上の他のラッパによって修正され、前記機能のうちの１つ以上にリンクされた前記実施コードが前記１つ以上の他のラッパによって傍受される、請求項８に記載の非一時的コンピュータ可読媒体。
【請求項１０】
前記アプリケーションコードを修正することが少なくとも１つのスタブ機能を前記アプリケーションラッパに追加することを含み、前記少なくとも１つのスタブ機能は、前記ライブラリファイルにおいて提供される前記実施コードを参照する、請求項８に記載の非一時的コンピュータ可読媒体。
【請求項１１】
前記アプリケーションコードを修正することが、前記フィールドプログラマブルビジネスロジックにおいて定義されている前記実施コードの少なくとも一部の実行を引き起こすように、前記アプリケーションによって使用されるアプリケーションプログラミングインターフェースにおいて定義されている機能をリネーミングすることを含む、請求項８に記載の非一時的コンピュータ可読媒体。
【請求項１２】
前記アプリケーションコードを修正することが、少なくとも１つのアプリケーションフックを前記アプリケーションに挿入することを含み、前記少なくとも１つのアプリケーションフックは、前記フィールドプログラマブルビジネスロジックにおいて定義されている前記実施コードの一部の実行を引き起こす、請求項８に記載の非一時的コンピュータ可読媒体。
【請求項１３】
前記更新されたライブラリファイルが、前記少なくとも１つのユーザ装置が更新前のビジネスロジックを使用しているという判定に応答して、前記少なくとも１つのユーザ装置に提供される、請求項８に記載の非一時的コンピュータ可読媒体。
【請求項１４】
コンピューティング装置であって、前記コンピューティング装置は、
少なくとも１つの処理装置と、
コンピュータ可読命令を記憶するメモリとを備え、前記コンピュータ可読命令は、前記少なくとも１つの処理装置によって実行されたとき、前記コンピューティング装置に、
第１のライブラリファイルへの更新の表示を受信することであって、前記第１のライブラリファイルは、ラッパによって傍受された１つ以上の機能にリンクされた実施コードを定義するフィールドプログラマブルビジネスロジックを含み、前記ラッパは、前記コンピューティング装置上の装置管理システムによって行われる１つ以上のアクセス制御を定義する１つ以上のポリシーファイルに基づいて、前記コンピューティング装置上でモバイルアプリケーションの実行を管理するように構成される、受信することと、
前記表示の受信に応答して、更新されたライブラリファイルをダウンロードすることであって、前記第１のライブラリファイルは、前記ラッパによって傍受された機能にリンクされた、更新された実施コードを定義する、更新されたフィールドプログラマブルビジネスロジックを含む、ダウンロードすることと、
前記第１のライブラリファイルを前記更新されたライブラリファイルと置き換えて、前記ラッパに、前記モバイルアプリケーションの前記実行を管理するとき、前記更新されたフィールドプログラマブルビジネスロジックを使用させることとを行わせる、コンピューティング装置。
【請求項１５】
前記メモリが追加のコンピュータ可読命令を記憶し、前記追加のコンピュータ可読命令が、前記少なくとも１つの処理装置によって実行されたとき、前記コンピューティング装置に、さらに、
前記第１のライブラリファイルへの前記更新の前記表示を受信した後、前記アプリケーション用のラッパへの更新が利用可能であることを表示するアプリケーション更新を受信することと、
更新されたラッピングされたアプリケーションをダウンロードすることと、
前記ラッパ及び前記アプリケーションを前記更新されたラッピングされたアプリケーションと置き換えることとを行わせる、請求項１４に記載のコンピューティング装置。
【請求項１６】
前記ラッパが少なくとも１つのスタブ機能を含み、前記少なくとも１つのスタブ機能は、前記ライブラリファイルにおいて提供される前記実施コードを参照する、請求項１４に記載のコンピューティング装置。
【請求項１７】
前記ラッパが、前記フィールドプログラマブルビジネスロジックにおいて定義されている前記実施コードの少なくとも一部の実行を引き起こすための、前記アプリケーションによって使用されるアプリケーションプログラミングインターフェースにおいて定義されているリネーミングされた機能を含む、請求項１４に記載のコンピューティング装置。
【請求項１８】
前記ラッパが、前記アプリケーションに挿入された少なくとも１つのアプリケーションフックを含み、前記少なくとも１つのアプリケーションフックは、前記フィールドプログラマブルビジネスロジックにおいて定義されている前記実施コードの一部の実行を引き起こす、請求項１４に記載のコンピューティング装置。
【発明の詳細な説明】
【背景技術】
【０００１】
本開示の態様は一般的に、コンピューティングハードウェア及びコンピュータソフトウェアに関する。特に、本開示の１つ以上の態様は、フィールドプログラマブルビジネスロジックでアプリケーションをラッピングするための、コンピューティングハードウェア及びコンピュータソフトウェアに関する。
【０００２】
パーソナルコンピュータからモバイル装置まで、様々な種類のコンピューティング装置がますます普及している。さらに、人々がこれらの装置を仕事の目的と個人的な使用との両方に使用することが増えてきている。これらの装置の普及は増え続けており、人々はますます増加する多数の理由のために使用し続けるため、装置管理者は複合アプリケーションを実行する多数の複合装置を管理するための効率的で便利なツールを求めている。管理者は、管理者のコンピューティング装置、及び管理者が関わるコンピュータソフトウェアに、より幅広い利便性、機能性、及び使いやすさを求めており、求め続けるであろう。
【発明の概要】
【０００３】
本開示の態様は、管理者が複合装置及び複合アプリケーションを管理するための、より便利で、機能的で、及び使いやすい方法を提供する様々なシステム及び技術に関する。
【０００４】
いくつかのモバイル装置アプリケーションは、ポリシーに従って修正され得る複数のラッピングされたアプリケーションを含み得る。例えば、モバイル装置上のカメラソフトウェアは、ユーザのモバイル装置上のポリシーを使用して、操作不可能であるように制限され得る。組織の企業ユーザに利用可能であり得、組織の管理ユーザ及びモバイル装置管理ソフトウェアによって管理され、及び維持される多数のアプリケーションがあり得るため、アプリケーション及び更新をクライアント装置に効率的及び効果的に配信するための技術は、アプリケーションを管理することにおいて、組織及び管理ユーザに便利であり得る。下記でより詳細に述べられる本開示の１つ以上の態様によると、ラッピングされたアプリケーションの要素が、個別に更新可能である異なる断片で配信され得る。
【０００５】
本開示の態様は、管理されるアプリケーションを更新する、効率的で、効果的で、及び便利な方法を提供する。詳細には、本開示の様々な態様によると、モバイル装置は、ラッピングされたアプリケーションへ、またはビジネスロジックを含むライブラリファイルへの更新を受信してもよい。更新は、モバイル装置からの更新をプッシュしてもよい、または要求に応答してもよい、中央サーバによって管理されてもよい。
【０００６】
本開示の１つ以上の態様によると、コンピューティング装置は、モバイルアプリケーションのアプリケーションコードをロードしてもよい。その後、コンピューティング装置は、１つ以上のポリシーファイルに基づいてアプリケーションの実行を管理するように構成され、アプリケーションコードの１つ以上の機能を傍受するように構成された、アプリケーションラッパでアプリケーションをラッピングするようにアプリケーションコードを修正してもよく、１つ以上のポリシーファイルはそれぞれ、１つ以上のユーザ装置上で装置管理システムによって行われる１つ以上のアクセス制御を定義する。いくつかの実施形態では、ライブラリファイルはｉＯＳライブラリであってもよい。その後、コンピューティング装置は、ラッパによって傍受された機能のうちの１つ以上にリンクされた実施コードを定義するフィールドプログラマブルビジネスロジックを含むライブラリファイルを作成してもよい。次に、コンピューティング装置は、ラッピングされたアプリケーションと、ライブラリファイルとを、少なくとも１つのユーザ装置に提供する。
【０００７】
いくつかの実施形態では、アプリケーションコードを修正することは、少なくとも１つのスタブ機能をアプリケーションラッパに追加することを含んでもよく、少なくとも１つのスタブ機能は、ライブラリファイルに提供された実施コードを参照してもよい。追加で、または代替的に、アプリケーションコードを修正することは、フィールドプログラマブルビジネスロジックにおいて定義されている実施コードの一部の実行を引き起こすように、アプリケーションによって使用されるアプリケーションプログラミングインターフェースにおいて定義されている機能をリネーミングすることを含んでもよい。追加で、または代替的に、アプリケーションコードを修正することは、少なくとも１つのアプリケーションフックをアプリケーション内に挿入することを含んでもよく、少なくとも１つのアプリケーションフックは、フィールドプログラマブルビジネスロジックにおいて定義されている実施コードの一部の実行を引き起こしてもよい。
【０００８】
いくつかの実施形態では、ラッピングされたアプリケーション及びライブラリファイルを少なくとも１つのユーザ装置に提供した後、コンピューティング装置は、更新されたライブラリファイルを作成してもよい。いくつかの事象では、更新されたライブラリファイルは、ラッパによって傍受された機能にリンクされた、更新された実施コードを定義する、更新されたフィールドプログラマブルビジネスロジックを含んでもよい。次に、コンピューティング装置は、更新されたライブラリファイルを少なくとも１つのユーザ装置に提供して、アプリケーションラッパが更新されたビジネスロジックを使用して、ラッピングされたアプリケーションの実行を管理してもよい。いくつかの事象では、更新されたライブラリファイルは、少なくとも１つのユーザ装置が更新前のビジネスロジックを使用しているという判定に応答して、少なくとも１つのユーザ装置に提供されてもよい。いくつかの事象では、更新されたライブラリファイルを少なくとも１つのユーザ装置に提供することは、他のアプリケーションのアプリケーションラッパが更新されたビジネスロジックを使用して、他のラッピングされたアプリケーションの実行を管理することを引き起こしてもよい。
【０００９】
いくつかの実施形態では、ユーザ装置は、ライブラリファイルへの更新が利用可能であることの表示を受信してもよい。いくつかの事象では、ライブラリファイルは、ラッパによって傍受された１つ以上の機能にリンクされた実施コードを定義するフィールドプログラマブルビジネスロジックを含んでもよい。いくつかの事象では、ラッパは、コンピューティング装置上で装置管理システムによって行われる１つ以上のアクセス制御を定義する１つ以上のポリシーファイルに基づいて、コンピューティング装置上のモバイルアプリケーションの実行を管理するように構成されてもよい。
【００１０】
いくつかの実施形態では、第１のライブラリファイルへの更新の表示を受信した後、コンピューティング装置は、アプリケーション用のラッパへの更新が利用可能であることを表示するアプリケーション更新を受信してもよい。その後、コンピューティング装置は、ラッピングされたアプリケーションを更新してもよく、ラッパ及びアプリケーションをラッピングされたアプリケーションと置き換えてもよい。
【００１１】
これら、及び追加の態様が、下記にさらに詳細に述べられる。
【００１２】
本開示は、例示のために例証され、同じ参照符号が同じ要素を表示する添付の図面において限定されない。
【図面の簡単な説明】
【００１３】
【図１】本明細書で説明される１つ以上の例証的な態様に従って使用されてもよい、例示のコンピュータシステムアーキテクチャを示す。
【図２】本明細書で説明される１つ以上の例証的な態様に従って使用されてもよい、例示の遠隔制御システムアーキテクチャを示す。
【図３】本明細書で説明される１つ以上の例証的な態様に従って使用されてもよい、エンタープライズモビリティ管理システムの例を示す。
【図４】本明細書で説明される１つ以上の例証的な態様に従って使用されてもよい、エンタープライズモビリティ管理システムの別の例を示す。
【図５】本明細書で説明される１つ以上の例証的な態様による、フィールドプログラマブルビジネスロジックを備えたラッピングされたアプリケーションを更新する方法を例証するフローチャートを示す。
【図６】本明細書で説明される１つ以上の例証的な態様による、フィールドプログラマブルビジネスロジックを備えたラッピングされたアプリケーションに対する更新を受信する方法を例証するフローチャートを示す。
【発明を実施するための形態】
【００１４】
様々な実施形態の下記の説明において、上記で明らかにされ、本明細書の一部を形成する添付の図面が参照され、図面において、本明細書が説明される実施形態が実行されてもよい様々な実施形態が例証によって示される。他の実施形態が利用されてもよく、本明細書で説明される範囲から逸脱せずに、構造的及び機能的な修正が行われてもよいことが理解されるべきである。他の実施形態の様々な態様が可能であり、様々な異なる方法で実行される、または行われることができる。
【００１５】
下記により詳細に説明される主題への一般的な導入として、本明細書で説明される態様は、フィールドプログラマブルビジネスロジックでアプリケーションをラッピングする方法を対象とする。システムは、アプリケーション及び装置管理のより効果的な手段を提供するため、ならびにポリシーを行うために、アプリケーションのラッピングを使用してもよい。フィールドプログラマブルビジネスロジックは、ユーザ装置に対する更新をプログラミングし、維持することにおいて柔軟性を可能にするために使用されてもよい。結果的に、管理者は、アプリケーションを再ラッピングする必要なしに、フィールドプログラマブルビジネスロジックに更新を有利に適用してもよい。
【００１６】
本明細書で使用される表現法及び用語法は説明の目的のためであり、限定であると見做されるべきではないことが理解されるべきである。むしろ、本明細書で使用される表現及び用語は、その最も幅広い解釈及び意味が与えられるべきである。「含む」及び「備える」ならびにそれらの変形の使用は、その後に挙げられた項目及びその等価物、ならびに追加の項目及びその等価物を包括することを意味する。「装着される」、「接続される」、「連結される」、「位置決めされる」、「係止される」、及び同様の用語の使用は、直接的と間接的との両方で装着する、接続する、連結する、位置決めする、及び係止することを含むことを意味する。
【００１７】
〈コンピューティングアーキテクチャ〉
コンピュータソフトウェア、ハードウェア、及びネットワークは、とりわけ、スタンドアロン、ネットワーク接続環境、リモートアクセス（別名、リモートデスクトップ）、仮想化された環境、及び／またはクラウドベースの環境などの様々な異なるシステム環境において利用されてもよい。図１は、スタンドアロン及び／またはネットワーク接続環境で、本明細書で説明される１つ以上の例証的な態様を実施するために使用されてもよいシステムアーキテクチャ及びデータ処理装置の１つの例を例証する。様々なネットワークノード１０３、１０５、１０７及び１０９は、インターネットなどの広域ネットワーク（ＷＡＮ）１０１を介して相互接続されてもよい。プライベートイントラネット、企業ネットワーク、ＬＡＮ、メトロポリタンエリアネットワーク（ＭＡＮ）無線ネットワーク、個人ネットワーク（ＰＡＮ）などを含む他のネットワークもまた、または代替的に使用されてもよい。ネットワーク１０１は例証の目的のためであり、より少ない、または追加のコンピュータネットワークと置き換えられてもよい。ローカルエリアネットワーク（ＬＡＮ）は、知られているＬＡＮトポロジのうちの１つ以上を有してもよく、イーサネット（登録商標）などの様々な異なるプロトコルのうちの１つ以上を使用してもよい。装置１０３、１０５、１０７、１０９及び他の装置（図示せず）は、ツイストペアケーブル、同軸ケーブル、光ファイバー、電波、または他の通信媒体を介したネットワークのうちの１つ以上に接続されてもよい。
【００１８】
本明細書で使用され、図面において示されるような「ネットワーク」という用語は、遠隔記憶装置が１つ以上の通信経路を介して互いに連結されるシステムのみを示さず、記憶能力を有するこのようなシステムに時々連結されてもよいスタンドアロン装置も示す。続いて、「ネットワーク」という用語は、「物理ネットワーク」だけではなく、すべての物理ネットワーク上にある単一のエンティティにデータを属させることができるものからなる「コンテンツネットワーク」も含む。
【００１９】
構成要素は、データサーバ１０３と、ウェブサーバ１０５と、クライアントコンピュータ１０７、１０９とを含んでもよい。データサーバ１０３は、本明細書で説明される１つ以上の例証的な態様を実行するための、データベースのアクセス、制御、及び管理の全体、ならびに制御ソフトウェアを提供する。データサーバ１０３は、ユーザが相互作用し、要求されたデータを取得する、ウェブサーバ１０５に接続されてもよい。代替的に、データサーバ１０３は、ウェブサーバ自体として作用してもよく、インターネットに直接接続されてもよい。データサーバ１０３は、直接または間接接続、もしくは他のネットワークを介して、ネットワーク１０１（例えば、インターネット）を通してウェブサーバ１０５に接続されてもよい。ユーザは、例えばウェブブラウザを使用して、ウェブサーバ１０５によってホスティングされた１つ以上の外部に露出されたウェブサイトを介してデータサーバ１０３に接続するなど、リモートコンピュータ１０７、１０９を使用してデータサーバ１０３と相互作用してもよい。クライアントコンピュータ１０７、１０９は、データサーバ１０３と協調して使用され、クライアントコンピュータ１０７、１０９に記憶されたデータにアクセスしてもよく、または他の目的のために使用されてもよい。例えば、リモートコンピュータ１０７から、ユーザは、当技術において知られているように、インターネットブラウザを使用して、またはウェブサーバ１０５及び／またはデータサーバ１０３とコンピュータネットワーク（インターネットなど）上で通信するソフトウェアアプリケーションを実行することによって、ウェブサーバ１０５にアクセスしてもよい。
【００２０】
サーバ及びアプリケーションは、同じ物理マシン上で組み合わせられ、別々の仮想または論理アドレスを保持してもよく、または別々の物理マシン上にあってもよい。図１は、使用されてもよいネットワークアーキテクチャの単なる１つの例を例証し、当業者は、使用される特定のネットワークアーキテクチャ及びデータ処理装置が変化し得、本明細書でさらに説明されるように、それらが提供する機能性を伴うことを理解するであろう。例えば、ウェブサーバ１０５及びデータサーバ１０３によって提供されるサービスは、単一のサーバ上で組み合わせられてもよい。
【００２１】
各構成要素１０３、１０５、１０７、１０９は、任意の知られた種類のコンピュータ、サーバ、またはデータ処理装置であってもよい。データサーバ１０３は、例えば、レートサーバ１０３の動作全体を制御する処理装置１１１を含んでもよい。データサーバ１０３は、ランダムアクセスメモリ（ＲＡＭ）１１３と、読み取り専用メモリ（ＲＯＭ）１１５と、ネットワークインターフェース１１７と、入力／出力（Ｉ／Ｏ）１１９（例えば、キーボード、マウス、ディスプレイ、プリンタ等）と、メモリ１２１とをさらに含んでもよい。入力／出力（Ｉ／Ｏ）１１９は、データまたはファイルを読み取り、書き込み、表示し、及び／または印刷するための様々なインターフェースユニット及びドライブを含んでもよい。メモリ１２１は、データ処理装置１０３の動作全体を制御するための動作システムソフトウェア１２３と、データサーバ１０３に本明細書で説明される態様を実行するように命令する制御論理１２５と、派生、支援、及び／または本明細書で説明される態様に関連して使用されてもよい、または使用され得ない他の機能を提供する他のアプリケーションソフトウェア１２７とをさらに記憶してもよい。制御論理は、本明細書においてデータサーバソフトウェア１２５とも呼ばれてもよい。データサーバソフトウェアの機能は、制御論理内に符号化されたルールに基づいて自動的に作られた、システム内へ入力を提供するユーザによって手動で作られた、及び／またはユーザ入力（例えば、クエリ、データ更新など）に基づく自動的な処理の組み合わせの動作または意思決定を示してもよい。
【００２２】
メモリ１２１は、第１のデータベース１２９及び第２のデータベース１３１など、本明細書で説明される１つ以上の態様の実行において使用されるデータも記憶してもよい。いくつかの実施形態では、第１のデータベースは、第２のデータベースを含んでもよい（例えば、別個のタブレット、レポートなどとして）。すなわち、情報は、システム設計に依って、単一のデータベースに記憶されることができる、もしくは異なる論理、仮想、または物理データベースに分離されることができる。装置１０５、１０７、１０９は、装置１０３に関して説明したものと同様の、または異なるアーキテクチャを有してもよい。本明細書で説明されるようなデータ処理装置１０３（または装置１０５、１０７、１０９）の機能は、複数のデータ処理装置に散乱され、例えば複数のコンピュータ上の処理負荷を分散し、地理的位置、ユーザアクセスレベル、サービスの質（ＱｏＳ）などに基づいて処理を分離してもよいことを当業者は理解するであろう。
【００２３】
１つ以上の態様は、１つ以上のコンピュータまたは本明細書で説明されるような他の装置によって実行される１つ以上のプログラムモジュールにおいてなど、コンピュータ使用可能な、または読み取り可能なデータ及び／またはコンピュータ実行可能命令において具現化されてもよい。一般的に、プログラムモジュールは、コンピュータまたは他の装置における処理装置によって実行されるとき、特定のタスクを実行する、または特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。モジュールは、続いて実行用にコンパイルされるソースコードプログラミング言語で書きこまれてもよく、またはハイパーテキストマークアップランゲージ（ＨＴＭＬ）またはエクステンシブルマークアップランゲージ（ＸＭＬ）などの（限定されないが）スクリプト言語で書きこまれてもよい。コンピュータ実行可能命令は、不揮発性記憶装置などのコンピュータ可読媒体上に記憶されてもよい。ハードディスク、ＣＤ−ＲＯＭ、光記憶装置、磁気記憶装置、及び／またはそれらの任意の組み合わせなどの任意の好適なコンピュータ可読記憶媒体が利用されてもよい。さらに、本明細書で説明されるようなデータまたは事象を表す様々な転送（非記憶）媒体が、金属導線、光ファイバー、及び／または無線送信媒体（例えば、空気及び／または空間）などの信号伝導媒体を通って移動する電磁波の形式で、ソースと宛先との間で転送されてもよい。本明細書で説明される様々な態様は、方法、データ処理システム、またはコンピュータプログラム製品として具現化されてもよい。したがって、様々な機能がソフトウェア、ファームウェア、及び／またはハードウェアもしくは集積回路、フィールドプログラマブルビジネスロジック（ＦＰＧＡ）などのハードウェアの等価物の全体または一部において具現化されてもよい。特定データ構造が使用され、本明細書で説明される１つ以上の態様を効果的に実施してもよく、このようなデータ構造は、本明細書で説明されるコンピュータ実行可能命令及びコンピュータ使用可能データの範囲内であると想定される。
【００２４】
図２をさらに参照すると、本明細書で説明される１つ以上の態様は、リモートアクセス環境において実施されてもよい。図２は、本明細書で説明される１つ以上の例証的な態様に従って使用されてもよい例証的なコンピュータ環境２００において一般的な２０１を含む例示のシステムアーキテクチャを示す。一般的なコンピューティング装置２０１は、クライアントアクセス装置用の仮想マシンを提供するように構成された、単一のサーバまたは複合サーバデスクトップ仮想システム（例えば、リモートアクセスまたはクラウドシステム）においてサーバ２０６ａとして使用されてもよい。一般的なコンピューティング装置２０１は、サーバ、及びＲＡＭ２０５、ＲＯＭ２０７、Ｉ／Ｏモジュール２０９、及びメモリ２１５などのサーバに関連する構成要素の動作全体を制御するための処理装置２０３を有してもよい。
【００２５】
Ｉ／Ｏモジュール２０９は、マウス、キーパッド、タッチスクリーン、センサ、光学式読取装置、及び／またはそれを通して一般的なコンピューティング装置２０１のユーザが入力を提供してもよいスタイラスを含んでもよく、かつ、音声出力を提供するためのスピーカと、文章、オーディオビジュアル、及び／またはグラフィック出力を提供するためのビデオ表示装置とのうちの１つ以上をさらに含んでもよい。ソフトウェアはメモリ２１５及び／または他の記憶装置内に記憶され、本明細書で説明されるような様々な機能を実行するため、一般的なコンピューティング装置２０１を特殊用途コンピューティング装置内に構成するために、命令を処理装置２０３に提供してもよい。例えば、メモリ２１５は、動作システム２１７、アプリケーションプログラム２１９、及び関連するデータベース２２１などのコンピューティング装置２０１によって使用されるソフトウェアを記憶してもよい。
【００２６】
コンピューティング装置２０１は、端子２４０（クライアント装置とも呼ばれる）などの１つ以上のリモートコンピュータへの接続を支援するネットワーク接続された環境において動作してもよい。端子２４０は、パーソナルコンピュータ、モバイル装置、ラップトップコンピュータ、タブレット、またはデータサーバ１０３または２０１に関して上述された要素のうちの多くまたはすべてを含むサーバであってもよい。図２に示されるネットワーク接続は、ローカルエリアネットワーク（ＬＡＮ）２２５及び広域ネットワーク（ＷＡＮ）２２９を含むが、他のネットワークを含んでもよい。ＬＡＮネットワーキング環境において使用される場合、コンピューティング装置２０１は、ネットワークインターフェースまたはアダプタ２２３を通してＬＡＮ２２５に接続されてもよい。ＷＡＮネットワーキング環境で使用される場合、コンピューティング装置２０１は、コンピュータネットワーク２３０（例、インターネット）などのＷＡＮ２２９上での通信を確立するためのモデム２２７または他の広域ネットワークインターフェースを含んでもよい。示されるネットワーク接続は例証的であり、コンピュータ間の通信リンクを確立するための他の手段が使用されてもよいことが理解されるであろう。コンピューティング装置２０１及び／または端子２４０は、バッテリ、スピーカ、及びアンテナ（図示せず）などの様々な他の構成要素を含むモバイル端子（例、携帯電話、スマートフォン、パーソナルデジタルアシスタント（ＰＤＡ）、ノートブックなど）でもあってもよい。
【００２７】
本明細書で説明される態様はさらに、多数の他の汎用または特殊用途のコンピューティングシステム環境または構成で動作可能であってもよい。本明細書で説明される態様での使用に好適であり得る、他のコンピューティングシステム、環境、及び／または構成の例は、限定されないが、パーソナルコンピュータ、サーバコンピュータ、手持ち式またはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家庭用電化製品、ネットワークパーソナルコンピュータ（ＰＣ）ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたは装置のうちのいずれかを含む分散コンピューティング環境などを含む。
【００２８】
図２に示されるように、１つ以上のクライアント装置２４０は、１つ以上のサーバ２０６ａ〜２０６ｎ（本明細書で一般的に「サーバ２０６」と呼ばれる）と通信状態にあってもよい。１つの実施形態では、コンピューティング環境２００は、サーバ２０６とクライアントマシン２４０との間に設置されたネットワーク機器を含んでもよい。ネットワーク機器は、クライアント／サーバ接続を管理してもよく、いくつかの場合では、複数のバックエンドサーバ２０６内のクライアント接続をロードバランシングすることができる。
【００２９】
クライアントマシン２４０は、いくつかの実施形態では、単一のクライアントマシン２４０またはクライアントマシン２４０の単一のグループを指してもよく、一方で、サーバ２０６は単一のサーバ２０６またはサーバ２０６の単一のグループを指してもよい。１つの実施形態では、単一のクライアントマシン２４０は、１つ以上のサーバ２０６と通信し、一方で、別の実施形態では、単一のサーバ２０６は、１つ以上のクライアントマシン２４０と通信する。さらに別の実施形態では、単一のクライアントマシン２４０は、単一のサーバ２０６と通信する。
【００３０】
クライアントマシン２４０は、いくつかの実施形態では、クライアントマシン、クライアント、クライアントコンピュータ、クライアント装置、クライアントコンピュータ、装置、ローカルマシン、リモートマシン、クライアントノード、エンドポイント、またはエンドポイントノードの非網羅的用語のうちのいずれか１つによって参照されることができる。サーバ２０６は、いくつかの実施形態では、サーバ、ローカルマシン、リモートマシン、サーバファーム、またはホストコンピューティング装置の非網羅的用語のうちのいずれか１つによって参照されることができる。
【００３１】
１つの実施形態では、クライアントマシン２４０は仮想マシンであってもよい。仮想マシンであってもよい。仮想マシンは任意の仮想マシンであってもよく、一方で、いくつかの実施形態では、仮想マシンは、例えばＣｉｔｒｉｘ  Ｓｙｓｔｅｍｓ、ＩＢＭ、ＶＭｗａｒｅによって開発されたハイパーバイザまたは任意の他のハイパーバイザなどのタイプ１またはタイプ２のハイパーバイザによって管理される任意の仮想マシンであってもよい。いくつかの態様では、仮想マシンはハイパーバイザによって管理されてもよく、一方で、いくつかの態様では、仮想マシンはサーバ２０６上で実行するハイパーバイザまたはクライアント２４０上で実行するハイパーバイザによって管理されてもよい。
【００３２】
いくつかの実施形態は、サーバ２０６または他の遠隔に位置するマシン上で遠隔実行するアプリケーションによって生成されたアプリケーション出力を表示するクライアント装置２４０を含む。これらの実施形態では、クライアント装置２４０は、仮想マシン受信プログラムまたはアプリケーションを実行して、出力をアプリケーションウィンドウ、ブラウザ、または他の出力ウィンドウに表示しもよい。１つの例では、アプリケーションはデスクトップであり、一方で、他の例では、アプリケーションはデスクトップを生成する、または提示するアプリケーションである。デスクトップは、ローカル及び／またはリモートアプリケーションが組み込まれることができる動作システムの事象用のユーザインターフェースを提供するグラフィカルシェルを含んでもよい。本明細書において使用されるようなアプリケーションは、動作システム（及び、選択的に、デスクトップも）の事象がロードされた後に実行するプログラムである。
【００３３】
サーバ２０６は、いくつかの実施形態では、リモート提示プロトコルまたは他のプログラムを使用し、データをシンクライアントまたはクライアント上で実行するリモートディスプレイアプリケーションを送信し、サーバ２０６上で実行するアプリケーションによって生成された表示出力を提示する。シンクライアントまたはリモートディスプレイプロトコルは、フロリダ州Ｆｔ．ＬａｕｄｅｒｄａｌｅのＣｉｔｒｉｘ  Ｓｙｓｔｅｍｓ，Ｉｎｃ．によって開発されたＩｎｄｅｐｅｎｄｅｎｔ  Ｃｏｍｐｕｔｉｎｇ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＣＡ）プロトコル、ワシントン州ＲｅｄｍｏｎｄのＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎによって製造されたリモートデスクトッププロトコル（ＲＤＰ）のプロトコルの非網羅的リストのうちのいずれか１つであることができる。
【００３４】
リモートコンピューティング環境は、サーバ２０６ａ−２０６ｎが例えばクラウドコンピューティング環境などにおいてサーバファーム２０６内に互いに論理的にグループ化されるように、１つ以上のサーバ２０６ａ−２０６ｎを含んでもよい。サーバファーム２０６は、地理的に分散され、一方で互いに論理的にグループ化されたサーバ２０６、または互いの近くに配置され、一方で互いに論理的にグループ化されたサーバ２０６を含んでもよい。サーバファーム２０６内に地理的に分散されたサーバ２０６ａ−２０６ｎは、いくつかの実施形態では、ＷＡＮ（広域）、ＭＡＮ（メトロポリタン）、またはＬＡＮ（ローカル）を使用して通信し、異なる地理的領域は、異なる大陸、大陸の異なる地域、異なる国、異なる州、異なる街、異なるキャンパス、異なる部屋、または前述の地理的位置の任意の組み合わせとして特徴付けられることができる。いくつかの実施形態では、サーバファーム２０６は単一のエンティティとして管理されてもよく、一方で、他の実施形態では、サーバファーム２０６は複数のサーバファームを含むことができる。
【００３５】
いくつかの実施形態では、サーバファームは、実質的に同様のタイプの動作システムプラットフォーム（例えば、ＷＩＮＤＯＷＳ（登録商標）、ＵＮＩＸ（登録商標）、ＬＩＮＵＸ（登録商標）、ｉＯＳ、ＡＮＤＲＯＩＤ（登録商標）、ＳＹＭＢＩＡＮなど）を実行するサーバ２０６を含んでもよい。他の実施形態では、サーバファーム２０６は、第１のタイプ動作システムプラットフォームを実行する１つ以上のサーバの第１のグループ、及び第２のタイプの動作システムプラットフォームを実行する１つ以上のサーバの第２のグループを含んでもよい。
【００３６】
サーバ２０６は、例えばファイルサーバ、アプリケーションサーバ、ウェブサーバ、プロキシサーバ、機器、ネットワーク機器、ゲートウェイ、アプリケーションゲートウェイ、ゲートウェイサーバ、仮想化サーバ、デプロイメントサーバ、Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔｓ  Ｌａｙｅｒ（ＳＳＬ）ＶＰＮサーバ、ファイアウォール、ウェブサーバ、アプリケーションサーバ、またはマスターアプリケーションサーバとして、アクティブデイレクトリを実行するサーバ、ファイアウォール機能、アプリケーション機能、またはロードバランシング機能を提供するアプリケーション加速プログラムなど、必要に応じて、任意のタイプのサーバとして構成されてもよい。他のサーバタイプも使用されてもよい。
【００３７】
いくつかの実施形態は、クライアントマシン２４０から要求を受信し、要求を第２のサーバ１０６ｂに転送し、第２のサーバ１０６ｂからの応答でクライアントマシン２４０によって生成された要求に応答する第１のサーバ１０６ａを含む。第１のサーバ１０６ａは、クライアントマシン２４０及びウェルに利用可能なアプリケーションの列挙を、アプリケーションの列挙内で識別されたアプリケーションをホスティングするアプリケーションサーバ２０６に関連するアドレス情報として取得してもよい。次に、第１のサーバ１０６ａは、ウェブインターフェースを使用してクライアントの要求への応答を提示することができ、クライアント２４０と直接通信して、クライアント２４０に識別されたアプリケーションへのアクセスを提供することができる。１つ以上のクライアント２４０及び／または１つ以上のサーバ２０６は、例えばネットワーク１０１などのネットワーク２３０上でデータを送信してもよい。
【００３８】
図２は、例証的なデスクトップ仮想化システムのハイレベルアーキテクチャを示す。示されるように、デスクトップ仮想化システムは、単一サーバまたはマルチサーバシステム、もしくは仮想デスクトップ及び／または仮想アプリケーションを１つ以上のクライアントアクセス装置２４０に提供するように構成された少なくとも１つの仮想化サーバ２０６を含むクラウドシステムであってもよい。本明細書で使用されるように、デスクトップは、１つ以上のアプリケーションがホスティングされてもよい、及び／または実行されてもよいグラフィック環境または空間を指す。デスクトップは、ローカル及び／またはリモートアプリケーションが組み込まれることができる動作システムの事象に対するユーザインターフェースを提供するグラフィカルシェルを含んでもよい。アプリケーションは、動作システム（及び、選択的に、デスクトップも）の事象がロードされた後に実行するプログラムを含んでもよい。動作システムの各事象は、物理的（例えば、装置あたり１つの動作システム）または仮想的（例えば、単一の装置上で実行するＯＳの多くの事象）であってもよい。各アプリケーションは、ローカル装置で実行されてもよく、または遠隔に位置する装置（例えば、リモートの）上で実行してもよい。
【００３９】
〈エンタープライズモビリティ管理アーキテクチャ〉
図３は、自分の装置を持ち込む（ＢＹＯＤ）環境における使用のためのエンタープライズモビリティテクニカルアーキテクチャ５００を表す。本アーキテクチャは、モバイル装置５０２のユーザがモバイル装置５０２から企業または個人のリソースにアクセスすることと、モバイル装置５０２を個人的な使用のために使用することの両方を可能にする。ユーザは、ユーザによって購入されたモバイル装置５０２、または企業によってユーザに提供されたモバイル装置５０２を使用して、このような企業リソース５０４または企業サービス５０８にアクセスしてもよい。ユーザは、ビジネスでの使用のみのため、またはビジネス及び個人での使用のためにモバイル装置５０２を利用してもよい。モバイル装置はｉＯＳ動作システム、Ａｎｄｒｏｉｄ（登録商標）動作システムなどにおいて実行してもよい。企業は、ポリシーを実施するように選び、モバイル装置５０４を管理してもよい。ポリシーは、モバイル装置が識別されてもよく、セキュアにされてもよく、またはセキュリティを認証されてもよく、及び企業リソースに選択的または完全なアクセスが提供されてもよい方法で、ファイアウォールまたはゲートウェイを通して埋め込まれてもよい。ポリシーは、モバイル装置管理ポリシー、モバイルアプリケーション管理ポリシー、モバイルデータ管理ポリシー、またはモバイル装置、アプリケーション、及びデータ管理ポリシーのいくつの組み合わせであってもよい。モバイル装置管理ポリシーのアプリケーションを通して管理されるモバイル装置５０４は、登録された装置と呼ばれてもよい。
【００４０】
いくつかの実施形態では、モバイル装置の動作システムは、管理される区分５１０及び管理されない区分５１２に分離されてもよい。管理される区分５１０は、管理される区分５１０に適用されるポリシーを有し、管理される区分上で実行するアプリケーション及び管理される区分において記憶されたデータをセキュアにしてもよい。管理される区分上で実行するアプリケーションは、セキュアなアプリケーションであってもよい。他の実施形態では、すべてのアプリケーションは、アプリケーションから別々に受信され、１つ以上のセキュリティパラメータ、特性、リソース規制、及び／またはアプリケーションが装置上で実行しているときにモバイル装置管理システムによって行われる他のアクセス制御を定義する１つ以上のポリシーファイルのセットに従って実行してもよい。それぞれのポリシーファイルに従って動作することによって、各アプリケーションは、１つ以上の他のアプリケーション及び／またはリソースとの通信が許容され、または規制され、それによって仮想区分を作成してもよい。したがって、本明細書で使用されるように、区分は、メモリの物理的に区分された部分（物理区分）、メモリの論理的に区分された部分（論理区分）、及び／または本明細書で説明されるような複数のアプリケーション上の１つ以上のポリシー及び／またはポリシーファイルの実行の結果として作成された仮想区分（仮想区分）を指してもよい。言い換えると、管理されるアプリケーション上でポリシーを行うことによって、それらのアプリケーションは、他の管理されるアプリケーション及び信用された企業リソースと通信することのみができるように規制され、それによって管理されないアプリケーション及び装置によって入り込めない仮想区分を作成してもよい。
【００４１】
セキュアなアプリケーションは、電子メールアプリケーション、ウェブブラウザアプリケーション、サービスとしてのソフトウェア（Ｓａａｓ）アクセスアプリケーション、Ｗｉｎｄｏｗｓ（登録商標）  Ａｐｐｌｉｃａｔｉｏｎアクセスアプリケーションなどであってもよい。セキュアなアプリケーションは、セキュアなネイティブアプリケーション５１４、セキュアなアプリケーションランチャー５１８によって実行されるセキュアなリモートアプリケーション５２２、セキュアなアプリケーションランチャー５１８によって実行される仮想化アプリケーション５２６などであってもよい。セキュアなネイティブアプリケーション５１４は、セキュアなアプリケーションラッパ５２０によってラッピングされてもよい。セキュアなアプリケーションラッパ５２０は、セキュアなネイティブアプリケーションが装置上で実行されるとき、モバイル装置５０２上で実行される、組み込まれたポリシーを含んでもよい。セキュアなアプリケーションラッパ５２０は、モバイル装置５０２上で実行するセキュアなネイティブアプリケーション５１４を、セキュアなネイティブアプリケーション５１４がセキュアなネイティブアプリケーション５１４の実行の際に要求されたタスクを完了することを要求してもよい、企業においてホスティングされたリソースに向けるメタデータを含んでもよい。セキュアなアプリケーションランチャー５１８によって実行されるセキュアなリモートアプリケーション５２２は、セキュアなアプリケーションランチャーアプリケーション５１８内で実行されてもよい。セキュアなアプリケーションランチャー５１８によって実行される仮想化アプリケーション５２６は企業リソース５０４などにおいて、モバイル装置５０２上のリソースを利用してもよい。セキュアなアプリケーションランチャー５１８によって実行される仮想化アプリケーション５２６によってモバイル装置５０２上で使用されるリソースは、ユーザインタラクションリソース、処理リソースなどを含んでもよい。ユーザインタラクションリソースは、キーボード入力、マウス入力、カメラ入力、触覚入力、音声入力、視覚入力、ジェスチャ入力などを収集し、送信するように使用されてもよい。処理リソースは、ユーザインターフェース、企業リソース５０４から受信した処理データなどを提示するように使用されてもよい。セキュアなアプリケーションランチャー５１８によって実行される仮想化アプリケーション５２６によって企業リソース５０４において使用されるリソースは、ユーザインターフェース生成リソース、処理リソースなどを含んでもよい。ユーザインターフェース生成リソースは、ユーザインターフェースをアセンブリングする、ユーザインターフェースを修正する、ユーザインターフェースを最新にするなどのように使用されてもよい。処理リソースは、情報を作成する、情報を読み取る、情報を更新する、情報を消去するなどのように使用されてもよい。例えば、仮想アプリケーションは、グラフィカルユーザインターフェース（ＧＵＩ）に関連するユーザインタラクションを記録してもよく、及びユーザインタラクションをサーバアプリケーションに通信してもよく、サーバアプリケーションは、ユーザイン���ラクションデータを、サーバ上で動作するアプリケーションへの入力として使用する。この配置では、企業はサーバ側上のアプリケーションならびにアプリケーションに関連するデータ、ファイルなどを維持するように選出してもよい。企業は、モバイル装置上の配置用にアプリケーションをセキュアにすることによって、本明細書における原則に従って、いくつかのアプリケーションを「可動化」するように選出するが、本配置は特定のアプリケーション用にも選出されてもよい。例えば、いくつかのアプリケーションは、モバイル装置上の使用のためにセキュアにされてもよいが、他のアプリケーションは、モバイル装置上の配置に対して用意されていない、または適切ではないかもしれないので、企業は、仮想化技術を通して用意されていないアプリケーションへのモバイルユーザアクセスを提供するように選出してもよい。別の例として、企業は、大きく、複合型のデータセット（例えば、マテリアルリソースプランニングアプリケーション）を含む大きな複合アプリケーションを有してもよく、その場合、モバイル装置用にアプリケーションをカスタマイズすることは非常に困難である、またはそうでなければ望ましくないため、企業は仮想化技術を通してアプリケーションへのアクセスを提供するように選出してもよい。さらに別の例として、企業は、企業によって、セキュアにされたモバイル環境に対してもあまりに機密性が高いと見做され得る、高度にセキュアにされたデータ（例えば、人材データ、顧客データ、工学データ）を維持するアプリケーションを有してもよいため、企業は仮想化技術を使用するように選出し、このようなアプリケーション及びデータへのモバイルアクセスを許可してもよい。企業は、モバイル装置上の、完全にセキュアである、及び完全に機能的である、両方のアプリケーション、ならびに仮想化アプリケーションを提供して、サーバ側でより適切に動作されると見做されたアプリケーションへのアクセスを許容するように選出してもよい。一実施形態では、仮想化アプリケーションは、セキュアな記憶位置のうちの１つにおける携帯電話上のいくつかのデータ、ファイルなどを記憶してもよい。例えば、企業は、電話上に記憶される特定の情報を許容するように選出し、一方で、他の情報を許可しなくてもよい。
【００４２】
本明細書で説明されるような仮想化アプリケーションに関連して、モバイル装置は、ＧＵＩを提示し、次にＧＵＩとのユーザインタラクションを記録するように設計された仮想化アプリケーションを有してもよい。アプリケーションは、ユーザインタラクションを、サーバ側アプリケーションによってアプリケーションとのユーザインタラクションとして使用されるようにサーバ側に通信してもよい。応答して、サーバ側のアプリケーションは、新しいＧＵＩをモバイル装置に返送してもよい。例えば、新しいＧＵＩは、静的ページ、動的ページ、アニメーションなどであり、それによって遠隔に位置するリソースへのアクセスを提供してもよい。
【００４３】
セキュアなアプリケーションは、モバイル装置の管理される区分５１０におけるセキュアなデータコンテナ５２８に記憶されたデータにアクセスしてもよい。セキュアなデータコンテナにおいてセキュアにされたデータは、セキュアなラッピングされたアプリケーション５１４、セキュアなアプリケーションランチャー５２２によって実行されるアプリケーション、セキュアなアプリケーションランチャー５２２によって実行される仮想化アプリケーション５２６などによってアクセスされてもよい。セキュアなデータコンテナ５２８に記憶されるデータは、ファイル、データベースなどを含んでもよい。セキュアなデータコンテナ５２８に記憶されるデータは、特定のセキュアなアプリケーション５３０、共有されたセキュアなアプリケーション５３２などに規制されるデータを含んでもよい。セキュアなアプリケーションに規制されたデータは、セキュアな一般データ５３４及び非常にセキュアなデータ５３８を含んでもよい。セキュアな一般データは、Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ（ＡＥＳ）１２８ビット暗号化などの強い形式の暗号化を使用してもよく、一方で、非常にセキュアなデータ５３８は、ＡＥＳ２５６ビット暗号化など非常に強い形式の暗号化を使用してもよい。セキュアなデータコンテナ５２８に記憶されたデータは、装置マネージャ５２４から命令を受信すると装置から消去されてもよい。セキュアなアプリケーションは、デュアルモードオプション５４０を有してもよい。デュアルモードオプション５４０は、ユーザに、セキュアにされたアプリケーションをセキュアにされない、または管理されないモードで動作するオプションを提示してもよい。セキュアにされない、または管理されないモードでは、セキュアなアプリケーションは、モバイル装置５０２の管理されない区分５１２上のセキュアにされないデータコンテナ５４２に記憶されるデータにアクセスしてもよい。セキュアにされないデータコンテナに記憶されるデータはさらに、個人データ５４４であってもよい。セキュアにされないデータコンテナ５４２に記憶されるデータは、モバイル装置５０２の管理されない区分５１２上で実行するセキュアにされないアプリケーション５４８によってアクセスされてもよい。セキュアにされないデータコンテナ５４２に記憶されたデータは、セキュアなデータコンテナ５２８に記憶されたデータがモバイル装置５０２から消去されるとき、モバイル装置５０２上に残ってもよい。企業は、企業によって所有された、ライセンスが取得された、または制御された（企業データ）、選択された、またはすべてのデータ、ファイル、及び／またはアプリケーションをモバイル装置から消去することを望み、一方で、ユーザによって所有された、ライセンスが取得された、または制御された（個人データ）個人データ、ファイル、及び／またはアプリケーションをそのままにする、またはそうでなければ保存することを望んでもよい。この動作は、選択的ワイプと呼ばれてもよい。本明細書で説明される態様に従って配置された企業及び個人データで、企業は選択的ワイプを実行してもよい。
【００４４】
モバイル装置は、企業において、企業リソース５０４及び企業サービス５０８を公共のインターネット５４８などに接続してもよい。モバイル装置は、仮想プライベートネットワーク接続を通して企業リソース５０４及び企業サービス５０８に接続してもよい。マイクロＶＰＮまたはアプリケーション特定ＶＰＮとも呼ばれる仮想プライベートネットワーク接続は、特定のアプリケーション５５０、特定の装置、モバイル装置の特定のセキュアにされた範囲など５５２に特化してもよい。例えば、電話のセキュアにされた範囲におけるラッピングされたアプリケーションの各々は、おそらくユーザまたは装置属性情報に関連して、ＶＰＮへのアクセスがアプリケーションに関連した属性に基づいて認められるように、アプリケーション特定ＶＰＮを通して企業リソースにアクセスしてもよい。仮想プライベートネットワーク接続は、Ｍｉｃｒｏｓｏｆｔ  Ｅｘｃｈａｎｇｅトラフィック、Ｍｉｃｒｏｓｏｆｔ  Ａｃｔｉｖｅ  Ｄｉｒｅｃｔｏｒｙトラフィック、ＨｙｐｅｒＴｅｘｔ送信プロトコル（ＨＴＴＰ）トラフィック、ＨｙｐｅｒＴｅｘｔ送信プロトコルセキュア（ＨＴＴＰＳ）トラフィック、アプリケーション管理トラフィックなどを実行してもよい。仮想プライベートネットワーク接続は、シングルサインオン認証プロセス５５４を支援し、可能にしてもよい。シングルサインオンプロセスは、ユーザが認証証明書の単一のセットを提供することを可能にしてもよく、次に、証明書は、認証サービス５５８によって確認される。次に、認証サービス５５８は、ユーザが各個人の企業リソース５０４へ認証証明書を提供することを要求せずに、複数の企業リソース５０４へのユーザアクセスを認めてもよい。
【００４５】
仮想プライベートネットワーク接続は、アクセスゲートウェイ５６０によって確立されてもよく、かつ、管理されてもよい。アクセスゲートウェイ５６０は、企業リソース５０４のモバイル装置５０２への配信を管理し、増進し、向上させる性能向上特性を含んでもよい。アクセスゲートウェイは、モバイル装置５０２からパブリックインターネット５４８へのトラフィックを再ルーティングし、モバイル装置５０２が、公共のインターネット５４８上で動作する、公共に利用可能でセキュアにされないアプリケーションにアクセスすることを可能にしてもよい。モバイル装置は、転送ネットワーク５６２を介してアクセスゲートウェイに接続してもよい。転送ネットワーク５６２は、有線ネットワーク、無線ネットワーク、クラウドネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワーク、広域ネットワーク、公共のネットワーク、個人のネットワークなどであってもよい。
【００４６】
企業リソース５０４は、電子メールサーバ、ファイル共有サーバ、ＳａａＳアプリケーション、ウェブアプリケーションサーバ、Ｗｉｎｄｏｗｓ（登録商標）アプリケーションサーバなどを含んでもよい。電子メールサーバは、Ｅｘｃｈａｎｇｅサーバ、Ｌｏｔｕｓ  Ｎｏｔｅｓサーバなどを含んでもよい。ファイル共有サーバは、ＳｈａｒｅＦｉｌｅサーバなどを含んでもよい。ＳａａＳアプリケーションは、Ｓａｌｅｓｆｏｒｃｅなどを含んでもよい。Ｗｉｎｄｏｗｓ（登録商標）アプリケーションサーバは、ローカルＷｉｎｄｏｗｓ（登録商標）動作システムなどで動作するように意図されたアプリケーションを提供するように構築された任意のアプリケーションサーバを含んでもよい。企業リソース５０４は、プレミスベースのリソース、クラウドベースのリソースなどであってもよい。企業リソース５０４は、直接、またはアクセスゲートウェイ５６０を通して、モバイル装置５０２によってアクセスされてもよい。企業リソース５０４は、転送ネットワーク５６２を介してモバイル装置５０２によってアクセスされてもよい。転送ネットワーク５６２は、有線ネットワーク、無線ネットワーク、クラウドネットワーク、ローカルエリアネットワーク、メトロポリタンエリアネットワーク、広域ネットワーク、公共のネットワーク、個人のネットワークなどであってもよい。
【００４７】
企業サービス５０８は、認証サービス５５８、脅威検出サービス５６４、装置マネージャサービス５２４、ファイル共有サービス５６８、ポリシーマネージャサービス５７０、ソーシャルインテグレーションサービス５７２、アプリケーションコントローラサービス５７４などを含んでもよい。認証サービス５５８は、ユーザ認証サービス、装置認証サービス、アプリケーション認証サービス、データ認証サービスなどを含んでもよい。認証サービス５５８は証明書を使用してもよい。証明書は、企業リソース５０４などによってモバイル装置５０２上に記憶されてもよい。モバイル装置５０２上に記憶される証明書は、モバイル装置上の暗号化された位置に記憶されてもよく、証明書は認証の時などにおける使用のためにモバイル装置５０２上に一時的に記憶されてもよい。脅威検出サービス５６４は、侵入検出サービス、認証されていないアクセス試行検出するサービスなどを含んでもよい。認証されていないアクセス試行検出サービスは、アクセス装置、アプリケーション、データなどへの認証されていない試行を含んでもよい。装置管理サービス５２４は、構成、提供、セキュリティ、支援、監視、報告、及びデコミッショニングサービスを含んでもよい。ファイル共有サービス５６８は、ファイル管理サービス、ファイル記憶サービス、ファイル協働サービスなどを含んでもよい。ファイルマネージャサービス５７０は、装置ポリシーマネージャサービス、アプリケーションポリシーマネージャサービス、データポリシーマネージャサービスなどを含んでもよい。ソーシャルインテグレーションサービス５７２は、連絡先組み込みサービス、協働サービス、Ｆａｃｅｂｏｏｋ、Ｔｗｉｔｔｅｒ、及びＬｉｎｋｅｄＩｎなどのソーシャルネットワークの組み込みなどを含んでもよい。アプリケーションコントローラサービス５７４は、管理サービス、提供サービス、配置サービス、割り当てサービス、取り消しサービス、ラッピングサービスなどを含んでもよい。
【００４８】
エンタープライズモビリティテクニカルアーキテクチャ５００は、アプリケーションストア５７８を含んでもよい。アプリケーションストア５７８は、ラッピングされないアプリケーション５８０、事前にラッピングされたアプリケーション５８２などを含んでもよい。アプリケーションは、アプリケーションコントローラ５７４からアプリケーションストア５７８に置かれてもよい。アプリケーションストア５７８は、公共のインターネット５４８などを通して、アクセスゲートウェイ５６０を通してモバイル装置５０２によってアクセスされてもよい。アプリケーションストアには、直感的で、かつ、使いやすいユーザインターフェースが提供されてもよい。
【００４９】
ソフトウェア開発キット５８４は、本説明において前述されたようなアプリケーションをラッピングすることによって、ユーザによって選択されたアプリケーションをセキュアにする能力をユーザに提供してもよい。次に、ソフトウェア配置キット５８４を使用してラッピングされたアプリケーションは、アプリケーションコントローラ５７４を使用してアプリケーションストア５７８に置くことによってモバイル装置５０２に対して利用可能になってもよい。
【００５０】
エンタープライズモビリティテクニカルアーキテクチャ５００は、管理及び分析能力５８８を含んでもよい。管理及び分析能力５８８は、どのようにリソースが使用されるか、どれほどの頻度でリソースが使用されるか、などに関係する情報を提供してもよい。リソースは、装置、アプリケーション、データなどを含んでもよい。どのようにリソースが使用されるかは、どの装置がどのアプリケーションをダウンロードするか、どのアプリケーションがどのデータにアクセスするか、などを含んでもよい。どれほどの頻度でリソースが使用されるかは、どれほどの頻度でアプリケーションがダウンロードされたか、アプリケーションによってデータの特定のセットが何回アクセスされたか、などを含んでもよい。
【００５１】
図４は、別の例証的なエンタープライズモビリティ管理システム６００である。図３を参照して上記で説明されたモビリティ管理システム５００の構成要素のうちのいくつかは、簡潔性のために省略されている。図４において示されるシステム６００のアーキテクチャは、図３を参照して前記で説明されたシステム５００のアーキテクチャに関する多くの点で同様であり、上記で述べられていない追加の特性を含んでもよい。
【００５２】
この場合、左手側は、ゲートウェイ６０６（アクセスゲートウェイ及びアプリケーションコントローラ機能を含む）と相互作用して様々な企業リソース６０８、及び右手側上方に示されるような、Ｅｘｃｈａｎｇｅ、Ｓｈａｒｅｐｏｉｎｔ、公開鍵基盤（ＰＫＩ）リソース、Ｋｅｒｂｅｒｏｓリソース、証明書発行サービスなどのサービス６０９にアクセスする、クライアントエージェント６０４を備えた、登録されたモバイル装置６０２を表す。詳細に示されないが、モバイル装置６０２はさらに、アプリケーションの選択及びダウンロードのために企業アプリケーションストア（ＳｔｏｒｅＦｒｏｎｔ）と相互作用してもよい。
【００５３】
クライアントエージェント６０４は、Ｈｉｇｈ−Ｄｅｆｉｎｉｔｉｏｎ  Ｕｓｅｒ  Ｅｘｐｅｒｉｅｎｃｅ（ＨＤＸ）／ＩＣＡ表示リモーティングプロトコルを使用してアクセスされる企業データセンタにおいてホスティングされる、Ｗｉｎｄｏｗｓ（登録商標）アプリケーション／デスクトップ用のＵＩ（ユーザインターフェース）仲介として作用する。クライアントエージェント６０４はさらに、ネイティブｉＯＳまたはＡｎｄｒｏｉｄ（登録商標）アプリケーションなどの、モバイル装置６０２上でのネイティブアプリケーションのインストール及び管理を支援する。例えば、上記の図において示された、管理されたアプリケーション６１０（メール、ブラウザ、ラッピングされたアプリケーション）は、装置上においてローカルで実行するすべてネイティブアプリケーションである。クライアントエージェント６０４及びこのアーキテクチャのアプリケーション管理フレームワークは、企業リソース／サービス６０８への接続性及びＳＳＯ（シングルサインオン）など、ポリシー駆動型管理能力及び特性を提供するように作用する。クライアントエージェント６０４は、他のゲートウェイサーバ構成要素へのＳＳＯを含む通常アクセスゲートウェイ（ＡＧ）へ、企業への一次ユーザ認証を扱う。クライアントエージェント６０４は、ゲートウェイサーバ６０６からポリシーを取得し、モバイル装置６０２上での管理されたアプリケーション６１０の行動を制御する。
【００５４】
ネイティブアプリケーション６１０とクライアントエージェント６０４との間のセキュアなプロセス間通信（ＩＰＣ）リンク６１２は、クライアントエージェントが、各アプリケーションを「ラッピング」する、アプリケーション管理フレームワーク６１４によって実行されるポリシーを提供することを許容する、管理チャネルを表す。ＩＰＣチャネル６１２はさらに、クライアントエージェント６０４が、企業リソース６０８への接続性及びＳＳＯを可能にする証明書及び認証情報を提供することを許容する。最後に、ＩＰＣチャネル６１２は、アプリケーション管理フレームワーク６１４を許容し、オンライン及びオフライン認証など、クライアントエージェント６０４によって実施されるユーザインターフェース機能を引き起こす。
【００５５】
クライアントエージェント６０４とゲートウェイサーバ６０６との間の通信は、本質的に、ネイティブの管理されたアプリケーション６１０の各々をラッピングするアプリケーション管理フレームワーク６１４の管理チャネルの延長である。アプリケーション管理フレームワーク６１４は、クライアントエージェント６０４からのポリシー情報を要求し、クライアントエージェント６０４は次にゲートウェイサーバ６０６からのポリシー情報を要求する。アプリケーション管理フレームワーク６１４は認証を要求し、クライアントエージェント６０４はゲートウェイサーバ６０６（ＮｅｔＳｃａｌｅｒ  Ａｃｃｅｓｓ  Ｇａｔｅｗａｙとしても知られる）のゲートウェイサービス部分にログインする。クライアントエージェント６０４はまた、ゲートウェイサーバ６０６上の支援サービスを呼び出し、支援サービスは、入力素材を生成して、ローカルデータヴォルト６１６用の暗号化鍵を導出してもよく、または、下記でより完全に説明されるように、ＰＫＩ保護リソースへの直接認証を可能にしてもよいクライアント証明書を提供してもよい。
【００５６】
より詳細には、アプリケーション管理フレームワーク６１４は、各管理されたアプリケーション６１０を「ラッピング」する。これは、明確な構築ステップを介して、または構築後処理ステップを介して組み込まれてもよい。アプリケーション管理フレームワーク６１４は、アプリケーション６１０の第１のローンチにおいてクライアントエージェント６０４と「対」であり、セキュアなＩＰＣチャネルを開始し、アプリケーション用のポリシーを取得してもよい。アプリケーション管理フレームワーク６１４は、クライアントエージェントログイン依存性など、ローカルに適用するポリシーの関連する部分、及びローカルＯＳサービスがどのように使用されてもよいか、またはローカルＯＳサービスがアプリケーション６１０とどのように相互作用してもよいかを規制する格納ポリシーのいくつかを行ってもよい。
【００５７】
アプリケーション管理フレームワーク６１４は、セキュアなＩＰＣチャネル６１２上でクライアントエージェント６０４によって提供されるサービスを使用して、認証及び内部ネットワークアクセスを容易にしてもよい。私用及び共有データヴォルト６１６（コンテナ）用の鍵管理はさらに、管理されたアプリケーション６１０とクライアントエージェント６０４との間の適切なインタラクションによって管理されてもよい。ヴォルト６１６は、オンライン認証の後のみに利用可能であってもよく、またはポリシーによって許容される場合、オフライン認証の後に利用可能にされてもよい。ヴォルト６１６の最初の使用は、オンライン認証を要求し、オフラインアクセスは、オンライン認証が再度要求される前のポリシー最新化期間の多くにおいてに、限定されてもよい。
【００５８】
内部リソースへのネットワークアクセスは、アクセスゲートウェイ６０６を通して個別の管理されたアプリケーション６１０から直接生じてもよい。アプリケーション管理フレームワーク６１４は、各アプリケーション６１０の代わりに、ネットワークアクセスを組織化することを担う。クライアントエージェント６０４は、オンライン認証に続いて取得される好適な時間が限定された二次証明書を提供することによってこれらのネットワーク接続を容易にしてもよい。リバースウェブプロキシ接続、及びエンドツーエンドＶＰＮ様式トンネル６１８などネットワーク接続の複数のモードが使用されてもよい。
【００５９】
メール及びブラウザ管理アプリケーション６１０は特別な状態を有し、任意のラッピングされたアプリケーションに一般的に利用可能であり得ない施設を利用してもよい。例えば、メールアプリケーションは、完全なＡＧログオンを要求せずに、延長された期間にＥｘｃｈａｎｇｅにアクセスすることを許容する特別なバックグラウンドネットワークアクセス機構を使用してもよい。ブラウザアプリケーションは、複数のプライベートデータヴォルトを使用して異なる種類のデータを分けてもよい。
【００６０】
このアーキテクチャは、様々な他のセキュリティ特性の組み込みを支援する。例えば、いくつかの場合におけるゲートウェイサーバ６０６（ゲートウェイサーバ６０６のゲートウェイサービスも含む）は、アクティブデイレクトリ（ＡＤ）パスワードを必要としない。ＡＤパスワードが、いくつかの状況において一部のユーザに対する認証要因として使用されるかどうかは企業の裁量に委ねられることができる。ユーザがオンラインまたはオフラインである（すなわち、ネットワークに接続されている、または接続されていない）場合、異なる認証方法が使用されてもよい。
【００６１】
ステップアップ認証は、強い認証を要求する高度に分類されたデータへのアクセスを有することを許容された、管理されたネイティブアプリケーション６１０をゲートウェイサーバ６０６が識別してもよく、以前のさらに弱いレベルのログインの後、これが、再認証がユーザによって要求されることを意味する場合でも、これらのアプリケーションへのアクセスが適切な認証を実行した後のみに許可されることを確実にする、特性である
この解決方法の別のセキュリティ特性は、モバイル装置６０２上でのデータヴォルト６１６（コンテナ）の暗号化である。ヴォルト６１６は暗号化され、その結果、ファイル、データベース、及び構成を含む、装置上のすべてのデータが保護されてもよい。オンラインヴォルトについて、鍵はサーバ（ゲートウェイサーバ６０６）上に記憶されてもよく、オフラインヴォルトについて、鍵のローカルコピーは、ユーザパスワードまたはバイオメトリック認証によって保護されてもよい。データがセキュアなコンテナ６１６における装置６０２上にローカルに記憶される場合、ＡＥＳ２５６暗号化アルゴリズムの最小限が利用されることが好ましい。
【００６２】
他のセキュアなコンテナ特性も実施されてもよい。例えば、アプリケーション６１０内で起こるすべてのセキュリティ事象がログされ、バックエンドに報告される、ロギング特性が含まれてもよい。アプリケーション６１０がタンパリングを検出する場合、関連する暗号化鍵がランダムデータ上に書き込まれ、ユーザデータが破棄されたファイルシステム上にヒントを残さなくてもよいなど、データワイピングが支援されてもよい。アプリケーションが任意のデータがスクリーンショットに記憶されることを防いでもよい、スクリーンショット保護が別の特性である。例えば、鍵ウィンドウの隠された特徴は、はい、に設定されてもよい。これは、どのようなコンテンツでも隠されるスクリーン上に現在表示され、任意のコンテンツが通常ある空白のスクリーンショットを結果としてもたらすことを引き起こしてもよい。
【００６３】
例えば、外部アプリケーションにコピーする、または送信することによって、任意のデータがアプリケーションコンテナの外部にローカルに転送されることを防ぐことによってなど、ローカルデータ転送が防がれてもよい。キーボードキャッシュ特性は、感応性のテキストフィールドに対するオートコレクト機能を無効にするように動作してもよい。ＳＳＬ証明書認証は、アプリケーションが、キーチェーンに記憶される代わりに、サーバＳＳＬ証明書を特別に認証するように動作可能であってもよい。装置上でデータを暗号化するために使用される鍵が、ユーザによって提供されるパスフレーズまたはバイオメトリックデータを使用して生成される（オフラインアクセスが要求される場合）ように、暗号化鍵生成特性が使用されてもよい。オフラインアクセスが要求されない場合、ランダムに生成され、サーバ側に記憶された別の鍵で排他的論理和がとられてもよい。ユーザパスワードから生成された鍵が、その暗号学的ハッシュを作成するのではなく、ＫＤＦ（鍵導出機能、とりわけパスワードベースの鍵導出機能２（ＰＢＫＤＦ２））を使用するように、鍵導出機能が動作してもよい。後者は総当たり攻撃または辞書攻撃に脆弱な鍵を作る。
【００６４】
さらに、１つ以上の初期化ベクトルが暗号化方法において使用されてもよい。初期かベクトルは、同じ暗号化データの複数のコピーに異なる暗号文出力を生成させ、反射攻撃及び暗号解読攻撃の両方を防ぐ。これはまた、データを暗号化するために使用される特定の初期化ベクトルが知られていない場合、攻撃者が、盗まれた暗号化鍵ででも、任意のデータを解読することを防ぐ。さらに、次に、ユーザがアプリケーション内で認証された後のみにアプリケーションデータが解読される、認証の解読が使用されてもよい。別の特性は、必要とされる場合のみにメモリに（及びディスクにではなく）保持されてもよい、メモリにおける感応性データに関してもよい。例えば、ログイン証明書はログイン後にメモリからワイピングされてもよく、暗号化鍵及びＯｂｊｅｃｔｉｖｅ−Ｃ事象変数の中の他のデータは、簡単に参照され得るため、記憶されない。その代わりに、メモリがこれらに手動で割り当てられてもよい。
【００６５】
非アクティビティのポリシーが定義された期間の後、ユーザセッションが終了される、非アクティブタイムアウトが実施されてもよい。
【００６６】
アプリケーション管理フレームワーク６１４からのデータ漏れは、他の方法で防がれてもよい。例えば、アプリケーション６１０がバックグラウンドに置かれる場合、メモリは所定の（構成可能な）期間の後に削除されてもよい。バックグラウンド化される場合、アプリケーションの最後に表示されたスクリーンのスナップショットが撮られて、フォアグラウンドプロセスを固定してもよい。スクリーンショットは、機密データを含んでもよく、したがって、削除されるべきである。
【００６７】
別のセキュリティ特性は、１つ以上のアプリケーションへのアクセスに対するＡＤ（アクティブデイレクトリ）６２２パスワードの使用を伴わずに、ＯＴＰ（ワンタイムパスワード）６２０の使用に関する。いくつかの場合では、一部のユーザは自分のＡＤパスワードを知らない（または知ることが許可されていない）ので、これらのユーザは、ＳｅｃｕｒＩＤのようなハードウェアＯＴＰシステムを使用することによって（ＯＴＰは、ＥｎｔｒｕｓｔまたはＧｅｍａｌｔｏなどの異なる販売者によって提供されてもよい）など、ＯＴＰ６２０を使用して認証してもよい。いくつかの場合では、ユーザがユーザＩＤで認証した後、テキストがＯＴＰ６２０でユーザに送信される。いくつかの場合では、これは、単一のフィールドであるプロンプトで、オンラインの使用のみのために実施されてもよい。
【００６８】
オフライン使用が企業ポリシーを介して許可される、それらのアプリケーション６１０に対するオフライン認証用のオフラインパスワードが実施されてもよい。例えば、企業は、ＳｔｏｒｅＦｒｏｎｔがこの方式でアクセスされることを望み得る。この場合、クライアントエージェント６０４は、ユーザがカスタムオフラインパスワードを設定することを要求してもよく、ＡＤパスワードは使用されない。ゲートウェイサーバ６０６は、標準Ｗｉｎｄｏｗｓ（登録商標）サーバパスワード複雑性要件は修正されてもよいが、これらの要件に説明されるような、最小限の長さ、文字クラスの成分、パスワードの経過年に関するパスワードの標準を制御し、行うようにポリシーを提供してもよい。
【００６９】
別の特性は、第２の証明書としての、特定のアプリケーション６１０に対するクライアント側の証明書の可能化（アプリケーション管理フレームワークマイクロＶＰＮ特性を介したＰＫＩ保護されたウェブリソースにアクセスするため）に関する。例えば、アプリケーションはこのような証明書を利用してもよい。この場合、クライアントエージェント６０４からの証明書がゲートウェイサーバ６０６によって取得されてもよく、キーチェーンに使用されてもよい、ＡｃｔｉｖｅＳｙｎｃプロトコルを使用する証明書ベースの認証が支援されてもよい。各管理されたアプリケーションは、ゲートウェイサーバ６０６において定義されたラベルによって識別された、１つの関連付けられたクライアント証明書を有してもよい。
【００７０】
ゲートウェイサーバ６０６は、企業の特定用途ウェブサービスと相互作用し、クライアント証明書の発行を支援して、関連する管理されたアプリケーションが内部ＰＫＩ保護リソースを認証することを許容してもよい。
【００７１】
クライアントエージェント６０４及びアプリケーション管理フレームワーク６１４は、内部ＰＫＩ保護ネットワークリソースへの認証に対するクライアント証明書を取得すること、及び使用することを支援するように強化されてもよい。様々な度合いのセキュリティ及び／または分離要件に合致するなどのように、１つ以上の証明書が支援されてもよい。証明書は、メール及びブラウザ管理アプリケーションによって、及び最終的に任意のラッピングされたアプリケーション（もし、それらのアプリケーションが、アプリケーション管理フレームワークがｈｔｔｐｓ要求を仲介することが合理的である、ウェブサービススタイル通信パターンを使用するのであれば）によって使用されてもよい。
【００７２】
ｉＯＳ上のアプリケーション管理クライアント証明書支援は、公共鍵暗号化標準（ＰＫＣＳ）１２ＢＬＯＢ（バイナリラージオブジェクト）を使用の各期間に対する各管理されたアプリケーションにおけるｉＯＳキーチェーン内にインポートすることに依存してもよい。アプリケーション管理フレームワーククライアント証明書支援は、私用メモリ内鍵格納でＨＴＴＰＳ実施を使用してもよい。クライアント証明書は、ｉＯＳキーチェーンに存在することはなく、強く保護された「オンラインのみ」のデータ値にあり得る以外、持続されない。
【００７３】
相互ＳＳＬはさらに、モバイル装置６０２が企業に、及びその逆に対して認証されることを要求することによって追加のセキュリティを提供するように実施されてもよい。ゲートウェイサーバ６０６への認証のための仮想スマートカードも実施されてもよい。
【００７４】
限定されたＫｅｒｂｅｒｏｓ支援、及び完全なＫｅｒｂｅｒｏｓ支援の両方が追加の特性であってもよい。完全な支援特性は、ＡＤパスワードまたは信用されたクライアント証明書を使用する、アクティブデイレクトリ（ＡＤ）６２２への完全なＫｅｒｂｅｒｏｓログインを行う、及びＫｅｒｂｅｒｏｓサービスチケットを取得してＨＴＴＰ交渉認証チャレンジに応答するための能力に関する。限定された支援特性は、ＡＧＥＥがＫｅｒｂｅｒｏｓプロトコル移行を引き起こすことを支援し、ＨＴＴＰ交渉認証チャレンジに応答してＫｅｒｂｅｒｏｓサービスチケット（制約付き委任）を取得し、使用することができる、Ｃｉｔｒｉｘ  Ａｃｃｅｓｓ  Ｇａｔｅｗａｙ  Ｅｎｔｅｒｐｒｉｓｅ  Ｅｄｉｔｉｏｎ（ＡＧＥＥ）における制約付き委任に関する。この機構は、リバースウェブプロキシ（別名企業仮想プライベートネットワーク（ＣＶＰＮ））モードで、ｈｔｔｐ（ｈｔｔｐｓではない）接続がＶＰＮ及びＭｉｃｒｏＶＰＮモードにおいてプロキシされるときに、作動する。
【００７５】
別の特性は、脱獄またはルーティングの検出の際に自動的に生じ、管理コンソールからのプッシュされたコマンドとして生じてもよく、アプリケーション６１０が実行していないときにリモートワイプ機能を含んでもよい、アプリケーションコンテナロッキング及びワイピングに関する。
【００７６】
エンタープライズアプリケーションストア及びアプリケーションコントローラのマルチサイトアーキテクチャまたは構成は、ユーザが失敗の場合にいくつかの異なる位置のうちの１つからサービスを受けることを許容するように支援されてもよい。
【００７７】
いくつかの場合、管理されたアプリケーション６１０は、ＡＰＩ（例はＯｐｅｎＳＳＬ）を介して証明書及びプライベート鍵にアクセスすることが許容されてもよい。企業の信用され、管理されたアプリケーション６１０は、アプリケーションのクライアント証明書及びプライベート鍵で特定の公共鍵動作を実行するように許容されてもよい。アプリケーションがブラウザのように振る舞い、証明書アクセスが要求されない場合、アプリケーションが「私は誰」に対する証明書を読み取る場合、アプリケーションが証明書を使用してセキュアなセッショントークンを構築する場合、アプリケーションが重要なデータ（例えば、取引ログ）のデジタル署名に対する、または一時的なデータ暗号化に対するプライベート鍵を使用する場合など、様々な使用の状況が識別され、適切に処理されてもよい。
【００７８】
〈フィールドプログラマブルビジネスロジックでアプリケーションをラッピングすることの例〉
図５は、本明細書で述べられる１つ以上の例証的な態様による、フィールドプログラマブルビジネスロジックでアプリケーションをラッピングする方法を例証するフローチャートを示す。１つ以上の実施形態では、図５に例証される方法、及び／またはその１つ以上のステップは、コンピューティング装置（例えば、データサーバ１０３）によって実行されてもよい。追加で、または代替的に、図５において例証される方法、及び／またはその１つ以上のステップは、いくつかの事象では、モバイル装置（例えば、装置１０７などのコンピューティング装置の１つ以上の態様を実施してもよい）によって実行されてもよい。他の実施形態では、図５に例証される方法、及び／またはその１つ以上のステップは、非一時的なコンピュータ可読メモリなどのコンピュータ読み取り媒体に記憶されるコンピュータ実行可能命令で具現化されてもよい。
【００７９】
図５において見られるように、本方法は、アプリケーションがロードされてもよいステップ３０５において開始してもよい。例えば、ステップ３０５では、コンピューティング装置（例えば、データサーバ１０３）は、モバイルアプリケーションのアプリケーションコードをロードしてもよい。例えば、アプリケーションコードは、Ａｎｄｒｏｉｄ（登録商標）アプリケーション、ｉＯＳアプリケーション、Ｗｉｎｄｏｗｓ（登録商標）アプリケーション、Ｌｉｎｕｘ（登録商標）アプリケーション、またはコンピューティング装置における使用に好適な任意の他のアプリケーションタイプのすべて、及び／または一部を定義するソースコードであってもよい。いくつかの事象では、コンピューティング装置は、コンピューティング装置によって受信されたバイナリファイルからアプリケーションコードをロードしてもよい。いくつかの事象では、アプリケーションコードは、コンピューティング装置上に存在してもよく（例えば、コンピューティング装置上に記憶される）、及び動作システムによってロードされてもよい。他の例では、コンピューティング装置及び／またはコンピューティング装置上の動作システムは、アプリケーションストアからアプリケーションコードをロードしてもよい。例えば、Ａｎｄｒｏｉｄ（登録商標）装置上で、Ａｎｄｒｏｉｄ（登録商標）動作システムはＧｏｏｇｌｅ  Ｐｌａｙ  Ｓｔｏｒｅからアプリケーションコードをロードしてもよい。別の例について、Ａｐｐｌｅ装置上で、ＡｐｐｌｅｉＯＳ動作システムは、Ａｐｐｌｅ  Ａｐｐ  Ｓｔｏｒｅからアプリケーションコードをロードしてもよい。他の例では、コンピューティング装置は、異なるアプリケーションレポジトリから、または装置メモリから直接、アプリケーションコードをロードしてもよい。いくつかの事象では、コンピューティング装置は、ネットワークインターフェース１１７または入力／出力インターフェース１１９によってアプリケーションコードを受信してもよい。
【００８０】
図５において見られるように、本方法は、アプリケーションコードがラッピングされてもよいステップ３１０で継続してもよい。例えば、ステップ３１０で、コンピューティング装置（例えば、データサーバ１０３）は、アプリケーションコードをロードして、１つ以上のポリシーファイルに基づいてアプリケーションの実行を管理するように構成されたアプリケーションラッパでモバイルアプリケーションをラッピングしてもよい。アプリケーションラッパは、アプリケーションコードの１つ以上の機能セルを傍受するようにさらに構成されてもよく、１つ以上のポリシーファイルは、１つ以上のユーザ装置上で装置管理システムによって行われる１つ以上のアクセス制御をそれぞれ定義してもよい。いくつかの事象では、ラピングされたアプリケーションは、修正コードで単一の実行可能ファイルを含んでもよい。他の事象では、ラッピングされたアプリケーションは、互いに動作していくつかの機能を実行してもよい、多数の互いに関係するファイルを含んでもよい。例えば、ラッピングされたアプリケーションは、実行可能ファイル、リンクされたライブラリ、Ｊａｖａ（登録商標）クラス、データファイル、もしくは単独で、または別のファイルと組み合わせられたときに、実行に好適な任意の他のファイルタイプの組み合わせであってもよい。いくつかの事象では、アプリケーションラッパは、実行可能ファイルの機能を追加する、または規制することによってアプリケーションの実行を管理してもよい。追加で、または代替的に、アプリケーションラッパは、実行可能ファイルの機能へのユーザアクセスを強化する、または規制することによってアプリケーションの実行を管理してもよい。いくつかの事象では、ポリシーファイルは、管理者が配置してもよいアクセス制御を含んでもよい。例えば、ポリシーファイルは、ポリシーファイルにおいて１つ以上のポリシーによって定義されてもよい特定の状況における特定のユーザによってアクセス可能な機能を追加してもよく、または規制してもよい。１つの例では、ポリシーファイルは、電話のカメラまたはマイクロフォンを不可能にするアクセス制御を特定してもよい。別の例では、ポリシーファイルは、無線接続の存在がない場合、機能へのリモートアクセスを可能にしてもよく、またはアクセスを無効にしてもよい。いくつかの事象では、装置管理システムは、リモートコンピュータ１０７上のアプリケーションを含んでもよい。いくつかの事象では、装置管理システムは、多数のクライアント装置へのアクセス制御を広めてもよい中央管理システムを含んでもよい。
【００８１】
図５において見られるように、本方法は、ライブラリファイルが作成されてもよいステップ３１５において継続してもよい。例えば、ステップ３１５では、コンピューティング装置（例えば、データサーバ１０３）は、ラッパによって傍受された機能のうちの１つ以上にリンクされた実施コードを定義するフィールドプログラマブルビジネスロジックを含むライブラリファイルを作成してもよい。例えば、ライブラリファイルの実施は、動的リンクライブラリ、Ｊａｖａ（登録商標）クラス、またはアプリケーションに好適な任意の他の同様のファイルタイプであってもよい。いくつかの事象では、フィールドプログラマブルビジネスロジックは、ラッパがアプリケーションの実行を管理することを許容してもよい論理命令を含んでもよい。例えば、フィールドプログラマブルビジネスロジックは、ラッパによって作られた通知に対するコード定義を含む実施コードを定義してもよい。別の例では、フィールドプログラマブルビジネスロジックは、ＰｙｔｈｏｎコードファイルまたはＪａｖａ（登録商標）コードファイルなどの他の実施ロジックを含む実施コードを定義してもよい。
【００８２】
図５において見られるように、本方法は、ラッピングされたアプリケーション及びライブラリファイルが提供されてもよい、ステップ３２０で継続してもよい。例えば、ステップ３２０では、コンピューティング装置（例えば、データサーバ１０３）は、ラッピングされたアプリケーション及びライブラリファイルを少なくとも１つのユーザ装置に提供してもよい。例えば、コンピューティング装置は、ネットワークインターフェース１１７または入力／出力インターフェース１１９を介して、特定のユーザによって使用されるコンピューティング装置にラッピングされたアプリケーション及びライブラリファイルを提供してもよい。例えば、コンピューティング装置は、リモートコンピュータ１０７からの要求に応答して、ラッピングされたアプリケーション及びライブラリファイルを提供してもよい。例えば、リモートコンピュータ１０７は、ラッピングされたアプリケーション及びライブラリファイルをＧｏｏｇｌｅ  Ｐｌａｙ  Ｓｔｏｒｅ、Ａｐｐｌｅ  Ａｐｐ  Ｓｔｏｒｅ、または任意の他のアプリケーションリポジトリなどのアプリケーションストアなどのストアフロントから要求してもよい。別の例として、コンピューティング装置は、ラッピングされたアプリケーション及びライブラリファイルをクライアント装置へ外部にプッシュしてもよい。例えば、リモートコンピュータ１０７は、ラッピングされたアプリケーション及びライブラリファイルを含むアプリケーション画像ファイルをロードしてもよく、またはコンピューティング装置によってクライアント装置にプッシュされたアプリケーション及びライブラリファイルを有してもよい。
【００８３】
図５において見られるように、本方法は、ビジネスロジックへの更新が受信されてもよいステップ３２５において継続してもよい。例えば、ステップ３２５では、コンピューティング装置（例えば、データサーバ１０３）は、ラッパによって傍受された機能にリンクされた、更新された実施コードを定義するビジネスロジックへの更新を受信してもよい。例えば、更新は、更新コードまたは下層ロジックを含んでもよい。別の例として、更新は、コードまたは下層ロジックの全体または一部を置き換える置換コードを含んでもよい。
【００８４】
図５において見られるように、本方法は、ライブラリファイルが更新されてもよいステップ３３０において継続してもよい。例えば、ステップ３３０では、コンピューティング装置（例えば、データサーバ１０３）は、ステップ３２５からの更新されたフィールドプログラマブルビジネスロジックを含む、更新されたライブラリファイルを作成してもよい。例えば、更新されたライブラリファイルを作成することにおいて、コンピューティング装置は、更新フィールドプログラマブルビジネスロジックを含む更新されたコードで既存のライブラリファイルを書き換えてもよい。例えば、リモートコンピュータ１０７上で実行する別々のアプリケーションは、コンピューティング装置によって受信される命令に基づいてビジネスロジックへの修正を作ってもよい。別の例として、更新されたライブラリファイルを作成することにおいて、コンピューティング装置は、更新されたフィールドプログラマブルビジネスロジックを含むコードまたはロジックを置き換えてもよい。例えば、リモートコンピュータ１０７におけるソフトウェアツールは、更新されたファイルで既存のファイルを置き換えてもよい。または、例えば、ソフトウェアツールは、更新されたコードまたはロジックでコードまたはロジックのバッチを置き換えてもよい。
【００８５】
図５において見られるように、本方法は、更新されたライブラリファイルが提供されてもよいステップ３３５で継続してもよい。例えば、ステップ３３５では、コンピューティング装置（例えば、データサーバ１０３）は、更新されたライブラリファイルを少なくとも１つのユーザ装置に提供してもよい（例えば、更新されたライブラリファイルを１つ以上の通信インターフェースを介して少なくとも１つのユーザ装置に送信することによって）。これは、アプリケーションラッパに更新されたビジネスロジックを使用させ、ラッピングされたアプリケーションの実行を管理させてもよい。例えば、コンピューティング装置は、更新されたライブラリファイルをネットワークインターフェース１１７または入力／出力インターフェース１１９を通して提供してもよい。例えば、コンピューティング装置は、リモートコンピュータ１０７からの要求に応答して、更新されたライブラリファイルを提供してもよい。例えば、リモートコンピュータ１０７は、Ｐｌａｙ  Ｓｔｏｒｅ、Ａｐｐ  Ｓｔｏｒｅ，または任意の他のアプリケーションリポジトリなどのアプリケーションストアから更新されたライブラリファイルを要求してもよい。別の例として、コンピューティング装置は、更新されたライブラリファイルをリモートコンピュータ１０７にプッシュしてもよい。例えば、リモートコンピュータ１０７は、更新されたライブラリファイルを含む画像でフラッシュにされてもよく、またはコンピューティング装置によってリモートコンピュータ１０７にプッシュされた、更新されたライブラリファイルを有してもよい。
【００８６】
いくつかの実施形態では、更新されたライブラリファイルは、追加のラッパに更新されたビジネスロジックを使用させ、他のラッピングされたアプリケーションの実行を管理させてもよい。例えば、リモートコンピュータ１０７は、多数の管理されたアプリケーションを含んでもよい。単一の更新されたライブラリファイルは、装置上の複数またはすべての管理されたアプリケーション用の更新を含んでもよい。いくつかの事象では、エージェントアプリケーションは、更新されたライブラリファイルを管理されたアプリケーションに提供してもよい。いくつかの事象では、更新されたライブラリファイルは、管理されたアプリケーションが、それらのアプリケーションを再ラッピングする必要を伴わずに更新されることを許容してもよい。
【００８７】
図５において見られるように、本方法は、ラッピングされたアプリケーションへの更新が受信されてもよいステップ３４０において継続してもよい。例えば、ステップ３４０では、コンピューティング装置（例えば、データサーバ１０３）は、ラッパへの更新が利用可能であることを示すアプリケーション更新を受信してもよい。例えば、更新は、ラッピングされたアプリケーションを構成する１つ以上のファイルを更新する情報を含んでもよい。例えば、更新は、リモートコンピュータ１０７がファイルを書き換える、または置き換えることを許容する命令のセットを含んでもよい。別の事象では、更新は、コードまたはラッピングされたアプリケーションを構成してもよい１つ以上のファイルに対する置き換えを含んでもよい。
【００８８】
図５において見られるように、本方法は、アプリケーションが再ラッピングされてもよいステップ３４５において継続してもよい。例えば、ステップ３４５では、コンピューティング装置（例えば、データサーバ１０３）は、ラッパ及び／またはアプリケーションを更新され、ステップ３４０からの更新を使用してもよいラッピングされたアプリケーションと置き換えてもよい。例えば、リモートコンピュータ１０７上で実行する別個のアプリケーションは、コンピューティング装置によって受信される命令に基づいてビジネスロジックへの修正を作ってもよい。別の例として、アプリケーションを再ラッピングすることは、装置置き換えコードまたはロジックを含んでもよい。例えば、別個のアプリケーションは、既存のファイルを更新されたファイルと置き換えてもよい。または、例えば、ソフトウェアツールは、コードまたはロジックのバッチを更新されたコードまたはロジックと置き換えてもよい。
【００８９】
図５において見られるように、本方法は、更新され、ラッピングされたアプリケーションが提供されてもよいステップ３５０で継続してもよい。例えば、ステップ３５０では、コンピューティング装置（例えばデータサーバ１０３）は、更新され、ラッピングされたアプリケーションを少なくとも１つのユーザ装置に提供してもよい。例えば、コンピューティング装置は、更新され、ラッピングされたアプリケーションを、ネットワークインターフェース１１７または入力／出力インターフェース１１９を介して、少なくとも１つのユーザ装置に送信することによって、更新され、ラッピングされたアプリケーションを提供してもよい。例えば、更新され、ラッピングされたアプリケーションは、リモートコンピュータ１０７からの要求に応答して提供されてもよい。例えば、リモートコンピュータ１０７は、更新され、アプリケーションストアから、ラッピングされたアプリケーションを要求してもよく、ストアフロントはＰｌａｙ  Ｓｔｏｒｅ、Ａｐｐ  Ｓｔｏｒｅ、または任意の他のアプリケーションリポジトリであってもよい。別の例として、更新され、ラッピングされたアプリケーションは、クライアント装置に外部へプッシュされてもよい。例えば、リモートコンピュータ１０７は、更新され、ラッピングされたアプリケーションを含む画像でフラッシュにされてもよく、またはコンピューティング装置によってリモートコンピュータ１０７にプッシュされた、更新され、ラッピングされたアプリケーションを有してもよい。
【００９０】
図６は、本明細書で述べられる１つ以上の例証的な態様による、ライブラリファイル及びラッピングされたアプリケーションを更新する方法を例証するフローチャートを示す。１つ以上の実施形態では、クライアント装置（例えば、リモートコンピュータ１０７）は、図６において例証される方法、及び／またはその１つ以上のステップを実行してもよい。追加で、または代替的に、コンピューティング装置は、モバイル装置であってもよい。他の実施形態では、図６に例証される方法、及び／またはその１つ以上のステップは、非一時的なコンピュータ可読メモリなど、コンピュータ可読媒体に記憶される非一時的なコンピュータ可読命令で具現化されてもよい。
【００９１】
図６において見られるように、本方法は、ライブラリファイルへの更新の表示が受信されてもよいステップ４０５において開始してもよい。例えば、ステップ４０５では、クライアント装置（例えば、リモートコンピュータ１０７）は、第１のライブラリファイルへの更新の表示を受信してもよい。第１のライブラリファイルは、ラッパによって傍受された１つ以上の機能にリンクされた実施コードを定義する、フィールドプログラマブルビジネスロジックを含んでもよい。ラッパは、クライアント装置上の装置管理システムによって行われる１つ以上のアクセス制御を定義する１つ以上のポリシーファイルに基づいて、クライアント装置上のモバイルアプリケーションの実行を管理するように構成されてもよい。例えば、更新は、更新されたコードまたは下層ロジックをリモートコンピュータに提供してもよい。別の例として、更新は、コードまたは下層ロジックの全体または一部の置き換えをリモートコンピュータに提供してもよい。ステップ４０５でクライアント装置によって受信される第１のライブラリファイルへの更新の表示は、例えば、第１のライブラリファイルへの更新が利用可能であることを示す情報、及び／または更新されたビジネスロジック及び／またはビジネスロジックに関連付けられてもよい実施コードを定義する情報を含んでもよい。
【００９２】
図６において見られるように、本方法は、ライブラリファイルへの更新がダウンロードされてもよいステップ４１０で継続してもよい。例えば、ステップ４１０では、クライアント装置（例えば、リモートコンピュータ１０７）は、更新が利用可能であることの表示を受信することに応答して、更新されたライブラリファイルをダウンロードしてもよい。更新されたライブラリファイルは、ラッパによって傍受された機能にリンクされた、更新された実施コードを定義するフィールドプログラマブルビジネスロジックを含んでもよい。いくつかの事象では、更新されたライブラリファイルは、ステップ３３５におけるように提供されてもよい。クライアント装置は、ネットワークインターフェース１１７または入力／出力インターフェース１１９を通してアプリケーションをダウンロードしてもよい。別の装置、サーバ、Ｇｏｏｇｌｅ  Ｐｌａｙ  ＳｔｏｒｅまたはＡｐｐｌｅ  Ａｐｐ  Ｓｔｏｒｅなどのレポジトリ、または任意のアプリケーションレポジトリは、いくつかの事象では、ファイルを提供してもよい。
【００９３】
図６において見られるように、本方法は、以前のライブラリファイルが更新されたライブラリファイルと置き換えられてもよい、ステップ４１５において継続してもよい。例えば、ステップ４１５において、クライアント装置（例えば、リモートコンピュータ１０７）は、第１のライブラリファイルを更新されたライブラリファイルと置き換えてもよい。次に、ラッパは、モバイルアプリケーションの実行を管理する場合、更新されたフィールドプログラマブルビジネスロジックを使用してもよい。例えば、クライアント装置は、スタンドアロンファイルを別のファイルと置き換えてもよい。例のように、クライアント装置は、Ｊａｖａ（登録商標）クラスを含むファイルを、ｊａｖａ（登録商標）クラスを含む別のファイルと置き換えてもよく、または、１つの動的リンクライブラリファイルを別の動的リンクライブラリファイルと置き換えてもよい。
【００９４】
いくつかの実施形態では、アプリケーションは、アプリケーションを再ラッピングする必要性を伴わずに、更新されたライブラリファイルを使用してもよい。さらに、いくつかの実施形態では、追加のラッパは、更新されたビジネスロジックを使用して、追加のラッピングされたアプリケーションの実行を管理してもよい。例えば、リモートコンピュータ１０７は、多数の管理されたアプリケーションを含んでもよい。単一の更新されたライブラリファイルは、装置上の複数またはすべての管理されたアプリケーションに対する更新を含んでもよい。例えば、更新されたライブラリファイルは、追加の管理されたアプリケーションが、それらの追加のアプリケーションを再ラッピングする必要性を伴わずに更新されることを許容してもよい。例えば、複数のラッパは、古いライブラリファイルの更新されたライブラリファイルとの置き換えは、複数のラッパに対するファイルを置き換え、管理されたアプリケーションが、再ラッピングを伴わずに更新されたフィールドプログラマブルビジネスロジックを使用することを許容するように、ファイルシステムに記憶されたライブラリファイルを使用してもよい。いくつかの事象では、エージェントアプリケーションは、更新されたライブラリファイルを管理されたアプリケーションに提供してもよい。例えば、エージェントは、更新されたライブラリファイルの１つのコピーを受信してもよく、使用のために管理されたアプリケーション内の更新されたライブラリファイルを配信してもよい。
【００９５】
図６において見られるように、本方法は、アプリケーション用のラッパへの更新の表示が受信されてもよいステップ４２０で開始してもよい。例えば、ステップ４２０では、クライアント装置（例えば、リモートコンピュータ１０７）は、アプリケーション用のラッパへの更新が利用可能であることを示すアプリケーション更新を受信してもよい。例えば、更新は、ラッピングされたアプリケーションを構成する１つ以上のファイルへの更新を含んでもよい。例えば、更新は、アプリケーションを構成する１つ以上のファイルを書き換えるように、クライアント装置に対する命令のセットを含んでもよい。別の事象では、更新は、コードまたはラッピングされたアプリケーションを構成してもよい１つ以上のファイルに対する置き換えを含んでもよい。
【００９６】
図６において見られるように、本方法は、アプリケーション用のラッパへの更新がダウンロードされてもよいステップ４２５で継続してもよい。例えば、ステップ４２５では、コンピューティング装置（例えば、データサーバ１０３）は、更新され、ラッピングされたアプリケーションをダウンロードしてもよい。いくつかの事象では、アプリケーション用の更新されたラッパは、ステップ３５０におけるように提供されてもよい。クライアント装置は、ネットワークインターフェース１１７または入力／出力インターフェース１１９を通してアプリケーションをダウンロードしてもよい。Ｇｏｏｇｌｅ  Ｐｌａｙ  ＳｔｏｒｅまたはＡｐｐｌｅ  Ａｐｐ  Ｓｔｏｒｅなどの別の装置、サーバ、レポジトリ、または任意のアプリケーションレポジトリは、ファイルを提供してもよい。
【００９７】
図６において見られるように、本方法は、以前のライブラリファイルが更新されたライブラリファイルと置き換えられてもよいステップ４３０において継続してもよい。例えば、ステップ４３０では、クライアント装置（例えば、リモートコンピュータ１０７）は、ラッパ及びアプリケーションを更新され、ラッピングされたアプリケーションと置き換えてもよい。例えば、クライアント装置は、スタンドアロンファイルを別のファイルと置き換えてもよい。例えば、クライアント装置上で実行するアプリケーションは、クライアント装置によって受信された命令に基づいて、修正を作ってもよい。別の例では、アプリケーションを再ラッピングすることは、コードまたはロジックを置き換えることを含んでもよい。例えば、クライアント装置上のソフトウェアツールは、既存のファイルを更新されたファイルと置き換えてもよい。または、例えば、ソフトウェアツールは、コードまたはロジックのバッチを更新されたコードまたはロジックと置き換えてもよい。
【００９８】
いくつかの実施形態では、ライブラリファイルは、特定のタイプのものであってもよい。例えば、いくつかの実施形態では、ライブラリファイルは、ｉＯＳライブラリであってもよい。別の例では、ライブラリファイルは、Ａｎｄｒｏｉｄ（登録商標）ライブラリであってもよい。別の例では、ライブラリファイルは、動的リンクライブラリであってもよい。ライブラリファイルはさらに、Ｗｉｎｄｏｗｓ（登録商標）ライブラリ、Ｗｉｎｄｏｗｓ（登録商標）電話ライブラリ、またはライブラリファイルに対する任意の他の好適なファイルタイプであってもよい。
【００９９】
いくつかの実施形態では、実施コードは、コードを実施するコード定義であってもよい。例えば、スタブ機能は、．ｈファイルであってもよく、実施コードは．ｃｐｐファイルであってもよい。別の例として、Ｊａｖａ（登録商標）で、アプリケーションラッパは、Ｊａｖａ（登録商標）クラスとして定義されてもよく、そのクラスは実施コードによって実施されてもよい。さらに、任意の数の他の手段は、Ｃ、Ｃ＃、アセンブリ、またはバイナリファイルなどの言語を含む、実施コードを作成するように使用されてもよい。ラッパは機能であってもよく、実施コードは、動作システム内で実施可能コードを作成するために、ラッパ内に入れられるバイナリファイルであってもよい。実施コードは独立して実行してもよく、簡潔にラッパによって呼び出されてもよく、またはラッパが動作することを要求してもよい。
【０１００】
いくつかの実施形態では、アプリケーションコードを修正することは、少なくとも１つのスタブ機能をアプリケーションラッパに追加することを含んでもよく、少なくとも１つのスタブ機能は、ライブラリファイルにおいて提供される実施コードを参照してもよい。スタブ機能は、アプリケーションにすでに存在している機能より優位である機能の通知であってもよい。スタブ機能は、アプリケーションラッパを補助するために作成された機能であってもよく、いくつかの追加の機能性を追加してもよい。スタブ機能は、機能性を限定するライブラリファイルにおいて実施コードを参照してもよい。
【０１０１】
いくつかの実施形態では、アプリケーションコードを修正することは、フィールドプログラマブルビジネスロジックにおいて定義された実施コードの少なくとも一部の実行を引き起こすように、アプリケーションによって使用されるアプリケーションプログラミングインターフェースにおいて定義される機能をリネーミングすることを含んでもよい。例えば、コンピューティング装置またはクライアント装置は、機能に対する既存している通知をリネーミングして、元々の機能で新しい通知を作成して、その結果、機能コールが元々の機能の場所における新しい機能を参照してもよい。例えば、アプリケーションプログラミングインターフェースにおける機能「ｃａｍｅｒａ（）」は、「ｃａｍｅｒａ．ｏｌｄ（）」に変化してもよく、単純に終了する新しい「ｃａｍｅｒａ（）」が作成されてもよい。これは、ユーザが自分のスマートフォンで、カメラで写真を撮ることができることを防いでもよい。別の例では、置き換えが与えられずに既存の機能がリネーミングされてもよく、その結果、既存の機能はもはや動作しない。
【０１０２】
いくつかの実施形態では、アプリケーションコードを修正することは、アプリケーション内にアプリケーションフックを挿入することを含んでもよい。アプリケーションフックは、フィールドプログラマブルビジネスロジックにおいて定義された実施コードの一部の実行を引き起こしてもよい。例えば、コンピューティング装置またはクライアント装置は、コードのブランチの実行に対してモニタにサブルーチンを挿入してもよく、サブルーチンは、ブランチが検出される場合に、コードを実行してもよい。別の例では、コンピューティング装置またはクライアント装置は、アプリケーションのコードにおける特定の点から実施コードの実行にジャンプする、ブランチング命令を挿入してもよい。
【０１０３】
いくつかの実施形態では、更新されたライブラリファイルは、少なくとも１つのユーザ装置が更新前のビジネスロジックを使用しているという判定に応答して、少なくとも１つのユーザ装置に提供されてもよい。例えば、コンピューティング装置またはクライアント装置は、ライブラリファイルが更新前であることを判定してもよい。例えば、Ｇｏｏｇｌｅ  Ｐｌａｙ  ＳｔｏｒｅまたはＡｐｐｌｅ  Ａｐｐ  Ｓｔｏｒｅなどのストアフロントアプリケーションストアは、ライブラリファイルが更新前であるという判定において、コンピューティング装置またはクライアント装置を補助してもよい。別の事象では、クライアント装置は、ライブラリファイルが更新前であり得ることを表示するコンピューティング装置からの表示を確認するか、受信してもよい。新しいファイルが利用可能である場合、既存のファイルが不連続である場合、ファイルへの書き換えが利用可能であるなどの場合、ライブラリファイルは更新前であり得る。
【０１０４】
主題は、構造的特徴及び／または方法的な作用に特化した言語で説明されたが、付属の請求項において定義された主題は、上記で説明された特定の機能または作用に必ずしも限定されないことが理解されるべきである。むしろ、上記で説明された特定の特徴及び作用は、下記の請求項の例示の実施として説明される。
【０１０５】
関連出願の相互参照
本出願は、２０１５年３月２７日に出願され、“ＷＲＡＰＰＩＮＧ  ＡＮ  ＡＰＰＬＩＣＡＴＩＯＮ  ＷＩＴＨ  ＦＩＥＬＤ−ＰＲＯＧＲＡＭＭＡＢＬＥ  ＢＵＳＩＮＥＳＳ  ＬＯＧＩＣ”と題された米国特許出願第１４／６７１，３５１号の利益を主張するものであり、その全体が参照により本明細書に組み込まれる。
【図１】
0006603730.tif 000002
【図２】
0006603730.tif 000003
【図３】
0006603730.tif 000004
【図４】
0006603730.tif 000005
【図５】
0006603730.tif 000006
【図６】
0006603730.tif 000007