(57)【特許請求の範囲】
【請求項１】
方法であって、
アプリケーション開発フレームワークのユーザによってなされた第１のジェスチャをコンピュータにおいて受取るステップを含み、前記第１のジェスチャは、前記アプリケーション開発フレームワークで開発されるモバイルアプリケーションのユーザインターフェイスにデータソースをバインドするものであり、前記方法はさらに、
前記データソースにおいて利用可能な１セットのデータポイントを前記コンピュータによって決定するステップと、
前記ユーザインターフェイスによって提供される情報に基づいて前記ユーザインターフェイスのうち１セットのデータ・バインド可能なエリアを前記コンピュータによって決定するステップと、
前記アプリケーション開発フレームワークの前記ユーザによってなされた第２のジェスチャを前記コンピュータにおいて受取るステップとを含み、前記第２のジェスチャは、前記データソースにおいて利用可能なデータポイントを前記ユーザインターフェイスのデータ・バインド可能なエリアにリンクするものであり、
前記方法はさらに、
前記第２のジェスチャに従って前記データポイントによって影響される前記データ・バインド可能なエリアの決定に基づいて前記ユーザインタフェースの前記データ・バインド可能なエリアを前記コンピュータによってハイライトするステップと、
前記データソースにおいて利用可能な前記データポイントを参照して前記データ・バインド可能なエリアの予め定められた表現を、前記コンピュータによって修正するステップを含む、方法。
【請求項２】
前記アプリケーション開発フレームワークの前記ユーザによってなされた前記第１のジェスチャを前記コンピュータにおいて受取るステップは、前記データソースの視覚的表現をサービスのカタログから前記ユーザインターフェイスの視覚的表現上にドラッグする前記ユーザを示す情報を受取るステップを含む、請求項１に記載の方法。
【請求項３】
前記データソースにおいて利用可能な前記１セットのデータポイントを前記コンピュータによって決定するステップは、ＲＥＳＴまたはＳＯＡＰ定義にアクセスするステップを含む、請求項１または２に記載の方法。
【請求項４】
前記データソースにおいて利用可能な前記１セットのデータポイントを前記コンピュータによって決定するステップは、ハーベスタから情報を受取るステップを含み、前記ハーベスタは、デプロイされたサービスをイントロスペクションし、１つ以上のクラウドベースのプロジェクトにおいて発見されたサービスを表現するＡＰＩアセットを作成する、請求項１または２に記載の方法。
【請求項５】
前記ユーザインターフェイスによって提供される前記情報に基づいて前記ユーザインターフェイスのうち前記１セットのデータ・バインド可能なエリアを前記コンピュータによって決定するステップは、
前記ユーザインターフェイスに関連付けられたテンプレートを識別するステップと、
前記テンプレートに基づいて、前記１セットのデータ・バインド可能なエリアに対応する１セットのユーザインターフェイス要素を決定するステップとを含む、請求項１から４のいずれかに記載の方法。
【請求項６】
前記アプリケーション開発フレームワークの前記ユーザによってなされた前記第２のジェスチャを前記コンピュータにおいて受取るステップは、前記データソースにおいて利用可能な前記データポイントの視覚的表現を、前記データソースにおいて利用可能な前記１セットのデータポイントの視覚的表現から、前記データ・バインド可能なエリアの視覚的表現上にドラッグする前記ユーザを示す情報を受取るステップを含む、請求項１から５のいずれかに記載の方法。
【請求項７】
前記データソースにおいて利用可能な前記データポイントを参照して前記データ・バインド可能なエリアの前記予め定められた表現を前記コンピュータによって修正するステップは、前記データソースにおいて利用可能な前記データポイントを参照して、前記ユーザインターフェイスをプレビューするときに用いられる第１のデータについての参照を更新するステップを含む、請求項１から６のいずれかに記載の方法。
【請求項８】
前記データソースにデータを要求するために必要な１セットのパラメータを前記コンピュータによって決定するステップと、
前記ユーザインターフェイスによって提供される前記情報に基づいて１セットのパラメータ・ソースを前記コンピュータによって決定するステップと、
前記アプリケーション開発フレームワークの前記ユーザによってなされた第３のジェスチャを前記コンピュータにおいて受取るステップとを含み、前記第３のジェスチャは、パラメータをパラメータ・ソースにリンクするものである、請求項１から７のいずれかに記載の方法。
【請求項９】
コンピュータ読取り可能プログラムであって、前記コンピュータ読取り可能プログラムは、コンピュータのプロセッサによって実行されると、前記プロセッサに、
アプリケーション開発フレームワークのユーザによってなされた第１のジェスチャを受取らせ、前記第１のジェスチャは、前記アプリケーション開発フレームワークで開発されるモバイルアプリケーションのユーザインターフェイスにデータソースをバインドするものであり、前記プロセッサにさらに、
前記データソースにおいて利用可能な１セットのデータポイントを決定させ、
前記ユーザインターフェイスによって提供される情報に基づいて前記ユーザインターフェイスのうち１セットのデータ・バインド可能なエリアを決定させ、
前記アプリケーション開発フレームワークの前記ユーザによってなされた第２のジェスチャを受取らせ、前記第２のジェスチャは、前記データソースにおいて利用可能なデータポイントを前記ユーザインターフェイスのデータ・バインド可能なエリアにリンクするものであり、
前記プロセッサにさらに、
前記第２のジェスチャに従って前記データポイントによって影響される前記データ・バインド可能なエリアの決定に基づいて前記ユーザインタフェースの前記データ・バインド可能なエリアをハイライトさせ、
前記データソースにおいて利用可能な前記データポイントを参照して前記データ・バインド可能なエリアの予め定められた表現を修正させる、コンピュータ読取り可能プログラム。
【請求項１０】
システムであって、
ハードウェアプロセッサと、
１セットの命令を記憶するメモリとを含み、前記１セットの命令は、前記プロセッサによって実行されると、前記プロセッサに、
アプリケーション開発フレームワークのユーザによってなされた第１のジェスチャを受取らせ、前記第１のジェスチャは、前記アプリケーション開発フレームワークで開発されるモバイルアプリケーションのユーザインターフェイスにデータソースをバインドするものであり、前記プロセッサにさらに、
前記データソースにおいて利用可能な１セットのデータポイントを決定させ、
前記ユーザインターフェイスによって提供される情報に基づいて前記ユーザインターフェイスのうち１セットのデータ・バインド可能なエリアを決定させ、
前記アプリケーション開発フレームワークの前記ユーザによってなされた第２のジェスチャを受取らせ、前記第２のジェスチャは、前記データソースにおいて利用可能なデータポイントを前記ユーザインターフェイスのデータ・バインド可能なエリアにリンクするものであり、
前記プロセッサにさらに、
前記第２のジェスチャに従って前記データポイントによって影響される前記データ・バインド可能なエリアの決定に基づいて前記ユーザインタフェースの前記データ・バインド可能なエリアをハイライトさせ、
前記データソースにおいて利用可能な前記データポイントを参照して前記データ・バインド可能なエリアの予め定められた表現を修正させる、システム。
【請求項１１】
前記アプリケーション開発フレームワークの前記ユーザによってなされた前記第１のジェスチャを受取るために、前記プロセッサに、前記データソースの視覚的表現をサービスのカタログから前記ユーザインターフェイスの視覚的表現上にドラッグする前記ユーザを示す情報を受取らせる、請求項１０に記載のシステム。
【請求項１２】
前記データソースにおいて利用可能な前記１セットのデータポイントを決定するために、前記プロセッサに、ＲＥＳＴまたはＳＯＡＰ定義にアクセスさせる、請求項１０または１１に記載のシステム。
【請求項１３】
前記データソースにおいて利用可能な前記１セットのデータポイントを決定するために、前記プロセッサに、ハーベスタからの情報を受取らせ、前記ハーベスタは、デプロイされたサービスをイントロスペクションし、１つ以上のクラウドベースのプロジェクトにおいて発見されたサービスを表現するＡＰＩアセットを作成する、請求項１０から１２のいずれかに記載のシステム。
【請求項１４】
前記ユーザインターフェイスによって提供される前記情報に基づいて前記ユーザインターフェイスのうち前記１セットのデータ・バインド可能なエリアを決定するために、前記プロセッサに、
前記ユーザインターフェイスに関連付けられたテンプレートを識別させ、
前記テンプレートに基づいて、前記１セットのデータ・バインド可能なエリアに対応する１セットのユーザインターフェイス要素を決定させる、請求項１０から１３のいずれかに記載のシステム。
【請求項１５】
前記アプリケーション開発フレームワークの前記ユーザによってなされた前記第２のジェスチャを受取るために、前記プロセッサに、前記データソースにおいて利用可能な前記データポイントの視覚的表現を、前記データソースにおいて利用可能な前記１セットのデータポイントの視覚的表現から前記データ・バインド可能なエリアの視覚的表現上にドラッグする前記ユーザを示す情報を受取らせる、請求項１０から１４のいずれかに記載のシステム。
【請求項１６】
前記データソースにおいて利用可能な前記データポイントを参照して前記データ・バインド可能なエリアの前記予め定められた表現を修正するために、前記プロセッサに、前記データソースにおいて利用可能な前記データポイントを参照して、前記ユーザインターフェイスをプレビューするときに用いられる第１のデータについての参照を更新させる、請求項１０から１５のいずれかに記載のシステム。
【請求項１７】
前記プロセッサにさらに、
前記データソースにデータを要求するために必要な１セットのパラメータを決定させ、
前記ユーザインターフェイスによって提供される前記情報に基づいて１セットのパラメータ・ソースを決定させ、
前記アプリケーション開発フレームワークの前記ユーザによってなされた第３のジェスチャを受取らせ、前記第３のジェスチャは、パラメータをパラメータ・ソースにリンクするものである、請求項１０から１６のいずれかに記載のシステム。
【請求項１８】
プロセッサによって実行されると、当該プロセッサに請求項１〜８のいずれか１項に記載の方法を実行させる、コンピュータ読取可能プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
著作権表示
この特許文献の開示の一部は、著作権保護の対象となる題材を含んでいる。著作権の所有者は、特許商標庁の包袋または記録に掲載されるように特許文献または特許情報開示を誰でも複製できることに対して異議はないが、その他の点ではすべての如何なる（著作またはマスクワークの）権利をも保有する。
【０００２】
関連出願の相互参照
本願は、「モバイルアプリケーションのための効率的および直観的なデータ・バインディング（EFFICIENT AND INTUITIVE DATABINDING FOR MOBILE APPLICATIONS）」と題され２０１４年９月２６日に提出された米国仮特許出願第６２／０５５，９８８号と、「モバイルアプリケーションのための効率的および直観的なデータ・バインディング（EFFICIENT AND INTUITIVE DATABINDING FOR MOBILE APPLICATIONS）」と題され２０１５年９月２５日に提出された米国特許出願第１４／８６５，８４２号とについての優先権および利点を主張するものであって、いずれの添付の文書も含めそれらの開示全体があらゆる目的のために引用によりここに援用されている。
【０００３】
発明の分野
実施形態は、概して、アプリケーション開発システムに向けられ、特に、モバイルアプリケーションのための効率的および直観的なデータ・バインディングを提供するモバイルアプリケーション開発システムに向けられている。
【背景技術】
【０００４】
発明の背景
アプリケーションは、ソフトウェアプログラムを指しており、実行されると、特定の所望のタスクを実行する。一般に、いくつかのアプリケーションは、関連技術において周知であるように、オペレーティングシステム、（たとえばＪａｖａ（登録商標）プログラミング言語をサポートする）仮想マシン、デバイスドライバなどのうち１つ以上を含むランタイム環境において実行される。
【０００５】
開発者は、所望のアプリケーションを実装／開発するためのアプリケーション開発フレームワーク（Application Development Framework：ＡＤＦ）（それ自体がアプリケーションである）を用いることができる。ＡＤＦは、アプリケーションの開発の際に直接的／間接的に用いることができる１セットの予め定義されたコード／データモジュールを提供する。ＡＤＦはまた、総合開発環境（integrated development environment：ＩＤＥ）、コードジェネレータ、デバッガなどのツールを提供することもでき、これにより、開発者がアプリケーションの所望の論理をより高速／より単純に符号化／実現することが容易になる。
【０００６】
このように、ＡＤＦは、再使用可能なコンポーネントおよび総合開発環境を提供することによってアプリケーションの開発を単純にすることができ、アプリケーション開発者がこれを用いることにより、たとえば、所望のタスクを実行するようにコンポーネントを選択し、選択されたコンポーネントの外観、挙動および相互作用を定義することによって、ユーザインターフェイスおよびアプリケーション論理を定義することができる。いくつかのＡＤＦは、疎結合や、より容易なアプリケーションの開発およびメンテナンスを促進するモデル・ビュー・コントローラ設計パターンに基づいている。オラクルアプリケーション開発フレームワークは、この設計パターンを利用するＡＤＦの一例である。
【０００７】
このため、以前よりもさらに、ユビキタスのモバイルサービスおよび無線接続により、顧客／消費者にとって、さまざま個人的要望および業務上の要望のためにモバイルデバイスアプリケーションが必要となる。このような要求を満たして克服するために、非開発者によるモバイルアプリケーションの開発を単純化かつ促進するようなモバイルアプリケーション開発プラットフォーム／フレームワークに対する要望がますます増加している。同時に、高度なアプリケーション特徴をモバイルアプリケーションに容易に組込むことを可能にして、ビジネスセキュリティ基準が損なわれるのを確実に防止することが必要とされている。
【０００８】
したがって、モバイルアプリケーションのためのデータ・バインディングに関する問題（そのうちのいくつかがこの明細書中に記載され得る）を解決することが所望されている。加えて、モバイルアプリケーションに関する欠点（そのうちのいくつかがこの明細書中に記載され得る）を減らすことが所望されている。
【発明の概要】
【課題を解決するための手段】
【０００９】
発明の簡単な説明
この開示の以下の部分は、少なくとも、主題の基本的な理解を与える目的で、この開示内で見出される１つ以上の技術革新、実施形態および／または例についての簡略化された概要を提示する。この概要は、いずれかの特定の実施形態または例についての広汎な概略を提供することを企図するものではない。加えて、この概要は、実施形態もしくは例の主要／重要な要素を識別するように、または、この開示の主題の範囲を定めるように、意図されたものではない。したがって、この概要の目的は、後に提示されるさらなる詳細な説明の序文として、この開示内で見出されるいくつかの技術革新、実施形態および／または例を簡略的に提示することであり得る。
【００１０】
エンドユーザが、視覚的アフォーダンスによりバックエンド・サービスに機能コンポーネントを直観的にデータ・バインドすることを可能にするためのシステムおよび方法が提供される。各々のＵＩコンポーネントは、バックエンド・サービスのデータから得られる個々のプロパティに対して、ＵＩのうちどのセクションを、独立してデータ・バインドすることができるかを知らせることができる。ユーザがＵＩコンポーネントをデータ・バインドすることを所望する場合、ＵＩのうちその時点でデータ・バインドされ得るセクションを変換して、その特定のセクションの機能を記述する関連テキストを示す。ユーザがバインドできるすべての可能なデータからなるデータ・バインディング・インターフェイスと、視覚的プレビューにおけるスロットにマッピングする視覚的なスロットとが、ユーザに提示され得る。コンポーネントをデータ・バインドするために、ユーザは、特定のデータを有効リストからドラッグ・アンド・ドロップし、そのデータが適用されることが所望されているスロットにドロップすることができる。
【００１１】
この開示の主題の性質および同等例のさらなる理解（さらには、提供される如何なる本質的または明白な利点および改善）が、この開示の残りの部分、添付の図面および添付の特許請求の範囲を参照することによって、上述の段落部分の記載に加えて理解されるはずである。
【００１２】
図面の簡単な説明
この開示内で見出されたこれらの技術革新、実施形態および／または例を合理的に記載および例示するために、添付の１つ以上の図面が参照され得る。添付の１つ以上の図面を説明するために用いられる追加の詳細または例は、主張される発明のうちのいずれかの範囲、ここに記載されている実施形態および／もしくは例のいずれか、または、この開示内に提示されているいずれかの技術革新の現在理解されているベストモード、に限定されるものと見なされるべきではない。
【図面の簡単な説明】
【００１３】
【図１】本発明の一実施形態に従った、モバイルクラウドサービスを利用するアプリケーションを開発するためのシステムのブロック図である。
【図２】本発明のいくつかの実施形態に従った、モバイルコンピューティングデバイスとエンタープライズコンピュータシステムとの間の通信を容易にするコンピューティング環境を示すブロック図である。
【図３】本発明の一実施形態に従ったモバイルアプリケーションのスプリングボードを示す図である。
【図３Ａ】本発明の一実施形態に従ったモバイルアプリケーションユーザインターフェイスを示す図である。
【図３Ｂ】本発明の一実施形態に従ったモバイルアプリケーションユーザインターフェイスを示す図である。
【図４】本発明の実施形態に従ったモバイルアプリケーションフレームワークのランタイムアーキテクチャを示すブロック図である。
【図５】本発明の実施形態に従ったモバイルクラウドインフラストラクチャにおけるモバイルアプリケーションを開発するためのシステムを示すブロック図である。
【図６】本発明の実施形態に従ったモバイルアプリケーションを構築するためのシステムにおけるネットワークコンポーネントを示すブロック図である。
【図７】本発明の実施形態に従ったモバイルセキュリティ・スーツ・コンポーネントを示すブロック図である。
【図８】一実施形態において図１のシステム環境のクラウドインフラストラクチャシステムのモバイルクラウドサービスを使用するアプリケーションを作成するためにアプリケーション開発フレームワークに含まれ得るモバイルアプリケーション開発ポータルを示す図である。
【図９】本発明の実施形態に従ったモバイルアプリケーション開発のための方法を示すフロー図である。
【図１０】一実施形態におけるモバイルアプリケーション開発ポータルのアプリケーション定義ウィザードによって提示され得る１つ以上のユーザインターフェイスを示す図である。
【図１１】一実施形態におけるモバイルアプリケーション開発ポータルのアプリケーション定義ウィザードによって提示され得る１つ以上のユーザインターフェイスを示す図である。
【図１２】一実施形態におけるモバイルアプリケーション開発ポータルのアプリケーション定義ウィザードによって提示され得る１つ以上のユーザインターフェイスを示す図である。
【図１３】一実施形態におけるモバイルアプリケーション開発ポータルのアプリケーション定義ウィザードによって提示され得る１つ以上のユーザインターフェイスを示す図である。
【図１４Ａ】一実施形態におけるモバイルアプリケーション開発ポータルのアプリケーション定義ウィザードによって提示され得る１つ以上のユーザインターフェイスを示す図である。
【図１４Ｂ】一実施形態におけるモバイルアプリケーション開発ポータルのアプリケーション定義ウィザードによって提示され得る１つ以上のユーザインターフェイスを示す図である。
【図１５Ａ】一実施形態における新しいモバイルアプリケーションの第１の画面を定義する１セットの画面タイプを開発者に与えるユーザインターフェイスを示す図である。
【図１５Ｂ】一実施形態における新しいモバイルアプリケーションの第１の画面を定義する１セットの画面タイプを開発者に与えるユーザインターフェイスを示す図である。
【図１６Ａ】一実施形態における、予め選択された画面のタイプに特有の１セットのユーザインターフェイス要素を開発者に与えるユーザインターフェイスを示す図である。
【図１６Ｂ】一実施形態における、予め選択された画面のタイプに特有の１セットのユーザインターフェイス要素を開発者に与えるユーザインターフェイスを示す図である。
【図１７Ａ】一実施形態における、予め選択された画面のタイプに特有の１セットの設計を開発者に与えるユーザインターフェイスを示す図である。
【図１７Ｂ】一実施形態における、予め選択された画面のタイプに特有の１セットの設計を開発者に与えるユーザインターフェイスを示す図である。
【図１８】一実施形態における、新しいアプリケーションの詳細を完成させるために開発者に１つ以上のオプションを与えるユーザインターフェイスを示す図である。
【図１９】一実施形態における、使用可能なコンポーネントのカタログを提供するユーザインターフェイスを示す図である。
【図２０】一実施形態における、１つ以上のジェスチャを用いて、開発者が画面にコンポーネントを追加することができるユーザインターフェイスを示す図である。
【図２１】一実施形態における、開発者が画面にマップコンポーネントを追加した後のユーザインターフェイスを示す図である。
【図２２】一実施形態における、サービスのカタログを提供するユーザインターフェイスを示す図である。
【図２３】一実施形態における、選択されたビジネスオブジェクトに基づいて開発者がＵＩモジュールを追加／作成することができるユーザインターフェイスを示す図である。
【図２４】一実施形態における、開発者がＵＩモジュールを追加した後のユーザインターフェイスを示す図である。
【図２５】本発明の実施形態に従った、モバイルアプリケーションのユーザインターフェイスをデータ・バインドするための方法を示すフロー図である。
【図２６】一実施形態における、データ・バインディングを実行した後のユーザインターフェイスを示す図である。
【図２７】一実施形態における、デプロイメントのためのモバイルアプリケーションを構成するためのユーザインターフェイスを示す図である。
【図２８】一実施形態における、モバイルアプリケーションがデプロイメントのために利用可能になった後のユーザインターフェイスを示す図である。
【図２９】一実施形態における、モバイルアプリケーションがデプロイメントのために利用可能になった後のユーザインターフェイスを示す図である。
【図３０】一実施形態における、モバイルアプリケーションがデプロイメントのために利用可能になった後のユーザインターフェイスを示す図である。
【図３１】実施形態のうちの１つを実現するための分散型システムを示す簡略図である。
【図３２】本発明のさまざまな実施形態が実現され得る例示的なコンピュータシステムを示す図である。
【発明を実施するための形態】
【００１４】
発明の詳細な説明
以下の記載においては、説明の目的で、特定の詳細が、発明の実施形態についての充分な理解を与えるために述べられている。しかしながら、さまざまな実施形態がこれらの特定の詳細なしでも実施され得ることが明らかになるだろう。たとえば、これらの実施形態の詳細を不必要に曖昧にすることを避けるために、回路、システム、ネットワーク、プロセスおよび他のコンポーネントがブロック図においてコンポーネントとして図示され得る。他の場合においては、周知の回路、プロセス、アルゴリズム、構造および技術が、実施形態を不明瞭にするのを避けるために不必要な詳細なしで図示され得る。図面および記載は、限定するように意図されたものではない。むしろ、例示的な実施形態の以下の記載は、具体的な実施形態を実現するために、当業者に実施可能な記載を提供するだろう。添付の特許請求の範囲に記載されている本発明の精神および範囲から逸脱することなく、要素の機能および配置に対してさまざまな変更が実施され得ることが理解されるはずである。
【００１５】
さらに、個々の実施形態が、フローチャート、フロー図、データフロー図、構造図またはブロック図として示されるプロセスとして記載され得ることが注記される。フローチャートは動作を連続的なプロセスとして記載するかもしれないが、動作の多くは並列または同時に実行され得る。加えて、動作の順序は再構成されてもよい。プロセスは、その動作が完了されるときに終結されるが、図に含まれない追加のステップを含み得る。プロセスは、方法、関数、手順、サブルーチン、サブプログラムなどに対応し得る。プロセスが関数に対応する場合、その終了は、その関数が呼出し関数または主関数に戻ることに対応し得る。
【００１６】
「機械読取り可能媒体」または「コンピュータ読取り可能媒体」という語は、命令および／またはデータを記憶するか、含むか、または担持することができるポータブルまたは非ポータブルの記憶装置、光記憶装置、無線チャネル、およびさまざまな他の媒体を含むが、それらに限定はされない。コードセグメントまたは機械実行可能命令は手順、機能、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または命令、データ構造もしくはプログラムステートメントのいずれかの組合せを表現し得る。コードセグメントは、情報、データ、引数、パラメータ、またはメモリコンテンツを渡す、および／または受取ることによって、別のコードセグメントまたはハードウェア回路に結合されてもよい。情報、引数、パラメータ、データなどは、メモリ共有、メッセージ受渡し、トークン受渡し、ネットワーク伝送などを含む任意の好適な手段を介して渡されるか、転送されるか、または送信されてもよい。
【００１７】
さらに、実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組合せによって実現されてもよい。ソフトウェア、ファームウェア、ミドルウェアまたはマイクロコードにおいて実現される場合には、必要なタスクを実行するプログラムコードまたはコードセグメントを機械読取り可能またはコンピュータ読取り可能媒体に記憶してもよい。１つ以上のプロセッサは必要なタスクを実行し得る。
【００１８】
図面のうちのいくつかにおいて示されるシステムは、さまざまな構成において提供され得る。いくつかの実施形態においては、当該複数のシステムは、１つのシステムの１つ以上のコンポーネントがクラウドコンピューティングシステムにおいて１つ以上のネットワークを介して分散されている分散型システムとして構成されてもよい。さらなる実施形態においては、当該複数のシステムは、１つのシステムの１つ以上のコンポーネントが単一の構造またはパッケージに組込まれている単一のシステムとして構成されてもよい。
【００１９】
導入
アプリケーションは、ソフトウェアプログラムを指しており、その実行時に、特定の所望のタスクを実行する。一般に、いくつかのアプリケーションは、１つ以上のオペレーティングシステム（operating system：「ＯＳ」）、仮想マシン（たとえばＪａｖａプログラミング言語をサポートする）、デバイスドライバなどを含むランタイム環境において実行される。開発者は、しばしば、所望のアプリケーションを実現／開発するためのアプリケーション開発フレームワーク（Application Development Framework：「ＡＤＦ」）（それ自体がアプリケーションである）を用いる。ＡＤＦは、アプリケーションの開発時に直接的／間接的に使用可能な１セットの予め定義されたコード／データモジュールを提供する。ＡＤＦはまた、総合開発環境（「ＩＤＥ」）、コードジェネレータ、デバッガなどのツールを提供し得る。一般に、ＡＤＦは、たとえば、所望のタスクを実行するようにコンポーネント選択し、選択されたコンポーネントの外観、挙動および相互作用を定義することによって、ユーザインターフェイス（user interface：「ＵＩ」）およびアプリケーション論理を定義するために、アプリケーション開発者によって使用可能である再使用可能なコンポーネントを提供することによってアプリケーション開発を単純化する。オラクル社（Oracle Corp.）による「Ｏｒａｃｌｅ  ＡＤＦ」などのいくつかのＡＤＦは、疎結合や、より容易なアプリケーション開発およびメンテナンスを促進するモデル・ビュー・コントローラ（mobile-view-controller：「ＭＶＣ」）設計パターンに基づいている。
【００２０】
概して、多くの企業は、出張中の従業員が、エンタープライズコンピュータシステム上に記憶されている情報にアクセスすることができるように、それらの従業員が、離れた位置からモバイルデバイスを用いてセキュアなエンタープライズアプリケーションにアクセスすることを可能にする必要性を表明してきた。このような能力があれば、たとえば、販売員は路上でも仕事ができ、サービス技術者はカスタマサイトで部品を調べることができ、従業員は自宅で仕事ができるかもしれない。いくつかの企業はまた、末端の顧客が、エンタープライズコンピュータシステムに存在するデータにアクセスすることが可能になることを所望するだろう。このようなアクセスは、顧客経験を向上させてコストを下げることにより、企業を競争相手から差別化し得る。たとえば、このようなアクセスを実現することにより、店舗は、都合が良いときにいつでも、顧客がアイテムについての店舗在庫を遠隔で検索して買い物をすることを許可し、これにより、顧客経験を向上させて販売員、オペレータおよび他のスタッフの必要性を低下させ得る。
【００２１】
さまざまなエンタープライズアプリケーションベンダーは、従来より、企業所有のセキュアなモバイルデバイスまたは顧客のモバイルアプリケーションと組合わせて特化されたポータルを提供することによって、この必要性を満たしてきた。しかしながら、現在、利用可能なパーソナルモバイルデバイスの多様性が爆発的に増加しているので、これらの従来のソリューションは急速に時代遅れになってきている。なぜなら、ベンダーが、単に、利用可能になる最新のすべてのＯＳおよびハードウェアに遅れずについていくことができないからである。
【００２２】
さらに、アプリケーションは、アプリケーションによって用いられるデータのタイプおよび／またはアプリケーションタイプに応じて、さまざまなエンタープライズコンピュータシステムに接続して同期する必要があるかもしれない。これらのエンタープライズコンピュータシステムは、アプリケーションタイプおよびデータタイプによっても異なる可能性のあるさまざまなバックエンドコンピュータシステムによってサポートされ得る。しかしながら、さまざまなバックエンドエンタープライズシステムは、さまざまな通信プロトコルおよびメカニズムを用いてデータを装置に伝達する可能性があり、これにより、さまざまなアプリケーションを実行するモバイルコンピューティングデバイスが、エンタープライズコンピュータシステムをサポートするさまざまなバックエンドコンピュータシステムと通信するための難題に直面する可能性がある。
【００２３】
さらには、セキュリティは企業の内部コンピュータシステムへのアクセスを許可する際に問題になる可能性がある。モバイルコンピューティングデバイスとエンタープライズコンピュータシステムとの間でサポートされている通信プロトコルに差があることで、さらに、モバイルコンピューティングデバイスとエンタープライズコンピュータシステムとの間の通信用のセキュリティアクセス管理が複雑になってしまう可能性がある。たとえば、さまざまなメカニズムは、プロプラエタリセキュリティプロトコルを有する特定のエンタープライズコンピュータシステムにアクセスするためのアプリケーションの認証を確実にするように実現され得る。いくつかの公知のシステムは、既製の消費者モバイルデバイスを企業のバックエンドエンタープライズシステムに関係付けることによってこの問題に対処しようと試みてきた。これらのデバイスは、エンタープライズバックエンドコンピュータシステムとの通信専用の特別なポータルを介してエンタープライズネットワークに接続するアプリケーションまたはＯＳを用いて構成され得る。しかしながら、モバイルデバイス、アプリケーション開発者および企業の製造業者は、アプリケーションを開発してモバイルデバイスをエンタープライズバックエンドコンピュータシステムに接続するための、よりフレキシブルでロバストな技術から利益を得るかもしれない。
【００２４】
公知のシステムとは対照的に、本発明の実施形態は、「クラウド」サービスにおける迅速でビジネスユーザフレンドリなモバイルアプリケーション構成のために宣言的ブラウザベースのクライアントアプリケーション開発ツールを提供する。一実施形態においては、クラウドサービスはオラクル社からの「モバイルクラウドサービス」（Mobile Cloud Service：「ＭＣＳ」）である。実施形態は、バックエンド・サービスのためにクラウドサービスを用いる、予め定義されたテンプレートを用いてモバイルアプリケーションを構築することを可能にし、これにより、アプリケーション開発中に開発者にサービス定義を提示して、ＵＩ設計とバックエンド・サービスとの間の迅速な接続を可能にし得る。
【００２５】
ＭＣＳ
ＭＣＳを用いる実施形態においては、ＭＣＳは、クラウドコンピュータシステムを介するモバイルコンピューティングデバイスとエンタープライズコンピュータシステムとの間の通信を容易にする。ＭＣＳは、モバイルデバイスと企業のエンタープライズネットワークとの間の第三者クラウドベースのインターフェイスを用いる。クラウドベースのインターフェイスは、さまざまなエンタープライズコンピュータシステムのためのセキュアなアダプタを集中化して、さまざまなプロトコルを、標準化されたレプレゼンテーショナル・ステート・トランスファ（Representational State Transfer：「ＲＥＳＴ」）アーキテクチャに翻訳する。企業は、本発明の実施形態を用いて、ＭＣＳ上で利用可能なツールを用いて、それら自体のカスタムモバイルアプリケーションを作成することができ、このようなアプリケーションはモバイルユーザデバイス上に固有の形式でダウンロードすることができる。アプリケーションがインストールされると、そのアプリケーションは、ＭＣＳによって提供されるセキュアなアダプタを介してさまざまなエンタープライズコンピュータシステムに到達するように、ＭＣＳのクラウドベースのインターフェイスにアクセスすることができる。
【００２６】
ＭＣＳを用いる実施形態におけるアプリケーション開発のために、ＭＣＳは、モバイルバックエンド・アス・ア・サービス（Mobile Backend as a Service：ＭＢａａＳ；「ＢａａＳ」とも称される）モデルのもとでバックエンド・サービスを提供する。ＭＢａａＳは、ウェブおよびモバイルアプリケーション開発者が、それらのアプリケーションを、バックエンド・アプリケーションによって公開されたバックエンド・クラウド・ストレージおよびＡＰＩにリンクすることを可能にする一方で、ユーザ管理、プッシュ通知、ソーシャル・ネットワーキング・サービスとの統合を提供し得る。ＭＢａａＳモデル下でＭＣＳにおいて提供されるバックエンド・サービスを用いることによって、実施形態は、符号化に精通していない専門外のユーザによってモバイルアプリケーション開発のために構成された宣言的なウェブベースのＵＩを提供する。
【００２７】
一実施形態においては、ユーザが新しいアプリケーションを開発し始めるときにウィザードが開始され、当該ユーザは、新しいアプリケーションについての名前および記述を与えるように要求される。次いで、ユーザは、第１頁目についてのＵＩに予めシード値を設定することができる１セットの予め定義されたテンプレート（たとえばタブ、下側タブ、ページ数など）から選択することによってアプリケーションの第１頁目を設計するように要求される。次いで、ＵＩは、プレビューが変更を示すように自動的に更新されている間に、テンプレートにおける詳細を指定することによって完成させられる。ＵＩ設計が完成すると、ユーザはパレットを用いて、ＭＣＳ（たとえばサービスカタログ）を介してモバイルアプリケーションにとって利用可能である入手可能なサービスおよびデータソースのカタログをブラウズすることができる。ＵＩに追加されるカタログの各々のアイテムごとに、ユーザには属性のリストが提示され、さらに、１つ以上のジェスチャ（たとえばドラッグ・アンド・ドロップなど）を用いて、ユーザは属性をＵＩ要素にバインドすることができる。ユーザは、モバイルアプリケーションを作成するために特徴定義およびデータ・バインディングのプロセスを繰返すことができる。マップ、グラフなどの他のＵＩコンポーネントもＵＩに追加することができる。アプリケーションのためにテストの準備ができると、ユーザは（ｉＯＳ、アンドロイドまたは他の任意のモバイルデバイスＯＳのための固有の実行ファイルを構築して）対応するバイナリが作成され、その後、クイックレスポンス（Quick Response：「ＱＲ」）コードが生成され、ユーザに提供されるように、アプリケーションを公開し得る。ユーザがモバイルデバイスによってＱＲコード（登録商標）をスキャンすれば、アプリケーションがモバイルデバイス上に無線でインストールされる。
【００２８】
実施形態はＡＤＦにおいて予め構築されたコンポーネントを用いる。コンポーネントはデータ相互作用、データ視覚化およびカプセル化されたブラウザ側の動作を提供し、リッチクライアントプリケーション開発を単純化する。ＡＤＦはまた、カメラ、全地球測位システム（Global Positioning System：「ＧＰＳ」）、コンタクトなどのようなデバイス特徴にアクセスするためにアパッチ・コルドバ（Apache Cordova）プラグインなどのプラグインを実現し得る。
【００２９】
一実施形態においては、ＡＤＦがモバイルデバイスのためのアプリケーションを構築するようにとの要求を受取ると、それは、既に開発された１つ以上のアプリケーションのうちツールキットを用いてプリコンパイルされた部分を決定し、それらの既存のアプリケーションに関連付けられた宣言的情報を修正する。次いで、この実施形態は、所望のオペレーティングシステム（ｉＯＳ、アンドロイドなどの「ＯＳ」）のために要求されたアプリケーションを表現するバイナリアーティファクトをパッケージングすることによって、修正済みの宣言的情報と、既存のアプリケーションの１つ以上のバイナリアーティファクトとに基づいて、要求されたアプリケーションを構築する。ＡＤＦは、次いで、１つ以上のバイナリアーティファクトおよび１セットの定義ファイルを生成するように、要求されたアプリケーションをコンパイルする。エンドユーザ開発においては、アーティファクトは、プログラミング言語に精通していなくてもエンドユーザが作成できるアプリケーションまたは複合データオブジェクトである。
【００３０】
モバイルセキュリティ
いくつかの実施形態は、オラクル社による「オラクル・モバイル・セキュリティ・スーツ」（Oracle Mobile Security Suite：「ＯＭＳＳ」）などのモバイルセキュリティ・スーツによって提供されるセキュリティサービスを用いる。ＯＭＳＳは、モバイルデバイスおよびモバイルアプリケーション・セキュリティ・ソリューションであって、従業員中心の包括的なエンタープライズモビリティマネジメント（Enterprise Mobility Management：「ＥＭＭ」）ソリューションならびに消費者中心のモバイルおよびソーシャルサービスを提供する。ＥＭＭは、既存のユーザアイデンティティにシームレスに繋がって、モバイルアクセスのためのエンタープライズ・バックエンド・アイデンティティ・マネジメント・インフラストラクチャの拡張機能を利用することによって、モバイルデバイスマネジメント（mobile device management：「ＭＤＭ」）、モバイルアプリケーションマネジメント（mobile application management：「ＭＡＭ」）、モバイルコンテンツマネジメント（mobile content management：「ＭＣＭ」）、およびモバイルアイデンティティポリシーを提供する。セキュリティポリシーは、企業ニーズに付随するものであって、（典型的には企業所有の装置のために）完成した装置をロックダウンさせるように、および／または、（個人所有の機器の持ち込み（bring your own device：ＢＹＯＤ）の場合に）セキュアな「コンテナ化された（containerized）」企業アプリケーションおよびデータからパーソナルアプリケーションを分離するように、定義することができる。モバイルおよびソーシャルサービスはソフトウェア開発キット（software development kit：「ＳＤＫ」）を提供して、企業開発者がｉＯＳおよびアンドロイド装置のためのカスタムのエンタープライズアプリケーションをセキュリティ保護することを可能にし、モバイルデバイスと、ソーシャルネットワークと、エンタープライズ・バックエンド・アイデンティティ・マネジメント・インフラストラクチャとの間の隙間を埋める。
【００３１】
ＯＭＳＳは、アプリケーションおよびコンテンツのセキュリティのためにセキュアコンテナをモバイルデバイスに提供して、企業のアプリケーションおよびデータを分離、保護およびワイプする。モバイルデバイスとエンタープライズ・イントラネット・リソースとの間のすべての通信は、モバイルデバイスの綿密に調べられた（かまたは「コンテナ化された」）アプリケーションによってのみ使用可能である認証されたトランスポート層セキュリティ（transport layer security ：「ＴＬＳ」）／セキュアソケット層（secure socket layer：「ＳＳＬ」）トンネル（「AppTunnel」）を通過する。AppTunnelは、企業の非武装地帯（demilitarized zone：「ＤＭＺ」）において位置するモバイルセキュリティ・アクセスサーバで終端となる。このサーバは、モバイルデバイスにセキュアなイントラネットアクセスを提供し、セキュアコンテナからAppTunnelだけを終端させ、これにより、不正アプリケーションのリスクを減らして、デバイスレベルＶＰＮについて必要性を低減させる。
【００３２】
ＡＤＦによって提供されるものを利用することにより、実施形態は、ブラウザベースのアプリケーション開発を提供するが、これは、符号化を必要とせず、容易にビジネスサービスにマッピングされている。実施形態はまた、（アプリケーションが開発されているときに）アプリケーション・インラインをプレビューすること、さらには、アプリケーションを編集し、テストし、ブラウザから公開することを可能にする。したがって、専門開発者によって使用されるように構成されるオラクル社による「Jdeveloper」などのＩＤＥではなく、実施形態は、ビジネスユーザ（たとえば専門外のユーザ）によって使用されるように構成されている。
【００３３】
サービスカタログ
ＭＣＳを用いる本発明の実施形態をサポートするために、ＭＣＳは、オラクル社から「オラクルＡＰＩカタログ」（Oracle API Catalog：「ＯＡＣ」）などのＡＰＩカタログにアクセスを提供する。ＯＡＣは、ある組織において利用可能なＡＰＩに可視性を提供して、それらのＡＰＩがアプリケーション開発のために再使用され得るようにする。ＯＡＣは、ＡＰＩアセット、ＯＡＣにＡＰＩをポピュレートするための自動化、およびユーザがＡＰＩを求めてＯＡＣを検索するための能力を含み、それらのアプリケーションにおけるそれらの適合性を評価するためにＡＰＩの詳細を理解している。ＯＡＣは、ＯＡＣにおいてＡＰＩアセットを作成するハーベスタを含む。いくつかの実施形態においては、ハーベスティングがプロジェクトの構築時間に実行される。ハーベスタは、デプロイされたサービスをイントロスぺクション（introspection）し、プロジェクトにおいて発見されたサービスを表現するＡＰＩアセットを作成する。これには、たとえば、サービス指向アーキテクチャ（service oriented architecture：「ＳＯＡ」）サービスおよびサービスバスプロキシ、ウェブサービス記述言語（Web Services Description Language：「ＷＳＤＬ」）ベースのウェブサービス、およびウェブアプリケーション記述言語（Web Application Description Language：「ＷＡＤＬ」）ベースのＲＥＳＴサービスなどがある。作成されたアセットはＯＡＣにおいて収集される。
【００３４】
ＡＰＩアセットがハーベスタによって作成された後、キュレータは、ＡＰＩの発見および理解を容易にするための追加のメタデータを提供するように、単純なエディタを用いてＡＰＩアセットを編集する。キュレータは、名前を変更するか、記述を追加するか、キーワードにタグ付けするか、またはＯＡＣにおけるＡＰＩアセットにドキュメントリファレンス（reference：参照）を追加することができる。このメタデータは、ユーザによる各々のＡＰＩアセットの発見および理解を単純化する。ＡＰＩメタデータが編集された後、キュレータは、これをＯＡＣにおいてユーザにとって見えるようにすることによってＡＰＩを公開する。公開されたアセットは、ＯＡＣコンソールにおいて、かつオラクルのJDeveloperオラクル・エンタープライズ・リポジトリ・プラグインを介して利用可能である。ユーザは、ＯＡＣを検索して、ＡＰＩを発見し、キュレータによって提供されるメタデータを調査することによって、ＡＰＩについてさらに学習することができる。
【００３５】
各々のＯＡＣユーザには、各々のユーザにとってどのＯＡＣ特徴およびコンテンツが利用可能であるかを決定する役割が割当てられている。開発者、キュレータおよび管理者を含む役割がＯＡＣにおいて予め定義されている。開発者役割を有するユーザは、公開されたＡＰＩを求めてＯＡＣを検索し、ＡＰＩをよりよく理解するためにＡＰＩメタデータを調査し、ＡＰＩへの関心を公表し、ＡＰＩのためのレーティングおよびレビューを実行する能力を有する。開発者役割に利用可能な能力に加えて、キュレータの役割を有するユーザは、ＯＡＣにおいて新しいＡＰＩアセットを作成し、それらのメタデータを更新するようにＡＰＩを編集し、それらを公開するために、ハーベスタを実行することができる。キュレータおよび開発者に利用可能な能力に加えて、管理者の役割を有するユーザは、システム設定を編集し、新しいユーザを作成し、新しい部門を作成し、セッションを管理し、インポート／エクスポート・ツールを用いることによって、ＯＡＣにおける管理ページにアクセスしてＯＡＣのインフラストラクチャを管理する。管理者はまた、ＯＡＣに含まれているセキュリティ特徴を構成することができる。
【００３６】
いくつかの実施形態においては、ネイティブアプリケーションまたはホストされたアプリケーションとしてアプリケーションが開発されてモバイルデバイスにデプロイされてもよい。ネイティブアプリケーションをデプロイする場合、完全なアプリケーションがデバイスにインストールされる。ホストされたアプリケーション開発のために、ユーザは、「アプリ・ストア」からホスティング・アプリケーションをダウンロードする必要があり、この場合、このようなホスティング・アプリケーションは、ホスティング・アプリケーション上に「特徴」としてインストールされ得るホストされたアプリケーションを「ホストする」。この実施形態は、サーバからの実行中のホスティング・アプリケーションを更新することを可能にし得ることで、宣言的メタデータをデバイスに送信し、既存のアプリケーションの上に重ねて、当該アプリケーションをこの新しいメタデータに対して実行させるように更新することができるようにする。
【００３７】
図１は、ＭＣＳ１２２をバックエンド・サービスとして使用することを可能にする予め定義されたテンプレートを用いることによってアプリケーションを開発するためのシステム環境１００のブロック図である。サービス定義は、ＵＩ設計とバックエンド・サービスとの間の迅速な接続を可能にするアプリケーション開発中にユーザに提示することができる。
【００３８】
図示される実施形態においては、システム環境１００は、１つ以上のクライアントコンピューティングデバイス１０４、１０６および１０８にクラウドサービスを提供するクラウドインフラストラクチャシステム１０２を含む。クライアントコンピューティングデバイス１０４、１０６および１０８はクラウドインフラストラクチャシステム１０２と対話するためにユーザによって用いられてもよい。クライアントコンピューティングデバイス１０４、１０６および１０８は、クラウドインフラストラクチャシステム１０２によって提供されるサービスを使用するためにクラウドインフラストラクチャシステム１０２と対話するようにクライアントコンピューティングデバイスのユーザによって使用され得る、ウェブブラウザ、専有のクライアントアプリケーション（たとえばオラクルフォームズ）または他のアプリケーションなどのクライアントアプリケーションを動作させるように構成され得る。
【００３９】
クラウドインフラストラクチャシステム１０２が、示されている構成要素以外の他の構成要素を有し得る。さらに、図１に示されている実施形態は、本発明の実施形態を組込み得るクラウドインフラストラクチャシステムの一例に過ぎない。いくつかの他の実施形態においては、クラウドインフラストラクチャシステム１０２は、図１に示されているものよりも多いかまたは少ない数の構成要素を有していてもよく、２つ以上の構成要素を組合せてもよく、または構成要素の異なる構成または配置を有していてもよい。
【００４０】
クライアントコンピューティングデバイス１０４、１０６および１０８は、携帯可能な手持ち式の装置（たとえばｉＰｈｏｎｅ（登録商標）、セルラー電話、ｉＰａｄ（登録商標）、計算タブレット、携帯情報端末（personal digital assistant：ＰＤＡ））またはウェアラブルデバイス（たとえばＧｏｏｇｌｅ  Ｇｌａｓｓ（登録商標）頭部装着型ディスプレイ）であってもよく、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  Ｍｏｂｉｌｅ（登録商標）などのようなソフトウェア、および／もしくは、ｉＯＳ、Ｗｉｎｄｏｗｓ  Ｐｈｏｎｅ、Ａｎｄｒｏｉｄ、ＢｌａｃｋＢｅｒｒｙ  １０、Ｐａｌｍ  ＯＳなどのようなさまざまなモバイルＯＳを動作させ、インターネット、電子メール、ショートメッセージサービス（short message service：ＳＭＳ）、Ｂｌａｃｋｂｅｒｒｙ（登録商標）または他の通信プロトコルで可能化される。クライアントコンピューティングデバイス１０４、１０６および１０８は汎用パーソナルコンピュータであってもよく、一例として、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、Ａｐｐｌｅ  Ｍａｃｉｎｔｏｓｈ（登録商標）および／またはＬｉｎｕｘ（登録商標）  ＯＳのさまざまなバージョンを動作させるパーソナルコンピュータおよび／またはラップトップコンピュータを含む。クライアントコンピューティングデバイス１０４、１０６および１０８は、たとえばＧｏｏｇｌｅ  Ｃｈｒｏｍｅ  ＯＳなどのようなさまざまなＧＮＵ／Ｌｉｎｕｘ  ＯＳを含むがこれらに限定されない、さまざまな市販のＵＮＩＸ（登録商標）またはＵＮＩＸライクＯＳのいずれをも動作させるワークステーションコンピュータであり得る。代替的に、または加えて、クライアントコンピューティングデバイス１０４、１０６および１０８は、ネットワーク１１０を介して通信することができる、シンクライントコンピュータ、インターネットにより可能化されるゲームシステム（たとえばＫｉｎｅｃｔ（登録商標）ジェスチャ入力装置付きの、または当該ジェスチャ入力装置なしのＭｉｃｒｏｓｏｆｔ  Ｘｂｏｘゲームコンソール）および／または個人メッセージ伝達装置などのような任意の他の電子装置であってもよい。
【００４１】
例示的なシステム環境１００は３つのクライアントコンピューティングデバイスで示されているが、クライアントコンピューティングデバイスはいくつサポートされていてもよい。センサを有する装置などの他の装置がクラウドインフラストラクチャシステム１０２と対話してもよい。
【００４２】
ネットワーク１１０は、クライアント１０４、１０６、１０８とクラウドインフラストラクチャシステム１０２との間のデータの通信およびやりとりを容易にし得る。ネットワーク１１０は、伝送制御プロトコル／インターネットプロトコル（transmission control protocol/Internet protocol：「ＴＣＰ／ＩＰ」）、システムネットワークアーキテクチャ（systems network architecture：「ＳＮＡ」）、インターネットパケット交換（Internet packet exchange：「ＩＰＸ」）、ＡｐｐｌｅＴａｌｋなどを含むがこれらに限定されない、市販のさまざまなプロトコルのうちのいずれを用いてもデータ通信をサポートすることができる、当業者が精通している任意のタイプのネットワークであり得る。単なる例示として、ネットワーク１１０は、イーサネット（登録商標）、トークンリングなどに基づくような、ローカルエリアネットワーク（ＬＡＮ）であり得る。ネットワーク１１０はワイドエリアネットワークおよびインターネットであり得る。それは、仮想プライベート・ネットワーク（virtual private network：ＶＰＮ）、イントラネット、エクストラネット、公衆交換電話網（public switched telephone network：ＰＳＴＮ）、赤外線ネットワーク、無線ネットワーク（たとえば、米国電気電子学会（Institute of Electrical and Electronics：ＩＥＥＥ）８０２．１１のプロトコル一式、Ｂｌｕｅｔｏｏｔｈ（登録商標）、および／もしくは任意の他の無線プロトコルのいずれかに従って動作するネットワーク）を含むがこれらに限定されない仮想ネットワーク、ならびに／または、これらの任意の組合せおよび／もしくは他のネットワークを含み得る。
【００４３】
クラウドインフラストラクチャシステム１０２は１つ以上のコンピュータおよび／またはサーバを含み得る。これらのコンピュータシステムまたはサーバは、１つ以上の汎用コンピュータ、特化されたサーバコンピュータ（たとえば、パーソナルコンピュータ（personal computer：「ＰＣ」）サーバ、ＵＮＩＸ（登録商標）サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント型サーバなどを含む）、サーバファーム、サーバクラスタ、または他の任意の適切な構成および／もしくは組合せからなってもよい。さまざまな実施形態においては、クラウドインフラストラクチャシステム１０２に関連付けられた１つ以上のコンピュータシステムまたはサーバは、前述の開示に記載される１つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。たとえば、クラウドインフラストラクチャシステム１０２に関連付けられた１つ以上のコンピュータシステムまたはサーバは、本開示の実施形態に従ってこの明細書中に記載される処理を実行するためのサーバに対応してもよい。
【００４４】
クラウドインフラストラクチャシステム１０２に関連付けられた１つ以上のコンピュータシステムまたはサーバは、上に論じられたもののうちのいずれかを含むＯＳ、および市販のいずれかのサーバＯＳを動作させ得る。クラウドインフラストラクチャシステム１０２に関連付けられた１つ以上のコンピュータシステムまたはサーバはまた、ハイパーテキスト・トランスポート・プロトコル（hypertext transport protocol：「ＨＴＴＰ」）サーバ、ファイル転送プロトコル（file transfer protocol：「ＦＴＰ」）サーバ、コモンゲートウェイインターフェイス（common gateway interface：「ＣＧＩ」）サーバ、ＪＡＶＡサーバ、データベースサーバなどを含むさまざまな追加のサーバアプリケーションおよび／または中間層アプリケーションのうちいずれを動作させ得る。
【００４５】
特定の実施形態においては、クラウドインフラストラクチャシステム１０２によって提供されるサービスは、オンラインデータストレージおよびバックアップソリューション、ウェブに基づく電子メールサービス、ホストされるオフィススイートおよびドキュメントコラボレーションサービス、データベース処理、管理される技術サポートサービスなどのような、オンデマンドでクラウドインフラストラクチャシステム１０２のユーザに利用可能にされるサービスのホストを含んでもよい。クラウドインフラストラクチャシステム１０２によって提供されるサービスは動的にスケーリングしてそのユーザのニーズを満たすことができる。クラウドインフラストラクチャシステム１０２によって提供されるあるサービスのある具体的なインスタンス化は本明細書では「サービスインスタンス」と称される。一般的に、クラウドサービスプロバイダのシステムからインターネットなどの通信ネットワークを介してユーザに利用可能にされる如何なるサービスも「クラウドサービス」と称される。典型的には、パブリックなクラウド環境においては、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは顧客自身のオンプレミスのサーバおよびシステムとは異なる。たとえば、クラウドサービスプロバイダのシステムはアプリケーションをホストしてもよく、ユーザは、インターネットなどの通信ネットワークを介して、オンデマンドで、アプリケーションをオーダーし使用してもよい。
【００４６】
いくつかの例では、クラウドインフラストラクチャ１０２によってインスタンス化されるサービスインスタンスは、ストレージ、ホストされるデータベース、ホストされるウェブサーバ、ソフトウェアアプリケーション、またはクラウドベンダーによってユーザに提供されるかもしくは他の態様で当該技術分野において公知であるような他のサービスに対する保護されたコンピュータネットワークアクセスを含んでもよい。たとえば、クラウドインフラストラクチャ１０２によってインスタンス化されるサービスインスタンスは、クラウド上の遠隔ストレージに対する、インターネットを介する、パスワード保護されたアクセスを含み得る。別の例として、クラウドインフラストラクチャ１０２によってインスタンス化されるサービスインスタンスは、ネットワーク接続された開発者による個人的な使用のために、ウェブサービスに基づくホストされたリレーショナルデータベースおよびスクリプト言語ミドルウェアエンジンを含み得る。別の例として、クラウドインフラストラクチャ１０２によってインスタンス化されるサービスインスタンスは、クラウドベンダーのウェブサイトにおいてホストされる電子メールソフトウェアアプリケーションに対するアクセスを含み得る。
【００４７】
特定の実施形態では、クラウドインフラストラクチャシステム１０２は、セルフサービスの、サブスクリプションに基づく、順応性を持ってスケーラブルで、信頼性があり、非常に利用可能性があり、およびセキュリティ上安全な態様で顧客に対して配送されるアプリケーションの組、ミドルウェア、開発サービス、データベースサービス提供を含んでもよい。クラウドインフラストラクチャサービス１０２において具体化されるこのようなクラウドインフラストラクチャシステムの一例はオラクル社によって提供されるオラクル・パブリック・クラウド（Oracle Public Cloud）である。
【００４８】
クラウドインフラストラクチャシステム１０２はクラウドサービスをさまざまな展開モデルによって提供してもよい。たとえば、サービスは、クラウドインフラストラクチャシステム１０２が（たとえば、オラクル社によって所有される）クラウドサービスを販売する組織によって所有され、サービスが一般大衆またはさまざまな業界エンタープライズに対して利用可能にされるパブリッククラウドモデルの下で提供されてもよい。別の例として、サービスは、クラウドインフラストラクチャシステム１０２が単一の組織に対してのみ動作され、その組織内における１つ以上のエンティティに対してサービスを提供され得るプライベートクラウドモデルの下で提供されてもよい。クラウドサービスは、さらに、クラウドインフラストラクチャシステム１０２およびクラウドインフラストラクチャシステム１０２によって提供されるサービスが関連コミュニティにおけるいくつかの組織によって共有されているコミュニティクラウドモデルの下で提供されてもよい。クラウドサービスは、さらに、２つ以上の異なるモデルの組合せであるハイブリッドクラウドモデルの下で提供されてもよい。
【００４９】
いくつかの実施形態では、クラウドインフラストラクチャシステム１０２によって提供されるサービスは、ソフトウェア・アズ・ア・サービス（Software as a Service：ＳａａＳ）カテゴリ、プラットフォーム・アズ・ア・サービス（Platform as a Service：ＰａａＳ）カテゴリ、インフラストラクチャ・アズ・ア・サービス（Infrastructure as a Service：ＩａａＳ）カテゴリ、ＭＢａａｓカテゴリ、またはハイブリッドサービスを含む他のサービスのカテゴリの下で提供される、１つ以上のサービスを含み得る。いくつかの実施形態では、クラウドインフラストラクチャシステム１０２によって提供されるサービスは、アプリケーションサービス、プラットフォームサービス、インフラストラクチャサービス、およびバックエンドサービスを含み得るが、これらに限定されない。いくつかの例では、アプリケーションサービスはクラウドインフラストラクチャシステムによってＳａａＳプラットフォームを介して提供されてもよい。ＳａａＳプラットフォームは、ＳａａＳカテゴリに入るクラウドサービスを提供するよう構成されてもよい。たとえば、ＳａａＳプラットフォームは、一式のオンデマンドアプリケーションを統合された開発および展開プラットフォーム上で構築し配送する能力を提供してもよい。ＳａａＳプラットフォームは、ＳａａＳサービスを提供するための基礎をなすソフトウェアおよびインフラストラクチャを管理および制御し得る。ＳａａＳプラットフォームによって提供されるサービスを利用することによって、顧客はクラウドインフラストラクチャシステムにおいて実行されるアプリケーションを利用することができる。顧客は、別のライセンスおよびサポートを購入する必要なくアプリケーションサービスを獲得することができる。さまざまな異なるＳａａＳサービスが提供されてもよい。例としては、大規模な組織に対する売上実績管理、エンタープライズ統合、および事業柔軟性に対するソリューションを提供するサービスを含むがこれらに限定されない。
【００５０】
いくつかの実施形態では、プラットフォームサービスはクラウドインフラストラクチャシステム１０２によってＰａａＳプラットフォームを介して提供されてもよい。ＰａａＳプラットフォームはＰａａＳカテゴリの範疇にあるクラウドサービスを提供するように構成されてもよい。プラットフォームサービスの例は、（Ｏｒａｃｌｅなどの）組織が既存のアプリケーションを共有される共通のアーキテクチャにおいて整理統合することができるサービス、およびプラットフォームによって提供される共有されるサービスを活用する新たなアプリケーションを構築する能力を含み得るが、これらに限定されない。ＰａａＳプラットフォームはＰａａＳサービスを提供するための基礎をなすソフトウェアおよびインフラストラクチャを管理および制御してもよい。顧客は、クラウドインフラストラクチャシステム１０２によって提供されるＰａａＳサービスを、別のライセンスおよびサポートを購入する必要なく獲得することができる。プラットフォームサービスの例は、オラクル社による「Oracle Java Cloud Service（ＪＣＳ）」、オラクル社による「Oracle Database Cloud Service（ＤＢＣＳ）」などを含むが、これらに限定されない。
【００５１】
ＰａａＳプラットフォームによって提供されるサービスを利用することによって、顧客は、クラウドインフラストラクチャシステム１０２によってサポートされるプログラミング言語およびツールを使用することができ、展開されたサービスを制御することもできる。いくつかの実施形態では、クラウドインフラストラクチャシステム１０２によって提供されるプラットフォームサービスは、データベースクラウドサービス、ミドルウェアクラウドサービス（たとえばOracle Fusion Middlewareサービス）、およびＪａｖａクラウドサービスを含んでもよい。一実施形態では、データベースクラウドサービスは、組織がデータベースリソースをプールし、顧客にデータベース・アズ・ア・サービス（Database as a Service）をデータベースクラウドの形式で提供することを可能にする、共有型のサービス展開モデルをサポートしてもよい。ミドルウェアクラウドサービスは、顧客のためのプラットフォームを提供してさまざまなビジネスアプリケーションを開発および展開してもよく、Ｊａｖａクラウドサービスは顧客のためのプラットフォームを提供してＪａｖａアプリケーションをクラウドインフラストラクチャシステムにおいて展開してもよい。
【００５２】
さまざまな異なるインフラストラクチャサービスがＩａａＳプラットフォームによってクラウドインフラストラクチャシステム１０２において提供されてもよい。インフラストラクチャサービスは、ＳａａＳプラットフォームおよびＰａａＳプラットフォームによって提供されるサービスを利用する顧客に対するストレージ、ネットワーク、他の基礎的計算リソースなどの基礎をなす計算リソースの管理および制御を容易にする。
【００５３】
特定の実施形態においては、クラウドインフラストラクチャシステム１０２は、クラウドインフラストラクチャシステムにおいてクラウドサービス（たとえば、ＳａａＳサービス、ＰａａＳサービス、ＩａａＳサービスおよびＭＢａａＳサービス）の包括的な管理を提供し得る。一実施形態においては、クラウド管理機能は、クラウドインフラストラクチャシステム１０２によって受取られる顧客のサブスクリプションをプロビジョニングし、管理し、追跡するための能力などを含み得る。さまざまな実施形態においては、クラウドインフラストラクチャシステム１０２は、クラウドインフラストラクチャシステム１０２によって提供されたサービスに対する顧客のサブスクリプションを自動的にプロビジョニングし、管理し、かつ追跡するように適合され得る。顧客は、サブスクリプションオーダーによって、クラウドインフラストラクチャシステム１０２によって提供される１つ以上のサービスをオーダーしてもよい。クラウドインフラストラクチャシステム１０２は、次いで、顧客のサブスクリプションオーダーでサービスを提供するための処理を実行する。
【００５４】
一実施形態においては、クラウド管理機能は、オーダー管理および監視モジュール１１４などの１つ以上のモジュールによって提供され得る。これらのモジュールは、１つ以上のコンピュータおよび／もしくはサーバを含んでいてもよく、またはそれらを用いて提供されてもよく、それらは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、または他の任意の適切な構成および／もしくは組合せであってもよい。
【００５５】
例示的な動作においては、クライアントコンピューティングデバイス１０４、１０６または１０８を用いる顧客は、クラウドインフラストラクチャシステム１０２によって提供される１つ以上のサービスを要求することによって、クラウドインフラストラクチャシステム１０２と対話し得る。顧客は、さまざまな手段を用いて、サービス要求１３４をクラウドインフラストラクチャシステム１０２に発行してもよい。サービス要求１３４は、クラウドインフラストラクチャシステム１０２によって提供された１つ以上のサービスについてのサブスクリプションのオーダーを出すこと；クラウドインフラストラクチャシステム１０２によって提供される１つ以上のサービスにアクセスすることなど；を含み得る。特定の実施形態においては、顧客は、クラウドＵＩ１３２、１３４、１３８にアクセスして、これらのＵＩを介してサブスクリプションオーダーを出してもよい。顧客がオーダーを出したことに応じてクラウドインフラストラクチャシステム１０２によって受取られるオーダー情報は、顧客と、当該顧客がサブスクライブするつもりでありクラウドインフラストラクチャシステム１０２によって提供される１つ以上のサービスと、を識別する情報を含み得る。顧客によってオーダーが出された後、オーダー情報はクラウドＵＩ１３２、１３４および／または１３８を介して受取られる。
【００５６】
この例においては、オーダー管理および監視モジュール１１２は、記憶された顧客にオーダーを出させるために、顧客から受取った情報をオーダーデータベースに送信する。オーダーデータベースは、クラウドインフラストラクチャシステム１０２によって動作されるとともに他のシステム要素と共に動作されるいくつかのデータベースのうちの１つであってもよい。オーダー管理および監視モジュール１１２は、オーダーデータベースに記憶されたオーダー情報のすべてまたは一部を含む情報をオーダー管理モジュールに転送し得る。場合によっては、オーダー管理モジュールは、オーダーを検証し、検証後にオーダーを予約するといった、オーダーに関連する請求および課金機能を実行するように構成されてもよい。
【００５７】
特定の実施形態においては、クラウドインフラストラクチャシステム１００は、アイデンティティ管理モジュール１１４を含んでいてもよい。アイデンティティ管理モジュール１１４は、クラウドインフラストラクチャシステム１０２においてアクセス管理および認可サービスなどのアイデンティティサービスを提供するように構成されてもよい。いくつかの実施形態では、アイデンティティ管理モジュール１１４は、クラウドインフラストラクチャシステム１０２によって提供されるサービスを利用したい顧客についての情報を制御してもよい。そのような情報は、そのような顧客のアイデンティティを認証する情報と、それらの顧客がさまざまなシステムリソース（たとえば、ファイル、ディレクトリ、アプリケーション、通信ポート、メモリセグメントなど）に対してどのアクションを行なうことが認可されているかを記述する情報とを含み得る。アイデンティティ管理モジュール１１４はまた、各顧客についての記述的情報と、その記述的情報が誰によってどのようにアクセスされ、修正され得るかとの管理を含んでいてもよい。
【００５８】
特定の実施形態では、クラウドインフラストラクチャシステム１０２はまた、クラウドインフラストラクチャシステム１０２の顧客にさまざまなサービスを提供するために使用されるリソースを提供するためのインフラストラクチャリソース１１６を含んでいてもよい。一実施形態では、インフラストラクチャリソース１１６は、ＰａａＳプラットフォームおよびＳａａＳプラットフォームによって提供されるサービスを実行するために、サーバ、ストレージ、およびネットワーキングリソースなどのハードウェアの予め統合され最適化された組合せを含んでいてもよい。
【００５９】
いくつかの実施形態では、クラウドインフラストラクチャシステム１０２におけるリソースは、複数のユーザによって共有され、要望ごとに動的に再割当てされてもよい。加えて、リソースは、異なる時間帯におけるユーザに割当てられてもよい。たとえば、クラウドインフラストラクチャシステム１０２は、第１の時間帯における第１の一組のユーザが、特定数の時間、クラウドインフラストラクチャシステムのリソースを利用することを可能にし、次いで、異なる時間帯に位置する別の一組のユーザへの同じリソースの再割当てを可能にして、それによりリソースの利用を最大化してもよい。
【００６０】
特定の実施形態では、クラウドインフラストラクチャシステム１０２のさまざまなコンポーネントまたはモジュールによって共有され、かつクラウドインフラストラクチャシステム１０２によって提供されるサービスによって共有される、いくつかの内部共有サービス１１８が提供されてもよい。これらの内部共有サービス１１８は、セキュリティおよびアイデンティティサービス、統合サービス、エンタープライズリポジトリサービス、エンタープライズマネージャサービス、ウイルススキャンおよびホワイトリストサービス、高可用性、バックアップおよび復元サービス、クラウドサポートを可能にするためのサービス、電子メールサービス、通知サービス、ファイル転送サービスなどを含み得るが、これらに限定されない。
【００６１】
特定の実施形態では、クラウドインフラストラクチャシステム１０２のさまざまなコンポーネントまたはモジュールによって共有され、かつクラウドインフラストラクチャシステム１０２によって提供されるサービスによって共有される、いくつかの外部共有サービス１２０が提供されてもよい。これらの外部共有サービス１２０は、セキュリティおよびアイデンティティサービス、統合サービス、エンタープライズリポジトリサービス、エンタープライズマネージャサービス、ウイルススキャンおよびホワイトリストサービス、高可用性、バックアップおよび復元サービス、クラウドサポートを可能にするためのサービス、電子メールサービス、通知サービス、ファイル転送サービスなどを含み得るが、これらに限定されない。
【００６２】
さまざまな実施形態においては、外部共有サービス１２０は、エンタープライズコンピュータシステム１２６に対してアクセス、データ変換、自動化などを提供する１つ以上のコンポーネントを含み得る。エンタープライズコンピュータシステム１２６へのアクセスは、クラウドインフラストラクチャシステム１０２のさまざまなコンポーネントまたはモジュールによって、およびクラウドインフラストラクチャシステム１０２によって提供されるサービスによって、共有され得る。いくつかの実施形態においては、エンタープライズコンピュータシステム１２６へのアクセスは、クラウドインフラストラクチャシステム１０２によって提供されて１つ以上のサブスクライバに限定されるサービスインスタンスによって共有されてもよい。
【００６３】
さらなる実施形態においては、外部共有サービス１２０は、クラウドインフラストラクチャシステム１０２のさまざまなコンポーネントまたはモジュールによって共有され、かつクラウドインフラストラクチャシステム１０２により提供されるサービスによって共有される、外部アプリケーション・プログラミング・インターフェース（application programming interface：「ＡＰＩ」）サービス１２８を含み得る。これらの外部ＡＰＩサービス１２８は、他の第三者サービスまたはエンティティによって提供されるＡＰＩを含み得るがこれらに限定されない。
【００６４】
さまざまな異なるモバイルクラウドサービスはクラウドインフラストラクチャシステム１０２におけるＭＣＳ１２２によって提供され得る。ＭＣＳ１２２は、本発明のいくつかの実施形態に従って、モバイルコンピューティングデバイスとエンタープライズコンピュータシステム（たとえばエンタープライズコンピュータシステム１２４および１２６）との間の通信を容易にする。ＭＣＳ１２２は、エンタープライズデータおよび認証情報を記憶するために用いられる１つ以上のメモリ記憶装置（「ローカル・ストレージ」）を含み得る。エンタープライズデータは、エンタープライズコンピュータシステム１２６もしくはクライアントコンピューティングデバイス１０４、１０６、１０８から受取られてもよく、または、クラウドインフラストラクチャシステム１０２によって変換されるエンタープライズデータまたはそれらの組合せを含んでもよい。認証情報は、アイデンティティ管理システム１１６から受取られてもよく、および／または、クラウドインフラストラクチャシステム１０２によって生成されてもよい。いくつかの実施形態においては、認証情報は、サービスについての要求に関してユーザのセキュリティ認証を示す情報を含み得る。
【００６５】
エンタープライズコンピュータシステム１２６などのエンタープライズコンピュータシステムは、クラウドインフラストラクチャシステム１０２とは異なる地理的位置（たとえば離れた地理的位置）においてクラウドインフラストラクチャシステム１０２のファイアウォールの向こう側に物理的に位置していてもよい。いくつかの実施形態においては、エンタープライズコンピュータシステム１２６は１つ以上のさまざまなコンピュータまたはサーバを含み得る。いくつかの実施形態においては、エンタープライズコンピュータシステム１２６は単一のコンピュータシステムの一部であってもよい。
【００６６】
特定の実施形態においては、エンタープライズコンピュータシステム１２６は、１つ以上のさまざまなプロトコルを用いて、クラウドインフラストラクチャシステム１０２と通信し得る。各々のエンタープライズコンピュータシステム１２６は、さまざまな通信プロトコルを用いてクラウドインフラストラクチャシステム１０２と通信してもよい。エンタープライズコンピュータシステム１２６は同じセキュリティプロトコルまたは異なるセキュリティプロトコルをサポートし得る。いくつかの実施形態においては、ＭＣＳ１２２は、エンタープライズコンピュータシステム１２６との通信を処理するためのエージェントシステムを含み得る。
【００６７】
プロトコルはＳＰｅｅＤＹ（「ＳＰＤＹ」）などの通信プロトコルを含み得る。プロトコルは、ＨＴＴＰベースのプロトコルなどのアプリケーションプロトコルを含み得る。いくつかの実施形態においては、エンタープライズコンピュータシステム１２６は、ＲＥＳＴまたは簡易オブジェクト・アクセス・プロトコル（Simple Object Access Protocol：「ＳＯＡＰ」）などの通信プロトコルを用いて、クラウドインフラストラクチャシステム１０２と通信してもよい。たとえば、ＲＥＳＴプロトコルは、ユニフォームリソース識別子（uniform resource identifier：「ＵＲＩ」）またはユニフォームリソースロケータ（uniform resource locator：「ＵＲＬ」）を含むフォーマットをサポートし得る。ＲＥＳＴプロトコルを用いる通信用にフォーマットされたエンタープライズデータは、JavaScriptオブジェクト表記（JavaScript Object Notation：ＪＳＯＮ」）、コンマ区切り形式（comma-separated values：ＣＳＶ）、およびＲＳＳ（really simple syndication）などのようなデータフォーマットに容易に変換されてもよい。エンタープライズコンピュータシステム１２６およびクラウドインフラストラクチャシステム１０２は遠隔手続呼出し（remote procedure call：ＲＰＣ）（たとえば拡張マークアップ言語（extended markup language：ＸＭＬ））などの他のプロトコルを用いて通信してもよい。
【００６８】
いくつかの実施形態においては、ＭＣＳ１２２は、クラウドインフラストラクチャサービス１０２によって提供される１つ以上のサービスとの通信をサポートするように構成されたアダプタインターフェイスを含み得るものであって、そのうちのいくらかが、通信のためのさまざまなプロトコルまたは技術をサポート得る。いくつかの実施形態においては、ＭＣＳ１２２は、エンタープライズコンピュータシステム１２６との通信をサポートするように構成されたアダプタインターフェイスを含み得るものであって、そのうちのいくらかが、通信のためのさまざまなプロトコルまたは技術をサポート得る。ＭＣＳ１２２は、１つ以上のアダプタを含んでもよく、その各々は、通信プロトコル、或るタイプのエンタープライズコンピュータシステム、或るタイプのアプリケーション、或るタイプのサービス、またはそれらの組合せに従って通信するように構成され得る。アダプタによってサポートされる通信プロトコルは、エンタープライズコンピュータシステム１２６のうち１つ以上のシステムのサービスに特有のものであり得る。
【００６９】
特定の実施形態においては、クライアントコンピューティングデバイス１０４、１０６および１０８は各々、ＭＣＳ１２２と通信するための特定のＵＩを提供することができるアプリケーションを実現し得る。特定のＵＩは、特定の通信プロトコルを用いて通信するように構成され得る。いくつかの実施形態においては、特定のＵＩは、ＭＣＳ１２２と通信するよう呼出され得る呼出し可能インターフェイス、機能、ルーチン、方法および／または動作を含んでもよい。特定のＵＩは、入力として、クラウドインフラストラクチャサービス１０２によって提供されるサービスと、または、エンタープライズデータのためのおよび／もしくはサービスを要求するためのエンタープライズコンピュータシステム１２６と、通信するためのパラメータを受付け得る。いくつかの実施形態においては、ＭＣＳ１２２を介する通信がカスタム通信プロトコルを用いる通信用に変換されてもよい。いくつかの実施形態においては、特定のＵＩは、アプリケーションにおけるカスタムクライアントに対応し得る。
【００７０】
ＭＣＳ１２２は、１つ以上の呼出し可能なインターフェイス（たとえばＡＰＩ）を含み得る。ＭＣＳ１２２に関連付けられた呼出し可能なインターフェイスは、モバイルコンピューティングデバイス上のアプリケーションがＭＣＳ１２２に要求を伝えることを可能にし得る。ＭＣＳ１２２に関連付けられた呼出し可能なインターフェイスは、共通または標準のインターフェイスをサポートし得るものであって、これは、それらのパラメータを含む要求が、標準化されたプロトコル、アーキテクチャスタイルおよび／またはフォーマット（たとえばＲＥＳＴプロトコル）に従ったアプリから受取られることを可能にし得る。ＭＣＳ１２２に関連付けられた呼出し可能なインターフェイスは、コンピューティングデバイス１０４、１０６または１０８のうちのいずれか１つのユーザによって構成可能であり得る。ＭＣＳ１２２に関連付けられた呼出し可能なインターフェイスは、通信プロトコルに従ってサービスについての要求を受取り得る。デバイスアプリケーション開発者は彼らのカスタムアプリケーションのためにＭＣＳ１２２に接続することができる。いくつかの実施形態においては、ＭＣＳ１２２に関連付けられた呼出し可能なインターフェイスは、アプリを開発するのと同じ人によって構成され得ることにより、その人がＭＣＳ１２２と通信するためにカスタムアプリケーションを実現することができるようにし得る。
【００７１】
ＭＣＳ１２２に関連付けられた呼出し可能なインターフェイスは、さらに、エンタープライズコンピュータシステム１２６が、標準化されたプロトコルまたはフォーマットに従ってＭＣＳ１２２と通信することを可能にし得る。アプリケーション開発者と同様に、エンタープライズコンピュータシステムを管理する人々は、１つ以上の呼出し可能なインターフェイスを介してＭＣＳ１２２と通信するように構成されたコード（たとえばエージェントシステム）を実現することができる。ＭＣＳ１２２に関連付けられた呼出し可能なインターフェイスは、或るタイプのコンピューティングデバイス、或るタイプのエンタープライズコンピュータシステム、アプリ、エージェントシステム、サービス、プロトコルまたは他の基準に基づいて実現されてもよい。いくつかの実施形態においては、ＭＣＳ１２２に関連付けられた呼出し可能なインターフェイスは、認証、圧縮、暗号化、カーソルでのページ付け、クライアントに基づくスロットル、非否認、ロギング、およびメトリック収集を含むサービスに対する要求をサポートしてもよい。いくつかの実施形態においては、ＭＣＳ１２２に関連付けられた呼出し可能なインターフェイスは、認証、ポリシー実施、応答のキャッシング、ＭＣＳ１２２に対する呼出しのスロットル、非同期パターンと同期パターンと間の翻訳、基底サービスに対する呼出しのロギング、またはそれらの組合せなどの、カスタムのビジネス関連サービスのために実現されてもよい。いくつかの実施形態においては、ＭＣＳ１２２に関連付けられた呼出し可能なインターフェイスは、ユーザが、クラウドインフラストラクチャシステム１０２によって実装されるカスタムコードをロードすることを可能にし得る。カスタムコードは、ユーザがカスタムサービスまたは他のエンタープライズコンピュータシステムにアクセスすることを可能にし得る、クラウドインフラストラクチャシステム１０２に対するＭＣＳ１２２に関連付けられた１つ以上の呼出し可能インターフェイス２５０を実現し得る。
【００７２】
ＭＣＳ１２２に関連付けられたプロトコルトランスレータは、メッセージのための通信プロトコルを決定するように、および／または、メッセージを宛先に関する通信プロトコルに変換するように、メッセージを処理し得る。ＭＣＳ１２２に関連付けられたプロトコルトランスレータは、クライアントコンピューティングデバイス１０４、１０６または１０８から受取られた要求を変換し得る。当該要求は、クライアントコンピューティングデバイス１０４、１０６、または１０８によってサポートされる通信プロトコルのフォーマットから、クラウドインフラストラクチャサービス１０２またはエンタープライズコンピュータシステム１２６によって提供されるサービスによってサポートされる通信プロトコルのフォーマットに変換されてもよい。ＭＣＳ１２２に関連付けられたプロトコルトランスレータは、クラウドインフラストラクチャサービス１０２またはエンタープライズコンピュータシステム１２６によって提供されるサービスから受取られた応答を変換し得る。応答は、クラウドインフラストラクチャサービス１０２またはエンタープライズコンピュータシステム１２６によって提供されるサービスによってサポートされる通信プロトコルのフォーマットから、クライアントコンピューティングデバイス１０４、１０６または１０８によってサポートされる通信プロトコルのフォーマットに変換されてもよい。
【００７３】
ＭＣＳ１２２に関連付けられたセキュリティサービスは、クライアントコンピューティングデバイス１０４、１０６または１０８のうちいずれかから受取られた要求についてのセキュリティ認証を管理し得る。ＭＣＳ１２２に関連付けられたセキュリティサービスは、顧客処理およびエンタープライズデータの完全性を保護し得る。システムまたはデータが損なわれるのを防ぐために、要求がクライアントコンピューティングデバイス１０４、１０６または１０８から受取られると、セキュリティ認証が発生し得る。セキュリティ認証は、要求がクラウドインフラストラクチャシステム１０２による処理のために発送される前に、実行されてもよい。ユーザのために決定されたセキュリティ認証は、モバイルコンピューティングデバイスに関連付けられたユーザが、ＭＣＳ１２２を介してサービスを要求するための認可を得ることを可能にし得る。セキュリティ認証は、ユーザがＭＣＳ１２２を介して要求されたさまざまなサービスおよび／または要求を認証するための労力を軽減し得る。ＭＣＳ１２２に関連付けられたセキュリティサービスは、要求のセキュリティを認証するさまざまな動作を実行するように構成された１つ以上の機能ブロックまたはモジュールとして実現されてもよい。
【００７４】
ＭＣＳ１２２に関連付けられた認証サービスは、クライアントコンピューティングデバイス１０４、１０６または１０８から受取られた要求についてのセキュリティ認証を管理し得る。ＭＣＳ１２２に関連付けられた認証サービスは、ＭＣＳ１２２に要求を送信するコンピューティングデバイスに関連付けられたユーザについてのセキュリティ認証を決定し得る。セキュリティ認証は、アプリケーションの動作、（たとえば、アプリケーションの開始）、要求、コンピューティングデバイス、エンタープライズコンピュータシステム、要求に関する他の基準、またはそれらの組合せに関連付けられ得る期間に基づいて決定されてもよい。セキュリティ認証は、個々の要求、１つ以上のエンタープライズコンピュータシステム、特定のサービス、サービスのタイプ、ユーザ、コンピューティングデバイス、セキュリティ認証を決定するための他の基準、または、それらの組合せなどのうちいずれか１つのために検証されて許可され得る。いくつかの実施形態においては、クラウドインフラストラクチャシステム１０２は、エンタープライズコンピュータシステムまたはエンタープライズコンピュータシステムをサポートする認証システムから受取られたユーザの認証情報を記憶し得る。クラウドインフラストラクチャシステム１０２は、要求に関連付けられたユーザのアイデンティティがこのような要求を行う権限を有してしているかどうかを判断するために、ルックアップ機能を実行することによって認証を決定してもよい。記憶された認証情報は、アクセスする権限がユーザに与えられ得るような情報、たとえば、要求のタイプ、機能、エンタープライズコンピュータシステム、エンタープライズデータなどを含み得る。いくつかの実施形態においては、インフラストラクチャシステム１０２は、認証を判断するために、要求を行なっているコンピューティングデバイスとの通信を開始し得る。
【００７５】
いくつかの実施形態においては、セキュリティ認証は、サービスを要求するユーザに関連付けられた役割に基づいて決定されてもよい。当該役割は、ＭＣＳ１２２へのアクセスを要求するユーザに関連付けられてもよい。いくつかの実施形態においては、ユーザは、ＭＣＳ１２２によって提供されるリソースおよび／またはサービスへのアクセスが許可され得るＭＣＳ１２２のサブスクライバまたはテナントとしてサービスを要求してもよい。認証は、サブスクライバとしてＭＣＳ１２２を介してサービスを要求する権限がユーザに与えられ得るように、ＭＣＳ１２２に対するユーザのサブスクリプションに対応し得る。いくつかの実施形態においては、サブスクリプションはＭＣＳ１２２によって提供される特定のセットのリソースに限定されてもよい。セキュリティ認証は、ＭＣＳ１２２のユーザにアクセス可能なリソースおよび／またはサービスに基づいていてもよい。いくつかの実施形態においては、要求は、「実行時環境」と呼ばれる実行中にテンプレートがプロビジョニングされてもよい。実行時環境は、要求、ユーザまたはデバイスに割当てられるリソースに関連付けられてもよい。
【００７６】
いくつかの実施形態においては、ＭＣＳ１２２に関連付けられた認証サービスは、アイデンティティ管理システムに、ユーザについてのセキュリティ認証を判断するよう要求してもよい。アイデンティティ管理システムは、クラウドインフラストラクチャコンピュータシステム１０２によって（たとえばアイデンティティ管理１１４として）、またはクラウドインフラストラクチャシステム１０２に外付けの別のコンピュータシステムによって、実現されてもよい。アイデンティティ管理１１６は、ユーザの役割またはＭＣＳ２１２にアクセスするためのサブスクリプションに基づいてユーザのセキュリティ認証を判断してもよい。役割またはサブスクリプションは、エンタープライズコンピュータシステム、エンタープライズコンピュータシステムによって提供されるサービス、エンタープライズコンピュータシステムの機能もしくは特徴、エンタープライズコンピュータシステムへのアクセスを制御するための他の基準、またはそれらの組合せに関して特権および／または資格が割当てられていてもよい。
【００７７】
ＡＤＦ
さまざまな異なるＡＤＦ１２４がクラウドインフラストラクチャシステム１０２に提供され得る。ＡＤＦ１２４は、アジャイルなＳＯＡベースのアプリケーションを実装するためにインフラストラクチャコードを提供する。ＡＤＦ１２４はさらに、１つ以上の開発ツール（たとえば「Oracle JDeveloper 11g」開発ツール）によって開発に視覚的および宣言的なアプローチを提供する。ＡＤＦ１２４によって提供される１つ以上のフレームワークはＭＶＣ設計パターンを実現し得る。このようなフレームワークはオブジェクト／リレーショナルマッピング、データ持続性、再使用可能なコントローラ層、リッチ・ウェブＵＩフレームワーク、ＵＩへのデータ・バインディング、セキュリティおよびカスタマイズのような分野に対するソリューションを用いてＭＶＣアーキテクチャの層をすべてカバーする一体型ソリューションを提供する。このようなフレームワークはまた、コア・ウェブベースのＭＶＣアプローチよりも拡張させると、完全な複合アプリケーションの作成を単純化するOracle SOAおよびウェブセンタ・ポータル・フレームワークと一体化される。
【００７８】
特定の実施形態においては、ＡＤＦ１２４は、クラウドインフラストラクチャシステム１０２によって提供される組込み型ビジネスサービスにサービスインターフェイスを結合することによって、データをサービスとして公開するアジャイルなアプリケーションを開発することを容易にする。ビジネスサービスの実装詳細のこのような分離は、ＡＤＦ１２４においてメタデータを介して行なわれる。このメタデータ駆動型アーキテクチャを使用することにより、アプリケーション開発者らは、サービスがどのようにアクセスされるかについての詳細にではなく、ビジネスロジックおよびユーザ経験に集中できるようになる。特定の実施形態においては、ＡＤＦ１２４は、これらのサービスの実装詳細を、モデル層におけるメタデータに格納する。これにより、開発者らは、ＵＩを修正することなくサービスを交換できるようになり、アプリケーションが非常にアジャイルになる。加えて、ＵＩを作成する開発者は、ビジネスサービスアクセスの詳細に煩わされる必要がなくなる。代わりに、開発者らは、アプリケーションインターフェイスおよび対話論理の開発に集中することができる。ユーザ体験を発生させることは、ビジュアルページデザイナ上に所望のビジネスサービスをドラッグ・アンド・ドロップし、どのタイプのコンポーネントがそのデータを表わすべきかを示すのと同じくらい単純であり得る。
【００７９】
さまざまな実施形態においては、開発者らは、エンタープライズアプリケーションを形成するモジュールを作成するためにＡＤＦ１２４と対話する。エンタープライズアプリケーションは、クラウドインフラストラクチャシステム１０２のコンテキスト内で実行することができる。さまざまな実施形態においては、開発者らは、モバイルアプリケーションを形成するモジュールを作成するためにＡＤＦ１２４と対話する。モバイルアプリケーションは、クラウドインフラストラクチャシステム１０２のコンテキスト内で実行することができる。以下に説明される本発明の特徴は、ここに提供される開示を当業者が読めば明らかとなり得るように、プログラミング言語とアプリケーション開発フレームワークとのいずれかの所望の組合せを用いて実現され得る。
【００８０】
ＡＤＦ１２４によって提供される１つ以上のフレームワークは、一例においてはＯｒａｃｌｅ  ＡＤＦとして具体化され得る。したがって、ＡＤＦ１２４におけるフレームワークはＭＶＣ設計パターンに基づき得る。ＭＶＣアプリケーションは、以下に分離される：１）データソースとのやりとりを扱い、ビジネスロジックを実行するモデル層と；２）アプリケーションＵＩを扱うビュー層と；３）アプリケーションフローを管理し、モデル層とビュー層との間のインターフェイスとして作用するコントローラと；に分離される。アプリケーションをこれら３つの層に分離することにより、アプリケーション間にわたるコンポーネントの保守および再使用が簡略化される。各層を他の層から独立させることで、結果として、緩く結合されたＳＯＡが得られる。
【００８１】
さまざまな実施形態においては、ＡＤＦ１２４は、開発者がアプリケーションを複数層の形状で作成することを可能にするツールおよびリソースを提供する。各々の層は、予め定義された規格に従って所望の論理を実現するコードモジュール／ファイルを含んでいる。このため、一実施形態においては、ＡＤＦ１２４は、アプリケーションを４層として開発することができる。４層とはすなわち、アプリケーションのＵＩを提供するコードモジュール／ファイルを含むビュー層；アプリケーションのフローを制御するコードモジュールを含むコントローラ層；基底層のために抽象化層を提供するデータ／コードモジュールを含むモデル層；および、さまざまなソースからのデータにアクセスを提供し、ビジネスロジックを処理するコードモジュールを含むビジネスサービス層；を含む。
【００８２】
特定の実施形態においては、ＡＤＦ１２４は、当該層の各々を実装する際に開発者らが用いることを望む技術を当該開発者らに選択させる。エンタープライズJavaBean（Enterprise JavaBean：「ＥＪＢ」）、ウェブサービス（Web Services）、JavaBeans、JPA／EclipseLink／TopLinkオブジェクト他の多くがすべて、ＡＤＦ１２４のためのビジネスサービスとして使用可能である。ビュー層は、ＪＳＦ（Java Server Faces）、デスクトップスイング（Desktop Swing）アプリケーション、およびＭｉｃｒｏｓｏｆｔ Ｏｆｆｉｃｅのフロントエンドを用いて実現されるウェブベースのインターフェイスと、モバイルデバイスのためのインターフェイスとを含み得る。
【００８３】
一局面においては、ビュー層は、開発中のアプリケーションのＵＩを表現する。ビュー層は、デスクトップビュー、モバイルビュー、およびブラウザベースのビューを含み得るものであって、それらの各々はＵＩのすべてまたは一部を提供するとともに、ビュータイプに対応するさまざまな態様でアクセス可能である。たとえば、ウェブページが、対応するＵＲＬを含むクライアント要求を受信することに応答して、アプリケーションによって送信されてもよい。ウェブページは次に、要求元クライアントシステムに関連付けられた表示部（図示せず）上にブラウザによって表示されてもよく、それにより、要求元クライアントシステムのユーザがエンタープライズアプリケーションとやりとりすることを可能にする。ＡＤＦ１２４は、ビジネスサービスの再使用を可能にするビジネスサービスへのマルチチャネルアクセスと、ウェブクライアント、クライアント・サーバ・スイングデスクトップベースのアプリケーション（client-server swing desktop-based application）、マイクロソフト・エクセル・スプレッドシート、スマートフォンなどのモバイルデバイス、などからのアクセスとをサポートする。
【００８４】
（ウェブページなどの）ビュー層を形成するコードファイル／モジュールは、ハイパーテキストマークアップ言語（hypertext markup language：ＨＴＭＬ）、Ｊａｖａサーバページ（Java server page：ＪＳＰ）、およびＪＳＦのうちの１つ以上を用いて実現されてもよい。代替的には、ＵＩは、スイング（Swing）などのＪａｖａコンポーネントおよび／またはＸＭＬを用いて実現されてもよい。さらに示されるように、ＵＩは、マイクロソフトによるワードおよびエクセルなどのデスクトップアプリケーションについてのユーザの経験および熟知度を活用してもよい。
【００８５】
上述のように、ユーザが開発した関連するコード／データモジュールが、層の各々において提供される。しかしながら、各層は典型的には、ＡＤＦ１２４によって提供された他の予め定義されたコード／データモジュールを含む。予め定義されたモジュールのうちのいくつかは、たとえば、ウェブページを開発するためのテンプレート、開発されたコードに所望の機能性を含めるためのテンプレートなどとして、開発中に使用されてもよい。（ＵＲＬ書換モジュールなどの）他の予め定義されたモジュールが、開発されたアプリケーションとともにデプロイされてもよく、エンタープライズアプリケーションの実行中に追加の機能性（要求されたＵＲＬの、内部名へのマッピング）をユーザに提供してもよい。
【００８６】
コントローラ層は、アプリケーションのフローを制御するコードモジュール／ファイルを含む。各コントローラオブジェクトは、ビュー層１１０において情報を提示する所望の態様に従って実現されたソフトウェア命令および／またはデータを含む。所望の態様は、別のウェブページにおけるリンクがユーザによってクリック／選択されると表示される特定のウェブページ、実行中にエラーが起こると表示される、格納／検索すべき特定のデータを示すページなどを含んでいてもよい。
【００８７】
一局面では、コントローラ層はアプリケーションフローを管理し、ユーザ入力を扱う。たとえば、ページ上でサーチボタンがクリックされると、コントローラは、どのアクションを行なうべきか（サーチを行なう）と、どこにナビゲートすべきか（結果ページ）とを判断する。JDeveloperでは、ウェブベースのアプリケーションについて、標準のＪＳＦコントローラ、またはＪＳＦコントローラ機能性を拡張するＡＤＦコントローラという２つのコントローラオプションがある。どちらのコントローラが使用されても、アプリケーションフローは典型的には、ページおよびナビゲーションルールをダイアグラム上にレイアウトすることによって設計される。アプリケーションのフローは、より小さい、再使用可能なタスクフローに分割可能であり、方法コールおよび決定ポイントなどの非視覚的コンポーネントをフローに含めることでき、単一の含有ページの領域内で実行される「ページフラグメント」フローを作成することができる。
【００８８】
コントローラ層を形成するコードモジュール／ファイルはしばしば、クライアント要求を受信するととともに対応する応答として所望のウェブページを送信するＪａｖａサーブレットとして実現される。コントローラオブジェクトはまた、たとえば、アパッチジャカルタストラット（Apache Jakarta Struts）コントローラとして、またはＪＳＦ規格に従って実現されてもよい。
【００８９】
モデル層は、さまざまなビジネスサービスを、それらを他の層で使用するオブジェクトに、たとえば上述のコントローラオブジェクトに、または直接デスクトップアプリケーションに接続する、データ／コードモジュールを含む。モデル層の各抽象データオブジェクトは、任意のタイプのビジネスサービスにアクセスするために使用可能である対応するインターフェイスを提供し、基礎をなすビジネスサービス層で実行される。データオブジェクトは、クライアントからサービスのビジネスサービス実装詳細を抽象化し、および／または、データ制御方法／属性をビューコンポーネントに公開してもよく、こうして、ビュー層とデータ層とを分離させる。
【００９０】
一局面では、モデル層は、データ制御およびデータ結合という２つのコンポーネントからなり、それらは、インターフェイスを定義するためにメタデータファイルを利用する。データ制御は、クライアントからビジネスサービス実装詳細を抽象化する。データ結合は、データ制御方法および属性をＵＩコンポーネントに公開し、ビューとモデルとをクリーンに分離する。モデル層のメタデータアーキテクチャにより、開発者らは、任意のタイプのビジネスサービス層実装をビュー層およびコントローラ層に結合する際に、同じ開発経験を得る。
【００９１】
特定の実施形態においては、ＡＤＦ１２４は、開発プロセス全体にわたって宣言的プログラミングパラダイムの使用を強調して、ユーザが、実現詳細に精通する必要なしに、アプリケーション作成のロジックに集中できるようにする。高レベルでは、フュージョン（Fusion）ウェブアプリケーションのための開発プロセスは、通常、アプリケーションワークスペースを作成することを伴う。ウィザードを使用して、開発者が選択した技術にとって必要なライブラリおよび構成が自動的に追加され、アプリケーションが、パッケージおよびディレクトリを有するプロジェクトへと構造化される。
【００９２】
データベースオブジェクトをモデル化することにより、オンラインデータベースまたは任意のデータベースのオフラインレプリカが作成可能であり、定義が編集可能であり、スキーマが更新可能である。統一モデリング言語（unified modeling language：「ＵＭＬ」）モデラーを使用して、使用事例が次に、アプリケーションのために作成され得る。アプリケーション制御およびナビゲーションもデザイン可能である。アプリケーション制御およびナビゲーションのフローを視覚的に判断するために、ダイアグラマ（diagrammer）が使用可能である。次に、フローを記述する根底的なＸＭＬファイルが自動的に作成可能である。開発者が、インポートされたライブラリを、アプリケーションに単純にドラッグ・アンド・ドロップすることによって閲覧および使用することを可能にするために、リソースライブラリが使用可能である。データベーステーブルから、エンティティオブジェクトが、ウィザードまたはダイアログを使用して作成可能である。それらのエンティティオブジェクトから、ビューオブジェクトが、アプリケーションにおけるページによって使用されるように作成される。検証ルールおよび他のタイプのビジネスロジックが実現可能である。
【００９３】
この例では、ビジネスサービス層は、データ持続性層とのやりとりを管理する。それは、データ持続性、オブジェクト／リレーショナルマッピング、トランザクション管理、およびビジネスロジック実行などのサービスを提供する。ビジネスサービス層は、シンプルＪａｖａクラス、ＥＪＢ、ウェブサービス、ＪＰＡオブジェクト、およびオラクルＡＤＦビジネスコンポーネントといったオプションのうちのいずれかで実装可能である。加えて、データは、ファイル（ＸＭＬまたはＣＳＶ）およびＲＥＳＴから直接消費され得る。このため、各ビジネスサービスは、対応するデータ持続性層とのやりとりを管理し、また、オブジェクト／リレーショナルマッピング、トランザクション管理、ビジネスロジック実行などのサービスを提供する。ビジネスサービス層は、シンプルＪａｖａクラス、エンタープライズＪａｖａ  Ｂｅａｎｓ、ウェブサービスなどのうちの１つ以上を使用して実装されてもよい。
【００９４】
ビジネスコンポーネントは、データベース、ウェブサービス、レガシーシステム、アプリケーションサーバなどとのやりとりを提供するために、たとえばオラクル社による「オラクルＡＤＦビジネスコンポーネント」を使用して実装されるビジネスサービスを表わす。一実施形態では、ビジネスサービス層のビジネスコンポーネントは、ビジネスサービス実装を提供するために協働するアプリケーションモジュール、ビュー／クエリーオブジェクト、およびエンティティオブジェクトの混合を含む。アプリケーションモジュールは、アプリケーション／トランザクションデータと連携するためにＵＩクライアントが通信するトランザクションコンポーネント／コードモジュールであり得る。アプリケーションモジュールは、更新可能なデータモデルを提供してもよく、また、ユーザトランザクションに関する手順／機能（一般にサービス方法と呼ばれる）を提供してもよい。
【００９５】
エンティティオブジェクトは、データベーステーブルにおける対応する行を表わしてもよく、対応する行に格納されたデータの操作（更新、削除など）を簡略化する。エンティティオブジェクトはしばしば、所望のビジネスルールが一貫して実施されることを確実にするために、対応する行のためのビジネスロジックをカプセル化する。エンティティオブジェクトはまた、根底的なデータベースに格納された行間に存在する関係を反映するように、他のエンティティオブジェクトに関連付けられてもよい。
【００９６】
図２は、本発明のいくつかの実施形態に従ってモバイルコンピューティングデバイスとエンタープライズコンピュータシステムとの間における通信を容易にするためのコンピューティング環境１００のブロック図を示す。説明の目的のため、さまざまな例が、本明細書において、モバイルコンピューティングデバイス（たとえば、コンピューティングデバイス２０２）がクラウドエンタープライズコンピュータシステム２４０（たとえば、「serviceprovider.com」）およびオンプレミスのエンタープライズコンピュータシステム２５０などの１つ以上のエンタープライズコンピュータシステムと通信することを可能にするための技術を記載するよう、与えられる。そのような通信は、エンタープライズデータを交換もしくは転送すること、エンタープライズコンピュータシステムによって与えられるサービスを要求すること、メッセージを通信すること、またはそれらの組合せであってもよい。
【００９７】
メッセージは、サービス呼出しメッセージ、結果メッセージ、要求メッセージ、内部で通信される他のメッセージ、コンピューティングデバイスとエンタープライズコンピュータシステムとの間において通信される他のメッセージ、またはそれらの組合せを含んでもよい。メッセージは、メッセージタイプ（たとえば、１組の共有されるタイプ定数からのタイプ値）、相関ｉｄ（たとえば、このメッセージを１つ以上の他のメッセージと相関付けるよう用いられるｉｄ）、優先順位に基づくメッセージキューについてサポートするための優先順位情報、タイムアウト、メッセージデータ分離をサポートする秘密度表示子、メッセージ源（たとえば、送信側のユニフォームリソース識別子）、メッセージ宛先（たとえば、宛先を一意に識別するユニフォームリソース識別子）、要求コンテキスト（たとえば、ディスパッチャからの要求情報）、および／またはメッセージペイロードを含んでもよい。ペイロードは、パラメータデータおよび結果データなどの、送信されているメッセージのタイプによって、異なる属性を有してもよい。
【００９８】
本明細書に記載されるエンタープライズデータは、エンタープライズコンピュータシステムから受信されるデータ、エンタープライズコンピュータシステムに送信されるデータ、エンタープライズコンピュータシステムによって処理されるデータ、またはそれらの組合せを含んでもよい。エンタープライズデータは、消費者アプリケーションおよび／またはサービスに対するデータとは区別可能であってもよい。いくつかの実施形態では、たとえば、エンタープライズデータはエンタープライズデータの適用または使用に基づいて変化してもよく、一方、消費者アプリケーションに対するデータ（たとえば、消費者データ）は使用を通して静的なままであってもよい。特定の実施形態では、エンタープライズデータは、エンタープライズデータを記憶、使用および／または管理することに関する基準を示すルールを含むかまたはそのようなルールと関連付けられてもよい。たとえば、エンタープライズデータは、エンタープライズデータを記憶、使用および／または管理することに関する１つ以上のポリシーを示すポリシー情報と関連付けられてもよい。特定の実施形態では、ポリシー情報は、エンタープライズデータに含まれてもよい。特定の実施形態では、エンタープライズデータは、エンタープライズコンピュータシステムにおいて実行されるアプリケーションまたはサービスによって処理、記憶、使用または通信されるデータを含んでもよい。たとえば、エンタープライズデータは、エンタープライズアプリケーションからのＪＳＯＮ（ＪａｖａＳｃｒｉｐｔ（登録商標）Ｏｂｊｅｃｔ表記法）フォーマット化データ、構造化されたデータ（たとえば、キー値ペア）、非構造化データ（たとえば、アプリケーションによって処理または用いられる内部データ、ＪＳＯＮフォーマットにおけるデータ、ソーシャルポスト、カンバセーションストリーム、アクティビティフィードなど）、バイナリラージオブジェクト（ＢＬＯＢ）、ドキュメント、システムフォルダ（たとえば、サンドボックス環境におけるアプリケーション関連フォルダ）、ＲＥＳＴ技術（本明細書では「ＲＥＳＴフルなデータ」と称される）を用いるデータ（たとえば、ＲＥＳＴエンドポイントによって利用可能にされる同期データ）、システムデータ、構成データ、同期データ、またはそれらの組合せなどのビジネスデータ（たとえば、ビジネスオブジェクト）を含んでもよい。いくつかの実施形態では、エンタープライズデータは、ＲＥＳＴフォーマット化されたエンタープライズデータを含んでもよい。ＲＥＳＴフォーマット化されたエンタープライズデータは、ＲＥＳＴフルなデータを含んでもよい。ＲＥＳＴフォーマット化されたデータは、エンタープライズコンピュータシステムによって実現されるＲＥＳＴ技術に従ってフォーマットされるデータを含んでもよい。構成または同期データは、バージョン、履歴、統合データなどのようなエンタープライズデータの同期のために用いられるデータを含んでもよい。エンタープライズデータにおけるドキュメントは、ＸＭＬファイル、ビジュアルアセット、構成ファイル、メディアアセットなどを含んでもよい。ＢＬＯＢは、画像、マルチメディアオブジェクト、もしくは実行可能コード、またはそれ以外の場合には当該技術分野において公知のような、データベース管理システムにおいて単一のエンティティとして記憶されるバイナリデータの収集物を含んでもよい。
【００９９】
エンタープライズコンピュータシステムは、エンティティまたはエンタープライズのために動作するように構成されるさまざまなコンピューティングシステムを含んでもよい。たとえば、エンタープライズコンピュータシステムは、サービスに対する要求を処理するよう、エンタープライズサーバコンピュータ（たとえば、バックエンドサーバコンピュータ）などの、１つ以上のコンピュータシステムを含んでもよい。エンタープライズコンピュータシステムは、エンタープライズデータを用いて処理および／または動作が可能なアプリケーションおよび／またはサービスを含んでもよい。たとえば、エンタープライズコンピュータシステム２５０は、エンタープライズを管理または動作させるための１つ以上のサービスおよび／またはアプリケーションを提供してもよい。サービスは、顧客関係性管理（customer relationship management：ＣＲＭ）、人的資本管理（human capital management：ＨＣＭ）、人的リソース（human resource：ＨＲ）管理、サプライチェーン管理、エンタープライズ通信、電子メール通信、業務サービス、他のエンタープライズ管理サービスもしくはアプリケーション、またはそれらの組合せを含んでもよい。エンタープライズコンピュータシステム２５０は、１つ以上のサービスを提供するための専用の１つ以上のコンピュータシステムを含み得るが、これらに限定されない。いくつかの実施形態では、あるサービスを提供する異なるコンピュータシステムは各々、エンタープライズのオンプレミスにあってもよく、またはエンタープライズから遠隔地にあってもよい。いくつかの実施形態では、異なるサービスをサポートする複数の異なるコンピュータシステムは、エンタープライズのオンプレミスなどのような、単一の地理的な位置にあってもよい。図２に示される例では、オンプレミスのエンタープライズコンピュータシステム２５０は、ＨＲシステム２５４およびＣＲＭシステム２５６を含んでもよく、それらの両方がエンタープライズのオンプレミスに位置してもよい。いくつかの実施形態では、エンタープライズコンピュータシステム２５０は、エージェントシステム２５２を含むかまたは実現することによって、クラウドコンピュータシステム２１０と１つ以上のエンタープライズシステム２５４，２５６との間における通信を容易にするかまたは処理してもよい。クラウドエンタープライズコンピュータシステム２４０およびオンプレミスエンタープライズコンピュータシステム２５０などのようなエンタープライズコンピュータシステムについて、以下にさらに詳細に記載する。
【０１００】
コンピュータ環境２００は、コンピューティングデバイス２０２と１つ以上のエンタープライズコンピュータシステムとの間における通信を容易にし得るセキュアな仲介コンピューティング環境として動作するよう実現されるＭＣＳ２１２を含んでもよい。なぜならば、コンピューティングデバイス２０２は、そのようなエンタープライズコンピュータシステムと通信するようには構成されないかもしれないからである。たとえば、いくつかのエンタープライズコンピュータシステムは、レガシーまたはバックエンドコンピュータシステムによってサポートされてもよい。そのようなシステムは、異なる通信および／またはセキュリティプロトコルを用いて動作するよう構成されてもよい。そのようなエンタープライズコンピュータシステムによってサポートされるプロトコルは、モバイルコンピューティングデバイスによってサポートされるものとは異なってもよい。ＭＣＳ２１２は、異なるタイプのモバイルコンピューティングデバイスとの通信をサポートしてもよい。したがって、ＭＣＳ２１２は、エンタープライズコンピュータシステムとモバイルコンピューティングデバイスとの間における通信を容易にするよう、技術を実現して、それらが、フォーマットまたは通信プロトコル間における違いなどのような、それらの通信における非互換性にも係わらず、互いと通信できるようにしてもよい。たとえば、ＭＣＳ２１２は、モバイルコンピューティングデバイスとエンタープライズコンピュータシステムとの間で通信プロトコルを翻訳し得る。
【０１０１】
クラウドコンピュータシステム２１０はＭＣＳ２１２をサポートし得る。クラウドコンピュータシステム２１０は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せを用いて実現されてもよい。たとえば、クラウドコンピュータシステム２１０は、サーバコンピュータなどのような１つ以上のコンピューティングデバイスを含んでもよい。クラウドコンピュータシステム２１０は１つ以上のメモリ記憶装置および１つ以上のプロセッサを含んでもよい。メモリ記憶装置は、プロセッサにとってアクセス可能であり得、そこに記憶される命令を含むことができ、それらは、プロセッサによって実行されると、プロセッサに本明細書に開示される１つ以上の動作を実行させる。いくつかの実施形態では、メモリ記憶装置はローカルストレージ（たとえばキャッシュ）として動作してもよい。クラウドコンピュータシステム２１０は異なる種類のオペレーティングシステムを含んでもよい。メモリ記憶装置はプロセッサにとってアクセス可能であってもよく、そこに記憶される命令を含んでもよく、それらは、プロセッサによって実行されると、プロセッサに本明細書に開示される１つ以上の動作、方法またはプロセスを実行させる。メモリ記憶装置はローカルストレージとして動作してもよい。ローカルストレージは、メモリ記憶装置または他のコンピュータ読取可能記憶媒体などのような任意のタイプの永続的な記憶装置を用いて実現されてもよい。いくつかの実施形態では、ローカルストレージは、１つ以上のデータベース（たとえばドキュメントデータベース、リレーショナルデータベースまたは他のタイプのデータベース）、１つ以上のファイルストア、１つ以上のファイルシステム、またはそれらの組合せを含むかまたは実現してもよい。ローカルストレージはエンタープライズデータを記憶してもよい。
【０１０２】
特定の実施形態では、クラウドコンピュータシステム２１０は、メタデータリポジトリ２２４、診断法ストア１２６および解析論ストア２２８などの１つ以上のデータストアを含んでもよい。データストア２２４，２２６，２２８は、クラウドコンピュータシステム２１０におけるいずれのコンポーネントによってアクセス可能であってもよい。
【０１０３】
メタデータリポジトリ２２４は、ＭＣＳ２１２に関連付けられるすべてのメタデータを記憶してもよい。この情報は、実行時データおよび設計時データの両方からで構成されてもよく、それらの各々は利用可能性および性能の両方においてそれら自身の要件を有する。ＭＣＳ２１２のテナントまたはサブスクライバは任意の数のアプリケーションを有してもよい。各アプリケーションはバージョン化されてもよく、それらのリソースＡＰＩが契約する、関連付けられる０以上のバージョン化されたリソースＡＰＩおよび０以上のバージョン化されたサービスインプリメンテーションを有してもよい。これらのエンティティは、実行時が使用して仮想要求（ｍＡＰＩ）を具体的なサービスインプリメンテーション（サービス）にマッピングするものである。このマッピングは、モバイル開発者が自身のアプリケーションを設計および構築する際に実際のインプリメンテーションサービスを知る必要がないため、モバイル開発者にとって贅沢なものである。さらに、すべてのサービスバグ修正において新たなアプリケーションを再発行する必要もない。メタデータリポジトリ２２４は１つ以上の呼出し可能インターフェイスを記憶してもよく、それらはコンピューティングデバイス（たとえばコンピューティングデバイス２０２）によって呼出されてもよい。呼出し可能インターフェイスは、ＭＣＳ２１２との通信を容易にするよう、アプリケーションのユーザ（たとえば開発者）によってカスタマイズ可能であってもよい。メタデータリポジトリ２２４は、呼出し可能インターフェイスの１つ以上の構成に対応するメタデータを記憶してもよい。メタデータリポジトリ２２４は、呼出し可能インターフェイスを実現するためのメタデータを記憶するように構成されてもよい。呼出し可能インターフェイスは、通信のための１つのフォーマット、プロトコルまたはアーキテクチャのスタイルと通信のための他のフォーマット、プロトコルまたはアーキテクチャのスタイルとの間において翻訳するよう実現されてもよい。メタデータリポジトリ２２４は、認証されたユーザによって、外部のネットワークを介して修正可能であってもよい。
【０１０４】
診断法ストア２２６は、ＭＣＳ２１２において生じる処理についての診断法情報を記憶してもよい。診断法ストア２２６は、ＭＣＳ２１２を介して通信されるメッセージおよびログ情報を記憶してもよい。解析論ストア２２８は、システムにおける処理中に捕捉されたロギングおよび解析論データを記憶してもよい。
【０１０５】
ＭＣＳ２１２の代わりに、クラウドコンピュータシステム２１０はその計算リソースを利用してカスタムコード２１６（たとえば動作、アプリケーション、方法、ファンクション、ルーチンなど）の実行を可能にし得る。計算リソースは、使用のために、ＭＣＳ２１２のサブスクライバまたはテナントとして関連付けられる特定のユーザに関して、割当てられてもよい。リソースは、ユーザ、デバイス、アプリケーション、またはサブスクライバに関係付けられる他の基準に関して割当てられてもよい。ＭＣＳ２１２は、エンタープライズコンピュータシステムと通信することを求めるモバイルコンピューティングデバイスの要望に応じて、スケールインまたはスケールアウトされてもよい。ＭＣＳ２１２は、モバイルコンピューティングデバイスとエンタープライズコンピュータシステムとの間における通常のトラフィックよりも高いサージおよび一時的な期間を処理するよう柔軟性をもつように構成され得る。いくつかの実施形態では、ＭＣＳ２１２は、通信における要望を満足させるようコンポーネントが追加または置換され得るようにスケーラビリティをサポートする要素を含んでもよい。
【０１０６】
コンピューティングデバイス２０２は、エンタープライズコンピュータシステムによって提供されるサービスを要求するようにＭＣＳ２１２と通信してもよい（たとえば要求メッセージを送信してもよい）。コンピューティングデバイス２０２（たとえばモバイルコンピューティングデバイス）は、ハードウェア、ファームウェア、ソフトウェアまたはそれらの組合せを用いて実現されてもよい。コンピューティングデバイス２０２は、ＭＣＳ２１２を介してエンタープライズコンピュータシステム２４０，２５０と通信してもよい。コンピューティングデバイス２０２は、エンドポイントデバイス、ＰＤＡ、タブレットコンピュータ、ラップトップコンピュータ、モバイルコンピューティングデバイス、デスクトップコンピュータ、ウェアラブルコンピュータ、ページャなどを含んでもよく、またはそれらとして実現されてもよい。コンピューティングデバイス２０２は、１つ以上のメモリ記憶装置および１つ以上のプロセッサを含んでもよい。コンピューティングデバイス２０２は、異なる種類のオペレーティングシステムを含んでもよい。メモリ記憶装置はプロセッサにとってアクセス可能であってもよく、そこに記憶される命令を含んでもよく、それらは、プロセッサによって実行されると、プロセッサに本明細書に開示される１つ以上の動作、方法またはプロセスを実行させる。メモリ記憶装置はローカルストレージとして動作してもよい。ローカルストレージは、メモリ記憶装置または他のコンピュータ読取り可能記憶媒体などの任意のタイプの永続的な記憶装置を用いて実現されてもよい。いくつかの実施形態では、ローカルストレージは、１つ以上のデータベース（たとえばドキュメントデータベース、リレーショナルデータベースまたは他のタイプのデータベース）、１つ以上のファイルストア、１つ以上のファイルシステム、またはそれらの組合せを含むかまたは実現してもよい。ローカルストレージはエンタープライズデータを記憶してもよい。
【０１０７】
さまざまな実施形態では、コンピューティングデバイス２０２は、ウェブブラウザ、クライアントアプリケーション、所有権付きクライアントアプリケーションなどの１つ以上のアプリケーションを実行および動作させるよう構成されてもよい。アプリケーションは、エンタープライズコンピュータシステムによって提供されるエンタープライズデータおよび／またはサービスのために構成される特定のアプリケーションを含み得る。クライアントアプリケーションは１つ以上のネットワークを介してアクセス可能であるかまたは動作されてもよい。アプリケーションは、アプリケーションを動作させるためのグラフィカルＵＩ（ＧＵＩ）を含んでもよい。
【０１０８】
コンピューティングデバイス２０２は、ＭＣＳ２１２と、１つ以上の通信ネットワークを介して、無線通信を用いて通信してもよい。通信ネットワークの例は、モバイルネットワーク、無線ネットワーク、セルラーネットワーク、ＬＡＮ、ワイドエリアネットワーク（ＷＡＮ）、他の無線通信ネットワーク、またはそれらの組合せを含んでもよい。特定の実施形態では、コンピューティングデバイス２０２は、ＭＣＳ２１２との通信接続１１４を、カスタム通信プロトコル（たとえばカスタムプロトコル）を用いて確立してもよい。接続２１４が、クラウドコンピュータシステム２１０を介してＭＣＳ２１２と確立されてもよい。カスタムプロトコルはＨＴＴＰベースのプロトコルであってもよい。カスタム通信プロトコルを利用することによって、コンピューティングデバイス２０２は任意のコンピューティングデバイスプラットフォーム上で動作してクラウドコンピュータシステム２１０と通信してもよい。
【０１０９】
コンピューティングデバイス２０２は、たとえばＡＰＩである、１つ以上の呼出し可能インターフェイスを介して、クラウドコンピュータシステム２１０と通信してもよい。呼出し可能インターフェイスはコンピューティングデバイス２０２上において実現されてもよい。呼出し可能インターフェイスは、ＭＣＳ２１２と通信することができるカスタムアプリケーションに対して実現されてもよい。いくつかの実施形態では、呼出し可能インターフェイスはＭＣＳ２１２のために開発されてもよい。呼出し可能インターフェイスは、アプリケーションが、プロトコル（たとえば通信プロトコルもしくは開発プロトコル）および／またはアーキテクチャのスタイルもしくはフォーマットにおける違いに適合する必要なしに、ＭＣＳ２１２と通信することを可能にしてもよい。
【０１１０】
ＭＣＳ２１２は、要求を処理しカスタムコード２１６を実行するようセキュリティ上安全な環境を与えるように１つ以上のファイアウォール２０４，２３０によって保護されてもよい。コンピューティングデバイス２０２とＭＣＳ２１２との間における通信は、外部通信ファイアウォール２０４によって分離されてもよい。ファイアウォール２０４は、ＭＣＳ２１２へのセキュリティ上安全なアクセスを容易にするようにクラウドコンピュータシステム２１０と接続されてもよい。ファイアウォール２０４は、クラウドコンピュータシステム２１０とコンピューティングデバイス（たとえばコンピューティングデバイス２０２）との間におけるメッセージの通信を許可してもよい。そのようなメッセージ（たとえばＨＴＴＰメッセージまたはＲＥＳＴメッセージ）は、呼出し可能インターフェイスによってサポートされ得る通信プロトコル（たとえば、ＨＴＴＰまたはＲＥＳＴ）に準拠し得る。別の例では、クラウドコンピュータシステム２１０とコンピューティングデバイス２０２との間におけるメッセージは、ＳＰＤＹなどの通信プロトコルに準拠してもよい。ＭＣＳ２１２は、クラウドコンピュータシステム２１０とエンタープライズコンピュータシステム２４０，２５０との間における通信をセキュリティ上安全にするようにファイアウォール２３０を管理してもよい。ファイアウォール２３０は、クラウドコンピュータシステム２１０とコンピューティングデバイス（たとえばコンピューティングデバイス２０２）との間におけるメッセージの通信を許可してもよい。そのようなメッセージ（たとえばＳＰＤＹメッセージ、ＨＴＴＰメッセージまたはＲＥＳＴメッセージ）は、通信プロトコル（たとえばＳＰＤＹ、ＨＴＴＰまたはＲＥＳＴ）に準拠してもよい。コンピューティングデバイス２０２とエンタープライズコンピュータシステム２４０，２５０との間における通信はＭＣＳ２１２を介する二方向であってもよい。
【０１１１】
コンピューティングデバイス２０２およびエンタープライズコンピュータシステム２４０，２５０との通信がセキュリティ上安全ではないパブリックなネットワークを介して行われる可能性があるので、ファイアウォール２０４，２３０は、ＭＣＳ２１２へのおよびＭＣＳ２１２からの通信に対して追加の保護層を与える。ファイアウォール２０４，２３０は、ＭＣＳ２１２が、その内部ネットワークと、コンピューティングデバイス２０２およびエンタープライズコンピュータシステム２４０，２５０を接続する外部ネットワークとを区別することを可能にし得る。いくつかの実施形態では、ファイアウォール２０４，２３０は、２つの別個のファイアウォールとして示されるが、ＭＣＳ２１２を封入する単一のファイアウォールとして実現されてもよい。
【０１１２】
クラウドコンピュータシステム２１０はさらに、一部が異なる通信プロトコルを有し得るエンタープライズコンピュータシステムと通信することによって仲介コンピューティング環境として動作してもよい。そのような通信プロトコルは、クラウドコンピュータシステム２１０との通信において、あるアプリケーションまたはサービスに対してカスタムであるかまたは特定であってもよい。さらにクラウドコンピュータシステム２１０は、エンタープライズコンピュータシステムと通信して、エンタープライズサービスを提供し、および／または、エンタープライズコンピュータシステムによってサポートされるフォーマットに従ってエンタープライズデータを交換してもよい。クラウドコンピュータシステム２１０は、エンタープライズデータのローカルストレージ（たとえば、ローカルキャッシュ）を維持してもよく、そのローカルストレージを用いてモバイルコンピューティングデバイスとエンタープライズコンピュータシステム２４０，２５０との間におけるエンタープライズデータの同期を管理してもよい。
【０１１３】
コンピューティングデバイス２０２は、ＭＣＳ２１２と通信（たとえば、要求メッセージを送信）して、エンタープライズコンピュータシステムによって提供されるサービスを要求してもよい。ファイアウォール２０４を介して受信された要求は、最初にセキュリティサービス２３２によって処理されてもよい。セキュリティサービス２３２は、要求に関連付けられるユーザに関してセキュリティ認証を管理してもよい。したがって、クラウドコンピュータシステムは、顧客通信およびエンタープライズデータの保全性を保護し得る、本明細書に記載されるセキュリティ機構を提供することを含む技術的利点を提供し得る。クラウドコンピュータシステムの技術的利点は、損なわれた通信および／またはデータが損なわれることを防止または低減することを含んでもよく、認証が最初に生じて、アクセスを、必要とされる資格情報を有するもののみに対して制限してもよい。クラウドコンピュータシステムの技術的利点は、サービスおよびサービス呼出しフローが、要求が入来するとそれらはそれらが承認されるサービスにアクセスすることのみが許可され得るように構造化されることを含んでもよい。システム処理の他の部分から承認を切り離すことによって、別の技術的利点は、「何が誰によってなされ得るか」を承認するタスクが、特定の法人顧客によって必要とされるさらなるカスタムセキュリティ手段が何であれ、それをサポートするよう拡張され得る専用のプロビジョニングされたセキュリティサブシステム（たとえばアイデンティティ管理システム）に委任されることを含んでもよい。いくつかの実施形態では、セキュリティ認証は、要求、セッション、ユーザ、デバイス、ユーザに関係付けられる他の基準、またはそれらの組合せに関して判断されてもよい。セキュリティ認証は、受信される要求ごとに実行されてもよい。いくつかの実施形態では、セキュリティサービス２３２は、以前の要求の検証に基づいて認証を判断してもよい。セキュリティ認証は、ユーザまたは装置に関して、異なるエンタープライズコンピュータシステム２４０，２５０に対する要求が単一のセキュリティ検証に基づいて認証され得るように、判断されてもよい。
【０１１４】
本発明のさらなる技術的利点は、一部が異なったように実現され得るさまざまなエンタープライズコンピュータシステムとコンピューティングデバイスが通信することをクラウドコンピュータシステムが可能にすることを含み得る。たとえば、コンピューティングデバイス２０２、クラウドコンピュータシステム２１０およびエンタープライズコンピュータシステム２５０は、互いから物理的に分離された異なる地理的位置に位置してもよい。したがって、コンピューティングデバイス２０２は、エンタープライズコンピュータシステム２５０と、それらの位置にかかわらず、通信することができる。技術的利点は、１つ以上の別個のセキュリティプロトコルをサポートし得るエンタープライズコンピュータシステムにサービスに対する要求をコンピューティングデバイスが通信することをクラウドコンピュータシステムが可能にすることを含み得る。場合によっては、エンタープライズコンピュータシステムは、異なるセキュリティプロトコルに容易に適合可能ではないバックエンドシステムによってサポートされてもよい。場合によっては、アプリケーションの開発者が、そのようなセキュリティプロトコルの知識なしにサービスを要求することができるようにアプリケーションを実現できることが望ましいであろう。同様に、エンタープライズコンピュータシステムのユーザ（たとえば、管理者または設計者）が、異なるタイプのアプリケーション、セキュリティプロトコルおよび規格に対応することなく要求を受信できることも望ましいであろう。技術的利点は、要求されているさまざまなエンタープライズコンピュータシステムのセキュリティ対策を要求が満たすことができるように、セキュリティ認証を処理することができる本明細書に記載のクラウドコンピュータシステムを実現することによって、そのような要望が満たされることを可能にし得る。
【０１１５】
いくつかの実施形態では、セキュリティサービス２３２は、要求されたエンタープライズコンピュータシステムについてのセキュリティプロトコルを判断して、それに応じて、そのようなセキュリティプロトコルに従ってセキュリティトークンを生成してもよい。セキュリティトークンは、生成されたセキュリティトークンに基づいてエンタープライズコンピュータシステムが認証を検証することを可能にするために、要求とともに当該エンタープライズコンピュータシステムに渡されてもよい。エンタープライズコンピュータシステムは、異なるセキュリティプロトコルをサポートしてもよい。セキュリティプロトコルは、セキュリティが判断される規格であってもよい。セキュリティは、セキュリティサービス２３２によって生成されるセキュリティトークンに基づいて検証されてもよい。セキュリティサービス２３２は、要求に対して識別されるエンタープライズコンピュータシステムのためのセキュリティプロトコルを判断してもよい。いくつかの実施形態では、エンタープライズコンピュータシステム２５０は、ＭＣＳ２１２によってサポートされるカスタムまたは特定のセキュリティプロトコルに従って構成または実現され得るエージェントシステム２５２を有してもよい。したがって、ＭＣＳ２１２は、そのようなカスタムセキュリティプロトコルに従ってセキュリティトークンを生成してもよい。
【０１１６】
クラウドコンピュータシステム２１０は、１つ以上の負荷分散システム２０６，２０８を含み、実現し、および／またはそれ（ら）と通信してもよい。セキュリティ認証を判断すると、クラウドコンピュータシステム２１０は負荷分散システム２０６，２０８のうちのいずれか１つに対して、それが受信する要求を調べ、要求がどのサービスに向けられているかを検出するよう要求してもよい。ＭＣＳ２１２は、負荷分散部２０６，２０８とともに構成されてもよく、起動されるリソースで更新されてもよく、したがって、要求が入来すると、負荷分散部２０６，２０８は要求される負荷を異なるリソースにわたって分散させることができる。
【０１１７】
クラウドコンピュータシステム２１０は、要求を処理し、それらを適切なサービスに発送し得るディスパッチャ２１８を含んでもよい。要求は、発送されると適切なサービスにルーティングされ得る。いくつかの実施形態では、サービスそれ自体が、内部の要求を、ＭＣＳ２１２またはエンタープライズコンピュータシステムにおける別の内部のサービスにルーティングしてもよい。いくつかの実施形態では、ディスパッチャ２１８は要求を解決して、その宛先を、要求のＵＲＩおよび／またはＵＲＬにおいて識別される宛先の位置（たとえばアドレス）に基づいて判断してもよい。ディスパッチャ２１８は要求およびそのヘッダを構文解析して、以下の情報：テナント識別子、サービス識別子、アプリケーション名、アプリケーションバージョン、要求リソース、動作およびパラメータなどの１つ以上を抽出してもよい。ディスパッチャ２１８は、構文解析された情報を用いて、メタデータリポジトリ２２４における参照を実行することができる。ディスパッチャ２１８は対応するアプリケーションメタデータを検索してもよい。ディスパッチャ２１８は、目標のサービスを、要求されたリソースおよびメタデータにおけるマッピングに基づいて判断してもよい。最初は非常に基本的なマッピングであるが、メタデータを向上させて、より洗練された、ルールに基づく発送を行うことができる。ディスパッチャ２１８は、任意のディスパッチャ特有のロギング、メトリック収集などを実行してもよい。ディスパッチャ２１８は、次いで、初期承認をアプリケーションメタデータに従って実行してもよい。ディスパッチャ２１８は、インバウンドの要求および任意の他の必要な情報をフォーマットし、メッセージをさらなる処理のためにルーティングバス２２０上に配置してもよい。ディスパッチャ２１８は、要求をキュー上に配置して、対応の応答を待ってもよい。ディスパッチャ２１８は、ルーティングバス２２０から受信される応答を処理し、応答をコンピューティングデバイス２０２に返してもよい。
【０１１８】
外部の要求に対する発送を処理することに加えて、ディスパッチャ２１８は、さらに、内部の要求を発送する役割を果たしてもよい。そのような内部の要求は、サービスに対する合成サービスまたはカスタムコード呼出しの形式で受信することができる。両方の場合において、呼出し元は、アプリケーション内において定義される論理上のサービス名を用い得る。ディスパッチャ２１８は、現在の実行コンテキストを用いてアプリケーションを判断し、その論理名を用いて、呼出すべき適切なサービスを判断してもよい。
【０１１９】
クラウドコンピュータシステム２１０は、ルーティングバス２２０に登録された宛先に対するメッセージの配送を管理するようルーティングバス２２０を含んでもよい。ルーティングバス２２０は、クラウドサービス２１２において通信を管理するための中央システムとして動作してもよい。ルーティングバス２２０を介して通信されるデータは、そのデータを捕捉および記憶するよう処理されてもよい。ルーティングバス２２０は、さらなる中央集中化されたサービス（さらなる承認、デバッグなど）が必要に応じて容易にプラグインされ得るように、フレームワークを与えてもよい。ルーティングバス２２０によって捕捉されたデータは診断法ストア２２６および／または解析論ストア２２８に記憶されてもよい。
【０１２０】
ルーティングバス２２０はメッセージを１つ以上の宛先にルーティングしてもよい。いくつかの実施形態では、メッセージは、カスタムコード２１６を実行するようにとの要求を含み得る。そのような実施形態では、ルーティングバス１２０は、カスタムコード２１６を呼出すよう要求してもよい（２３４）。いくつかの実施形態では、ルーティングバス２２０は、要求における情報によって識別される宛先エンタープライズコンピュータシステムに要求を渡してもよい。ルーティングバス２２０は、必要であればアダプタインターフェイス２２２に対して翻訳を実行するよう要求して（２３６）、要求をエンタープライズコンピュータシステム、たとえばエンタープライズコンピュータシステム２４０またはエンタープライズコンピュータシステム２５０に渡してもよい。
【０１２１】
特定の実施形態では、クラウドコンピュータシステム２１０は、アダプタインターフェイス２２２を含むかまたはそれを実現して、メッセージを、受信側エンタープライズコンピュータシステムによってサポートされるプロトコルに翻訳または変換してもよい。アダプタインターフェイス２２２は、エンタープライズコンピュータシステム２４０，２５０の各々と、別々の通信接続を確立してもよい。クラウドコンピュータシステム２１０は、エンタープライズコンピュータシステム２４０，２５０と、１つ以上のネットワーク（図示せず）を介して通信するよう構成されてもよい。通信ネットワークの例は、インターネット（登録商標）、モバイルネットワーク、パブリックネットワーク、無線ネットワーク、セルラーネットワーク、ＬＡＮ、ＷＡＮ、他の通信ネットワーク、またはそれらの組合せを含んでもよい。特定の実施形態では、通信接続は、高速通信トランクを用いて促進される高速通信接続であってもよい。エンタープライズコンピュータシステム２４０，２５０との通信はファイアウォール２３０を通過してもよく、それによって、外部ネットワークとの通信はそのような通信を介するＭＣＳ２１２に対する未承認アクセスを妨げるようセキュリティ上安全であることが確実とされる。
【０１２２】
いくつかの実施形態では、クラウドコンピュータシステム２１０はコンピューティングデバイス２０２のユーザに対する通知を容易にし得る。クラウドコンピュータシステム２１０は、ユーザとのステートフルな対話をサポートする警報管理サービスを含んで、たとえば、ユーザの好みに基づく警報を１つ以上のチャネルを介して送り、応答を待ち、その応答に基づくアクションを取ってもよい。１つのチャネルで送られた警報に対する応答は、サービスが取扱うことができる必要のある別のチャネルを介して受信されてもよい。プラットフォームは、ポピュラーな対話パターンのための内蔵型の状態モデルとともに搭載され、新たな状態モデルで拡張可能であり得る。いくつかの警報チャネルは、一方向であれ二方向であれ、公知の通信リソースを含んでもよい。例は、ＳＭＳ、ツイッター（登録商標）、プッシュ通知、およびGoogle Cloud Messaging（登録商標）を含む。
【０１２３】
いくつかの実施形態では、クラウドコンピュータシステム２１０は、コンピューティングデバイスが、オブジェクトストアサービス、データベースサービス、アクセスウェブサービス、ソーシャルサービス、リソースサービス、またはそれらの組合せなどの１つ以上のサービスにアクセスするおよび／またはそれらを要求することを可能にし得る。
【０１２４】
クラウドコンピュータシステム２１０は、ＢＬＯＢのためのストレージファシリティを提供し得るオブジェクトストアサービスを提供してもよい。基本的な記憶の単位はテキストであり得、読取動作および書込動作を伴う。ＪＳＯＮオブジェクトに対する基本的なクエリーファシリティも提供され得る。
【０１２５】
クラウドコンピュータシステム２１０は、データベースサービスを提供して、クエリまたは書込を実行するために、ホストされるデータベースへの接続性を可能にし得る。必要とされるパラメータ化は、データベースに対する十分な接続ストリング、実行すべきＳＱＬストリングまたは記憶される手順、任意のパラメータ、および場合によっては資格情報を必要とする可能性もある。必要な情報は、実行時に与えられ得るか、またはアプリケーションメタデータにおいて予め構成され得る。
【０１２６】
クラウドコンピュータシステム２１０は、ＳＯＡＰウェブサービスなどのウェブサービスへのアクセスを提供し得る。クラウドコンピュータシステム２１０は、任意のＲＥＳＴリソースへの接続性などのＲＥＳＴサービスへのアクセスを提供し得る。
【０１２７】
クラウドコンピュータシステム２１０は、ソーシャルサービスへのアクセスを提供してもよく、それは、フェースブック（登録商標）、ツイッター（登録商標）などのような人気のあるソーシャルサイトの多くとの基本的な統合をもたらし得る。これらのサービスは、それらのサイトからのユーザの資格情報を用いる第三者認証およびそれらのサービスに対するアクセスを可能にしてもよい。例は、ツィートを送信するかまたは貴方のステータスを更新することを含む。
【０１２８】
クラウドコンピュータシステム２１０は、パブリッククラウドサービスを提供して、ユーザが通信を簡単にして最適化することを可能にし得る。たとえば、サービス開発者は、ＭＣＳ２１２の包括的なウェブサービスを用いて、クラウドコンピュータシステム２１０のクラウドサービスを用いてホストされるリソースに話し掛けてもよい。
【０１２９】
本明細書に記載されるものなどのクラウドコンピュータシステムは、コンピューティングリソースにおける違いにもかかわらずモバイルコンピューティングデバイスがエンタープライズコンピュータシステムと通信することを可能にし得る。クラウドコンピュータシステムは、頻繁に通信してエンタープライズデータを受信するために、より多くのリソースおよびエンタープライズコンピュータシステムとのより高速で信頼性のある接続を備えてもよい。クラウドコンピュータシステムは、エンタープライズコンピュータシステムからのサービスに対する要求を管理および調整してもよい。要求をメッセージの受信側によってサポートされるプロトコルに翻訳することによって、クラウドコンピュータシステムは、異なるタイプのバックエンドコンピュータシステムとの通信のためのアプリケーションを構成するための開発者に対する負担を低減する。エンタープライズは、モバイルデバイスについてサポートされる通信プロトコルの進歩または変化に対応する必要なく、それらのバックエンドシステムを維持することができる。異なるエンタープライズコンピュータシステムは、処理される要求のタイプおよび提供されるサービスのタイプに基づいて、異なるセキュリティプロトコルをサポートしてもよい。異なるエンタープライズコンピュータシステムへのアクセスについて中央集中化された態様でセキュリティ認証を管理することによって、エンタープライズコンピュータシステムは、セキュリティプロトコルにおける違いに適合する必要がなくなる。クラウドコンピュータシステムのユーザを認証することによって、処理要求はより効率的になり得る。なぜなら、認証はすべてのインスタンスでは実行されない可能性があるからである。
【０１３０】
いくつかの実施形態においては、アプリケーションは、当該アプリケーションへのアクセスを制御し、オラクル社によるＯｒａｃｌｅ  ＭＡＦなどの極秘データの暗号化を確実にするために、内蔵型セキュリティを備えるモバイルアプリケーションフレームワーク（mobile application framework：「ＭＡＦ」）の下でデプロイされてもよい。ＭＡＦは、ハイブリッドモバイルアーキテクチャであって、（ウェブビューにおいてＵＩをレンダリングするための）ＨＴＭＬ５およびカスケーディング・スタイル・シート（Cascading Style Sheet：「ＣＳＳ」）、（アプリケーション・ビジネスロジックのための）Ｊａｖａ、および（ＧＰＳアクティビティおよび電子メールなどのデバイス特徴にアクセスするための）アパッチ・コルドバを用いる。ＭＡＦがこれらのクロスプラットフォーム技術を用いているので、如何なるプラットフォーム特有のツールを用いる必要なしに、アンドロイド装置およびｉＯＳ装置の両方のために同じアプリケーションを構築することができる。アプリケーションがデバイスにデプロイされた後、当該アプリケーションは、目標物ＣまたはアンドロイドＳＤＫとしてこのようなプラットフォーム特有のツールを用いて作成されたアプリケーションとして機能する。さらに、ＭＡＦはスマートフォンまたはタブレットのために同じアプリケーションを構築することを可能にし、これにより、同じアプリケーションでのビジネスロジックを再利用し、さまざまなタイプの装置、画面サイズおよび能力をターゲットにすることが可能となる。
【０１３１】
図３は、「重い（heavy）」アプリケーション（たとえば、アプリ・ストアから取得した通常のｉＰｈｏｎｅアプリと同じ態様でモバイルデバイスに搭載されているモバイルアプリケーション）としてデプロイされる「WorkBetter」と称されるＭＡＦアプリケーションを含むモバイルアプリケーション・スプリングボード３００の一例を示す。ＭＡＦアプリケーションは、アプリケーション特徴として追加された１つ以上の埋込み型アプリケーションを含み得る。このような追加されたアプリケーション特徴は、メインアプリケーションのスプリングボードまたはナビゲーションバー内のアイコンとして表わされている。アプリケーション特徴は、本質的に、このようなモバイルアプリケーションの構築ブロックである。ＭＡＦアプリケーションに内蔵されているアプリケーション特徴は各々、特定セットのタスクを実行する。アプリケーション特徴は互いの機能を補完するために一緒にグループ化することができる。たとえば、顧客連絡先を提供するアプリケーション特徴は製品在庫についてのアプリケーション特徴と対にされてもよい。各々のアプリケーション特徴がそれ自体のクラスローダおよびウェブビューを有しているので、アプリケーション特徴は互いから独立しており、このため、単一のＭＡＦアプリケーションはいくつかのさまざまな開発チームによって作成されたアプリケーション特徴からアセンブルすることができる。アプリケーション特徴も他のＭＡＦアプリケーションにおいて再使用することができる。ＭＡＦアプリケーション自体は、別のアプリケーションのためのベースとして再使用することができ、独立系ソフトウェア会社（independent software vendor：「ＩＳＶ」）が、特定の顧客によって構成可能なアプリケーションを作成することを可能にする。
【０１３２】
デバイス上にローカルで実行されるハイブリッドモバイルアプリケーションに加えて、アプリケーション特徴は、モバイルアプリケーションおよび利用可能なリソースの要件に応じて、以下のモバイルアプリケーションタイプのいずれかとして実現されてもよい。
【０１３３】
・サーバ上にホストされたモバイルウェブアプリケーション。これらのアプリケーションの場合、コードはプラットフォーム間でポータブルであり得るが、これらのアプリケーションがデバイスのブラウザによって管理されているので、デバイス特徴およびローカルストレージへのアクセスを制限することができる。
【０１３４】
・Ｘｃｏｄｅで、またはアンドロイドＳＤＫによってオーサリングされ、このため、両方のプラットフォームのために機能するという点で制限されているネイティブアプリケーション。コードの再利用は同様に制限されている。
【０１３５】
ＭＡＦは、或るアプリケーションにおける特徴レベルで、改良されたセキュリティのための認証およびアクセス制御をサポートする。このアプリケーションにおいては、開発者が、適切なログインサーバ、たとえば、基本的な認証で「オラクルアイデンティティ管理」および／または「Oracle WebLogic」を実行するサーバ、ＯＡｕｔｈプロトコルをサポートするサーバなど、を指定することができる。実行時において、ユーザにログイン画面が提示され、適切なトークンがさらなるウェブサービス・コールにとってアクセス可能となる。ＭＡＦであれば、開発者は、さまざまな特権を有するユーザの必要性（たとえば、ユーザの役割または特権に基づいてコンポーネントを示す／隠す）を満たす単一のＵＩを構築することができる。
【０１３６】
ＭＡＦは、ＳＳＬ／ＴＬＳ（ＨＴＴＰセキュア（「ＨＴＴＰＳ」））を用いる通信暗号化；オフライン認証をサポートする際に検証のために使用されるべき暗号化されたキーストアにおいてクレデンシャルを維持するためのデバイス上での暗号化；およびＳＱＬｉｔｅ暗号化拡張を用いることによるＳＱＬｉｔｅデータベース暗号化；を実施する。ＭＡＦで構築されたアプリケーションのためのＳＱＬｉｔｅデータベースの暗号化は、アプリケーションが開発される際に、構成オプションによって実行されてもよい。いくつかの実施形態においては、ＭＡＦは、アプリケーションのための動作のオフラインモードおよびオンラインモードをサポートし、このため、自立型のアプリケーションを、接続モードでも、非接続モードでも、モバイルデバイス上で実行させることができる。データのアクセス／格納のために、このようなアプリケーションがローカルの暗号化されたＳＱＬｉｔｅデータベースを利用してもよい。当該アプリケーションは、データに対する最初のアクセスがＷｅｂサービスを介してリモートサーバから実行され、次いで、データがオフラインアクセスのためにローカルのＳＱＬｉｔｅデータベースに格納されるように、構築され得る。再び接続可能になると、データが複製されてサーバと同期させることができる。ＭＡＦはまた、保護されたアプリケーションに対するオフライン認証／認可を可能にするように、ユーザ認証クレデンシャルのローカルストレージをサポートする。
【０１３７】
図３Ａおよび図３Ｂは、本発明の一実施形態に従ったＨＲモバイルアプリケーションのＵＩ３０２を示す。ＵＩ３０２は、図３のモバイルアプリケーションスプリングボード３００などのスプリングボード上でアイコンを開くと提供され得る。図３Ａにおいては、ＵＩ３０２は、従業員についてのさまざまなＨＲ関連情報、たとえば、画像、タイトル、コンタクト情報、ソーシャル・ネットワーキング情報、性能／レーティング情報、補償情報、マネージャ、スキル、位置などを含む。図３Ｂは、ＵＩ３０２における情報が取得され得るさまざまなソース、たとえばオンプレミスまたはクラウドに位置するサービスなど、を示す。たとえば、基本的な従業員情報は、ＰｅｏｐｌｅＳｏｆｔ、システム・アプリケーションおよび製品（Systems, Applications & Product：「ＳＡＰ」）などのオンプレミスのコアＨＲサービスから取得されてもよく、位置情報はグーグルなどのマップサービスから取得される。同様に、性能情報は、ＴＡＬＥＯなどの才能管理クラウドサービスから取得されてもよく、ソーシャル・ネットワーキング情報（たとえば、ツイッター（登録商標）、フェースブック（登録商標）、LinkedInなど）はウェブから取得されてもよい。一実施形態においては、これらのさまざまなソースからの情報が、モバイルデバイス上のアプリケーションまで送信される前にＭＣＳを介して供給される。
【０１３８】
図４は、デバイスにデプロイされる「薄型（thin）」の固有のコンテナを含む例示的なＭＡＦランタイムアーキテクチャ４００のブロック図である。ランタイムアーキテクチャ４００は、モデル層およびコントローラ論理から表示を分離するＭＶＣ開発アプローチを表現する。細型の固有のコンテナは、ローカルのＳＱＬｉｔｅデータベース、コルドバＡＰＩおよびサーバ側リソースと対話することにより、ＭＡＦアプリケーションがさまざまなプラットフォーム（たとえばｉＯＳ、アンドロイドなど）上のネイティブアプリケーションとして機能することを可能にする。これによりプッシュ通知も可能になる。
【０１３９】
デバイス固有のコンテナは、ウェブベースのコンテンツを表示して処理するためにモバイルデバイスのウェブエンジンを用いるウェブビューを含む。ＭＡＦアプリケーションにおいては、ウェブビューは、アプリケーションマークアップをＨＴＭＬ５としてレンダリングすることによりＵＩを提供する。ＵＩは、以下のコンテンツタイプのうちのいずれかを実現することによってモバイルアプリケーション特徴のために作成され得る：すなわち、ＭＡＦアプリケーションモバイルＸＭＬ（Application Mobile XML：「ＡＭＸ」）ビュー、コントローラ、サーバＨＴＭＬまたはローカルＨＴＭＬである。さまざまなコンテンツタイプから実現されたアプリケーション特徴は、同じモバイルアプリケーション内で共存可能であり、かつ互いと対話することができる。
【０１４０】
ＭＡＦ  ＡＭＸビューとして実現されるコンテンツを有するアプリケーションはデバイス上に常駐しており、デバイスのプラットフォームに特有の言語でオーサリングされるアプリケーションと同様に、最も信頼性のあるデバイス固有のユーザ経験を提供する。ＭＡＦは１セットのコードエディタを提供する。当該１セットのコードエディタは、ユーザが、モバイルデバイスのフォームファクタに適合されたコンポーネントから宣言的にＵＩを作成することを可能にする。これらのコンポーネントは、入力コンポーネント（たとえば入力フィールド）と同様にページレイアウト（たとえばリストビュー）を作成するために用いることができる。ユーザがＭＡＦ  ＡＭＸビューを開発するとき、ユーザはデータ制御を利用することができる。これらのコンポーネントは、ユーザが、データにバインドされたＵＩコンポーネントを宣言的に作成し、ウェブサービスおよびモバイルデバイス（たとえばカメラ、ＧＰＳまたは電子メール）のサービスにアクセスすることを可能にする。実行時に、ウェブビューにおけるJavaScriptエンジンがＭＡＦ  ＡＭＸビュー定義をＨＴＭＬ５およびJavaScriptにレンダリングする。
【０１４１】
コントローラとして実現されているコンテンツを有するアプリケーションのために、コントローラは、モバイルアプリケーションにおけるページ間のフローを管理する。コントローラは、ユーザがアプリケーションのフローをより小さな再使用可能なタスクフローに分解し、メソッドコールおよび判定ポイントなどの非視覚的なコンポーネントを含むことを可能にする。
【０１４２】
サーバＨＴＭＬとして実現されているコンテンツを有するアプリケーションのために、ＵＩは、アプリケーション特徴のウェブビュー内で開くことができるサーバ生成型ウェブページから提供される。ＭＡＦのコンテキスト内では、このコンテンツタイプは遠隔ＵＲＬと称される。これらのブラウザベースのアプリケーションのためのリソースはデバイス上に常駐していない。代わりに、ＵＩ、ページフローロジックおよびビジネスロジックはリモートサーバから提供される。遠隔でホストされたこれらのウェブアプリケーションのうちの１つがウェブビュー内で開くことが許可されると、それは、コルドバJavaScript  ＡＰＩを用いて、カメラまたはＧＰＳの能力などの任意の指定されたデバイス固有の特徴またはサービスにアクセスすることができる。遠隔のＵＲＬコンテンツを用いてアプリケーションを実現する場合、ユーザは、モバイル用途のために最適化された既存のブラウザベースのアプリケーションを利用するか、または特定のタイプのモバイルデバイスについて具体的に書込まれたアプリケーションを使用することができる。デスクトップまたはタブレット上のブラウザ内で実行可能なアプリケーションの場合、ユーザは、オラクル社による「Oracle ADF Faces」によって提供されるようなリッチクライアントベースのコンポーネントを介して作成されたアプリケーションを用いて、遠隔のＵＲＬコンテンツを実現することができる。特に携帯電話をターゲットとしたアプリケーションの場合、遠隔のＵＲＬコンテンツは、ＭＡＦを用いて作成されたウェブページから提供することができる。ＭＡＦでオーサリングされたアプリケーションは、さまざまなスマートフォン上でレンダリングできるだけではなく、アパッチ・トリニダード（Apache Trinidad）ＪＳＦコンポーネントおよび動的に選択されたスタイル・シートで構築されたＵＩにより、フィーチャーフォン上で利用可能となる低い能力にまでグレースフルに質を低下させることができる。コンテンツが遠隔で供給されるので、アプリケーションは、サーバ接続がアクティブなままである限りにおいてのみ、利用可能である。
【０１４３】
ローカルＨＴＭＬとして実現されているコンテンツを有するアプリケーションの場合、ＨＴＭＬページはＭＡＦアプリケーションの一部としてデバイス上で実行される。ローカルＨＴＭＬファイルは、コルドバおよびJavaScript  ＡＰＩによってデバイス固有の特徴サービスにアクセスすることができる。
【０１４４】
デバイス固有のコンテナはさらにアパッチ・コルドバを含む。アパッチ・コルドバJavaScript  ＡＰＩは、デバイス固有の特徴およびサービスをモバイルアプリケーションに組込む。ユーザは、Ｊａｖａコードからプログラムによって（または、ローカルＨＴＭＬとしてＭＡＦモバイルアプリケーションを実現する場合にはJavaScriptを用いて）これらのＡＰＩにアクセスすることができるが、ユーザは、ＭＡＦ  ＡＭＸページを作成する際にデバイスの組込みを宣言的に追加することができる。なぜなら、ＭＡＦが、これらのＡＰＩを、データ制御に応じてパッケージングするからである。
【０１４５】
デバイス固有のコンテナはさらにＪａｖａ仮想マシン（Java Virtual Machine：「ＪＶＭ」）を含む。ＪａｖａはＭＡＦアプリケーションのためのＪａｖａランタイム環境を提供する。このＪＶＭは、デバイス固有のコードで実現され、固有のアプリケーションバイナリの一部としてＭＡＦアプリケーションの各インスタンスに埋込まれる（またはコンパイルされる）。ＪＶＭはＪａｖａＭＥ接続型装置構成（Connected Device Configuration：「ＣＤＣ」）規格に基づいている。ランタイムアーキテクチャ４００においては、ＪＶＭはビジネスロジック、モデルおよびＪＤＢＣを含む。Ｊａｖａは、ＭＡＦアプリケーションにおいてビジネスロジックを可能にする。管理されたビーン（Managed Beans：「ＭＢｅａｎｓ」）は、サーバから戻されたデータを処理するために追加のビジネスロジックを提供するなどの、ＭＡＦの能力を拡張するために作成することができるＪａｖａクラスである。ＭＢｅａｎｓは埋込み型Ｊａｖａサポートによって実行され、ＪａｖａＭＥ  ＣＤＣ規格に準拠する。モデルは、ビジネスロジック・コンポーネントをＵＩと接続するバインディング層を含む。加えて、バインディング層は、ＳＯＡＰベースのウェブサービスを呼出すために実行論理を提供する。ＪＤＢＣは、作成、読取り、更新、削除（Create, Read, Update and Delete：「ＣＲＵＤ」）動作によって、暗号化されたＳＱＬｉｔｅデータベースにおけるデータにモデル層がアクセスすることを可能にするＡＰＩである。
【０１４６】
デバイス固有のコンテナが含んでいるアプリケーション構成はさらに、ウェブサービスまたは遠隔ＵＲＬ接続のためのＵＲＬエンドポイントなどの、複数のアプリケーション構成をダウンロードしてリフレッシュすることを可能にするサービスを参照する。アプリケーション構成サービスは、ＷｅｂＤａｖベースのサーバ側サービスから構成情報をダウンロードする。
【０１４７】
デバイス固有のコンテナはさらに、クレデンシャル管理、シングルサインオン（Single Sign-on：「ＳＳＯ」）およびアクセス制御を含む。ＭＡＦは、「オラクルアクセス管理モバイルおよびソーシャル」（Oracle Access Management Mobile and Social：「ＯＡＭＭＳ」）ＩＤＭ  ＳＤＫによって、ユーザ認証およびクレデンシャル管理を処理する。ＭＡＦアプリケーションはオフライン認証を実行する。これは、接続中にユーザがアプリケーションにログインするとき、ＭＡＦがデバイス上でユーザ名およびパスワードをローカルに維持し、これにより、認証サーバへの接続が不可能になっていても、ユーザがアプリケーションにアクセスし続けることができることを意味している。ＭＡＦはローカルＳＱＬｉｔｅデータベースに格納されたデータと同様にローカルに記憶されたユーザ情報も暗号化する。ログインサーバに対して認証した後、ユーザは、その接続によって保護されたアプリケーション特徴のすべてにアクセスすることができる。ＭＡＦはまた、ユーザの役割および特権を適用することによりアプリケーション特徴（またはアプリケーション特徴の特定の機能）へのアクセスを制限することによって、アクセス制御の概念をサポートする。ウェブ・コンテンツが遠隔で供給される場合、ＭＡＦは、意図したＵＲＩだけが、アプリケーション特徴のウェブビュー内で開き得ること（およびデバイス特徴にアクセスし得ること）を確実にするためにホワイトリストを用いる。
【０１４８】
デバイス固有のコンテナはさらに、ＭＡＦアプリケーションがｉＯＳまたはアンドロイドの通知サーバからイベントを受信することを可能にするプッシュハンドラを含む。Ｊａｖａ層は通知処理に対処する。
【０１４９】
ランタイムアーキテクチャ４００においては、固有のコンテナと対話するリソースは、暗号化されたＳＱＬｉｔｅデータベースおよびデバイスサービスを含む。埋込み型ＳＱＬｉｔｅデータベースは、ローカルに記憶されたデータを保護し、ＪＤＢＣを用いて、モデル層によって呼出される。ＭＡＦアプリケーションはこの軽量のクロスプラットフォーム・リレーショナル・データベースを生成する。このデータベースが暗号化されているので、デバイスが紛失または盗難された場合でも、このデータベースはデータを保護する。正確なユーザ名およびパスワードを入力するユーザだけが、ローカルデータベースにおけるデータにアクセスすることができる。デバイスサービスは、デバイスに固有のサービスおよび特徴であって、コルドバＡＰＩを介してアプリケーション特徴に組込まれている。
【０１５０】
ランタイムアーキテクチャ４００においては、デバイス固有のコンテナは、サーバ側リソース、たとえば、構成サーバ、サーバ生成型ＨＴＭＬ、アップルプッシュ通知サービス（Apple Push Notification：「ＡＰＮ」）、グーグル・クラウド・メッセージ通信（Google Cloud Messaging：「ＧＣＭ」）およびＳＯＡＰウェブサービスなどへのアクセスを可能にする。構成サーバは、アプリケーション構成サービスによって用いられる構成ファイルをホストするＷｅｂＤａｖベースのサーバである。構成サーバは参照を実現するものとして提供される。Ｊ２ＥＥサーバ上でホストされた如何なる共通のＷｅｂＤａｖサービスもこの目的のための用いることができる。サーバ生成型ＨＴＭＬは、ブラウザベースのアプリケーション特徴のために用いられるリモートサーバ上でホストされたウェブ・コンテンツを含む。ＡＰＮおよびＧＣＭプッシュサービスは、ＭＡＦアプリケーションに通知イベントを送信する通知プロバイダである。ＳＯＡＰウェブサービスは遠隔でホストされたＳＯＡＰベースのウェブサービスである。これらのサービスはＪａｖａ層を介してアクセスされる。ＭＡＦ  ＡＭＸにおいてオーサリングされたアプリケーション特徴は、データ制御によってＳＯＡＰベースのデータサービスにアクセスする。
【０１５１】
図５は、本発明の実施形態に従った、モバイルクラウドインフラストラクチャにおけるモバイルアプリケーションを開発するためのシステム５００のブロック図である。システム５００においては、ユーザは、ユーザデバイス５２８を用いて、ウェブベースのツールを介してクラウドインフラストラクチャ５０６におけるアプリケーションを開発して構築してもよい。一実施形態においては、アプリケーションは無線でモバイルデバイス５２６上にダウンロードされ、これにより、アプリ・ストアの必要性を無くし得る。固有のアプリケーションはＭＣＳ５０２において作成されたバックエンド５０４と通信する。一実施形態においては、図４のＭＡＦランタイムアーキテクチャ４００はモバイルデバイス５２６にアプリケーションを提供するために用いられてもよい。一実施形態においては、アプリケーションの宣言的シンタックスが無線でモバイルデバイス５２６上にデプロイされ、この宣言的シンタックスは図４のＭＡＦランタイムアーキテクチャ４００によってモバイルデバイス５２６上で翻訳される。
【０１５２】
クラウドインフラストラクチャ５０６は、アプリケーション開発が実行され得る管理（admin）ＵＩ５１６を提供するＭＣＳ５０２を含む。ＭＣＳ５０２はさらに、モバイルアプリケーションが開発およびテストされ得る生産環境５１２およびテスト環境５１４をそれぞれ含む。これらの環境は、コネクタを介して対応するバックエンド５０４と通信することによって生産／テスト機能を提供する。アプリケーションは、環境５１４をテストする際に最初に開発される。当該アプリケーションは、公開されると、生産環境５１２に移動する。
【０１５３】
一実施形態においては、モバイルアプリケーションは、セキュリティ層５２４を介してＭＣＳ管理（admin）ＵＩ５１６（ポータルとも称される）と通信するためにユーザデバイス５２８を用いることによって開発されている。ＭＣＳ管理ＵＩ５１６は、ＭＣＳ管理ＵＩ５１６を介してインターフェイス可能なアプリケーション開発サーバ５１８を含む。ＭＣＳ管理ＵＩ５１６において開発されているアプリケーションは、生産環境５１２および／またはテスト環境５１４と通信することによって、ユーザデバイス５２８のブラウザ上でまたは、モバイルデバイス５２６上で、実行させることができる。一実施形態においては、アプリケーションがモバイルデバイス５２６上でデプロイされると、モバイルデバイス５２６はテスト環境５１４と通信する。しかしながら、アプリケーションがモバイルデバイス５２６上で更新される場合、このような更新はＭＣＳ管理ＵＩ５１６を介して実行される。
【０１５４】
システム５００において開発されているアプリケーションは、軽いアプリケーションまたは重いアプリケーションとして構築され得る。重いアプリケーションは、アプリ・ストアからダウンロードされるアプリなどの完全なアプリケーションである。軽いアプリケーションは、オラクルアプリなどの既にデプロイされている完全なアプリケーション（すなわちホスティング・アプリケーション）に追加された特徴としてデプロイされるアプリケーションである。ホスティング・アプリケーションは、軽いアプリケーションを保持するコンテナとして機能する。重いアプリケーションおよび軽いアプリケーションはともに、さらに、図７に関してこの明細書中に記載されたセキュリティコンテナによってコンテナ化され得る。
【０１５５】
図６は、本発明の実施形態に従った、モバイルアプリケーションを構築するためのシステム６００におけるネットワークコンポーネントのブロック図である。システム６００においては、ユーザは、要求の構築を開始するためにＭＣＳウェブサイトと対話する。モバイルデバイスは、固有のアプリケーションを無線でインストールするために、ＭＣＳポータルＶＭと通信する。これは、一般に、「．ｉｐａファイル」をダウンロードするためのアプリケーションおよび位置を記述するｐｌｉｓｔファイルをダウンロードすることおよび「．ｉｐａファイル」をダウンロードすることを含む２部プロセスである。
【０１５６】
パブリックＯＨＳ／ウェブゲートは、トラフィックをファイアウォールの背後のＭＣＳポータルＶＭに向けるパブリックフェイシングオラクルＨＴＴＰサーバ（Oracle HTTP Server：「ＯＨＳ」）であり、また、ユーザを認証してユーザ・クレデンシャルをＭＣＳポータルＶＭに渡す役割を担っている。パブリックＯＨＳはＳＳＬ接続を終了させ、ｈｔｔｐに関してポート４４３が用いられる。
【０１５７】
ＭＣＳポータルＶＭは、スキーマ・アス・ア・サービスとして後援されているデータを有する標準的なウェブロジックサーバ（WebLogic Server：「ＷＬＳ」）アプリケーションであり、その対応するアプリケーション開発クライアントはジェットフレームワークの上に書込まれている。これは単一のテナントであり、セキュリティはＯＷＳＭを介して提供される。ＭＣＳポータルＶＭは、信頼されたゾーンにおいてＷＬＳを実行させる。これは、ユーザによる要求を処理し、ＢＩＧ−ＩＰ機器を介してスキーマサービスおよび構築サーバファームに接続されている。これは、パブリックＯＨＳへの／からの、ＢＩＧ−ＩＰ機器への、および、サーバファームにおける個々のサーバからの、ｈｔｔｐ通信のための開いているポート８０（または同等物）を用いる。
【０１５８】
スキーマサービスは、アプリケーションデータ、エンタープライズ署名証明書、テナントについてのプロビジョニングプロファイルを記憶する。それは単にＭＣＳポータルＶＭと対話するだけである。
【０１５９】
ＢＩＧ−ＩＰなどの負荷分散部は、（最初にラウンドロビン形式で）サーバファームにおけるサーバにファームタスクをルーティングする。これは開ポート８０（または同等物）を用いて、冗長性を提供する。これは、ＭＣＳポータルＶＭへ／から接続され、サーバファームにおけるサーバに要求を転送する。
【０１６０】
サーバファームは、構築ジョブを処理するいくつか（たとえば２０個）のサーバを含む。これは、アプリケーションバイナリ（たとえば５ＴＢ）を記憶するためにファイラに接続される。接続は、サーバ上でローカルに実行されるローカルのTomcatインスタンスによって処理される。構築ツールおよびプロセスは、固有のＯＳＸコールによって処理される。
【０１６１】
アプリケーションの構築
一実施形態においては、ユーザがすでにアプリケーションを作成しており、固有のバイナリを生成することを所望している場合、ユーザは、（たとえばhttps://mcs-tenant-a.cloud.oracle.com/max/buildにおいて）ＵＩに関する構築ＰＯＳＴ要求を開始する。ペイロードは、アプリケーションのためのアプリケーションｉｄを含む。パブリックＯＨＳ／ウェブゲートは、要求を受取って、ＳＳＬを終了させ、（ユーザがログインすると想定して）ＯＡＭに対してユーザを認証および認可し、ユーザアイデンティティをｈｔｔｐヘッダに配置し、これを、ファイアウォールを通りすぎてＭＣＳポータルＶＭのＷＬＳサーバ（たとえば、http://mcs-tenant-a.internal/max/buildにおいて実行される）に転送する。
【０１６２】
ＭＣＳポータルＶＭは要求を受取り、アプリケーションデータ、テナント・エンタープライズ証明書、暗号化されたｃｅｒｔパスワードおよびテナントプロビジョニングプロファイルのためのテナントスキーマ・アズ・ア・サービスに対して、要求されたアプリケーションおよびクエリに関する特権を与えるようユーザを認可する。スキーマサービスが要求されたアイテムを戻すと、ＭＣＳポータルＶＭは、この試みを記録するために（スキーマサービスによって）BuildJobs表において新しいエントリを作成し、この新しい記録の主要キーをキャプチャする。ＭＣＳポータルＶＭはまた、（たとえばhttp://max-mini-farm.internal/build/initiateにおける）構築ファームのＢＩＧ−ＩＰ機器に対する新しいＰＯＳＴ要求を作成し、本体への３つのパラメータと、ジョブ完了のための（BuildJob記録の主要キーを符号化する）コールバックＵＲＬとを渡す。ペイロードの例は以下のとおりである：
applicationData: (app data)
signingCertificate: (cert) *
signingPassword: (password) *
provisioningProfile: (profile)
callbackUrl: http://mcs-tenant-a.internal:3000/maxbuild/complete?jobId=(BuildJobId)**
証明書およびパスワードは、この実施形態のためのユーザによって排他的に作成される（すなわち、他のサービスとは共有されない）。ポート３０００はパブリックではアクセス不可能である。
【０１６３】
ＢＩＧ−ＩＰは、サーバファームにおいて健全なサーバのリストを維持する。これは、数分ごとにサニティチェックを実行する健全性チェックによって行なわれる。これは、（たとえば複数のジョブが等しく複雑である場合にラウンドロビンを介して）健全なプールからサーバを選択し、ジョブ要求をそのサーバにルーティングする（たとえば、http://mac-mini1.internal/build/initiate）。
【０１６４】
一実施形態においては、サーバファームにおけるサーバはサーバ上で実行されるTomcatを含む。それは、要求を受信し、外部プロセスを開始させる。これは、Ｉ／Ｏがスレッドプールの要求をブロックするのを防ぐために、非同期サーブレット上で実行される。
【０１６５】
プロセスが完了すると、Ｔｏｍｃａｔは、要求ペイロードにおけるコールバックＵＲＬに対するＰＯＳＴ要求を作成する。この新しい要求のためのペイロードは以下を含む：
result: (success if successful, etc)
binaryKey: (jobId)
ＭＣＳポータルＶＭは要求を受取り、イベントが成功した場合には、所与のBuildJobs記録の行をペイロードからのbinaryKeyで更新する。これはまた、ジョブが完了した（たとえば、１１ｇ上のポーリングにより、サーブレットをプッシュするかまたは所定の１２ｃと非同期させる）ことをクライアントに通知し、符号化されたリンクでＱＲコードを生成する（たとえば、https://mcs-tenant-a.cloud.oracle.com/max/native-application/(binaryKey)）。
【０１６６】
アプリケーションのインストール
一実施形態においては、ユーザがモバイルデバイス上のＱＲコードをスキャンすると、無線でのインストールが開始される。ＱＲコードのスキャンにより、符号化されたＵＲＬが開かれる（たとえば、https://mcs-tenant-a.cloud.oracle.com/max/native-application/(binaryKey)）。パブリックＯＨＳ／ウェブゲートは要求を受取り、ＳＳＬを終了させる。これは、（ユーザがログインすると想定して）ＯＡＭに対してユーザを認証および認可し、ユーザアイデンティティをｈｔｔｐヘッダに配置し、これを、ファイアウォールを通過させてＭＣＳポータルＶＭのＷＬＳサーバに転送する（たとえば、http://mcs-tenant-a.internal/max/buildにおいて実行される）。
【０１６７】
ＭＣＳポータルＶＭは要求を受取り、要求されたアプリケーションに対する特権についてユーザを認可する。これは、要求元デバイスのユーザ・エージェントを決定し、プラットフォーム（たとえばｉＯＳ）を識別し、対応するＵＲＬ（たとえば、https://mcs-tenant-a.cloud.oracle.com/max/native-application/plist/(binaryKey)）に転送する。これはまた、パブリックＯＨＳに向けられ、これが、次いで、（この明細書中に記載される構築要求中に実行されるとおりに）最認可するようにＭＣＳポータルＶＭに転送される。ＭＣＳポータルＶＭは要求を受取り、ｐｌｉｓｔファイル（たとえばｉＯＳ  ｐｌｉｓｔファイル）を生成する。ｐｌｉｓｔファイルは、対応するプラットフォーム（たとえばｉＰｈｏｎｅ）についてのアプリケーション情報と、バイナリへのリンク（たとえば、https://mcs-tenant-a.cloud.oracle.com/max/native-application/ios/(binaryKey)）とを含む。
【０１６８】
デバイスは、次いで、アプリケーションをインストールすることを所望するかどうかをユーザに確認する。インストールすることを所望するのであれば、デバイスはバイナリリンクに追従する。これはまた、パブリックＯＨＳに向けられ、これが、次いで、（この明細書中に記載される構築要求中に実行されるとおりに）再度認可するようにＭＣＳポータルＶＭに転送される。ＭＣＳポータルＶＭは、要求を受取り、（たとえばhttp://max-mini-farm.internal/download/ios/(binaryKey)を介して）構築サーバファームに対する新しい要求を生成する。ＢＩＧ−ＩＰは、健全なプールから（たとえばラウンドロビンを介して）サーバファームにおけるサーバを選択し、そのサーバにジョブ要求をルーティングする（たとえばhttp://mac-mini1.internal/download/ios/(binaryKey)）。そのサーバ上のアプリケーションサーバ（たとえば、Tomcat）が要求を受取り、コンテンツが存在するかどうかをチェックし、ネットワークからバイナリを配信する（たとえば、Filer:/filer_mnt/generated_binaries/(binaryKey)/result.ipa）。ＢＩＧ−ＩＰは、配信された応答をＭＣＳポータルＶＭに戻し、当該ＭＣＳポータルＶＭは、その応答を受取り、デバイスに対するその要求の出力ストリームにコピーする。最後に、デバイスはバイナリを受取り、インストールを実行する。
【０１６９】
図７は、ＯＭＳＳなどのモバイルセキュリティ・スーツ７００によって提供されるセキュリティサービスを用いる実施形態におけるモバイルセキュリティ・スーツ・コンポーネントのブロック図である。ＯＭＳＳコンポーネントは、企業ＤＭＺおよびエンタープライズイントラネット（または企業ネットワーク）にわたって分散されており、オラクル社による「オラクルモバイル・セキュリティコンテナ」などのセキュリティコンテナがモバイルデバイスにインストールされる。セキュリティコンテナは、「コンテナ化された」アプリケーションを保持するように構成される。たとえば、これらのアプリケーションは、それらの特定のコンテナに安全にリンクされている。セキュリティコンテナは安全なブラウザ、ファイルマネージャ、文書エディタおよび任意のセキュアモバイルメールマネージャを含む。セキュアモバイルメールマネージャは、「Microsoft Exchange ActiveSync」（「ＥＡＳ」）プロトコルを介して企業メールサーバと同期させるメールクライアント、カレンダ、連絡先、タスクおよび注記などの個人情報管理（personal information management：「ＰＩＭ」）アプリケーションを含む。「オラクル・ビジネス・インテリジェンス」（Oracle Business Intelligence：「ＢＩ」）、「オラクル・フュージョン・タップ」、「オラクル・ソーシャル・ネットワーク」、「オラクル・エンタープライズ・マネージャ・クラウド制御」、「オラクル・ウェブセンター・スペース」などの多くのアプリケーション、および広範囲の第三者エンタープライズアプリケーションがセキュリティコンテナでコンテナ化することができる。モバイルデバイス上のコンテナ化されたアプリケーション内に残っているすべてのデータが暗号化される。暗号化されたデータストレージは、データベース、ファイルストア、キャッシュおよびユーザの好みを含む。一実施形態においては、AppTunnelを通じて移行されているデータが、連邦情報処理規格（Federal Information Processing Standard：「ＦＩＰＳ」）が認可したアルゴリズムでＴＬＳ／ＳＳＬを用いて暗号化される。
【０１７０】
ウェブブラウザまたは他のクライアントプログラムがオラクル社による「オラクルモバイル・セキュリティ・アクセスサーバ」（Oracle Mobile Security Access Server：「ＭＳＡＳ」）などのセキュリティアクセスサーバに対して未認証の要求を行なう場合、セキュリティアクセスサーバは適切なセキュリティコンテナに対する転送でもって応答する。セキュリティコンテナは、データを保護するためにキー階層を用いる。すべてのキーは、記憶されていないユーザ・クレデンシャルから導き出される。キー階層は、データのさまざまな感度をサポートするための複数のキーを必要とする。たとえば、固有のキーは、ユーザの認証証明書のために用いられ、極短期間だけ開くことが許可される。異なるキーは、セッション全体について復号化されたままでなければならないブラウザキャッシュのために用いられる。主なセキュリティコンテナは、ユーザのセキュアなエンタープライズ・ワークスペースにおける一式のアプリのためのキーを分布させて管理する。
【０１７１】
セキュアコンテナは、現在のモバイルの仮想プライベート・ネットワーク（virtual private network：「ＶＰＮ」）ソリューションに勝る３つの特徴的な利点を有する。すなわち、デバイストラスト対ゲートウェイ；セキュアコンテナパスワード対デバイスパスワード；およびセキュアコンテナAppTunnel対デバイスレベルＶＰＮである。ＯＭＳＳは、ＤＭＺに搭載されているゲートウェイサーバで停止するのではなく、ユーザのデバイスまで直接的にネットワークのケルベロス認証トラストを延長する。ＯＭＳＳはＶＰＮプロバイダによって提供された、「制約付き委任」を実現する場合よりも著しく効率的でより安全である。制約付きの委任のソリューションは、安全性がより低いだけでなく、設定して維持するのがより面倒である。
【０１７２】
さらに、消費者デバイスおよびＢＹＯＤプログラムに対処する際に、有用性とセキュリティとの間の兼合いが拡大される。企業ＩＴは、ＢＹＯＤデバイス上の企業データを保護するのに強力なパスワードを必要とする。逆に、ユーザは単純なパスワードを所望するか、または好ましくは、デバイスは全くパスワードを所望せず、このため、彼らユーザは、容易にソーシャルネットワークおよび他の消費者アプリケーションにアクセスすることができる。デバイスパスワードが必要になると、ユーザにとってはフラストレーションになる。なぜなら、彼らユーザは、常に、エンタープライズ認証を必要としない非エンタープライズ目的でデバイスを使用しているからである。実施形態は、企業アプリケーションにアクセスするためだけにパスワードを必要とすることによってＢＹＯＤプログラムを扱う場合の、セキュリティと有用性との間に必要なバランスを提供する。
【０１７３】
さらに、デバイスレベルのＶＰＮは、ユーザのデバイスとエンタープライズのネットワークとの間に信頼できるセキュアなトンネルをもたらす。しかしながら、デバイスレベルのＶＰＮソリューションは、消費者モバイルデバイスよりも、ラップトップなどの法人所有の保護されたエンドポイントデバイスにより適している。モバイルデバイスのＶＰＮトンネルがネットワークに開通すると、デバイス上の如何なるアプリケーションもこのセキュアなトンネルにアクセスできる。これは巨大なセキュリティホールであって、危険につながる経路である。しかしながら、実施形態を用いる場合、モバイルデバイスからエンタープライズイントラネットまでの接続はセキュアコンテナとエンタープライズサーバとの間にのみ存在する。
【０１７４】
ＭＳＡＳは、典型的には、企業ＤＭＺにおいてデプロイされており、複数のサーバインスタンスは、高い可用性およびスケーラビリティを得るために負荷分散部の背後にデプロイすることができる。ＭＳＡＳは、サーバとコンテナ化されたアプリとの間にトンネル接続を提供する。ＭＳＡＳは認証を仲介し（強力な認証は「オラクルアクセスマネージャ」（Oracle Access Manager：「ＯＡＭ」）へのＨＴＴＰＳ接続またはケルベロス・ドメイン・コントローラへのケルベロス接続を利用する）、それらの宛先（企業イントラネットにおけるリソース）のためのＳＳＯを認可し、監査し、使用可能にするとともに、それらの宛先に対する要求をプロキシする。ＭＳＡＳは、セキュリティコンテナおよびコンテナ化されたアプリケーションによって開始されたトンネル型接続の終端エンドポイントとして機能する。
【０１７５】
オラクル社による「オラクルＡＰＩゲートウェイ」（Oracle API Gateway：「ＯＡＧ」）およびオラクル社による「オラクルウェブサービスマネージャ」（Oracle Web Services Manager：「ＯＷＳＭ」）は、組織のＲＥＳＴ  ＡＰＩインフラストラクチャに対して、セキュリティ、脅威からの保護およびスロットリングポリシーを追加する。ＳＳＯは、ＯＡｕｔｈ、ＯＡＭトークン、ケルベロスおよびＮＴ  ＬＡＮマネージャ（NT LAN Manager：「ＮＴＬＭ」）を介してサポートされる。ＳＡＭＬは、オラクル（カリフォルニア州）などのＳＡＭＬアイデンティティ・プロバイダまたはＰｉｎｇアイデンティティに対してＯＡＭまたはケルベロスを組込むことによってサポートされる。ＭＳＡＳは、ＯＡＭプラットフォームに組込まれ、ＯＡＭ、ＯＡＧおよびＯＷＳＭによって保護されているバックエンドリソースに対するＳＳＯのためのＯＡＭおよびＯＡｕｔｈのトークンの検索をサポートする。ＭＳＡＳはまた、ＰＩＮによって保護されているマイクロソフト・アクティブ・ディレクトリに対するＰＫＩ認証を実行することによって「仮想スマートカード」認証をサポートする。電子証明書はセキュリティコンテナアプリ内にプロビジョニングされ、ＰＩＮ検証が成功した後にだけアクセスされる。ＯＡＭに組込まれたＭＳＡＳはコンテキスト認識型でリスクベースのステップアップ認証を可能にする。
【０１７６】
ＯＷＳＭは、ＳＯＡスーツのコンポーネントであり、ウェブサービスベースのＳＯＡ保護および管理に対処する。ＳＯＡインフラストラクチャの目的は、消費者がプロバイダによって公開されたサービスを呼出すことを可能にすることである。ＯＷＳＭは、このようなサービスインフラストラクチャのポリシー管理および保護のためのソリューションを提供する。それは、オラクル社から「オラクル・エンタープライズ・マネージャ」によって提供されている集中型管理インターフェイスによってポリシーの可視性および制御を提供する。ＯＷＳＭは、企業が、（１）ＳＯＡインフラストラクチャを構成する複数のウェブサービスに適用された宣言的ポリシーを中心的に定義して記憶すること、（２）構成可能なエージェントを介して保護および管理ポリシーをローカルに実施すること、および、（３）失敗した認証または認可などの実行時セキュリティイベントを監視すること、を可能にする。それはまた、実行されているビジネスプロセスを中断する必要なしに、リアルタイムでポリシー変更を実施できるようにすることによって、セキュリティ脅威およびセキュリティ違反に対応するようなビジネスアジリティ（business agility）を提供する。
【０１７７】
「オラクル・モバイル・セキュリティ・マネージャ」（Oracle Mobile Security Manager：「ＭＳＭ」）は、オラクルＬｉｎｕｘまたはレッド・ハット・エンタープライズ（Red Hat Enterprise）Ｌｉｎｕｘ上で実行される「WebLogic」管理型サーバである。ＭＳＭはＬＤＡＰサーバと一体化されて、ユーザをプロビジョニングし、モバイルデバイス管理およびセキュリティコンテナへのアクセスのためのポリシーを割当てて管理し、アプリ・カタログを管理し、デバイスのリモートロックまたはワイプを制御し、ワークスペース・アプリをセキュリティ保護し（コンテナをワイプすることによって、ワークスペース・アプリのためのデータおよび構成をすべて削除し）、セキュリティコンテナのためのアクセス制御ポリシーを設定する。ポリシーは、ユーザおよびユーザ群にポリシーテンプレートを関連付けることによってユーザに割当てられる。利用可能なポリシー制御は、デバイス制限、認証（認証の頻度、失敗した試みのしきい値、ＰＫＩのためのＰＩＮ強度）；カタログ（アプリ、ＵＲＬ、ファイル共有）；コンテナ／アプリ（損なわれたプラットフォーム、位置サービス、オフライン状態、非活動期間、データリークの防止（data leak prevention：「ＤＬＰ」））；時間アクセス（時間窓外の場合にはロックする）；地理的アクセス（Geo Access）（地理上フェンス（たとえば都市、州、国）外の場合にはロックする）；デバイス（特定のデバイスモデルをホワイトリストに載せて、最小のＯＳレベルを指定する）；ブラウザ（アドレスバーを使用不能にし、ダウンロード不能にする）；ファイルブラウザ；（ダウンロードを許可／却下し、不能にし、ファイルサーバＵＲＬを指定する）；ＰＩＭ（メールサーバＵＲＬ）；プロビジョニング（テンプレートおよびＰＫＩ詳細を促す）を含む。ユーザが複数のグループ内にいて複数のポリシーを有する場合、ポリシーの組合せは以下の特定のルールに従って決定される。
【０１７８】
ＭＳＭは、ディレクトリにおける１つ以上のユーザ群に関連付けられたＥＭＭポリシーを維持する。ＭＳＭは、如何なるユーザまたはグループ管理をも実行せず、ディレクトリ・ストアからのこれらのアイデンティティおよびグループを直接（同期なしで）利用する。ＭＳＭは、ＨＴＴＰＳに関してＡＰＮＳおよびＣＧＮを用いてデバイスに通知を送信する。ＭＳＭはまた、内部のＣＩＦＳ／ＳＭＢ対応のファイルシステムまたは「マイクロソフトシェアポイント（SharePoint）サーバ」にＷｅｂＤＡＶフロント・エンドを公開し、クライアントからのブラウジング・イントラネット・ファイルの共有を可能にする。
【０１７９】
ソーシャルネットワーク上にますます多くの組織の存在が確立されると、ＩＴ部門は、ソーシャルアイデンティティのためのサポートを必要とする。これは、エンタープライズ・アイデンティティよりも重みの少ないセキュリティ基準に依拠したものであるが、ソーシャルネットワークの要件により適切に適合されている。たとえば、いくつかのウェブサイトでは、ユーザが、それらのサービスに認証されるために、フェースブックまたはグーグルから得られたアクセストークンを提供することを要求される可能性がある。ＯＡＭＭＳは、既存のバックエンド・アイデンティティ管理インフラストラクチャとインターフェイスをとるサーバを含む。サーバは、サポートされたモバイルクライアント・アプリとバックエンドのアイデンティティサービスとの間の仲介物として機能する。これにより、バックエンド・インフラストラクチャからのクライアント・アプリが分離され、これにより、モバイルクライアントプログラムを更新する必要なしに、バックエンド・インフラストラクチャを修正できるようになる。ＯＡＭＭＳは以下の機能を含む：
・ＯＡｕｔｈ規格を利用する委任された認可。
【０１８０】
・エンタープライズ・アイデンティティ管理インフラストラクチャ、典型的には「オラクルアクセス管理プラットフォーム」にブラウザベース（ＨＴＭＬ５）および固有のモバイルアプリを接続するモバイルサービス。
【０１８１】
・グーグル、Ｙａｈｏｏ、フェースブック、ツイッターまたはLinkedInなどのポピュラーなクラウドベースのアイデンティティ認証および認可サービスと対話する際に、ＯＡＭＭＳを信頼する関係者として使用させる機能を提供するインターネットアイデンティティサービス。ＯＡＭＭＳをデプロイすることによって、各々のアイデンティティ・プロバイダ毎にアクセス機能を個々に実現する必要なしにユーザに複数のログインオプションが提供される。ＬＤＡＰ  ＣＲＵＤ動作のためのＲＥＳＴインターフェイスを提供するユーザ・プロファイル・サービス（顧客がアプリ用のグラフィカルＵＩを構築するために同じＲＥＳＴインターフェイスを用いる）；自己登録、プロファイルメンテナンス、パスワード管理およびアカウント削除などのユーザのセルフサービス機能。ユーザ・プロファイル・サービスはＯＡｕｔｈリソースとしても利用可能である。
【０１８２】
・エージェントＳＤＫによって提供されるランタイムＲＥＳＴインターフェイスによってオラクルアクセス管理を利用するためのアクセス管理統合サービス。
【０１８３】
モバイルアプリケーションのためのデータ・バインディング
図８は、一実施形態において、図１のシステム環境１００のクラウドインフラストラクチャシステム１０２のモバイルクラウドサービス１２２を使用するアプリケーションを作成するためのアプリケーション開発フレームワーク１２４に含まれ得るモバイルアプリケーション開発ポータル８００の一例である。図８は、モバイルアプリケーション開発ポータル８００の実施形態または実現例を単に例示するだけであり、特許請求の範囲に記載されるように如何なる発明の範囲をも限定するべきではない。当業者であれば、この明細書中に提示されているこの開示および教示によって、添付の図に示されているそれらの実施形態または実現例についての他の変形例、変更例および／または代替例を認識し得る。
【０１８４】
この例においては、モバイルアプリケーション開発ポータル８００は、モバイルクラウドサービス１２２の基礎コンポーネントにアクセスするアプリケーション開発フレームワーク１２４によって開発者がモバイルアプリケーションを作成することを可能にするハードウェア要素および／またはソフトウェア要素を含む。モバイルバックエンド・サービスモジュール８１０は、任意の数またはタイプのバックエンド・サービスを設計し、テストし、実装し、デプロイし、かつ管理するために、１つ以上のツール、ユーザインターフェイス、ウィザードなどを開発者に提供する。バックエンド・サービスのいくつかの例は、プッシュ通知サービス、ストレージサービス、ユーザ管理サービスなどを含む。開発者は、モバイルアプリケーションがどのようにこれらのバックエンド・サービスにアクセスするかまたはこれらのバックエンド・サービスを利用するかを指定することができる。バックエンド・サービスが作成されると、バックエンド・サービスは、アプリケーション作成中に開発者に自動的に提示することができ、これにより、開発者は、モバイルアプリケーションに搭載するかまたはこれを使用するために１セットの予め定められたバックエンド・サービスの中から選択することができるようになる。
【０１８５】
アプリケーションプログラムインターフェイスモジュール８２０は、モバイル・バックエンド・サービス間で使用できるようにアプリケーション・プログラム・インターフェース（application program interface：「ＡＰＩ」）を設計し、テストし、実装し、デプロイし、管理するために、開発者に１つ以上のツール、ユーザインターフェイス、ウィザードなどを提供する。開発者は、モバイルアプリケーションが、モバイルバックエンドサービスモジュール８１０を用いてデプロイされたバックエンド・サービスと対話することを可能にする１つ以上のソフトウェア中間仲介物を作成することができる。一例においては、開発者は、バックエンド・サービスの残りを保護しながらも、特定の機能を公開するレプレゼンテーショナル・ステート・トランスファ（Representational State Transfer：「ＲＥＳＴ」）を実現することができる。別の例においては、開発者は、ユーザアイデンティティ、モバイルデバイスタイプ、データタイプなどの予め定められた基準に従ってバックエンド・サービスの機能を公開するＡＰＩを作成することができる。ＡＰＩが作成されると、ＡＰＩは、アプリケーション作成中に開発者に自動的に提示することができ、これにより、開発者は、モバイルアプリケーションに搭載するかまたはこれを使用するために１セットの予め定められたＡＰＩの中から選択することができるようになる。
【０１８６】
コネクタモジュール８３０は、他のデータベース、アプリケーション、クラウドベースのアプリケーションおよびサービスまたは外部ＡＰＩとの接続を設計し、テストし、実装し、デプロイし、管理するために、開発者に１つ以上のツール、ユーザインターフェイス、ウィザードなどを提供する。開発者は、モバイルアプリケーションが他のタイプのサービス、外部アプリケーションまたはデータベース、ならびに第三者ＡＰＩなどと対話することを可能にする１つ以上の接続を作成することができる。開発者は、ＲＥＳＴまたは単純にオブジェクト・アクセス・プロトコル（object access protocol：「ＳＯＡＰ」））などのさまざまな技術を用いて、コネクタがこれらのサービスにアクセスすることを指定することができる。コネクタが作成されると、これらのコネクタは、アプリケーション作成中に開発者に自動的に提示することができ、これにより、開発者は、モバイルアプリケーションに搭載するかまたはこれを使用するために１セットの予め定められたコネクタの中から選択することができるようになる。
【０１８７】
記憶モジュール８１０は、モバイル・バックエンド・サービス間で用いられるストレージを設計し、テストし、実装し、デプロイし、かつ管理するために、１つ以上のツール、ユーザインターフェイス、ウィザードなどを開発者に提供する。開発者は、モバイルアプリケーションがモバイル・バックエンド・サービスを用いてデータを検索して記憶することを可能にする１つ以上の記憶集合体を作成することができる。ユーザ管理モジュール８５０は、モバイル・バックエンド・サービスへのユーザのアクセスを管理するために、開発者に１つ以上のツール、ユーザインターフェイス、ウィザードなどを提供する。開発者は、モバイルアプリケーションがモバイル・バックエンド・サービスのためのユーザアクセス制限を順守し得るように１つ以上のユーザ集合、ユーザ役割、ユーザ群などを作成することができる。
【０１８８】
アプリケーションコンポーザモジュール８６０は、モバイルアプリケーションを設計し、テストし、実装し、デプロイし、かつ管理するために、１つ以上のツール、ユーザインターフェイス、ウィザードなどを開発者に提供する。モバイルアプリケーションは、ＩＯＳ、アンドロイド、ブラックベリーなどのさまざまなターゲットプラットホームおよびデバイスのために作成することができる。さまざまな実施形態においては、アプリケーションコンポーザモジュール８６０は、エンタープライズモバイルアプリケーションを構築するためにクラウドベースの高速アプリケーション開発環境を提供する。アプリケーションコンポーザモジュール８６０は固有のアプリとしてモバイルアプリケーションをパッケージ化してデプロイすることができる。アプリケーションコンポーザモジュール８６０は、カリフォルニア州（California）のレッドウッドショアズ（Redwood Shores）にあるオラクル社によって提供されるオラクル・パブリック・クラウド上にホストされたマルチテナントアプリケーション開発環境として具体化され得る。したがって、アプリケーションコンポーザモジュール８６０は、完全なアプリケーションライフサイクル管理をクラウドベースのサービスで提供することができる。
【０１８９】
特定の実施形態においては、アプリケーションコンポーザモジュール８６０はさまざまなユーザペルソナに適用可能な特徴を提供する。たとえば、ビジネス分析者は、顧客関係性管理（customer relationship management：「ＣＲＭ」）、人的資本管理（human capital management：「ＨＣＭ」）などのようなターゲットとなるバックエンドシステムについての十分な機能知識を有するユーザであってもよい。ビジネス分析者は、彼らのビジネス対象関係についての理解および一般的なプログラミング概念についての彼らの精通度によってアプリケーションコンポーザモジュール８６０を用いて、モバイルアプリケーションを速やかに開発することができる。このタイプのユーザは、典型的には、ＣＲＭアプリケーションコンポーザ、ＷｅｂＣｅｎｔｅｒレイアウト・コンポーザ、ＳＯＡビジネスプロセスコンポーザ、ＳＦＤＣアプリケーション構成ツールなどのようなツールを快適に用いることにより、開発者がアプリケーションコンポーザモジュール８６０を用いて新しいモバイルのアプリケーションを効率的に作成することを可能にする。
【０１９０】
別の例においては、アプリケーション開発者は、JDeveloperのようなＩＤＥを用いてコードを容易に書込むことができるユーザであって、かつ、エンタープライズアプリケーションを拡張してカスタマイズするためにＡＤＦ、ＯＡＦｗｋ、スプリング、Ｊ２ＥＥなどのようなアプリケーション開発フレームワークを用いるユーザであり得る。このタイプのユーザは、これらの原理を適用して、アプリケーションコンポーザモジュール８６０を用いて、新しいモバイルアプリケーションを効率的に作成することができる。さらに別の例においては、アプリケーションアドミニストレータは、アプリケーションの構成、デプロイメント、プロビジョニング、パッチングおよび一般的メンテナンス、ならびにアプリケーション開発環境に関わりのあるユーザであり得る。このタイプのユーザは、さらにこれらの原理を適用して、アプリケーションコンポーザモジュール８６０を用いて効率的に新しいモバイルアプリケーションを作成することができる。
【０１９１】
特定の実施形態においては、図１のクラウドインフラストラクチャサービス１０２の顧客は、バックエンドとしてオンプレミスｅＢｕｓｉｎｅｓｓスーツ（e-Business suite：ＥＢＳ）サービスを用いてカスタムのモバイルアプリケーションを構築するためにアプリケーションコンポーザモジュール８６０を利用する。ビジネス分析者は、ＭＣＳ１２２を用いて、ＥＢＳバックエンド上に、モバイルフレンドリなＲＥＳＴ  ＡＰＩを公開することができる。次いで、ビジネス分析者は、モバイルアプリケーション開発ポータル８００のコンポーネントを用いて、モバイルアプリケーションを構築することができる。
【０１９２】
いくつかの実施形態においては、パートナは、ＣＲＭ製品を拡張させて、この拡張部およびＣＲＭサービスをバックエンドとして用いてカスタムのモバイルアプリケーションを作成することを要求し得る。アプリケーション開発者は、ＪＣＳにおけるカスタムオブジェクトでＣＲＭを拡張することができ、ＭＣＳ１２２を用いて、ＣＲＭおよびカスタムオブジェクトのためのモバイルフレンドリなＡＰＩマッシュアップを公開する。次いで、ビジネス分析者は、マッシュアップＭＣＳ  ＡＰＩを組込むために、モバイルアプリケーション開発ポータル８００のコンポーネントを用いて、モバイルアプリケーションを構築することができる。
【０１９３】
さらなる実施形態においては、ＳＩＥＢＥＬ顧客は、LinkedInとの統合およびＳＩＥＢＥＬバックエンドのためにＭＣＳ  ＡＰＩカバーを用いて、カスタムのモバイルアプリケーションを構築してもよい。アプリケーション開発者は、ＪＤｅｖにおけるＡＤＦモバイルLinkedIn特徴を構築し、モバイルアプリケーション開発ポータル８００のコンポーネントを用いて特徴をデプロイすることができる。次いで、ビジネス分析者は、ＳＩＥＢＥＬのためのＭＣＳ  ＡＰＩおよびリンクされた特徴を有するモバイルアプリケーション開発ポータル８００のコンポーネントを用いて、モバイルアプリケーションを構築することができる。
【０１９４】
特定の実施形態においては、予め定義されたテンプレートを用いてモバイルアプリケーションを構築するためのシステムおよび方法が提供される。予め定義されたテンプレートは、バックエンド・サービスとしてＭＣＳ１２２を使用することを可能にする。アプリケーション開発中にサービス定義を開発者に提示して、ＵＩ設計とバックエンド・サービスとの間に迅速な接続を可能にし得る。
【０１９５】
図９は、本発明の実施形態に従ったモバイルアプリケーション開発のための方法のフロー図である。一実施形態においては、図９のフロー図の機能は、メモリまたは他のコンピュータ読取り可能媒体もしくは有形媒体に記憶され、プロセッサによって実行されるソフトウェアよって実現される。他の実施形態においては、機能は、ハードウェアによって（たとえば特定用途向け集積回路（application specific integrated circuit：「ＡＳＩＣ」）、プログラマブルゲートアレイ（programmable gate array：「ＰＧＡ」）、フィールドプログラマブルゲートアレイ（field programmable gate array：「ＦＰＧＡ」）などを用いることによって）、またはハードウェアとソフトウェアとの如何なる組合せによっても、実行され得る。
【０１９６】
９１０において、アプリケーション定義ウィザードが生成される。この明細書中において用いられるアプリケーション定義ウィザードは、１つ以上の予め定義されたクラウドアクセス可能なサービスを利用するモバイルアプリケーションの定義プロセス中にユーザをガイド（誘導）する１セットの１つ以上のＵＩを表現する。アプリケーション定義ウィザードは１つ以上のワークフローを実現することができ、これら１つ以上のワークフローの各々はアプリケーション定義プロセスの一部に関連付けられている。一実施形態においては、アプリケーション定義ウィザードは、アプリケーション識別子プレフィックス、デフォルトアイコン、スプラッシュスクリーン、デフォルトアプリケーション／特徴テンプレート、設定エンタープライズプロビジョニングプロファイル／キーストアなどのアプリケーションデフォルトを指定するようにユーザを促すかまたはガイドすることができる。
【０１９７】
特定の実施形態においては、アプリケーション定義ウィザードは、アプリケーション名、フォームファクタ（電話またはタブレットデバイスなど）、ナビゲーションタイプ（たとえば、スプリングボード、ナビゲーションバー（navigation bar：「ＮａｖＢａｒ」）、スプリング／Ｎａｖコンボなどとしての、単一の特徴またはＵＩを意味しないもの）、および任意のアプリケーションプリファレンスを指定するようにユーザを促すかまたはガイドすることができる。
【０１９８】
９２０において、アプリケーション定義が受取られる。この明細書中に記載されるように、アプリケーション定義は、少なくとも最小限機能的なモバイルアプリケーションを作成するために必要とされる如何なる情報をも含み得る。９３０において、モバイルアプリケーションがアプリケーション定義に基づいて生成される。一実施形態においては、モバイルアプリケーションは、ターゲットデバイスのシミュレータにおいて表現され、翻訳されたときにコンパイルされたモバイルアプリケーションとして機能する１セットの定義を含み得る。
【０１９９】
９４０において、特徴選択ウィザードが生成される。この明細書中において使用される特徴選択ウィザードは、１つ以上の予め定義されたクラウドアクセス可能なサービスを利用するモバイルアプリケーションの開発プロセス中にユーザをガイドする１セットの１つ以上のＵＩを表現する。特徴選択ウィザードは、１つ以上のワークフローを実現することができ、これら１つ以上のワークフローは各々、アプリケーション開発プロセスの一部に関連付けられている。一実施形態においては、特徴選択ウィザードは、モバイルアプリケーションとともに用いることができる特徴、ＵＩモジュール、ビジネスオブジェクトなどを指定するようにユーザを促すかまたはガイドすることができる。
【０２００】
特定の実施形態においては、特徴選択ウィザードは、モバイルアプリケーションの第１の画面のコンポーネントを指定するようにユーザを促すかまたはガイドすることができる。コンポーネントは、複数のコンポーネントのカタログから選択することができる。
【０２０１】
特定の実施形態においては、特徴選択ウィザードは、モバイルアプリケーションの他の画面のコンポーネントを指定するようにユーザを促すかまたはガイドすることができる。これらの他の画面は、１つ以上のＵＩモジュールの一部を形成することができる。特定の実施形態においては、特徴選択ウィザードは、モバイルアプリケーションの１つ以上のＵＩモジュールを指定するようにユーザを促すかまたはガイドすることができる。ＵＩモジュールは、モバイルアプリケーションに関して実行することができるプロセッサ、タスクまたはフローを表現する。ＵＩモジュールは、ＵＩ要素およびページフローの凝集性の高い集合を提供する１セットのテンプレートまたはＵＩモジュールのカタログから選択することができる。ＵＩモジュールのいくつかの例は、許可ワークフロー、ワーカータスク、データ入力タスク、レポートビルダなどである。テンプレートは、１セットのＵＩ要素からなる予め設定された配置／バインディングを提供するので、ユーザは、個々のＵＩ要素を配置およびバインドする必要なしに、それらのＵＩ要素を構成してテンプレートをバインドするだけでよい。一実施形態においては、ユーザが、自身のテンプレートを別のユーザに利用可能なテンプレートのセットに提供してもよい。ユーザは、ＵＩモジュールを表現する一連のページを構成するかまたは指定することができる。各々のページごとに、ユーザに、従来と同様に、１セットのレイアウトテンプレートを提示することができる。各々のレイアウトテンプレートは、二次的テンプレートを選択するなどのいくつかの局面を有してもよい。
【０２０２】
いくつかの実施形態においては、特徴選択ウィザードは、予め定義されたビジネスオブジェクトなどのモバイルアプリケーションの追加特徴を指定するようにユーザを促すかまたはガイドすることができる。ユーザは、バックエンド・サービス、ＡＰＩまたはコネクタのうちのどのリソースが用いられるべきか、または各々のコンポーネント、画面、ＵＩモジュールなどのＵＩ要素に関連付けられるべきかを指定することができる。
【０２０３】
９５０において、特徴定義が受取られ、９６０において、データ・バインディング・ウィザードが生成される。この明細書中において使用されるデータ・バインディング・ウィザードは、１つ以上の予め定義されたクラウドアクセス可能なサービスを利用するモバイルアプリケーションのデータ・バインディングプロセス中にユーザをガイドする１セットの１つ以上のＵＩまたは既存のＵＩからなるＵＩ要素を表現する。データ・バインディング・ウィザードは、１つ以上のワークフローを実現することができ、これら１つ以上のワークフローは各々、アプリケーション開発プロセスの一部に関連付けられている。一実施形態においては、データ・バインディング・ウィザードは、特徴、画面、ＵＩモジュールなどが、モバイルアプリケーションとともに使用可能であるビジネスオブジェクト、サービス、ＡＰＩなどに如何にバインドされるかを指定するようにユーザを促すかまたはガイドすることができる。特定の実施形態においては、データ・バインディング・ウィザードは、モバイルアプリケーションのビジネスオブジェクトを指定するようにユーザを促すかまたはガイドすることができる。ビジネスオブジェクトは、モバイルアプリケーションにとって利用可能なサービス、ＡＰＩなどのカタログまたはセットから選択することができる。
【０２０４】
９７０において、データ・バインディング定義が受取られる。さまざまな実施形態においては、ステップ９４０〜８７０は、連続して、または並行に実行することができる。９４０〜８７０における個々のステップは、モバイルアプリケーションの個々の要素上で、または１グループの要素に対して実行することができる。図示されるように、ユーザは、モバイルアプリケーションを作成するために特徴定義およびデータ・バインディングのプロセスを繰返すことができる。さまざまな実施形態においては、１セットのテンプレートを開発者に提示することができる。テンプレートは一組の凝集性の高いユーザインターフェイスコンポーネントを含む。開発者がデータを個々のユーザインターフェイス要素にバインドする必要なしに、開発者は、データをテンプレートにバインドすることができ、次いでデータがテンプレートを用いて如何に提示されるかをマッピングすることができる。
【０２０５】
９８０において、モバイルアプリケーションがデプロイされる。ユーザは、ターゲットデバイス上にデプロイされたテスト用アプリケーションを用いて、またはターゲットデバイス上にデプロイされた固有のアプリケーションとして、アプリケーションをテストすることができる。
【０２０６】
図１０〜図１３は、アプリケーション定義ウィザードによって提示され得る１つ以上のユーザインターフェイスを例示する。図１０においては、ユーザインターフェイス１０００はユーザインターフェイス要素１０１０を含む。このユーザインターフェイス要素１０１０において、開発者が新しいモバイルアプリケーションのための名前を指定する。ユーザインターフェイス要素１０２０は、新しいモバイルアプリケーションの作成を開始する機能に関連付けられている。図１１および図１２は、ユーザインターフェイス１１００および１２００を示す。ユーザインターフェイス１１００および１２００は、新しいアプリケーションを作成するために、１つ以上のオプションまたはユーザインターフェイス要素だけでなく、開発者によって予め作成されたアプリケーション対するリンクを含み得るワークスペースを、開発者に提供する。図１３が例示するユーザインターフェイス１３００は、開発者に新しいアプリケーションの作成を開始させるために、開発者に映像チュートリアルまたは他のヘルプ情報を提供することができる。
【０２０７】
図１４Ａおよび図１４Ｂは、新しいモバイルアプリケーションを定義する１セットの属性１４１０を開発者に与えるユーザインターフェイス１４００を示す。図１４Ａに示されるように、属性１４１０はアプリケーション名、記述、ターゲットデバイスタイプ（たとえば電話、タブレットなど）、アイコンを含む。アプリケーション定義を形成するために他の属性が提示および収集され得る。図１４Ｂは、一実施形態における属性１４１０のために指定された１セットの値を示す。
【０２０８】
特定の実施形態においては、アプリケーション定義ウィザードは、モバイルアプリケーションのための或るタイプの第１の画面を指定するように開発者に促すかまたはガイドすることができる。一局面においては、開発者には、単純な画面、上側タブを有する画面、下側タブを有する画面、ページ数を有する画面などの１セットの画面タイプを提示することができる。図１５Ａおよび図１５Ｂは、新しいモバイルアプリケーションの第１の画面を定義する１セットの画面タイプ１５１０を開発者に与えるユーザインターフェイス１５００を示す。図１５Ａは、第１の画面のデフォルト選択を単純な画面タイプとして示す。図１５Ｂは、開発者が上側タブを有する画面を選択したことを例示する。
【０２０９】
特定の実施形態においては、アプリケーション定義ウィザードは、モバイルアプリケーションの第１の画面の詳細を指定するように開発者を促すかまたはガイドすることができる。一局面においては、開発者には、予め選択された画面のタイプに特有の１セットのユーザインターフェイス要素を提示することができる。図１６Ａおよび図１６Ｂは、予め選択された画面のタイプに特有の１セットのユーザインターフェイス要素１６１０を開発者に提供するユーザインターフェイス１６００を示す。図１６Ａは、上側タブを有する画面の選択に基づいて、画面のタイトルおよび任意タブの名前またはラベルを定義するために開発者にユーザインターフェイス要素１６１０が提示されることを例示する。図１６Ｂは、開発者が所望の情報をユーザインターフェイス要素１６１０にポピュレートしたことを例示する。
【０２１０】
特定の実施形態においては、アプリケーション定義ウィザードは、モバイルアプリケーションの第１の画面の設計を指定するように開発者を促すかまたはガイドすることができる。一局面においては、開発者には、予め選択された画面のタイプに特有の１セットの画面設計を提示することができる。設計のいくつかの例は、画面項目を含まないブランク設計；画面項目が定義済みのリストレイアウトに従って配置されているリストベースの設計；アイテムが定義済みのギャラリーレイアウトに従って配置されているギャラリーベースの設計；画面項目が定義済みのマップ上に配置されているマップベースの設計；などを含み得る。図１７Ａおよび図１７Ｂは、予め選択された画面のタイプに特有の１セットの設計１７１０を開発者に与えるユーザインターフェイス１７００を示す。図１７Ａは、上側タブの第１の画面のデフォルト設計を付加的な要素を持たないものとして例示する（たとえば、開発者によって後でポピュレートされるべきブランクのキャンバス）。図１７Ｂは、開発者がリストベースの設計を選択したことを例示する。
【０２１１】
特定の実施形態においては、アプリケーション定義ウィザードは、新しいアプリケーションの詳細を終了させるように開発者を促すかまたはガイドすることができる。図１８は、新しいアプリケーションの詳細を終了させるために開発者に１つ以上のオプションを与えるユーザインターフェイス１８００を示す。特定の実施形態においては、開発者のデバイスにテストアプリケーションをインストールするＱＲコードが開発者に提示されてもよい。このテストアプリケーションは新しく作成された異なるアプリケーションであるが、開発者のデバイス上でアプリケーションをテストするためにアプリケーション情報で更新することができる。
【０２１２】
図１９は、一実施形態における使用可能なコンポーネントのカタログを提供するユーザインターフェイス１９００の例である。開発者は、一実施形態において１つ以上のジェスチャを用いて画面にコンポーネントを追加することができる。たとえば、開発者は、ドラッグ・アンド・ドロップ・ジェスチャを用いてカタログからコンポーネントを追加することができる。図２０は、一実施形態における、１つ以上のジェスチャを用いて開発者が画面にコンポーネントを追加することができるユーザインターフェイス２０００の一例である。図２１は、一実施形態における、開発者が画面にマップコンポーネントを追加した後のユーザインターフェイス２１００の一例である。この例においては、ガイド付きカスタマイザ２１１０を開くことができ、これにより、開発者が追加された要素を構成することを可能にする。
【０２１３】
図２２は、一実施形態におけるサービスのカタログを提供するユーザインターフェイス２２００の一例である。図２３は、一実施形態における、選択されたビジネスオブジェクトに基づいて開発者がＵＩモジュールを追加／作成することができるユーザインターフェイス２２００の一例である。たとえば、開発者は、ワーカー（Workers）サービスビジネスオブジェクトを追加し、ワーカー（Worker）ＵＩモジュールを作成することができる。図２４は、一実施形態における、開発者がＵＩモジュールを追加した後のユーザインターフェイス２２００の一例である。上述のとおり、開発者は、ＵＩモジュールのページからなる１つ以上の画面についてのテンプレートを指定することができる。各々のテンプレートは、ユーザインターフェイスの要素にバインドするために利用可能な選択されたビジネスオブジェクトのどんな属性をも駆動することができる。この例においては、ガイド付きカスタマイザ２４１０を開くことができ、これにより、開発者がテンプレートを選択することを可能にする。
【０２１４】
図２５は、本発明の実施形態に従ったモバイルアプリケーションのユーザインターフェイスをデータ・バインドするための方法２５００のフロー図である。一実施形態においては、図２５のフロー図の機能は、メモリまたは他のコンピュータ読取り可能媒体もしくは有形媒体に記憶され、プロセッサによって実行されるソフトウェアよって実現される。他の実施形態においては、機能は、ハードウェアによって（たとえば特定用途向け集積回路（application specific integrated circuit：「ＡＳＩＣ」）、プログラマブルゲートアレイ（programmable gate array：「ＰＧＡ」）、フィールドプログラマブルゲートアレイ（field programmable gate array：「ＦＰＧＡ」）などを用いることによって）、またはハードウェアとソフトウェアとの如何なる組合せによっても、実行され得る。
【０２１５】
ステップ２５１０において、データソースをモバイルアプリケーションのユーザインターフェイスにバインドする第１のジェスチャが受取られる。第１のジェスチャはスワイプ、クリックなどユーザインターフェイスイベントであってもよい。上述のように、データソースはサービスカタログから選択することができる。さまざまな実施形態においては、モバイルアプリケーションは、（通常、ＨＴＴＰを介してバックエンド／ミドルウェアサーバによって提供される）バックエンド・サービスにバインドされるデータを有するＵＩコンポーネントの画面を有し得る。これらのアプリケーションを構築するために、ユーザは、これらの個々のコンポーネントをそのデータのうち特定の部分にバインドする必要がある。
【０２１６】
さまざまな実施形態においては、アプリケーションコンポーザモジュール８６０によって提供されるウェブベースのモバイルアプリケーション開発ツールにおいては、各々のＵＩコンポーネントは、ＵＩのうちいずれのセクションが、バックエンド・サービスのデータから得られる個々のプロパティに独立してデータ・バインドされ得るかを通知している。
【０２１７】
一実施形態においては、デバイス上で実施されるとおりに実行されるモバイルアプリケーションの高忠実度ＵＩプレビューがレンダリングされる。このプレビューにおけるコンポーネントが予めバインドされている場合、プレビューは、デバイス上で実行されているかのように本物のデータまたは模擬データを含むこととなるだろう。
【０２１８】
ユーザがＵＩコンポーネントをデータ・バインドすることを要望する場合、特別のデータ・バインディングモードが入力される。これが行なわれると、モバイルアプリケーションのＵＩプレビューは、高忠実度プレビューからそのデータ・バインディングモードに切換わる。ＵＩのうちデータ・バインドされ得るセクションは、その特定のセクションの機能を記述する関連テキストを示すようにここで変換される。たとえば、ＵＩコンポーネントがユーザ画像を示すものと想定する。このＵＩは、ユーザの写真と、この写真の下にユーザのファーストネームとを有する。ユーザがこのＵＩコンポーネントをデータ・バインドしていない場合、アプリケーションのプレビューは、代表的な（模造の）写真または本物の写真と、その下に偽名または本名のファーストネームとを示すだろう。
【０２１９】
ユーザがこのＵＩプロファイルコンポーネントをデータ・バインドすることを所望する場合、ユーザは、データ・バインディングモードを始動させ、プレビューは、写真が存在していた（この時点でテキスト「ユーザプロファイル写真」を含むこととなる）空きスロットと、ファーストネームが存在していた（この時点でテキスト「ファーストネーム」を含むこととなる）空きスロットとを示すように変化する。次いで、ユーザに、データ・バインディング・インターフェイスが提示される。これは、ユーザがバインドすることができる実現可能なすべてのデータ（たとえば、フェースブック・フィードは、ユーザ自身の写真を含むこのユーザのすべてのプロファイル情報を含み得る）と；電話の視覚的プレビュー（上述の場合には、「ユーザプロファイル写真」および「ファーストネーム」）におけるスロットにマップされている（電話プレビューとは別個である）視覚的スロットと；一致している。
【０２２０】
このコンポーネントをデータ・バインドするために、ユーザは、入手可能なリストから特定のデータをドラッグ・アンド・ドロップし、彼らがそのデータを適用したいと考えているスロットにドロップする必要がある。上述の例においては、ユーザは、「ファーストネーム」が１個のデータとして利用可能であることを知る。ユーザは、それを「ファーストネーム」スロット上にまでドラッグして、そのスロットをそれらユーザのファーストネームにバインドすることができる。
【０２２１】
ユーザが（当該ユーザがデータをドラッグした）これらのスロット上にとどまっていると、電話のＵＩプレビューの対応する部分がハイライト表示されて、ＵＩにおいてこのスロットが影響を及ぼしている箇所（支援のためにテキストをプレビューに有している）がユーザに通知される。ユーザがデータ・バインドし終えると、電話ＵＩプレビューがその高忠実度モードに戻り、ここで、模擬データまたは現実データがユーザに示される。こうして、データ・バインディング外では常に、ユーザは、アプリケーションを、それがターゲットデバイス上に表示され得るとおりに視認することとなる。
【０２２２】
ステップ２５２０において、１セットのデータポイントがデータソースにおいて利用可能となる。ステップ２５３０において、ユーザインターフェイスのうち１セットのデータ・バインド可能エリアが、ユーザインターフェイスによって提供される情報に基づいて決定される。たとえば、データ・バインディングモードを入力したときに支援のためにスロットによってユーザに提示することができる。先のアプローチは、コンポーネントをデータ・バインドするためにユーザウィザードまたは一般的形式を提示することであるだろう。これは、どんな視覚的プレビューも提供しないだけでなく、そのコンポーネントがどのように機能するか、およびそれがどのように技術的にデータにバインドされるかについての複雑な詳細をユーザが認識していることを必要とする。
【０２２３】
ステップ２５４０において、データソースにおいて利用可能なデータポイントをユーザインターフェイスのデータ・バインド可能エリアにリンクする第２のジェスチャが受取られる。したがって、特定の実施形態においては、各々のＵＩコンポーネントは、発見することが可能なスロットの標準的リストを提示することとなる。ユーザがこれらのスロットにデータを追加すると、ＵＩコンポーネントにとっては、そのデータの意図およびセマンティックを決定することと、ＵＩコンポーネント自体をそれらデータにバインドするように適切に構成することとが責務となる。
【０２２４】
このアプローチにより、モバイルデバイスのためのコンポーネントをデータ・バインドすることがかなり容易になる。これにより、ユーザが、ＵＩコンポーネントがどのように技術的にバインドされるのかについての詳細な知識を有する必要がなくなり、かつ、基礎コードを調査したり理解したりする必要もなくなる。これにより、ターゲットとなる技術ユーザをより減らすことができ、それでも依然として、著しく複雑なＵＩを簡略的にバインドすることができる。さまざまな実施形態においては、各々のＵＩコンポーネントツーリング（tooling）は以下を提供する。コンポーネントにおけるデータ・バインド可能なエリアのリスト。データに対応可能なこれらのエリアの（異なっている可能性もあるので）各々についてのプログラマティックＡＰＩ。これらのデータ・バインディングエリアの各々についての視覚的プレビューを構成可能であること。
【０２２５】
ステップ２５５０においては、データ・バインド可能なエリアの予め定められた表現は、データソースにおいて利用可能なデータポイントを参照して修正される。一実施形態においては、各々のＵＩテンプレートは、ＵＩコンポーネントを何らかの予めセットされた「開始」データまたは模擬データにバインドする何らかの表現言語で開始される。ユーザがＵＩコンポーネントをデータ・バインドすると、共通インターフェイスは、ユーザにさまざまなデータ・バインディングスロットを示すとともに、プレビューをデータ・バインドするためにそれ自体を構成するようにＵＩコンポーネントに伝えることとなる（表現言語が指し示すものを模擬データからスロットに対応するテキストに変更することにより実行することができる）。
【０２２６】
ユーザがデータを各々のスロットにドラッグすると、その構造のうちその特定のスロットに関連する部分がＵＩコンポーネントに通知され、ハイライト表示されなければならない。データがドロップされると、ＵＩコンポーネントにはそのデータのコンテキストについての情報（それがどんなＡＰＩから得られたか、それがどんなプロパティであったか、結果セットのどこにあるか、および、どんなタイプのデータであるか）が与えられる。ＵＩコンポーネントは、次いで、その特定のデータに応答してそれ自体をプログラムによって構成する役割を果たす。
【０２２７】
ユーザがデータ・バインディングモードを終了すると、ＵＩコンポーネントは、このとき、それが高忠実度プレビューを生成するようにバインドされているサービスから模擬データまたは現実データを取ってくる役割を果たす。
【０２２８】
図２６は、一実施形態における、データ・バインディングを実行した後のユーザインターフェイス２６００の一例である。したがって、開発者には、選択されたビジネスオブジェクトの属性のリストを提示することができ、かつ、この開発者は、１つ以上のジェスチャを用いて、属性をユーザインターフェイス要素にバインドすることができる。
【０２２９】
結論
図２７は、一実施形態における、デプロイメントのためにモバイルアプリケーションを構成するためのユーザインターフェイス２７００の一例である。この例においては、開発者は、モバイルアプリケーションがデプロイされ得る１つ以上のモバイルオペレーティングシステムを選択することができる。図２８は、一実施形態における、モバイルアプリケーションがデプロイメントのために利用可能になった後のユーザインターフェイス２７００の一例である。この例においては、デプロイメントダイアログ２８１０が１セットのデプロイメントオプションを提供する。さまざまな実施形態においては、デプロイメントオプションを選択することにより、ＱＲコードが生成されて、ターゲットデバイスがモバイルアプリケーションを受取ってその固有のフォーマットでインストールすることが可能となる。
【０２３０】
図２９は、一実施形態における、モバイルアプリケーションがデプロイメントのために利用可能になった後のユーザインターフェイス２９００の一例である。この例においては、ダイアログ２９１０は、さまざまな装置上にモバイルアプリケーションをその固有のフォーマットでインストールすることをトリガするために生成されたＱＲコードを含む。図３０は、一実施形態における、開発者ワークスペースにおいて新しくデプロイされたモバイルアプリケーションを示すユーザインターフェイス３０００の一例である。この例においては、ダイアログ３０１０は、開発者がアプリケーションプロジェクトに関して１つ以上のアクションを実行することを可能にする。
【０２３１】
図３１は、実施形態のうちの１つを実現するための分散型システム３１００の簡略図を示す。図示される実施形態においては、分散型システム３１００は、１つ以上のネットワーク３１１０を介して、ウェブブラウザ、プロプライエタリクライアント（たとえばオラクルフォームズ）などのクライアントアプリケーションを実行して動作させるように構成される１つ以上のクライアントコンピューティングデバイス３１０２、３１０４、３１０６および３１０８を含む。サーバ３１１２は、ネットワーク３１１０を介してリモートクライアントコンピューティングデバイス３１０２、３１０４、３１０６および３１０８と通信可能に結合されてもよい。
【０２３２】
さまざまな実施形態では、サーバ３１１２は、システムのコンポーネントのうち１つ以上によって提供される１つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。いくつかの実施形態では、これらのサービスは、ウェブに基づくサービスもしくはクラウドサービスとして、またはソフトウェア・アズ・ア・サービス（Software as a Service：ＳａａＳ）モデルもしくはプラットフォーム・アズ・ア・サーブ（Platform as a Serve：ＰａａＳ）モデルの下で、クライアントコンピューティングデバイス３１０２，３１０４，３１０６および／または３１０８のユーザに対して提供されてもよい。クライアントコンピューティングデバイス３１０２，３１０４，３１０６および／または３１０８を動作させるユーザは、次いで、１つ以上のクライアントアプリケーションを利用してサーバ３１１２と対話して、これらのコンポーネントによって提供されるサービスを利用してもよい。
【０２３３】
図３１に示される構成では、システム３１００のソフトウェアコンポーネント３１１８、３１２０および３１２２はサーバ３１１２上において実現されるものとして示される。他の実施形態では、システム３１００のコンポーネントのうち１つ以上および／またはこれらのコンポーネントによって提供されるサービスは、クライアントコンピューティングデバイス３１０２，３１０４，３１０６および／または３１０８のうち１つ以上によって実現されてもよい。クライアントコンピューティングデバイスを動作させるユーザは、次いで、１つ以上のクライアントアプリケーションを利用して、これらのコンポーネントによって提供されるサービスを用いてもよい。これらのコンポーネントは、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組合せにおいて実現されてもよい。分散型システム３１００とは異なり得るさまざまな異なるシステム構成が実現可能であることが理解されるべきである。図に示される実施形態は、したがって、実施形態のシステムを実現するための分散型システムの一例であり、限定的であるようには意図されない。
【０２３４】
クライアントコンピューティングデバイス３１０２、３１０４、３１０６および／または３１０８は、携帯可能な手持ち式の装置（たとえばｉＰｈｏｎｅ（登録商標）、セルラー電話、ｉＰａｄ（登録商標）、計算タブレット、携帯情報端末（ＰＤＡ））またはウェアラブルデバイス（たとえばＧｏｏｇｌｅ  Ｇｌａｓｓ（登録商標）頭部装着型ディスプレイ）であってもよく、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  Ｍｏｂｉｌｅ（登録商標）などのソフトウェア、および／もしくは、ｉＯＳ、Ｗｉｎｄｏｗｓ  Ｐｈｏｎｅ、Ａｎｄｒｏｉｄ、ＢｌａｃｋＢｅｒｒｙ  ２９、Ｐａｌｍ  ＯＳなどのようなさまざまなモバイルオペレーティングシステムを動作させ、インターネット、電子メール、ショートメッセージサービス（ＳＭＳ）、Ｂｌａｃｋｂｅｒｒｙ（登録商標）または他の通信プロトコルで可能化される。クライアントコンピューティングデバイス３１０２、３１０４、３１０６および／または３１０８は汎用パーソナルコンピュータであってもよく、たとえば、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、Ａｐｐｌｅ  Ｍａｃｉｎｔｏｓｈ（登録商標）および／またはＬｉｎｕｘオペレーティングシステムのさまざまなバージョンを動作させるパーソナルコンピュータおよび／またはラップトップコンピュータを含む。クライアントコンピューティングデバイス３１０２、３１０４、３１０６および３１０８は、たとえばＧｏｏｇｌｅ  Ｃｈｒｏｍｅ  ＯＳなどのさまざまなＧＮＵ／Ｌｉｎｕｘオペレーティングシステムを限定なく含む、市場で入手可能なさまざまなＵＮＩＸ（登録商標）またはＵＮＩＸライク・オペレーティングシステムのいずれかを実行させるワークステーションコンピュータであり得る。代替的に、または加えて、クライアントコンピューティングデバイス３１０２、３１０４、３１０６および／または３１０８は、ネットワーク３１１０を介して通信することができる、シンクライントコンピュータ、インターネットにより可能化されるゲームシステム（たとえばＫｉｎｅｃｔ（登録商標）ジェスチャ入力装置付きまたは無しのＭｉｃｒｏｓｏｆｔ  Ｘｂｏｘゲームコンソール）および／または個人メッセージ伝達装置などのような他の任意の電子装置であってもよい。
【０２３５】
例示的な分散型システム３１００は４つのクライアントコンピューティングデバイスとともに示されているが、任意の数のクライアントコンピューティングデバイスがサポートされ得る。センサを備えるデバイスなどの他のデバイスがサーバ３１１２と対話してもよい。
【０２３６】
分散型システム３１００におけるネットワーク３１１０は、ＴＣＰ／ＩＰ（transmission control protocol/Internet protocol：伝送制御プロトコル／インターネットプロトコル）、ＳＮＡ（systems network architecture：システムネットワークアーキテクチャ）、ＩＰＸ（Internet packet exchange：インターネットパケット交換）、ＡｐｐｌｅＴａｌｋなどを限定なしに含む、市場で入手可能なさまざまなプロトコルのうちのいずれかを用いてデータ通信をサポートすることができる、当業者が精通している如何なるタイプのネットワークであってもよい。単なる例示として、ネットワーク３１１０は、イーサネット（登録商標）、トークンリングなどに基づくものなどの、ローカルエリアネットワーク（ＬＡＮ）であり得る。ネットワーク３１１０はワイドエリアネットワークおよびインターネットであり得る。それは、仮想プライベート・ネットワーク（ＶＰＮ）、イントラネット、エクストラネット、公衆交換電話網（ＰＳＴＮ）、赤外線ネットワーク、無線ネットワーク（たとえば米国電気電子学会（ＩＥＥＥ）８０２．１１のプロトコル一式、Ｂｌｕｅｔｏｏｔｈ（登録商標）、および／もしくは他の任意の無線プロトコルのいずれかの下で動作するネットワーク）を限定なしに含む仮想ネットワーク；ならびに／またはこれらの任意の組合せおよび／もしくは他のネットワークを含み得る。
【０２３７】
サーバ３１１２は、１つ以上の汎用コンピュータ、特化されたサーバコンピュータ（たとえばＰＣ（パーソナルコンピュータ）サーバ、ＵＮＩＸ（登録商標）サーバ、ミッドレンジ・サーバ、メインフレームコンピュータ、ラックマウント型サーバなどを含む）、サーバファーム、サーバクラスタ、または任意の他の適切な構成および／もしくは組合せからなってもよい。さまざまな実施形態において、サーバ３１１２は、前述の開示に記載される１つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。たとえば、サーバ３１１２は、本開示の実施形態に従って上記の処理を実行するためのサーバに対応してもよい。
【０２３８】
サーバ３１１２は、上に論じられたもののうちいずれかを含むオペレーティングシステム、および市場で入手可能な如何なるサーバオペレーティングシステムをも実行させ得る。サーバ３１１２は、さらに、ＨＴＴＰ（hypertext transport protocol：ハイパーテキスト・トランスポート・プロトコル）サーバ、ＦＴＰ（file transfer protocol：ファイル転送プロトコル）サーバ、ＣＧＩ（コモンゲートウェイインターフェイス）サーバ、ＪＡＶＡサーバ、データベースサーバなどを含むさまざまな付加的サーバアプリケーションおよび／または中間層アプリケーションのうちのいずれかを動作させ得る。例示的なデータベースサーバは、Ｏｒａｃｌｅ、Ｍｉｃｒｏｓｏｆｔ、Ｓｙｂａｓｅ、ＩＢＭ（インターナショナルビジネスマシンズ）などから市場で入手可能なものを含むが、これらに限定されない。
【０２３９】
いくつかの実現例では、サーバ３１１２は、クライアントコンピューティングデバイス３１０２，３１０４，３１０６および３１０８のユーザから受信されるデータフィードおよび／またはイベント更新を解析および整理統合するために１つ以上のアプリケーションを含み得る。一例として、データフィードおよび／またはイベント更新は、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能計量ツール（たとえばネットワーク監視およびトラフィック管理アプリケーション）、クリックストリーム解析ツール、自動車交通監視などに関係する実時間イベントを含み得る１つ以上の第三者情報源および連続的なデータストリームから受信される、ツイッター（登録商標）フィード、フェースブック（登録商標）更新または実時間更新を含み得るが、それらに限定されない。サーバ３１１２は、さらに、データフィードおよび／または実時間イベントをクライアントコンピューティングデバイス３１０２，３１０４，３１０６および３１０８の１つ以上の表示装置を介して表示するために１つ以上のアプリケーションを含み得る。
【０２４０】
分散型システム３１００は、さらに、１つ以上のデータベース３１１４および３１１６を含んでもよい。データベース３１１４および３１１６はさまざまな位置にあってもよい。例として、データベース３１１４および３１１６のうち１つ以上はサーバ３１１２に局在する（および／またはサーバ３１１２に常駐する）非一時的な記憶媒体にあってもよい。代替的に、データベース３１１４および３１１６は、サーバ３１１２から遠隔にあってもよく、ネットワークに基づくかまたは専用の接続を介してサーバ３１１２と通信し得る。１組の実施形態では、データベース３１１４および３１１６は記憶域ネットワーク（ＳＡＮ）にあってもよい。同様に、サーバ３１１２に帰する機能を実行するための任意の必要なファイルが、適切に、サーバ３１１２上においてローカルに、および／または遠隔で記憶されてもよい。１組の実施形態では、データベース３１１４および３１１６はＯｒａｃｌｅによって提供されるデータベースなどの、ＳＱＬフォーマットされたコマンドに応答してデータを記憶、更新および検索取得するように適合されるリレーショナルデータベースを含んでもよい。
【０２４１】
図３２は、本発明のさまざまな実施形態が実現され得る例示的なコンピュータシステム３２００を示す。システム３２００は、上述のコンピュータシステムのいずれかを実現するよう用いられてもよい。図３２に示されるように、コンピュータシステム３２００は、バスサブシステム３２０２と、バスサブシステム３２０２を介していくつかの周辺サブシステムと通信する処理ユニット３２０４とを含む。これらの周辺サブシステムは、処理加速ユニット３２０６、Ｉ／Ｏサブシステム３２０８、ストレージサブシステム３２１８および通信サブシステム３２２４を含んでもよい。ストレージサブシステム３２１８は有形のコンピュータ読取可能記憶媒体３２２２およびシステムメモリ３２１０を含む。
【０２４２】
バスサブシステム３２０２は、コンピュータシステム３２００のさまざまなコンポーネントおよびサブシステムに意図されるように互いと通信させるための機構を提供する。バスサブシステム３２０２は概略的に単一のバスとして図示されているが、バスサブシステムの代替的実施形態は複数のバスを利用してもよい。バスサブシステム３２０２は、さまざまなバスアーキテクチャのうちいずれかを用いるメモリバスまたはメモリコントローラ、周辺バスおよびローカルバスを含むいくつかのタイプのバス構造のうちのいずれかであり得る。たとえば、そのようなアーキテクチャは、産業標準アーキテクチャ（Industry Standard Architecture：ＩＳＡ）バス、マイクロチャネルアーキテクチャ（Micro Channel Architecture：ＭＣＡ）バス、エンハンストＩＳＡ（Enhanced ISA：ＥＩＳＡ）バス、ビデオエレクトロニクス標準組織（Video Electronics Standards Association：ＶＥＳＡ）ローカルバス、および周辺コンポーネントインターコネクト（Peripheral Component Interconnect：ＰＣＩ）バスを含んでもよく、ＩＥＥＥ  Ｐ１３８６．１規格に従って製造されるメザニンバスとして実現され得る。
【０２４３】
処理ユニット３２０４は、１つ以上の統合された回路（たとえば従来のマイクロプロセッサまたはマイクロコントローラ）として実現可能であり、コンピュータシステム３２００の動作を制御する。１つ以上のプロセッサが処理ユニット３２０４に含まれてもよい。これらのプロセッサは単一コアまたはマルチコアプロセッサを含んでもよい。特定の実施形態では、処理ユニット３２０４は、１つ以上の独立した処理ユニット３２３２および／または３２３４として、単一または複数コアのプロセッサが各処理ユニットに含まれる状態で実現されてもよい。他の実施形態では、処理ユニット３２０４は、さらに、２つのデュアルコアプロセッサを単一のチップに統合することによって形成されるクワッドコア処理ユニットとして実現されてもよい。
【０２４４】
さまざまな実施形態では、処理ユニット３２０４はさまざまなプログラムをプログラムコードに応答して実行することができ、複数の同時に実行されるプログラムまたはプロセスを維持することができる。任意の所与の時間において、実行されるべきプログラムコードの一部またはすべてがプロセッサ３２０４および／またはストレージサブシステム３２１８に常駐することができる。好適なプログラミングによって、プロセッサ３２０４は上記のさまざまな機能を提供することができる。コンピュータシステム３２００はさらに処理加速ユニット３２０６を含んでもよく、処理加速ユニット３２０６はデジタル信号プロセッサ（digital signal processor：ＤＳＰ）、特殊用途のプロセッサなどを含み得る。
【０２４５】
Ｉ／Ｏサブシステム３２０８はユーザインターフェイス入力装置およびユーザインターフェイス出力装置を含んでもよい。ユーザインターフェイス入力装置は、キーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイに組み込まれるタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを伴う音声入力装置、マイクロフォン、および他のタイプの入力装置を含み得る。ユーザインターフェイス入力装置は、たとえば、ユーザがジェスチャおよび話し言葉コマンドを用いて自然なユーザインターフェイスを介してＭｉｃｒｏｓｏｆｔ  Ｘｂｏｘ（登録商標）３６０ゲームコントローラなどの入力装置を制御しそれと対話することを可能にするＭｉｃｒｏｓｏｆｔ  Ｋｉｎｅｃｔ（登録商標）モーションセンサなどのモーション感知および／またはジェスチャ認識装置を含んでもよい。ユーザインターフェイス入力装置は、さらに、ユーザから目の活動（たとえば写真を撮る、および／またはメニュー選択を行なっている間の「瞬き」）を検出し、目の動きを入力装置（たとえばＧｏｏｇｌｅ  Ｇｌａｓｓ（登録商標））への入力として変換するＧｏｏｇｌｅ  Ｇｌａｓｓ（登録商標）瞬き検出器などの目のジェスチャ認識装置を含んでもよい。さらに、ユーザインターフェイス入力装置は、ユーザが音声コマンドを介して音声認識システム（たとえばＳｉｒｉ（登録商標）ナビゲータ）と対話することを可能にする音声認識感知装置を含んでもよい。
【０２４６】
ユーザインターフェイス入力装置は、さらに、三次元（３Ｄ）マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカ、デジタルカメラ、デジタルカムコーダ、ポータブルメディアプレーヤ、ウェブカム、画像スキャナ、指紋スキャナ、バーコードリーダ３Ｄスキャナ、３Ｄプリンタ、レーザレンジファインダ、および視線追跡装置などの聴覚／視覚装置を含み得るが、これらに限定されない。加えて、ユーザインターフェイス入力装置は、たとえば、コンピュータ断層撮影、磁気共鳴撮像、ポジションエミッショントモグラフィー、医療超音波検査装置などの医療画像化入力装置を含んでもよい。ユーザインターフェイス入力装置は、さらに、たとえば、ＭＩＤＩキーボード、デジタル音楽機器などの音声入力装置を含んでもよい。
【０２４７】
ユーザインターフェイス出力装置は、ディスプレイサブシステム、インジケータライト、または音声出力装置のような非ビジュアルディスプレイなどを含んでもよい。ディスプレイサブシステムは、陰極線管（ＣＲＴ）、フラットパネルデバイス、たとえば液晶ディスプレイ（ＬＣＤ）またはプラズマディスプレイを用いたものなど、投影装置、タッチスクリーンなどであってもよい。一般に、「出力装置」という語の使用は、コンピュータシステム３２００からユーザまたは他のコンピュータに情報を出力するためのすべての考えられ得るタイプの装置および機構を含むよう意図される。たとえばユーザインターフェイス出力装置は、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力装置およびモデムなどの、テキスト、グラフィックスおよび音声／映像情報を視覚的に伝えるさまざまな表示装置を含み得るが、これらに限定されない。
【０２４８】
コンピュータシステム３２００は、その時点でシステムメモリ３２１０内に位置するものとして示される、ソフトウェア要素を含むストレージサブシステム３２１８を含んでもよい。システムメモリ３２１０は、処理ユニット３２０４においてロード可能および実行可能であるプログラム命令、ならびにこれらのプログラムの実行中に生成されるデータを記憶してもよい。
【０２４９】
コンピュータシステム３２００の構成およびタイプによっては、システムメモリ３２１０は揮発性（ランダムアクセスメモリ（ＲＡＭ）など）であってもよく、および／または不揮発性（リードオンリメモリ（ＲＯＭ）、フラッシュメモリなど）であってもよい。ＲＡＭは典型的には、処理ユニット３２０４に即座にアクセス可能であり、および／もしくは処理ユニット３２０４によって現在動作および実行されている、データならびに／またはプログラムモジュールを含む。いくつかの実現例では、システムメモリ３２１０は、スタティックランダムアクセスメモリ（ＳＲＡＭ）またはダイナミックランダムアクセスメモリ（ＤＲＡＭ）などの複数の異なるタイプのメモリを含んでもよい。いくつかの実現例では、起動中などのように、コンピュータシステム３２００内における要素間において情報の転送を助ける基本的なルーチンを含む基本的な入力／出力システム（ＢＩＯＳ）が、典型的にはＲＯＭに記憶されてもよい。限定するものではなく一例として、システムメモリ３２１０はさらにアプリケーションプログラム３２１２を示し、アプリケーションプログラム３２１２は、クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム（ＲＤＢＭＳ）など、プログラムデータ３２１４およびオペレーティングシステム３２１６を含んでもよい。例として、オペレーティングシステム３２１６は、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、Ａｐｐｌｅ  Ｍａｃｉｎｔｏｓｈ（登録商標）および／もしくはＬｉｎｕｘオペレーティングシステムのさまざまなバージョン、市場で入手可能なさまざまなＵＮＩＸ（登録商標）またはＵＮＩＸライク・オペレーティングシステム（さまざまなＧＮＵ／Ｌｉｎｕｘオペレーティングシステム、Ｇｏｏｇｌｅ  Ｃｈｒｏｍｅ（登録商標）ＯＳなどを含むが、これらに限定されない）、ならびに／またはｉＯＳ、Ｗｉｎｄｏｗｓ（登録商標）  Ｐｈｏｎｅ、Ａｎｄｒｏｉｄ（登録商標）  ＯＳ、ＢｌａｃｋＢｅｒｒｙ（登録商標）  ２９  ＯＳ、およびＰａｌｍ（登録商標）  ＯＳなどのモバイルオペレーティングシステムを含んでもよい。
【０２５０】
ストレージサブシステム３２１８は、さらに、いくつかの実施形態の機能を提供する基本的なプログラミングおよびデータ構造を記憶するための有形のコンピュータ読取可能記憶媒体を提供してもよい。プロセッサによって実行されると上記の機能を提供するソフトウェア（プログラム、コードモジュール、命令）がストレージサブシステム３２１８に記憶されてもよい。これらのソフトウェアモジュールまたは命令は処理ユニット３２０４によって実行されてもよい。ストレージサブシステム３２１８は、さらに、本発明に従って用いられるデータを記憶するためのリポジトリを提供してもよい。
【０２５１】
ストレージサブシステム３２００は、さらに、コンピュータ読取可能記憶媒体３２２２にさらに接続され得るコンピュータ読取可能記憶媒体リーダ３２２０を含んでもよい。システムメモリ３２１０とともに、およびオプションとしてシステムメモリ３２１０との組合せで、コンピュータ読取可能記憶媒体３２２２は、コンピュータ読取可能情報を一時的および／またはより永続的に含み、記憶し、送信し、および検索取得するための、遠隔の、ローカルな、固定された、および／またはリムーバブルな記憶装置に記憶媒体を加えたものを包括的に表現してもよい。
【０２５２】
コードまたはコードの一部を含むコンピュータ読取可能記憶媒体３２２２は、さらに、情報の記憶および／または送信のための任意の方法または技術において実現される揮発性および不揮発性の、リムーバブルおよび非リムーバブルな媒体などであるがそれらに限定はされない、記憶媒体および通信媒体を含む、当該技術分野において公知であるかまたは用いられる任意の適切な媒体を含み得る。これは、ＲＡＭ、ＲＯＭ、電子的に消去可能なプログラマブルＲＯＭ（ＥＥＰＲＯＭ）、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶もしくは他の磁気記憶装置、または他の有形のコンピュータ読取可能媒体などの、有形のコンピュータ読取可能記憶媒体を含み得る。これは、さらに、所望の情報を送信するよう使用可能であり、コンピューティングシステム３２００によってアクセス可能である、データ信号、データ伝送または任意の他の媒体などの、非有形のコンピュータ読取可能媒体を含み得る。
【０２５３】
一例として、コンピュータ読取可能記憶媒体３２２２は、非リムーバブルの、不揮発性磁気媒体において読出または書込を行なうハードディスクドライブ、リムーバブルの不揮発性磁気ディスクにおいて読出または書込を行なう磁気ディスクドライブ、およびＣＤ  ＲＯＭ、ＤＶＤ、およびブルーレイ（登録商標）ディスク、もしくは他の光媒体などのようなリムーバブルの不揮発性光ディスクにおいて読出または書込を行なう光ディスクドライブを含んでもよい。コンピュータ読取可能記憶媒体３２２２は、Zip（登録商標）ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス（ＵＳＢ）フラッシュドライブ、セキュアデジタル（ＳＤ）カード、ＤＶＤディスク、デジタルビデオテープなどを含み得るがそれらに限定はされない。コンピュータ読取可能記憶媒体３２２２は、さらに、フラッシュメモリに基づくＳＳＤなどの不揮発性メモリ、エンタープライズフラッシュドライブ、ソリッドステートＲＯＭなどに基づくソリッドステートドライブ（ＳＳＤ）、ソリッドステートＲＡＭ、ダイナミックＲＡＭ、スタティックＲＡＭ、ＤＲＡＭに基づくＳＳＤ、磁気抵抗ＲＡＭ（ＭＲＡＭ）ＳＳＤなどの揮発性メモリに基づくＳＳＤ、ならびにＤＲＡＭとフラッシュメモリに基づくＳＳＤとの組合せを用いるハイブリッドＳＳＤを含んでもよい。ディスクドライブおよびそれらの関連のコンピュータ読取可能媒体は、コンピュータシステム３２００のためのコンピュータ読取可能命令、データ構造、プログラムモジュールおよび他のデータの不揮発性ストレージを提供してもよい。
【０２５４】
通信サブシステム３２２４は、他のコンピュータシステムおよびネットワークへのインターフェイスを与える。通信サブシステム３２２４は、他のシステムとコンピュータシステム３２００との間のデータの送受のためのインターフェイスとして働く。たとえば、通信サブシステム３２２４は、コンピュータシステム３２００がインターネットを介して１つ以上の装置に接続することを可能にしてもよい。いくつかの実施形態では、通信サブシステム３２２４は、（たとえばセルラー電話技術、３Ｇ、４ＧもしくはＥＤＧＥ（グローバル進化のための高速データレート）などの先進データネットワーク技術、ＷｉＦｉ（ＩＥＥＥ８０２．１１ファミリー規格、もしくは他のモバイル通信技術、またはそれらの任意の組合せを用いて）無線音声および／またはデータネットワークにアクセスするための無線周波数（radio frequency：ＲＦ）送受信機コンポーネント、グローバルポジショニングシステム（global positioning system：ＧＰＳ）受信機コンポーネント、ならびに／または他のコンポーネントを含み得る。いくつかの実施形態では、通信サブシステム３２２４は無線インターフェイスに加えて、またはそれに代わって、有線ネットワーク接続（たとえばイーサネット）を提供することができる。
【０２５５】
いくつかの実施形態では、通信サブシステム３２２４は、さらに、コンピュータシステム３２００を用い得る１人以上のユーザのために、入力通信を、構造化されたデータフィードおよび／または構造化されないデータフィード３２２６、イベントストリーム３２２８、イベント更新３２３０などの形式で受信してもよい。
【０２５６】
例として、通信サブシステム３２２４は、データフィード３２２６を、実時間で、ツイッター（登録商標）フィード、フェースブック（登録商標）更新、Ｒｉｃｈ  Ｓｉｔｅ  Ｓｕｍｍａｒｙ（ＲＳＳ）フィードなどのウェブフィード、および／もしくは１つ以上の第三者情報源からの実時間更新などのソーシャルネットワークおよび／または他の通信サービスのユーザから受信するよう構成されてもよい。
【０２５７】
加えて、通信サブシステム３２２４は、さらに、データを、明示的な端部を有さない本質的に連続的または無限であり得る、実時間イベントのイベントストリーム３２２８および／またはイベント更新３２３０を含み得る、連続データストリームの形式で受信するよう構成されてもよい。連続データを生成するアプリケーションの例は、たとえば、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール（たとえばネットワーク監視およびトラフィック管理アプリケーション）、クリックストリーム解析ツール、自動車交通監視などを含んでもよい。
【０２５８】
通信サブシステム３２２４は、さらに、構造化されたデータフィードおよび／または構造化されないデータフィード３２２６、イベントストリーム３２２８、イベント更新３２３０などを、コンピュータシステム３２００に結合される１つ以上のストリーミングデータソースコンピュータとの通信状態にあり得る１つ以上のデータベースに出力するよう構成されてもよい。
【０２５９】
コンピュータシステム３２００は、手持ち式の携帯装置（たとえばｉＰｈｏｎｅ（登録商標）セルラー電話、ｉＰａｄ（登録商標）コンピューティングタブレット、ＰＤＡ）、ウェアラブルデバイス（たとえばＧｏｏｇｌｅ  Ｇｌａｓｓ（登録商標）頭部装着型ディスプレイ）、ＰＣ、ワークステーション、メインフレーム、キオスク、サーバラック、または他の任意のデータ処理システムを含む、さまざまなタイプのもののうちの１つであり得る。
【０２６０】
コンピュータおよびネットワークが常に変化する性質であるため、図に示されるコンピュータシステム３２００の記載は具体的な例としてのみ意図される。図に示されるシステムより多いかまたは少ないコンポーネントを有する数多くの他の構成が可能である。たとえば、カスタマイズされたハードウェアが用いられてもよく、および／または、特定の要素がハードウェア、ファームウェア、ソフトウェア（アプレットを含む）、またはある組合せにおいて実現されてもよい。さらに、ネットワーク入力／出力装置などの他のコンピューティングデバイスへの接続が用いられてもよい。ここに与えられる開示および教示に基づいて、当業者はさまざまな実施形態を実現するための他の態様および／または方法を理解するだろう。
【０２６１】
前述の明細書において、本発明の局面はその特定の実施形態を参照して記載されているが、当業者は本発明がそれに限定されないことを認識するだろう。上記の発明のさまざまな特徴および局面は個別に、または併せて用いられてもよい。さらに、実施形態は、明細書のより広い精神および範囲から逸脱することなく、本明細書に記載されるものを超えて、任意の数の環境および適用例において利用することができる。明細書および図面は、したがって、限定的ではなく、例示的なものとして見なされるべきである。
【０２６２】
その教示がこの開示において提示され得る１つ以上の発明のうちのいずれかのさまざまな実施形態が、ソフトウェア、ファームウェア、ハードウェアにおいて、またはそれらを組合せてロジックの形で実現され得る。ロジックは、この開示において提示された発明のさまざまな実施形態において開示され得る一組のステップを行なうように、ロジックマシンの中央処理装置（ＣＰＵまたはプロセッサ）に指示するように適合された一組の命令として、マシンアクセス可能なメモリ、マシン読取可能な物品（article）、有形のコンピュータ読取可能媒体、コンピュータ読取可能記憶媒体、または他のコンピュータ／マシン読取可能媒体に格納されてもよい。ロジックは、コードモジュールが、この開示において提示された発明のさまざまな実施形態において方法またはプロセスを行なうために実行される際に、コンピュータシステムまたは情報処理装置のプロセッサにより動作可能になると、ソフトウェアプログラムまたはコンピュータプログラム製品の一部を形成し得る。ここに提供されたこの開示および教示に基づいて、当業者であれば、提示された発明のうちの１つ以上の発明のさまざまな実施形態の開示された動作または機能性のいずれかを、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せで実現するための他のやり方、変形例、修正例、代替例、および／または方法を理解するであろう。
【０２６３】
その教示がこの開示において提示され得るそれらの発明のうちのいずれか１つの開示された例、実現化例、およびさまざまな実施形態は、この開示の教示を適正な明確性で当業者に伝えるために例示されているに過ぎない。これらの実現化例および実施形態は例示的な図解または特定の図を参照して説明され得るため、説明された方法および／または特定の構造のさまざまな修正例または適合例が、当業者に明らかとなり得る。ここに見出されたこの開示およびこれらの教示に依存し、かつ、教示が技術を進歩させた際に経た、すべてのそのような修正例、適合例、または変形例は、その教示がこの開示において提示され得る１つ以上の発明の範囲内にあると考えられるべきである。よって、開示において提示された発明は、具体的に示された実施形態にまったく限定されないということが理解されるため、本説明および図面は限定的な意味で考えられるべきでない。
【０２６４】
したがって、上述の説明およびいずれの添付図面、図解、および図も、限定的ではなく例示的であるよう意図されている。したがって、この開示内において提示されたいずれの発明の範囲も、上述の説明および図に示されたそれらの実施形態を単に参照するのではなく、係属中の請求項をそれらの完全な範囲または均等物とともに参照して、判断されるべきである。
【図１】
0006661620.tif 000002
【図２】
0006661620.tif 000003
【図３】
0006661620.tif 000004
【図３Ａ】
0006661620.tif 000005
【図３Ｂ】
0006661620.tif 000006
【図４】
0006661620.tif 000007
【図５】
0006661620.tif 000008
【図６】
0006661620.tif 000009
【図７】
0006661620.tif 000010
【図８】
0006661620.tif 000011
【図９】
0006661620.tif 000012
【図１０】
0006661620.tif 000013
【図１１】
0006661620.tif 000014
【図１２】
0006661620.tif 000015
【図１３】
0006661620.tif 000016
【図１４Ａ】
0006661620.tif 000017
【図１４Ｂ】
0006661620.tif 000018
【図１５Ａ】
0006661620.tif 000019
【図１５Ｂ】
0006661620.tif 000020
【図１６Ａ】
0006661620.tif 000021
【図１６Ｂ】
0006661620.tif 000022
【図１７Ａ】
0006661620.tif 000023
【図１７Ｂ】
0006661620.tif 000024
【図１８】
0006661620.tif 000025
【図１９】
0006661620.tif 000026
【図２０】
0006661620.tif 000027
【図２１】
0006661620.tif 000028
【図２２】
0006661620.tif 000029
【図２３】
0006661620.tif 000030
【図２４】
0006661620.tif 000031
【図２５】
0006661620.tif 000032
【図２６】
0006661620.tif 000033
【図２７】
0006661620.tif 000034
【図２８】
0006661620.tif 000035
【図２９】
0006661620.tif 000036
【図３０】
0006661620.tif 000037
【図３１】
0006661620.tif 000038
【図３２】
0006661620.tif 000039