(57)【特許請求の範囲】
【請求項１】
各テナントが複数のユーザを有する組織であるマルチテナントデータストアにおけるデータ操作要求を処理するコンピュータ実装方法であって、
所与のテナント以外の少なくとも１つの他のテナントを有する企業データアプリケーションにおいて前記所与のテナントを生成するためのユーザ入力を受け取るユーザ入力機構を有するテナント生成管理者表示を表示することと、
前記所与のテナントにおいてクライアントを前記所与のテナントに関連するユーザのためのセキュリティ規則を識別するセキュリティ管理者として識別するユーザ入力を受け取るユーザ入力機構を有するセキュリティ管理者指定表示を表示することと、
前記セキュリティ管理者から前記セキュリティ規則を受け取ることと、
要求元のクライアントを前記所与のテナントのものであると識別するテナント識別データを含む前記要求元のクライアントからのデータ操作要求を前記企業データアプリケーションで受信することと、
前記所与のテナントに関連する第１のデータと、前記少なくとも１つの他のテナントに関連する第２のデータを記憶する前記マルチテナントデータストアからコンピュータプロセッサを用いて前記データ操作要求を処理することであって、
前記少なくとも１つの他のテナントによる前記第１のデータに対するアクセスを制限するために、前記所与のテナントのための前記第１のデータが、関連性に基づいて、前記マルチテナントデータストア内で他のテナントのための前記第２のデータと区分けされ、前記データ操作要求が、前記テナント識別データに基づいて前記データ操作要求を前記所与のテナントに関連して記憶されたデータに制限することによって処理される、処理することとを含み、
前記データ操作要求を受信することが、データを前記マルチテナントデータストアに記憶する要求を受信することを含み、
前記データ操作要求を処理することが、
前記要求の前記データを前記マルチテナントデータストアに記憶することと、
前記データが前記所与のテナントに属することを示す区分識別子で、前記マルチテナントデータストアに記憶される前記データをマークすることとを含み、
前記セキュリティ管理者から前記セキュリティ規則を受け取ることが、
前記ユーザ入力機構を有するセキュリティ規則表示を表示することと、
前記セキュリティ規則表示の前記ユーザ入力機構を通じて前記所与のテナントのために実施されるべきセキュリティ規則を受け取ることとを含み、
前記データ操作要求を処理することが、
前記データ操作要求の前記テナント識別データに基づいて前記所与のテナントのための前記セキュリティ規則にアクセスすることと、
前記データ操作要求を処理する間に、前記所与のテナントのための前記セキュリティ規則を実施することとを含む方法。
【請求項２】
前記データ操作要求が、アクセスされるべき前記マルチテナントデータストアのデータを識別し、識別されるデータが、前記他のテナントのうちの１つまたは複数からのデータを含むように定義される請求項１に記載のコンピュータ実装方法。
【請求項３】
前記データ操作要求を処理することが、
前記所与のテナントに属するデータのみを定義する修正されたデータ操作要求を得るように前記データ操作要求を修正することと、
前記修正されたデータ操作要求を処理することとを含む請求項２に記載のコンピュータ実装方法。
【請求項４】
前記データ操作要求を受信することが、
前記他のテナントのうちの１つまたは複数からのデータを包含するデータの問い合わせを受信することを含み、前記データ操作要求を修正することが、
前記区分識別子によって前記所与のテナントに属すると識別されたデータのみを返すように前記問い合わせを修正することを含む請求項３に記載のコンピュータ実装方法。
【請求項５】
前記データ操作要求を処理することが、
キャッシュメモリ内で各テナントについてキャッシュされたデータの別個のコピーを維持することを含み、前記データ操作要求が、データを要求する問い合わせを含み、前記キャッシュされたデータの別個のコピーを維持することが、
要求されたデータを、前記所与のテナントのためのキャッシュされたデータのみを記憶するキャッシュメモリに記憶することを含む請求項１に記載のコンピュータ実装方法。
【発明の詳細な説明】
【技術分野】
【０００１】
企業データシステム内のテナントのためのセキュリティおよびデータの隔離に関する。
【背景技術】
【０００２】
[0001]  企業組織は、多くの異なる種類の企業コンピュータプログラムまたはアプリケーションを使用することが多い。一部のそのようなプログラムは、企業資源計画（ERP）システム、顧客資源管理（CRM: customer resource management）システム、基幹業務（LOB: line of business）アプリケーション、および多くの他の企業に関連するプログラムを含む。
[0002]  さらに、多くの組織は、それらの組織の企業プログラムにおいて役割（role）に基づくセキュリティを実施する。すなわち、ユーザは、会社において特定の役割を果たす可能性があり、その役割を負うユーザは、特定のデータにアクセスすることができるが、他のデータにはアクセスすることができない可能性がある。例えば、人材管理の役割を負っているユーザは、さまざまな従業員の給与および個人ファイルにアクセスすることができる可能性があるが、販売データまたは他の種類の通常の企業情報にはアクセスすることができない可能性がある。対照的に、営業部長の役割を負っているユーザは、さまざまな製品ラインにわたって会社の複数のレベルの販売データにアクセスすることができる可能性があるが、他の従業員のための個人ファイルおよび給与情報にはアクセスすることができない可能性がある。
【０００３】
[0003]  加えて、多くの会社は、それらの会社の企業に関連するデータの多くが極秘または企業独自のもの（proprietary）であるとみなす。例えば、多くの会社は、販売記録、セールスリード、個人ファイル情報、および他の企業情報のホスト（host）全体が極秘であり、その会社の企業独自のものであるとみなす。会社は、競合他社などの他の会社または関連会社さえもそのデータにアクセスすることができることを望まない。
【０００４】
[0004]  この状況では、会社が特定の方法で互いに関連するようになることができるが、それらの会社が互いに情報を共有することをやはり望まない場合が生じる可能性がある。例えば、会社が、独立した企業（または子会社）を買収することによって大きくなる持ち株会社である可能性がある。子会社は、それらの子会社自体の管理および運営の大部分を握っており、それぞれの子会社のためのデータおよびプロセスは、他の子会社との間で共有されるべきでない。
【０００５】
[0005]  一部の現在の解決策は、子会社のそれぞれがその子会社自体の企業データを記憶するためのその子会社自体の別個のデータベースを持つことを必要とする。他の現在の解決策においては、それぞれの別個の子会社に、その子会社自体の別個のデータベース製品が与えられる。子会社のそれぞれのために与えられた企業データプログラムのまったく別々の設備が、存在する。例えば、それぞれの子会社は、ＥＲＰシステムをその子会社自体で別々に設置される可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
[0006]  しかし、子会社が、それらの子会社の情報技術（IT）リソースをプールし、単一の企業ソフトウェアアプリケーションを利用することを望むこともあり得る。すなわち、子会社（または子会社のサブセット）は、単一の企業アプリケーションのインストールのコストを分担したいと望む可能性があるが、それでもなお、自身の企業データを、同じ企業アプリケーションを共有している他の子会社から完全に分け、隔離したままにしておきたいと望む。同様に、子会社のそれぞれは、その子会社自体の役割に基づくセキュリティ規則または他のセキュリティ規則を実施したいと望む可能性がある。
【０００７】
[0007]  以上の考察は、全般的な背景情報に関して与えられたものに過ぎず、特許請求の範囲の決定を幇助するものとして使用されることを意図したものではない。
【課題を解決するための手段】
【０００８】
[0008]  マルチテナントホスティングシステムが、テナントから企業データおよびテナント識別データを受信する。複数の異なるテナントからのデータが、単一のデータベースに記憶されるが、各テナントに対応するデータは、データベース内で、区分識別子でデータをマークすることによって区分けされる。したがって、ホスティングシステムは、個々のテナントがそれら自体のデータにアクセスできることのみ可能にする。
【０００９】
[0009]  この「課題を解決するための手段」は、「発明を実施するための形態」において以下でさらに説明される概念の選択を簡略化された形態で導入するために与えられる。この「課題を解決するための手段」は、特許請求の対象の重要な特徴または必須の特徴を識別するように意図されておらず、特許請求の範囲の決定を幇助するものとして使用されることを意図したものでもない。特許請求の対象は、「背景技術」で述べられたいずれかのまたはすべての欠点を解決する実装に限定されない。
【図面の簡単な説明】
【００１０】
【図１】[0010]企業データシステムの一実施形態のブロック図である。
【図２】[0011]テナントを設定する際の図１に示されたシステムの全体的な動作の一実施形態を示す流れ図である。
【図２Ａ】[0012]例示的なユーザインターフェース表示を示す図である。
【図２Ｂ】例示的なユーザインターフェース表示を示す図である。
【図２Ｃ】例示的なユーザインターフェース表示を示す図である。
【図２Ｄ】例示的なユーザインターフェース表示を示す図である。
【図２Ｅ】例示的なユーザインターフェース表示を示す図である。
【図３】[0013]区分けされたデータのためのデータ構造の一実施形態を示す図である。
【図３Ａ】[0014]区分けされたデータをテーブルで示す例示的なユーザインターフェース表示を示す図である。
【図３Ｂ】区分けされたデータをテーブルで示す例示的なユーザインターフェース表示を示す図である。
【図３Ｃ】区分けされたデータをテーブルで示す例示的なユーザインターフェース表示を示す図である。
【図４】[0015]企業データへのマルチテナントアクセスをホストする際の図１に示されたシステムの全体的な動作の一実施形態を示す流れ図である。
【図５】[0016]データアクセスおよびキャッシュ動作を行う際の図１に示されたシステムの動作の一実施形態を示す流れ図である。
【図５Ａ】[0017]テナントのサブセットがデータを共有するようにデータストアが区分けされるアーキテクチャを示す図である。
【図６】[0018]さまざまなアーキテクチャにおける図１のシステムの一実施形態を示すブロック図である。
【図７】[0019]モバイルデバイスのさまざまな実施形態を示す図である。
【図８】モバイルデバイスのさまざまな実施形態を示す図である。
【図９】モバイルデバイスのさまざまな実施形態を示す図である。
【図１０】モバイルデバイスのさまざまな実施形態を示す図である。
【図１１】[0020]１つの例示的なコンピューティング環境のブロック図である。
【発明を実施するための形態】
【００１１】
[0021]  図１は、企業データシステム１００の一実施形態のブロック図を示す。企業データシステム１００は、テナント１０２および１０４を示し、テナント１０２および１０４のそれぞれは、複数のクライアント（またはユーザ）１０６、１０８および１１０、１１２をそれぞれ有する。テナント１０２および１０４は、サーバレイヤ１１４にアクセスすることができ、サーバレイヤ１１４自体は、複数のサーバ１１６、１１８、および１２０を有する。図１に示されるように、テナント１０２および１０４は、ネットワーク１２２を通じてか、または矢印１２４および１２６にそれぞれ示されるように直接かのどちらかでサーバレイヤ１１４にアクセスすることができる。サーバレイヤ１１４は、データストア１２８に記憶されたデータにアクセスする（テナント１０２および１０４からの）要求を処理する。さらに、サーバレイヤ１１４は、キャッシュ１３０を用いてキャッシュを実装する。
【００１２】
[0022]  一実施形態において、システム１００は、企業データシステム１００で新しいテナントを設定するために管理者によって使用され得る管理者構成要素１３２も含む。新しいテナントのそれぞれは、（同じＥＲＰもしくはＣＲＭのインストールまたは他の企業アプリケーションのインストールなどの）同じシステムを使用する。加えて、一実施形態においては、サーバレイヤ１１４が、テナント１０２および１０４のそれぞれのためのセキュリティ規則にアクセスすることができる。セキュリティ規則は、ブロック１３４によって示される。したがって、サーバレイヤ１１４は、それぞれのテナント１０２および１０４についてセキュリティを実施することができる。一実施形態において、セキュリティ規則は、クライアントがテナント１０２または１０４にログインするときの認証手順を定義し、さらに、テナント毎の役割に基づくセキュリティを定義する。言うまでもなく、他の種類のセキュリティ規則またはセキュリティ手順も、実施され得る。
【００１３】
[0023]  図１は、少なくともそれぞれのテナント１０２および１０４がプロセッサ１３６および１３８を有することを示す。当然ながら、各クライアントがそのクライアント自体のプロセッサをやはり有する可能性があり、簡単にするために各テナントについて１つのプロセッサが示されていることに留意されたい。図１は、各サーバ１１６、１１８、および１２０がそのサーバ自体のプロセッサ１４０、１４２、および１４４を有する可能性があることも示す。サーバレイヤ１１４がサーバのそれぞれによってアクセスされる単一のプロセッサを有する可能性があるが、各サーバのための個々のプロセッサが例示のために示されることにも留意されたい。一実施形態において、プロセッサのそれぞれは、メモリおよびタイミング回路（図示せず）に関連するコンピュータプロセッサを含む。プロセッサは、システム１００の機能部分を形成し、システム１００の他の構成要素によって作動され、システム１００の他の構成要素の機能を助ける。
【００１４】
[0024]  データストア１２８は、単一のデータストアとして示されているが、複数の異なるデータストアとして実装することもでき、それらのデータストアはサーバレイヤ１１４に対してローカルに位置するか、またはサーバレイヤ１１４の遠隔に位置することができることにも、留意されたい。データストア１２８は、例示的に、システム１００のすべてのテナントによって使用される単一のデータベースインストールのためのストレージである。同様に、キャッシュ１３０は、単一のメモリ内キャッシュとして示されているが、複数の異なるメモリ内に実装されるなど、他の方法で実装される可能性もある。
【００１５】
[0025]  さらに、図１は、一実施形態において、各クライアント１０６〜１１２がそのクライアント自体の構成データ１４６、１４８、１５０、および１５２をそれぞれ有することを示す。構成データは、例示的に、各クライアントの役割と、さらに、各クライアントが属する特定のテナントとを識別する。テナントはそのテナントの複数のクライアントのための構成データの共通の組を有する可能性もあるが、単に例として、各クライアントについて別々の構成データ（または構成ファイル）が示されていることに留意されたい。
【００１６】
[0026]  システム１００の動作の詳細な説明が残りの図に関連して以下で与えられるが、残りの説明の理解を深めるために、ここで、概要が与えられる。システム１００は、テナント１０２および１０４が、単一のＥＲＰアプリケーション（または他の企業に関連するアプリケーション）を使用し、共通データベース１２８にそれらのテナントのデータのすべてを記憶することによって情報技術リソースをプールしたいが、それでもなお、それらのテナント自体の個人データが他のテナントによって閲覧またはアクセスされ得ないようにそれらの個人データの区分けを維持し続けたいと望むシナリオを例示的に示す。例えば、一例において、テナント１０２および１０４は、両方とも、（親持ち株会社の子会社などの）所有者が同じ企業である。その場合、各テナント１０２および１０４は、例示的に、そのテナント自体の管理および運営を握っており、そのテナントのデータを他のテナントから安全に区分けしておきたいと望む。その場合、クライアント１０６〜１０８は、テナント１０２によって使用される（例えば、ＥＲＰアプリケーションなどの）企業に関連するアプリケーションのユーザに対応し、クライアント１１０および１１２は、テナント１０４によって使用される同じアプリケーションのユーザに対応する。テナント１０２および１０４は、両方とも、企業に関連するアプリケーションの同じインストールを使用する。
【００１７】
[0027]  新しい組織が持ち株会社に追加されるとき（すなわち、新しいテナントがシステム１００に追加されるとき）、管理者１３３は、例示的に、管理者構成要素１３２を通じてサーバレイヤ１１４にアクセスする。構成要素１３２は、例示的に、管理者１３３に提供されるユーザインターフェース表示１３５を生成するユーザインターフェース構成要素を有する。ユーザインターフェース表示１３５は、例示的に、サーバレイヤ１１４によって実装され、システムのさまざまなテナントのさまざまなクライアントによって使用される企業に関連するアプリケーションを操作するためのユーザ入力を管理者１３３が与えることを可能にするユーザ入力機構を含む。ユーザ入力機構は、（マウスまたはトラックボールなどの）ポイントアンドクリックデバイス、キーボード（仮想またはハードウェア）、ディスプレイスクリーンがタッチ感知式スクリーンである場合のタッチジェスチャ、音声入力などからのユーザ入力を受け取ることができる。図２Ａは、管理者が新しいテナントを設定することを可能にするユーザインターフェース表示１７９の一実施形態を示す。管理者は、ユーザ入力機構１８１および１８３を使用して新しいテナントを識別し、設定（または生成）する。
【００１８】
[0028]  新しいテナントを設定するために、管理者１３３は、例示的に、新しいテナントのクライアントのうちの１つをセキュリティ管理者として識別する。例えば、テナント１０２が追加されるべき新しいテナントであると仮定する。管理者１３３は、クライアント１０６を、テナント１０２のセキュリティ管理者であるものとして識別する可能性がある。
【００１９】
[0029]  図２Ｂは、ユーザインターフェース表示１２５の別の実施形態を示す。表示１２５は、新しいテナントを生成するために管理者に対して表示され得る。表示１２５は、区分キー列１２７および名前列１２９を含む１組の列を含む。ユーザは、区分キー列１２７のセルを選択し、区分キーを入力し、列１２９の隣接するセルに対応する区分名を入力することができる。このようにして、管理者は、さまざまなクライアントのためのデータを区分けするためにデータストア１２８およびキャッシュ１３０で使用され得るテナント（すなわち、区分）を設定することができる。区分キー列１２７が３つの区分キー、「初期」、「Ｐ１」、および「Ｐ２」を含むことが、図２Ｂで見られ得る。対応する名前は、それぞれ、「初期パーティション」、「Ｐ１」、および「Ｐ２」である。
【００２０】
[0030]  図２Ｃは、管理者１３３が新しいテナントのクライアントをセキュリティ管理者として指定することを可能にするユーザインターフェース表示１８５の一実施形態である。管理者は、ユーザ入力機構１８７を用いてこれを行うことができる。
【００２１】
[0031]  これは、クライアント１０６がログインし、テナント１０２を用いてデータストア１２８の情報にアクセスする（クライアント１０８などの）他のユーザを設定することができるようにクライアント１０６にセキュリティ構成要素を配信する。セキュリティ管理者（ここではクライアント１０６）は、セキュリティ規則と、テナント１０２の各ユーザの役割とを識別することもできる。図２Ｄは、セキュリティ管理者（例えば、ここではクライアント１０６）がこれを行うことを可能にするユーザインターフェース表示１８９の一実施形態を示す。テナントのユーザまたはクライアントは、ユーザ入力機構１９１を用いて設定される可能性があり、セキュリティ規則は、入力機構１９３を用いて設定される可能性がある。セキュリティ規則の役割およびユーザが、図１の１３４で示された各テナントのためのセキュリティ規則として記憶される。クライアント１０８に対応する役割情報と、クライアント１０８がテナント１０２に属するという事実とが、そのクライアント１０８に対応する構成ファイル（または構成データ）１４８に記憶される。構成ファイルは、クライアントに自動的に配信されるか、またはセキュリティ管理者が図２Ｄの機構１９５などのユーザ入力機構を作動させるときに送信される可能性がある。
【００２２】
[0032]  図２Ｅは、管理者が所与のテナントでユーザを設定するために使用することができるユーザインターフェース表示１３１の別の実施形態を示す。管理者が１組のテキストボックスおよびチェックボックスにユーザについてのさまざまな情報を入力することを可能にするユーザタブ１３３を管理者が選択したことが、見られ得る。例えば、管理者は、テキストボックス１３５にユーザＩＤを入力し、ボックス１３７にユーザ名を入力し、ボックス１３９にネットワークドメインを入力し、ボックス１４１に別名（alias）を入力することができる。ユーザは、例示的に、ドロップダウンメニュー１４３を用いてアカウントの種類を定義し、別のドロップダウンメニュー１４５を用いてデフォルトの会社を選択することもできる。そのとき、管理者は、チェックボックス１４７にチェックをすることによってこのユーザを有効にすることができ、ユーザは、ボックス１４９にチェックをすることによってこのユーザをデフォルトの区分に割り振ることができる。
【００２３】
[0033]  管理者は、例示的に、ボックス１５１に情報を入力することによってこのユーザのためのプロファイルを確立することができる。管理者は、ボタン１５３を作動させることによってこのユーザに１つまたは複数の役割を割り振ることもできる。これは、例示的に、管理者によってこのユーザに対して選択され得るかまたは他の方法で割り振られ得る１組の役割１５５を提示する。同様に、ドロップダウンボックス１５７を作動させることによって、管理者は、選択された役割の権限を見直すことができ、ドロップダウンボックス１５９を作動させることによって、管理者は、選択された役割に割り振られた他のユーザを見直すことができる。当然ながら、図２Ｅに示されたユーザインターフェース表示１３１は、例示的であるに過ぎず、ユーザを識別し、役割を割り振る他の方法も、使用され得る。
【００２４】
[0034]  クライアント１０８は、データストア１２８の情報にアクセスするか、データストア１２８に情報を記憶したいと望むとき、まず、テナント１０２にログインする。構成データ１４８は、サーバレイヤ１１４に、クライアント１０８の役割と、クライアント１０８がどのテナントに属するかとを示す。したがって、例えば、クライアント１０８がデータストア１２８に記憶されるべき情報を提供するとき、サーバレイヤ１１４は、そのデータをテナントデータ１５４としてデータストア１２８に記憶する。さらに、サーバレイヤ１１４は、例示的に、テナントデータ１５４をテナント１０２から来たものとして識別する。したがって、サーバレイヤ１１４は、テナントデータ１５４、１５６、および１５８のすべてを所与のテナントに固有であるものとして識別する。クライアントがその後ログインし、データストア１２８のデータにアクセスすることを求めるとき、サーバレイヤ１１４は、その特定のクライアントのアクセスを、クライアントがログインで使ったテナント１０２または１０４に対応するデータ１５４、１５６、または１５８だけに制限する。例えば、クライアント１１０が後でクライアント１０４を通じてログインする場合、サーバレイヤ１１４は、構成データ１５０によって、クライアント１１０が所与の役割を有し、テナント１０４を通じてログインしたことを識別する。したがって、サーバレイヤ１１４は、テナント１０４におけるクライアント１１０の役割を考慮して、クライアント１１０のアクセスを、テナント１０４に対応するデータだけに制限する。
【００２５】
[0035]  言うまでもなく、システム１００が、それぞれの個々のテナント１０２〜１０４がそのテナント自体の別個のテナントデータ１５４〜１５６を有することを示すことにも留意されたい。しかし、テナント１０２〜１０４のサブセットは、テナント１０２〜１０４の別のサブセットとは区分されたそのサブセットのデータを欲する可能性があることがあり得る。その場合、それぞれのサブセットは、そのサブセットのデータをサーバレイヤ１１４によって区分けされており、したがって、そのデータは、そのサブセットの任意のテナントによってアクセスされ得る。しかし、そのデータは、そのサブセット外のいかなるテナントによってもアクセスされ得ない。データは、例示のみを目的として、図１においては（サブセット毎ではなく）テナント毎に区分けされているところが示されている。
【００２６】
[0036]  サーバレイヤ１１４がデータストア１２８と複数回やりとりをすることは望ましくない可能性があるので、サーバレイヤ１１４は、キャッシュ１３０を実装する。メモリ内キャッシュ１３０においてさえもデータの隔離を維持するために、サーバレイヤ１１４は、システム１００の各テナントについてキャッシュされたデータの別個のコピーを設ける。したがって、例として、キャッシュされたテナントデータ１６０は、テナント１０２のためのキャッシュされたメモリのコピーである。キャッシュされたテナントデータ１６２は、テナント１０４のためのキャッシュされたデータのコピーであり、キャッシュされたテナントデータ１６４は、システム１００の別のテナントのためのキャッシュされたデータのコピーである。サーバレイヤ１１４は、システム１００のそれぞれの個々のテナント１０２〜１０４に対応するキャッシュされたデータ１６２〜１６４の別個のコピーを保有する。
【００２７】
[0037]  一部の共有されたデータ１６６は、テナント１０２〜１０４のすべてに共通である可能性があることがあり得る。例えば、共有されたデータ１６６は、テナントのそれぞれの親持ち株会社についての全般的な情報を含む可能性がある。その場合、サーバレイヤ１１４は、共有されたデータ１６６を記憶し、したがって、その共有されたデータは、任意のテナント（またはテナントの任意のサブセット）によってアクセスされ得る。共有されたデータ１６６は任意選択であるので破線で示されており、別の実施形態においては、いかなるデータもテナントの間で共有されない。
【００２８】
[0038]  システム１００の動作のより詳細な考察が、以降で与えられる。図２〜１１が参照される。
【００２９】
[0039]  図２は、管理者１３３に新しいテナントを設定させる際のシステム１００の動作の一実施形態を示す流れ図である。図２は、管理者１３３が、まずシステムにログインし、管理者構成要素１３２が、管理者１３３が新しいテナントまたは区分を生成することを可能にするユーザ入力機構１８１、１８３、１２７、および１２９を有する（図２Ａの表示１７９または図２Ｂの表示１２５などの）ユーザインターフェース表示を生成する。これは、図２のブロック１７０によって示される。そのとき、管理者構成要素１３２は、新しいテナントを生成する管理者１３３から入力を受け取る。
【００３０】
[0040]  新しいテナントが生成されると、管理者構成要素１３２は、新しいテナントのための（例えば、テナント１０２のための）セキュリティ管理者として（クライアント１０６などの）別のユーザを割り振る管理者１３３からの入力を受け取るユーザ入力機構１８７を有する（図２Ｃの表示１８５などの）ユーザインターフェース表示を表示する。クライアント１０６をテナント１０２のためのセキュリティ管理者として割り振ることは、図２のブロック１７４によって示される。これは、サーバレイヤ１１４に、クライアント１０６が（ＥＲＰアプリケーションなどの）企業データシステムにログインし、新しいテナント１０２のユーザを（例えば、図２Ｄに示された表示１８９または図２Ｅの表示１３１を用いて）設定することを可能にさせる。これは、図２のブロック１７６によって示される。例えば、これは、セキュリティ管理者（例えば、クライアント１０６）がテナント１０２のユーザのそれぞれについて構成ファイル１４６〜１４８をロードすることを可能にする。構成ファイルをロードすることは、図２のブロック１７８によって示される。次いで、セキュリティ管理者は、テナント１０２のクライアントのそれぞれに役割を割り振ることもできる。これは、ブロック１８０によって示される。したがって、セキュリティ管理者は、さまざまな役割に基づくセキュリティ規則、認証規則、または他の種類のセキュリティ規則を企業データシステムに入力することができ、それらの規則は、サーバレイヤ１１４によって１３４でアクセスされ得る。当然ながら、セキュリティ管理者は、他のタスクも実行する可能性があり、これは、図２のブロック１８２によって示される。
【００３１】
[0041]  新しいテナント１０２が企業データシステムで設定されると、テナント１０２は、データストア１２８に企業データを記憶したいと望む可能性がある。それが行われる場合、データ転送を開始する特定のクライアント１０６〜１０８の構成データ１４６〜１４８も、データストア１２８にデータを記憶する要求に含められる。
【００３２】
[0042]  次いで、サーバレイヤ１１４は、新しいテナント１０２のデータをテナント１０２に属するテナントデータ１５４として識別することによってデータストア１２８に実装されたデータベースのそのデータを区分けする。このようにしてデータを区分けすることは、図２のブロック１８４によって示される。サーバレイヤ１１４は、さまざまな異なる方法でこれを行う可能性がある。例えば、サーバレイヤ１１４は、テナントデータ１５４の各テーブルを特定のテナントに属するものとして識別する区分識別子をそのテーブルに設ける可能性がある。テーブル毎にデータを区分けすることは、図２のブロック１８６によって示される。加えて、サーバレイヤ１１４は、各テーブルのそれぞれの個々の行のデータを区分けする可能性がある。すなわち、サーバレイヤは、テナント１０２に属するテーブルにおいて、テナント１０２に属するデータのあらゆる行を、その行のデータがテナント１０２に属することを区分識別子が示すようにしてストライピング（stripe）する可能性がある。行毎の区分けは、ブロック１８８によって示される。サーバレイヤ１１４は、他の方法で区分けする可能性もある。例えば、サーバレイヤ１１４は、テナント１０２によってのみアクセスされ得るスキーマに応じてテナントデータ１５４のテーブルのデータを構成する可能性がある。スキーマに基づく方法でデータを区分けすることは、ブロック１９０によって示される。サーバレイヤ１１４は、他の方法でデータを区分けする可能性もあり、これは、ブロック１９２によって示される。
【００３３】
[0043]  図３は、テナントデータ１５４および１５６がテナント１０２および１０４のためにデータベース１２８にどのように記憶されるかの例示的な例である１組のテーブル１９４および１９６の一実施形態を示す。図３の実施形態において、テーブル１９４は、テーブルレベル、行レベルである可能性がある区分識別子を有するか、またはスキーマに基づく可能性がある。区分識別子１９８は、データ２００をテナント１０２に属するものと識別する。同様に、テーブル１９６は、データ２０４をテナント１０４に属するものと識別する区分識別子２０２を有する。データを区分けする他の方法も、本明細書においてやはり想定される。
【００３４】
[0044]  図３Ａ〜３Ｃは、例として、テーブル内の区分けされたデータを示すユーザインターフェース表示を示す。図３Ａは、顧客テーブルに関して、属性タブ２１３が選択されるときに属性を表示するユーザインターフェース表示２１１を示す。さまざまな属性が示されており、四角２１５で縁取られた属性は、区分識別子に基づくのみでなく、会社毎でもデータが区分けされることを示す。したがって、データにアクセスするテナントは、関連する区分にのみ属すればよいのではなく、関連する会社にも属さなければならない。
【００３５】
[0045]  図３Ｂは、異なるテーブルのための属性を示すユーザインターフェース表示２１７を示す。ここで、四角２１５は、データが区分識別子のみに基づいて区分けされることを示す。すなわち、関連する区分に割り振られた任意のテナントが、示されたテーブルにアクセスし得る。したがって、（例えば）会社のサブセットが、同じデータにアクセスする可能性がある。
【００３６】
[0046]  図３Ｃは、さらに別のテーブルのための属性を示すユーザインターフェース表示２１９を示す。ユーザインターフェース表示２１９において四角２２１内に示されたテーブルの属性は、テーブルがシステムデータを含むことを示す。テーブルが会社毎でも、区分毎でも区分けされないことを示し、テーブルがフレームワークテーブルグループ（table group）に属することを示すことによって、四角２２３内の属性は、テーブルがシステムで共有される共有されたデータを含むことを示す。
【００３７】
[0047]  図４は、テナント１０２がデータストア１２８に対するデータ操作要求を実行することを可能にする際のシステム１００の動作の一実施形態を示す。一実施形態において、クライアント１０８は、テナント１０２にログインする。これは、図４のブロック２１０によって示される。クライアント１０８は、テナント１０２のセキュリティ管理者がクライアント１０８を設定するときに確立された認証手順を経ることによってこれを行う。認証は、図４のブロック２１２によって示される。そのとき、サーバレイヤ１１４は、クライアント１０８が属する特定のテナントを決定する。これは、多種多様な異なる方法で行われ得る。例えば、サーバレイヤ１１４は、クライアント１０８が属するテナントを確認することをクライアント１０８に求めるユーザインターフェース表示を提供する可能性がある。同様に、サーバレイヤ１１４は、クライアント１０８が属する特定のテナントを識別するためにクライアント１０８が書き込むアプリケーションプログラミングインターフェースを表示する可能性がある。これは、図４のブロック２１４によって示される。言うまでもなく、クライアント１０８は、さらに、サーバレイヤ１１４に構成データ１４８を自動的に提供する可能性があり、構成データは、例示的に、テナント１０２のためのクライアント１０８の役割のみでなく、クライアント１０８がシステムへのログインに使ったテナント１０２の識別情報も含む。これは、図４のブロック２１６によって示される。サーバレイヤ１１４は、クライアント１０８が属する特定のテナント１０２を識別する他の方法を使用する可能性もあり、これは、図４のブロック２１８によって示される。
【００３８】
[0048]  テナントを通じてログインすると、クライアント１０８は、データ操作要求を送り、構成データ１４８が、その要求と一緒に送信される。これは、図４のブロック２２０によって示される。データ操作要求は、データベース１２８のデータを操作するか、またはデータベース１２８にデータを追加する任意の種類の要求である可能性がある。例えば、データ操作要求は、図４のブロック２２２によって示されるように、データベース１２８に記憶されるべき新しいデータを生成する可能性がある。要求は、ブロック２２４によって示されるように、データストア１２８からデータを削除する要求である可能性がある。要求は、データストア１２８のデータを更新するデータ修正要求である可能性がある。これは、ブロック２２６によって示される。要求は、ブロック２２８によって示されるように、単純に、データストア１２８のデータを取り出し、読み取る要求である可能性もある。もちろん、データ操作要求は、任意の他の種類の要求である可能性もあり、これは、ブロック２３０によって示される。
【００３９】
[0049]  次いで、サーバレイヤ１１４は、要求とともに送られた構成データを読み取って、クライアント１０８が属する特定のテナント１０２を判定し、さらに、（例えば）テナント１０２でクライアント１０８が担う役割を判定する。次いで、サーバレイヤ１１４は、クライアント１０８のストア１２８のデータへのアクセスを、構成データ１４８で識別される特定のテナント１０２のためのデータに制限することによって、データ操作要求を処理する。また、サーバレイヤ１１４は、例示的に、テナント１０２のためのセキュリティ規則１３４にアクセスしてクライアント１０８の役割を識別し、それらの規則にしたがってセキュリティを実施する。対応するテナントデータのみを用いて要求を処理し、そのテナントのためのセキュリティを実施することは、図４のブロック２３２によって示される。
【００４０】
[0050]  システム１００の動作をより詳細に示すために、図５は、データストア１２８からデータを取得するためにクライアント１０８によって送られる特定のデータアクセス要求を示す流れ図である。やはり、クライアント１０８は、例示的に、認証または他の所望のログイン手順を用いてテナント１０２にログインする。これは、図５のブロック２４０によって示される。次いで、クライアント１０８は、データストア１２８のテナントデータのクエリを送る。これは、図５のブロック２４２によって示される。クエリは、制限されない場合、ストア１２８の他のテナントのためのテナントデータを包含する可能性がある。例えば、クエリは、１１月に生成されたすべてのセールスリードを探している場合、データベース１２８のすべてのテナントのためのテナントデータを包含する。クライアント１０８は、サーバレイヤ１１４にクエリと一緒に構成データ１４８を送信する。これは、図５のブロック２４４によって示される。サーバレイヤ１１４は、ブロック２４６によって示されるように、クエリおよび対応する構成データを受信する。サーバレイヤ１１４は、構成データ１４８を調べ、クエリがどのテナントから生じたか、およびテナントでクライアント１０８が担う役割を判定する。次いで、サーバレイヤ１１４は、テナント１０２に属し、テナント１０２のための役割に基づくセキュリティ（またはセキュリティ規則１３４によって定義された他のセキュリティ）を実施するデータのみを要求するために、構成データに基づいてクエリを修正する。これは、図５のブロック１４８によって示される。サーバレイヤ１１４は、クライアント１０８が属するテナント（この場合、クライアント１０２）に属するデータのみを包含するようにデータ要求を効果的に制限する。
【００４１】
[0051]  一実施形態において、サーバレイヤ１１４は、そのサーバレイヤ１１４がキャッシュ１３０によりデータ要求を処理することができるかどうかを判定する。そのようにする際に、サーバレイヤ１１４は、まず、この特定のテナント１０２のためのキャッシュされたテナントデータ１６０のコピーが実際に存在するかどうかを判定する。これは、図５のブロック２５０によって示される。存在しない場合、サーバレイヤ１１４は、ブロック２５２によって示されるように、テナント１０２のためのキャッシュのコピーを生成し、次いで、データストア１２８にアクセスして要求されたデータを取得する。これは、ブロック２５４によって示される。
【００４２】
[0052]  しかし、サーバレイヤ１１４は、ブロック２５０において、テナント１０２のためのキャッシュのコピーが存在すると判定する場合、要求されたデータに関してそのキャッシュされたテナントデータを調べる。これは、図５のブロック２５６によって示される。サーバレイヤ１１４は、キャッシュ１３０により要求を処理することができる場合、そのように処理する。しかし、サーバレイヤ１１４は、キャッシュ１３０により要求を処理することができない場合、データベース１２８のデータにやはりアクセスしなくてはならない。要求がキャッシュ１３０によって処理され得るかどうかを判定することは、図５のブロック２５８によって示される。
【００４３】
[0053]  どちらの場合も、サーバレイヤ１１４がキャッシュ１３０からデータを取得したか、またはデータストア１２８からデータを取得したかに関わらず、クエリに応答するデータが、テナント１０２のクライアント１０８に返される。これは、図５のブロック２６０によって示される。次いで、サーバレイヤ１１４は、任意の他の所望のキャッシュ動作を行う。例えば、（テナントのキャッシュのコピーにない）新しいデータがデータストア１２８から取り出された場合、サーバレイヤ１１４は、テナント１０２のためのキャッシュされたテナントデータにそのデータを追加する。言うまでもなく、サーバレイヤ１１４は、他の方法でテナントのキャッシュのコピーを更新する可能性もあり、キャッシュ１３０を維持するためのキャッシュ動作を行うことは、図５のブロック２６２によって示される。したがって、サーバレイヤ１１４は、そのサーバ１１４が（安全で区分された方法で）複数のテナントのためのデータを記憶することができるようにデータベース１２８を区分するだけでなく、そのサーバレイヤ１１４が同じことを行うことができるようにキャッシュ１３０を制御する。キャッシュされたデータのそれぞれのコピーは、所与のテナントに属するものとしてマークされ、他のテナントは、キャッシュされたデータのそのコピーにアクセスすることができない。キャッシュされたデータのそれぞれのコピーは、他のテナントのキャッシュされたデータとは別々に維持され、区分けされる。
【００４４】
[0054]  図５Ａは、テナントのサブセットが、まとめて、しかし他のテナントとは別に区分けされる別の実施形態を示す。図５Ａは、図１に示されたシステム１００と同様であるシステム１００を示し、同様の項目は、同様に番号を振られている。しかし、図５Ａのシステム１００は、テナント１０２および１０４が、例示的に、サブセット１６１としてグループにまとめられる２つの企業であることを示す。したがって、サブセット１６１のテナントは、互いのデータにアクセスすることができることを望むが、テナント１０５などのさらなるテナントのためのデータからそのデータを分け、隔離したいと望む。したがって、管理者は、両方のテナント１０２および１０４を同じ区分に割り振る。そのようにして、サーバレイヤ１１４は、両方のテナント１０２および１０４がデータ１６３のすべてにアクセスすることができるようにテナント１０２および１０４のために区分けされるそのデータ１６３を記憶する。しかし、データ１６３は、テナント１０５のための区分に割り振られるデータ１６５とは別々に区分けされる。したがって、テナント１０５は、データ１６３にアクセスすることができず、テナント１０２および１０４のサブセット１６１は、データ１６５にアクセスすることができない。
【００４５】
[0055]  一実施形態において、キャッシュ１３０は、データストア１２８と同じようにしてやはり別々に区分けされることに留意されたい。したがって、キャッシュ１３０は、テナント１０２および１０４のサブセット１６１のためのキャッシュされたデータの別個のコピーと、テナント１０５のためのキャッシュされたデータの別々に区分けされたコピーとを含む。したがって、キャッシュ１３０は、データストア１２８と同じようにして区分けされ、その結果、キャッシュ１３０に要求される任意のデータも、同じようにして区分けされる。
【００４６】
[0056]  本明細書において考察される企業データは、顧客の記録、注文、供給業者、リード、提案（proposal）、見積もり（quote）、販売データ、製品データ、位置データ、会社の財務およびマーケティングデータおよび戦略、個人データ、賃金または他の人材管理情報などの多種多様な企業データを含み得ることにも留意されたい。他の企業データまたは企業の記録も、使用され得る。
【００４７】
[0057]  図６は、システム１００がクラウドコンピューティングアーキテクチャ５００内に配置される点を除いて図１に示されたシステム１００のブロック図である。クラウドコンピューティングは、サービスを提供するシステムの物理的な位置または構成をエンドユーザが知っていることを必要としない計算、ソフトウェア、データアクセス、およびストレージサービスを提供する。さまざまな実施形態において、クラウドコンピューティングは、適切なプロトコルを用いてインターネットなどの広域ネットワーク上でサービスを提供する。例えば、クラウドコンピューティングプロバイダは、広域ネットワーク上でアプリケーションを提供し、それらのアプリケーションは、ウェブブラウザまたは任意の他のコンピューティング構成要素を通じてアクセスされ得る。システム１００のソフトウェアまたは構成要素および対応するデータは、遠隔の位置にあるサーバに記憶される可能性がある。クラウドコンピューティング環境の計算リソースは、遠隔のデータセンターの位置に集約される可能性があり、または分散される可能性がある。クラウドコンピューティングインフラストラクチャは、ユーザのための単一のアクセスポイント（point of access）に見えるとしても、共有されたデータセンターを通じてサービスを提供する可能性がある。したがって、本明細書において説明される構成要素および機能は、クラウドコンピューティングアーキテクチャを用いて遠隔の位置のサービスプロバイダから提供される可能性がある。代替的に、それらの構成要素および機能は、通常のサーバから提供される可能性があり、またはクライアントデバイスに直接もしくは他の方法でインストールされる可能性がある。
【００４８】
[0058]  説明は、パブリッククラウドコンピューティングとプライベートクラウドコンピューティングとの両方を含むように意図される。（パブリックとプライベートとの両方の）クラウドコンピューティングは、リソースの実質的にシームレスなプールを行い、基礎を成すハードウェアインフラストラクチャを管理し、構成する必要性を減らす。
【００４９】
[0059]  パブリッククラウドは、供給業者によって管理され、典型的には、同じインフラストラクチャを用いて複数の消費者をサポートする。また、パブリッククラウドは、プライベートクラウドとは対照的に、エンドユーザをハードウェアの管理から解放することができる。プライベートクラウドは、組織自体によって管理される可能性があり、インフラストラクチャは、典型的には、他の組織と共有されない。組織は、インストールおよび修理など、ハードウェアを引き続きある程度維持する。
【００５０】
[0060]  図６に示された実施形態において、一部の項目は、図１に示された項目と同様であり、同様に番号を振られている。図６は、特に、サーバレイヤ１１４、データストア１２８、キャッシュ１３０、およびセキュリティ規則１３４が（パブリック、プライベート、または一部がパブリックである一方、他がプライベートである組合せである可能性がある）クラウド５０２内に位置することを示す。したがって、テナント１０２のクライアント１０８（またはユーザ１０３）は、ユーザデバイス５０４を用いてクラウド５０２を通じてそれらのシステムにアクセスする。
【００５１】
[0061]  さらに、図６は、クラウドアーキテクチャの別の実施形態を示す。図６は、システム１００の一部の要素がクラウド５０２に配置される一方、他の要素はクラウド５０２に配置されないことも想定されることを示す。例として、データストア１２８は、クラウド５０２の外に配置され、クラウド５０２を通じてアクセスされ得る。別の実施形態においては、セキュリティ規則１３４も、クラウド５０２の外にある。それらの要素は、どこに位置するかに関わりなく、ネットワーク（広域ネットワークもしくはローカルエリアネットワークのどちらか）を通じてデバイス５０４によって直接アクセスされ得るか、サービスによって遠隔の場所でホストされ得るか、またはクラウドを通じてサービスとして提供されるかもしくはクラウドにある接続サービスによってアクセスされ得る。これらのアーキテクチャのすべては、本明細書において想定される。
【００５２】
[0062]  システム１００またはその一部は多種多様な異なるデバイスに配置することができることにも留意されたい。それらのデバイスの一部は、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、またはパームトップコンピュータ、セル電話、スマートフォン、マルチメディアプレーヤー、携帯情報端末などの他のモバイルデバイスを含む。
【００５３】
[0063]  図７は、本システム（またはその一部）が展開され得る、ユーザまたはクライアントのハンドヘルドデバイス１６として使用され得るハンドヘルドまたはモバイルコンピューティングデバイスの１つの例示的な実施形態の簡略化されたブロック図である。図８〜１０は、ハンドヘルドまたはモバイルデバイスの例である。
【００５４】
[0064]  図７は、（テナントもしくはクライアントもしくは他の構成要素などの）システム１００の構成要素を実行することができ、またはシステム１００とインタラクションし、またはその両方を行うクライアントデバイス１６の構成要素の全体的なブロック図を与える。デバイス１６においては、ハンドヘルドデバイスが他のコンピューティングデバイスと通信することを可能にし、一部の実施形態では、スキャニングすることによるなどして自動的に情報を受信するためのチャネルを提供する通信リンク１３が、設けられる。通信リンク１３の例は、赤外線ポートと、シリアル／ＵＳＢポートと、イーサネット（登録商標）ポートなどのケーブルネットワークポートと、ネットワークへのセルラアクセスを提供するために使用される無線サービスである汎用パケット無線サービス（GPRS）、ＬＴＥ、ＨＳＰＡ、ＨＳＰＡ＋、および他の３Ｇおよび４Ｇ無線プロトコル、１Ｘｒｔｔ、およびショートメッセージサービス、ならびにネットワークへのローカル無線接続を提供する８０２．１１および８０２．１１ｂ（Wi-Fi）プロトコル、およびＢｌｕｅｔｏｏｔｈ（登録商標）プロトコルを含む１つまたは複数の通信プロトコルによる通信を可能にする無線ネットワークポートとを含む。
【００５５】
[0065]  他の実施形態では、（システム１００のＥＲＰアプリケーションのような）アプリケーションまたはシステムは、セキュアデジタル（SD）カードインターフェース１５に接続される取り外し可能なＳＤカードに収容される。ＳＤカードインターフェース１５および通信リンク１３は、メモリ２１、および入力／出力（I/O）構成要素２３、ならびにクロック２５、およびロケーションシステム２７にも接続されるバス１９を通じて（図１のプロセッサ１３６または１３８をやはり具現化する可能性がある）プロセッサ１７と通信する。
【００５６】
[0066]  Ｉ／Ｏ構成要素２３は、一実施形態において、入力および出力動作を容易にするために設けられる。デバイス１６のさまざまな実施形態のためのＩ／Ｏ構成要素２３は、ボタン、タッチセンサ、マルチタッチセンサ、光学または映像センサ、音声センサ、タッチスクリーン、近接センサ、マイクロホン、チルトセンサ、および重力スイッチ（gravity switch）などの入力構成要素と、ディスプレイデバイス、スピーカ、および／またはプリンタポートなどの出力構成要素とを含み得る。他のＩ／Ｏ構成要素２３も、使用され得る。
【００５７】
[0067]  クロック２５は、例示的に、時間および日にちを出力するリアルタイムクロック構成要素を含む。さらに、クロック２５は、例示的に、プロセッサ１７のためのタイミング機能を提供する可能性がある。
【００５８】
[0068]  ロケーションシステム２７は、例示的に、デバイス１６の現在の地理的位置を出力する構成要素を含む。これは、例えば、全地球測位システム（GPS）受信機、ＬＯＲＡＮシステム、推測航法（dead reckoning）システム、セルラ三角測量システム、または他の測位システムを含み得る。さらに、ロケーションシステム２７は、例えば、所望の地図、ナビゲーション経路、および他の地理的機能を生成するマッピングソフトウェアまたはナビゲーションソフトウェアを含み得る。
【００５９】
[0069]  メモリ２１は、オペレーティングシステム２９、ネットワーク設定３１、アプリケーション３３、アプリケーション構成設定３５、データストア３７、通信ドライバ３９、および通信構成設定４１を記憶する。メモリ２１は、すべての種類の有形の揮発性および不揮発性コンピュータ可読メモリデバイスを含み得る。メモリ２１は、（以下で説明される）コンピュータストレージ媒体も含み得る。メモリ２１は、プロセッサ１７によって実行されるときに、プロセッサに、コンピュータによって実装される工程または機能を命令にしたがって実行させるコンピュータ可読命令を記憶する。システム１００、またはデータストア１２８もしくはキャッシュ１３０の項目は、例えば、メモリ２１に存在する可能性がある。同様に、デバイス１６は、さまざまな企業アプリケーションを実行するか、または企業システム１００の一部もしくはすべてを具現化することができるクライアント企業システム２４を有する可能性がある。プロセッサ１７は、他の構成要素の機能を助けるために他の構成要素によって作動される可能性もある。
【００６０】
[0070]  ネットワーク設定３１の例は、プロキシ情報、インターネット接続情報、およびマッピングなどの事柄を含む。アプリケーション構成設定３５は、アプリケーションを特定の企業またはユーザのために適合させる設定を含む。通信構成設定４１は、他のコンピュータとの通信のためのパラメータを与え、ＧＰＲＳパラメータ、ＳＭＳパラメータ、接続ユーザ名、およびパスワードなどの項目を含む。
【００６１】
[0071]  アプリケーション３３は、オペレーティングシステム２９の一部であるか、またはデバイス１６の外部からホストされる可能性もあるが、デバイス１６に既に記憶されたアプリケーションであるか、または使用中にインストールされるアプリケーションである可能性がある。
【００６２】
[0072]  図８は、デバイス１６がタブレットコンピュータ６００である一実施形態を示す。図８においては、ディスプレイスクリーン６０２に表示される（新しいテナントを生成するために使用される）ユーザインターフェース表示１７９を有するコンピュータ６００が、示される。スクリーン６０２は、タッチスクリーンである可能性があり（したがって、ユーザの指６０４のタッチジェスチャがアプリケーションとインタラクションするために使用される可能性があり）、またはペンもしくはスタイラスから入力を受け取るペン対応インターフェースである可能性がある。スクリーン６０２は、オンスクリーン仮想キーボードを使用する可能性もある。言うまでもなく、スクリーン６０２は、例えば、無線リンクまたはＵＳＢポートなどの好適な取り付け機構によってキーボードまたは他のユーザ入力デバイスに取り付けられる可能性もある。コンピュータ６００は、例示的に、音声入力も受け取る可能性がある。
【００６３】
[0073]  図９および１０は、使用され得るデバイス１６のさらなる例を与えるが、他のデバイス１６も使用され得る。図９においては、スマートフォンまたはモバイル電話４５が、デバイス１６として与えられる。電話４５は、電話番号をダイヤルするための１組のキーパッド４７、アプリケーションの画像を含む画像、アイコン、ウェブページ、写真、および映像を表示することができるディスプレイ４９、ならびにディスプレイ上に示される項目を選択するための制御ボタン５１を含む。電話は、汎用パケット無線サービス（GPRS）および１Ｘｒｔｔなどのセルラ電話信号と、ショートメッセージサービス（SMS）信号とを受信するためのアンテナ５３を含む。一部の実施形態において、電話４５は、セキュアデジタル（SD）カード５７を受けるＳＤカードスロット５５も含む。
【００６４】
[0074]  図１０のモバイルデバイスは、携帯情報端末（PDA）５９または（以降、ＰＤＡ５９と呼ばれる）マルチメディアプレーヤーもしくはタブレットコンピューティングデバイスなどである。ＰＤＡ５９は、スタイラスがスクリーン上に位置づけられるときにスタイラス６３（またはユーザの指などの他のポインタ）の位置を感知する電磁誘導式スクリーン６１を含む。これは、ユーザがスクリーン上の項目を選択し、強調表示し、移動させ、描画し、書くことを可能にする。ＰＤＡ５９は、ディスプレイ６１に触れることなく、ユーザがディスプレイ６１に表示されるメニューオプションまたは他の表示オプションをスクロールすることを可能にし、ユーザがアプリケーションを変更するかまたはユーザ入力機能を選択することを可能にするいくつかのユーザ入力キーまたは（ボタン６５などの）ボタンも含む。図示されていないが、ＰＤＡ５９は、他のコンピュータとの無線通信を可能にする内蔵アンテナおよび赤外線送信機／受信機と、他のコンピューティングデバイスとのハードウェア接続を可能にする接続ポートとを含み得る。そのようなハードウェア接続は、概して、シリアルまたはＵＳＢポートを通じて他のコンピュータに接続するクレードルによってなされる。したがって、これらの接続は、非ネットワーク接続である。一実施形態において、モバイルデバイス５９は、ＳＤカード６９を受けるＳＤカードスロット６７も含む。
【００６５】
[0075]  デバイス１６の他の形態があり得ることに留意されたい。
【００６６】
[0076]  図１１は、（例えば）システム１００が展開され得るコンピューティング環境の一実施形態である。図１１を参照すると、一部の実施形態を実装するための例示的なシステムは、コンピュータ８１０の形態の多目的コンピューティングデバイスを含む。コンピュータ８１０の構成要素は、（サーバまたはテナントのためのプロセッサを含み得る）処理ユニット８２０、システムメモリ８３０、およびシステムメモリを含むさまざまなシステム構成要素を処理ユニット８２０に接続するシステムバス８２１を含み得るがこれらに限定されない。システムバス８２１は、各種のバスアーキテクチャのいずれかを使用したメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含む数種のバス構造のいずれである可能性がある。限定ではなく例として、そのようなアーキテクチャは、業界標準アーキテクチャ（ISA）バス、マイクロチャネルアーキテクチャ（MCA）バス、拡張ＩＳＡ（EISA）バス、ビデオ電子装置規格化協会（VESA: Video Electronics Standards Association）ローカルバス、およびＭｅｚｚａｎｉｎｅバスとしても知られる周辺装置相互接続（PCI: Peripheral Component Interconnect）バスを含む。図１に関連して説明されたメモリおよびプログラムは、図１１の対応する部分に展開される可能性がある。
【００６７】
[0077]  通常、コンピュータ８１０は、さまざまなコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ８１０によってアクセスされる可能性があり、揮発性の媒体と不揮発性の媒体との両方、取り外し可能な媒体および取り外し不可能な媒体を含む任意の利用可能な媒体である可能性がある。限定でなく例として、コンピュータ可読媒体は、コンピュータストレージ媒体および通信媒体を含む可能性がある。コンピュータストレージ媒体は、変調されたデータ信号または搬送波とは異なり、変調されたデータ信号または搬送波を含まない。コンピュータストレージ媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための任意の方法または技術で実現された揮発性と不揮発性との両方の取り外し可能な媒体および取り外し不可能な媒体を含むハードウェアストレージ媒体を含む。コンピュータストレージ媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、もしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタルバーサタイルディスク（DVD）、もしくは他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、もしくは他の磁気ストレージデバイス、または所望の情報を記憶するために使用される可能性があり、コンピュータ８１０によってアクセスされる可能性がある任意の他の媒体を含むがこれらに限定されない。通常、通信媒体は、搬送機構でコンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを具現化し、任意の情報配信媒体を含む。用語「変調されたデータ信号」は、その信号の特徴のうちの１つまたは複数を、信号中に情報を符号化するような方法で設定または変更した信号を意味する。限定ではなく例として、通信媒体は、有線ネットワークまたは直接有線接続などの有線媒体、ならびに音響、ＲＦ、赤外線、および他の無線媒体などの無線媒体を含む。上記の媒体のうちの任意のものの組合せも、コンピュータ可読媒体の範囲に含まれるべきである。
【００６８】
[0078]  システムメモリ８３０は、読み出し専用メモリ（ROM）８３１およびランダムアクセスメモリ（RAM）８３２などの揮発性および／または不揮発性メモリの形態のコンピュータストレージ媒体を含む。起動中などにコンピュータ８１０内の要素間で情報を転送することに役立つ基礎的なルーチンを含む基本入出力システム８３３（BIOS）は、概してＲＯＭ８３１に記憶される。通常、ＲＡＭ８３２は、処理ユニット８２０によって直ちにアクセスすることができる、および／または処理ユニット８２０によって現在動作させられているデータおよび／またはプログラムモジュールを含む。限定ではなく例として、図１１は、オペレーティングシステム８３４、アプリケーションプログラム８３５、他のプログラムモジュール８３６、およびプログラムデータ８３７を示す。
【００６９】
[0079]  コンピュータ８１０は、他の取り外し可能な／取り外し不可能な揮発性／不揮発性コンピュータストレージ媒体をやはり含む可能性がある。単なる例として、図１１は、取り外し不可能な不揮発性磁気媒体からの読み出し、または当該媒体に対する書き込みを行うハードディスクドライブ８４１と、取り外し可能な不揮発性磁気ディスク８５２からの読み出し、または当該磁気ディスクに対する書き込みを行う磁気ディスクドライブ８５１と、ＣＤ  ＲＯＭまたは他の光媒体などの取り外し可能な不揮発性光ディスク８５６からの読み出し、または当該光ディスクに対する書き込みを行う光ディスクドライブ８５５とを示す。例示的な動作環境で使用され得る他の取り外し可能な／取り外し不可能な揮発性／不揮発性コンピュータストレージ媒体は、磁気テープカセット、フラッシュメモリカード、デジタルバーサタイルディスク、デジタルビデオテープ、固体ＲＡＭ、固体ＲＯＭなどを含むがこれらに限定されない。ハードディスクドライブ８４１は、概してインターフェース８４０などの取り外し不可能なメモリインターフェースを介してシステムバス８２１に接続され、磁気ディスクドライブ８５１および光ディスクドライブ８５５は、概してインターフェース８５０などの取り外し可能なメモリインターフェースによってシステムバス８２１に接続される。
【００７０】
[0080]  上記で考察され、図１１に示されたドライブおよびそれらのドライブに関連するコンピュータストレージ媒体は、コンピュータ８１０のためのコンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの記憶を行う。例えば、図１１において、ハードディスクドライブ８４１は、オペレーティングシステム８４４、アプリケーションプログラム８４５、他のプログラムモジュール８４６、およびプログラムデータ８４７を記憶するものとして示されている。これらの構成要素は、オペレーティングシステム８３４、アプリケーションプログラム８３５、他のプログラムモジュール８３６、およびプログラムデータ８３７と同じであるかまたは異なるかのどちらかである可能性があることに留意されたい。オペレーティングシステム８４４、アプリケーションプログラム８４５、他のプログラムモジュール８４６、およびプログラムデータ８４７は、少なくともそれらが異なるコピーであることを示すために、ここでは異なる番号を与えられる。
【００７１】
[0081]  ユーザは、キーボード８６２、マイクロホン８６３、およびマウス、トラックボール、またはタッチパッドなどのポインティングデバイス８６１などの入力デバイスを通じてコンピュータ８１０に命令および情報を入力することができる。他の入力デバイス（図示せず）は、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどを含む可能性がある。これらのおよび他の入力デバイスは、システムバスに結合されたユーザ入力インターフェース８６０を介して処理ユニット８２０に接続されることが多いが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（USB）などの他のインターフェースおよびバス構造によって接続される可能性がある。視覚ディスプレイ８９１または他の種類のディスプレイデバイスも、ビデオインターフェース８９０などのインターフェースを介してシステムバス８２１に接続される。モニタに加えて、コンピュータは、出力周辺機器インターフェース８９５を介して接続され得るスピーカ８９７およびプリンタ８９６などの他の周辺出力デバイスを含む可能性もある。
【００７２】
[0082]  コンピュータ８１０は、遠隔のコンピュータ８８０などの１つまたは複数の遠隔のコンピュータへの論理接続を使用したネットワーク化された環境で動作させられる。遠隔のコンピュータ８８０は、パーソナルコンピュータ、ハンドヘルドデバイス、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他のよくあるネットワークノードである可能性があり、概してコンピュータ８１０に関連して上で説明された要素の多くまたはすべてを含む。図８に示された論理接続は、ローカルエリアネットワーク（LAN）８７１および広域ネットワーク（WAN）８７３を含むが、他のネットワークを含む可能性もある。そのようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいて一般的である。
【００７３】
[0083]  ＬＡＮネットワーキング環境において使用される場合、コンピュータ８１０は、ネットワークインターフェースまたはアダプタ８７０を介してＬＡＮ８７１に接続される。ＷＡＮネットワーキング環境において使用される場合、概して、コンピュータ８１０は、モデム８７２、またはインターネットなどのＷＡＮ８７３を介して通信を確立するための他の手段を含む。内蔵または外付けである可能性があるモデム８７２は、ユーザ入力インターフェース８６０または他の適切な機構を介してシステムバス８２１に接続され得る。ネットワーク化された環境において、コンピュータ８１０に関連して示されたプログラムモジュール、またはそれらのモジュールの一部は、遠隔のメモリストレージデバイスに記憶され得る。限定ではなく例として、図１１は、遠隔のコンピュータ８８０に存在するものとして遠隔のアプリケーションプログラム８８５を示す。図示されたネットワーク接続は例示的であり、コンピュータ間で通信リンクを確立する他の手段が使用され得ることが理解されるであろう。
【００７４】
[0084]  対象が構造的特徴および／または方法の動作に特有の言葉で説明されたが、添付の特許請求の範囲で定義された対象は上記で説明された特定の特徴または動作に必ずしも限定されないことを理解されたい。むしろ、上述の特定の特徴および動作は特許請求の範囲を実施する例示的な形態として開示される。
【図１】
0006633913.tif 000002
【図２】
0006633913.tif 000003
【図２Ａ】
0006633913.tif 000004
【図２Ｂ】
0006633913.tif 000005
【図２Ｃ】
0006633913.tif 000006
【図２Ｄ】
0006633913.tif 000007
【図２Ｅ】
0006633913.tif 000008
【図３】
0006633913.tif 000009
【図３Ａ】
0006633913.tif 000010
【図３Ｂ】
0006633913.tif 000011
【図３Ｃ】
0006633913.tif 000012
【図４】
0006633913.tif 000013
【図５】
0006633913.tif 000014
【図５Ａ】
0006633913.tif 000015
【図６】
0006633913.tif 000016
【図７】
0006633913.tif 000017
【図８】
0006633913.tif 000018
【図９】
0006633913.tif 000019
【図１０】
0006633913.tif 000020
【図１１】
0006633913.tif 000021