(57)【要約】  本願において説明される種々の技術は、スクリプト言語ベースのフレームワークを用いてウェブアプリケーションを開発することに属する。呼び出しを、スクリプト言語ベースのフレームワークのインタフェースを介して受けることができる。上記呼び出しは、スクリプト言語ベースのフレームワークに含まれるコントロールを管理することができる。さらに、上記呼び出しは、スクリプト言語ベースのフレームワークを参照するアプリケーションにより提供されることができる。その上、ユーザインタフェースを、上記呼び出しにより管理されたコントロールに基づいて生成することができ、クラウドプラットフォーム上の分散型データストアにより提供されるバックエンドのクラウドベースのサービスに、上記呼び出しにより管理されたコントロールに基づいてアクセスすることができる。
2015501993.tif 000002
【特許請求の範囲】
【請求項１】
ウェブアプリケーションを開発するための方法であって、
スクリプト言語ベースのフレームワークのためのインタフェースを公開するステップと、
前記インタフェースを介して、前記スクリプト言語ベースのフレームワークに含まれるコントロールを管理する呼び出しを受けるステップであり、前記呼び出しは前記スクリプト言語ベースのフレームワークを参照するアプリケーションにより提供される、ステップと、
前記呼び出しにより管理された前記コントロールに基づいて、ユーザインタフェースを生成するステップと、
前記呼び出しにより管理された前記コントロールに基づいて、クラウドプラットフォーム上の分散型データストアにより提供されるバックエンドのクラウドベースのサービスにアクセスするステップと、
を含む方法。
【請求項２】
前記呼び出しは、前記アプリケーションに含まれるスクリプト言語コードから生成される、請求項１に記載の方法。
【請求項３】
前記コントロールを管理する前記呼び出しは、前記コントロールを有効にする、又は前記コントロールを無効にするのうち１つをなす、請求項１に記載の方法。
【請求項４】
前記コントロールは、前記クラウドプラットフォーム上の前記分散型データストアにより提供される前記バックエンドのクラウドベースのサービスにアクセスするように前記スクリプト言語ベースのフレームワーク内に予めプログラムされる、請求項１に記載の方法。
【請求項５】
前記呼び出しに基づいて、前記コントロールの属性又は前記コントロールの効果のうち少なくとも１つの値を設定するステップ、をさらに含む請求項１に記載の方法。
【請求項６】
前記呼び出しにより管理された前記コントロールに基づいて、前記クラウドプラットフォーム上の前記分散型データストアにより提供される前記バックエンドのクラウドベースのサービスにアクセスするステップは、
前記呼び出しにより管理された前記コントロールに基づいて、前記クラウドプラットフォーム上の前記分散型データストアにデータを書き込むステップ、
前記呼び出しにより管理された前記コントロールに基づいて、前記クラウドプラットフォーム上の前記分散型データストアからデータを読み出すステップ、
前記呼び出しにより管理された前記コントロールに基づいて、前記クラウドプラットフォーム上の前記分散型データストアの中のデータを検索するステップ、又は
前記呼び出しにより管理された前記コントロールに基づいて、前記クラウドプラットフォーム上の前記分散型データストアの中のデータをインデックス化するステップ
のうち少なくとも１つをさらに含む、請求項１に記載の方法。
【請求項７】
前記呼び出しにより管理された前記コントロールに基づいて、前記クラウドプラットフォーム上の前記分散型データストアにより提供される前記バックエンドのクラウドベースのサービスにアクセスするステップは、前記呼び出しにより管理された前記コントロールに基づいて、前記クラウドプラットフォーム上の前記分散型データストアに組み込まれたサードパーティサービスにアクセスするステップをさらに含む、請求項１に記載の方法。
【請求項８】
前記クラウドプラットフォーム上の前記分散型データストアに組み込まれた前記サードパーティサービスは、ウェブ検索サービス、画像検索サービス、ビデオ検索サービス、ソーシャルネットワーキングサービス、マイクロブログサービス、地図作成サービス、半構造化データベース検索サービス、認証サービス又はクラウドプラットフォームサービスのうち１又は複数を含む、請求項７に記載の方法。
【請求項９】
前記呼び出しにより管理された前記コントロールに基づいて、前記スクリプト言語ベースのフレームワークに直接的に組み込まれたサードパーティサービスを用いるステップ、をさらに含む請求項１に記載の方法。
【請求項１０】
前記アプリケーションは、前記スクリプト言語ベースのフレームワークに含まれる複数のコントロールを管理する複数の呼び出しを提供するスクリプト言語コードを含む、請求項１に記載の方法。
【請求項１１】
前記アプリケーションにより提供される前記複数の呼び出しにより管理された前記複数のコントロール間で情報を交換するステップ、をさらに含む請求項１０に記載の方法。
【請求項１２】
前記複数のコントロールのうち第１のコントロールを、第１のデータソースからのオブジェクトにバインドするステップと、
前記複数のコントロールのうち第２のコントロールを、第２のデータソースからのオブジェクトにバインドするステップと、
をさらに含む請求項１０に記載の方法。
【請求項１３】
前記スクリプト言語ベースのフレームワークは、クライアント側のフレームワークである、請求項１に記載の方法。
【請求項１４】
スクリプト言語ベースのフレームワークであって、
バックエンドのクラウドベースのサービスにアクセスし、かつ有効にされたときにユーザインタフェースを生成するように、予めプログラムされた一式のコントロールと、
前記一式からのコントロールを管理する呼び出しを受けるインタフェースコンポーネントであり、前記呼び出しは当該スクリプト言語ベースのフレームワークを参照するアプリケーションにより提供される、インタフェースコンポーネントと、
前記呼び出しにより管理された前記コントロールに基づいてユーザインタフェースを生成するユーザインタフェース（ＵＩ）作成コンポーネントと、
前記呼び出しにより管理された前記コントロールに基づいて、クラウドプラットフォーム上の分散型データストアにより提供されるバックエンドのクラウドベースのサービスにアクセスするデータアクセスコンポーネントと、
を含むスクリプト言語ベースのフレームワーク。
【請求項１５】
前記データアクセスコンポーネントは、前記呼び出しにより管理された前記コントロールに基づいて、前記クラウドプラットフォーム上の前記分散型データストアに組み込まれたサードパーティサービスにアクセスする、請求項１４に記載のスクリプト言語ベースのフレームワーク。
【請求項１６】
前記データアクセスコンポーネントは、前記呼び出しにより管理された前記コントロールに基づいて、当該スクリプト言語ベースのフレームワークに直接的に組み込まれたサードパーティサービスを使用する、請求項１４に記載のスクリプト言語ベースのフレームワーク。
【請求項１７】
前記一式の中の複数のコントロール間で情報を交換する通知コンポーネント、をさらに含む請求項１４に記載のスクリプト言語ベースのフレームワーク。
【請求項１８】
前記アプリケーションを実行しているクライアント装置の能力を検出し、かつ、前記能力の機能のとおりに、前記コントロールに基づいて生成される前記ユーザインタフェースを調整する、調整コンポーネント、をさらに含む請求項１４に記載のスクリプト言語ベースのフレームワーク。
【請求項１９】
前記データアクセスコンポーネントは、前記呼び出しにより管理された前記コントロールに基づいて、前記クラウドプラットフォーム上の前記分散型データストアにデータを書き込む、前記呼び出しにより管理された前記コントロールに基づいて、前記クラウドプラットフォーム上の前記分散型データストアからデータを読み出す、前記呼び出しにより管理された前記コントロールに基づいて、前記クラウドプラットフォーム上の前記分散型データストアの中のデータを検索する、又は前記呼び出しにより管理された前記コントロールに基づいて、前記クラウドプラットフォーム上の前記分散型データストアの中のデータをインデックス化するのうち少なくとも１つをなす、請求項１４に記載のスクリプト言語ベースのフレームワーク。
【請求項２０】
プロセッサにより実行されると前記プロセッサに動作を実行させるコンピュータ実行可能命令を含むコンピュータ読取可能記憶媒体であって、前記動作は、
バックエンドのクラウドベースのサービスにアクセスし、かつ有効にされたときにユーザインタフェースを生成するように、予めプログラムされた一式のコントロールを含むスクリプト言語ベースのフレームワークのためのインタフェースを公開するステップと、
前記インタフェースを介して、前記スクリプト言語ベースのフレームワークに含まれる前記一式のコントロールからのコントロールを有効にする呼び出しを受けるステップであり、前記呼び出しは前記スクリプト言語ベースのフレームワークを参照するアプリケーションにより提供される、ステップと、
前記呼び出しにより有効にされた前記コントロールに基づいて、ユーザインタフェースを生成するステップと、
前記呼び出しにより有効にされた前記コントロールに基づいて、クラウドプラットフォーム上の分散型データストアにより提供される前記バックエンドのクラウドベースのサービスにアクセスするステップと、
を含む、コンピュータ読取可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書において説明される種々の技術は、スクリプト言語ベースのフレームワークを用いてウェブアプリケーションを開発することに属する。
【背景技術】
【０００２】
ウェブアプリケーションは、インターネットなどのネットワークを介してアクセスすることができるアプリケーションである。ウェブアプリケーションは、クライアント側のウェブブラウザ又はクライアント装置上の別のアプリケーション（例えば、モバイルアプリケーション、デスクトップアプリケーションなど）を通じてアクセス及び利用することができる、ブラウザによりサポートされる言語（例えば、マークアップ言語と組み合わせられたスクリプト言語）で、コード化することができる。ウェブアプリケーションは、ウェブブラウザが至る所に存在することとウェブブラウザをクライアントとして利用することの便利さとに起因して、ますます一般的になってきている。さらに、ウェブアプリケーションの需要は、集中型のアプリケーション市場の成長につながっている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
近年、クラウドコンピューティングが、より普及してきている。それに応じて、ウェブアプリケーションは、クラウドプラットフォーム上に構築することができ、クラウドプラットフォームにおいて、ウェブアプリケーションは、クラウドの中で動作することができ、かつ／あるいはクラウドにより提供されるバックエンドサービスを使用することができる。クラウドプラットフォームに構築されるアプリケーションの従来型の開発は、一般に、種々のクラウドプラットフォーム固有情報（例えば、プロトコル、データ構造など）の理解を有するウェブプログラマを参加させて、クラウドからデータを読み出す、クラウドにデータを書き込む、他のバックエンドサービスを利用する、などを行う。クラウドプラットフォーム上にアプリケーションを開発することに関連するこうした複雑さに加えて、従来型の開発は、しばしば、時間がかかる場合がある。集中型のアプリケーション市場の成長とともに、ウェブプログラマは、モバイル装置及びウェブブラウザで動作する強力なアプリケーションをより少ない時間で書く方法をますます期待している。
【課題を解決するための手段】
【０００４】
スクリプト言語ベースのフレームワークを用いてウェブアプリケーションを開発することに属する種々の技術が、本明細書において説明される。スクリプト言語ベースのフレームワークのインタフェースを、公開する（exposed）ことができる。さらに、呼び出しを、スクリプト言語ベースのフレームワークのインタフェースを介して受けることができる。上記呼び出しは、スクリプト言語ベースのフレームワークに含まれるコントロールを管理することができる。さらに、上記呼び出しは、スクリプト言語ベースのフレームワークを参照するアプリケーションにより提供されることができる。その上、ユーザインタフェースを、上記呼び出しにより管理されたコントロールに基づいて生成することができ、クラウドプラットフォーム上の分散型データストアにより提供されるバックエンドのクラウドベースのサービスに、上記呼び出しにより管理されたコントロールに基づいてアクセスすることができる。
【０００５】
スクリプト言語ベースのフレームワークは、一式のコントロールを含むことができ、上記一式のコントロールは、バックエンドのクラウドベースのサービスにアクセスし、かつ、有効にされたときにユーザインタフェースを生成するように、予めプログラムされる。一例に従い、スクリプト言語ベースのフレームワークに含まれるコントロールのうち１又は複数に対して有効にする、無効にする、属性の値を設定する、などするための呼び出しを提供するアプリケーションを、開発することができる。例えば、上記呼び出しは、アプリケーションに含まれるスクリプト言語コードから生成することができる。したがって、こうした機能性を実行するためにアプリケーションにカスタムコードを含むのではなく、スクリプト言語ベースのフレームワークに包含された機能性を用いる（例えば、上記一式のコントロールを管理することによる）アプリケーションを、開発することができる。
【０００６】
種々の実施形態において、クラウドプラットフォーム上の分散型データストアにより提供されるバックエンドのクラウドベースのサービスには、分散型データストアにデータを書き込むこと、分散型データストアからデータを読み出すこと、分散型データストアに保有されているデータを検索すること、分散型データストアの中のデータをインデックス化すること（indexing）などのうち１又は複数を含むことができる。さらに、又は別法として、１又は複数のサードパーティサービスに、クラウドプラットフォーム上の分散型データストアを介して、及び／又はスクリプト言語ベースのフレームワークから直接的に、アクセス可能とすることができる。
【０００７】
上記の要約は、本明細書において論じられるシステム及び／又は方法のいくつかの態様の基本的理解を与えるための簡素化された要約を提示する。この要約は、本明細書において論じられるシステム及び／又は方法の広範囲に及ぶ概観ではない。上記要約は、重要な／必須の要素を識別すること、あるいはこうしたシステム及び／又は方法の範囲を詳述することを、意図するものではない。上記要約の唯一の目的は、後から提示されるより詳細な説明に対する前置きとして簡素化された形式でいくつかの概念を提示することである。
【図面の簡単な説明】
【０００８】
【図１】ウェブアプリケーションの開発を容易にする例示的なシステムの機能的ブロック図を示す。
【図２】サードパーティサービスを用いるウェブアプリケーションの開発を容易にする例示的なシステムの機能的ブロック図を示す。
【図３】スクリプト言語ベースのフレームワークを用いてアプリケーションを開発するための例示的なシステムの機能的ブロック図を示す。
【図４】ウェブアプリケーションを開発するための例示的な方法論を示すフロー図である。
【図５】ウェブアプリケーションを開発するための別の例示的な方法論を示すフロー図である。
【図６】例示的なコンピューティング装置を示す。
【発明を実施するための形態】
【０００９】
次に、図面を参照して、軽量の、クライアント側のフレームワークを用いるウェブアプリケーションを開発することに属する種々の技術を説明する。図面において、全体にわたって、同様の参照番号を用いて同様の要素を参照する。下記記載において、説明の目的で、多くの特定の詳細が、１又は複数の態様への十分な理解を与えるために説明される。しかしながら、こうした態様（群）は上記の特定の詳細を用いずに実施され得ることが、明らかであろう。他の例において、周知の構造及び装置が、１又は複数の態様を説明することを容易にするために、ブロック図形式で示される。さらに、ある特定のシステムコンポーネントにより実行されるものとして説明される機能性は、複数コンポーネントにより実行することができることを、理解されたい。同様にして、例えば、あるコンポーネントは、複数コンポーネントにより実行されるものとして説明される機能性を実行するように構成することができる。
【００１０】
さらに、「又は」という用語は、排他的な「又は」ではなくて包括的な「又は」を意味するものである。すなわち、他に指定のない、又は文脈から明らでない限り、「ＸはＡ又はＢを用いる」は、自然な包含的順列のいずれかを意味するものである。すなわち、「ＸはＡ又はＢを用いる」という表現は、次の例、すなわち、ＸがＡを用いる、ＸがＢを用いる、あるいはＸがＡ及びＢの双方を用いるのうち、いずれの下でも満たされる。加えて、本願及び添付の請求項において使用される冠詞「１つの（“a”、“an”）」は、概して、他に指定のない限り又は単数形を対象とすることが文脈から明らかでない限り、「１又は複数の」を意味するものとして解釈されるべきである。
【００１１】
本明細書において説明されるとおり、軽量フレームワークは、ウェブプログラマによる迅速なウェブアプリケーション開発を容易にすることができる。本明細書において説明される軽量フレームワークは、スクリプト言語ベースのフレームワークとすることができる。その上、軽量フレームワークは、装置互換のユーザインタフェース作成を可能にし、かつ、クラウドプラットフォーム上の分散型データストアに保有されているデータ、及び／又はクラウドプラットフォーム上の分散型データストアにより提供される若しくは上記分散型データストアを介して利用可能なバックエンドのクラウドベースのサービスに、アクセスすることができる。対称的に、ウェブアプリケーション開発のために使用される従来型のフレームワークは、しばしば、データアクセスをサポートすることなくユーザインタフェース作成をサポートする。それに応じて、従来型のウェブアプリケーション開発において、ウェブプログラマは、しばしば、クラウドからデータを読み出し、クラウドにデータを書き込み、又は他のバックエンドのクラウドベースのサービスを用いるウェブアプリケーションを開発するために、クラウド技術、データ構造、プロトコルなどの知識を有することを必要とする。
【００１２】
次に、図面を参照し、図１が、ウェブアプリケーションを開発することを容易にするシステム１００を示す。システム１００は、スクリプト言語ベースのフレームワーク１０２を含み、スクリプト言語ベースのフレームワーク１０２は、例示的な実施形態において、クライアント側のフレームワークである。例えば、スクリプト言語ベースのフレームワーク１０２は、機能豊富な、軽量フレームワークとすることができる。その上、スクリプト言語ベースのフレームワーク１０２は、アプリケーション開発中に行われる一般的なアクティビティに関連するオーバーヘッドを軽減することによって、ウェブアプリケーションの開発をサポートすることができる。したがって、上記のアクティビティに関連する機能性はスクリプト言語ベースのフレームワーク１０２に包含することができるため、ウェブプログラマは、アプリケーション開発中に上記のような共通のアクティビティを行う必要がなく、代わって、ウェブプログラマは、スクリプト言語ベースのフレームワーク１０２により供給される機能性を使用するアプリケーションを作成することができる。
【００１３】
ウェブアプリケーションを開発することには、通常は、一式のユーザインタフェースを構築すること、及びバックエンドシステムへのデータアクセスを構築すること（及び／又は、バックエンドシステムを構築すること）を含む。ユーザインタフェースは、種々の形式の入力をユーザから収集することができ、バックエンドシステムの仕様に合うように上記入力を処理することができる。その上、ユーザインタフェースは、ユーザに出力を提示することができる。スクリプト言語ベースのフレームワーク１０２は、ウェブプログラマが基本的なスクリプト言語コード及び／又はマークアップ言語コードを用いてバックエンドシステムへのデータアクセスとユーザインタフェースの作成との双方を管理することを可能にすることによって、ウェブアプリケーションの開発を簡素化する。例えば、スクリプト言語は、ＪａｖａＳｃｒｉｐｔ（登録商標）とすることができる。マークアップ言語の一例を、ＨＴＭＬとすることができる。しかしながら、特許請求される対象事項は前述の例に限定されないことを、十分理解されたい。
【００１４】
スクリプト言語ベースのフレームワーク１０２は、データアクセスコンポーネント１０４とユーザインタフェース（ＵＩ）作成コンポーネント１０６とを含む。データアクセスコンポーネント１０４は、クラウドベースのバックエンドシステムを組み込む。具体的には、データアクセスコンポーネント１０４は、クラウドプラットフォーム１１０上の分散型データストア１０８により提供されるバックエンドのクラウドベースのサービスにアクセスすることができる。例えば、データアクセスコンポーネント１０４は、分散型データストア１０８からデータを読み出すこと、分散型データストア１０８にデータを書き込むこと、分散型データストア１０８により抽象化されたサードパーティのバックエンドのクラウドベースのサービス（群）を用いることなどができる。データアクセスコンポーネント１０４は、分散型データストア１０８を自動的に使用するように設計することができる。したがって、ウェブプログラマにより開発されるウェブアプリケーションは、ウェブプログラマが分散型データストア１０８により提供されるバックエンドのクラウドベースのサービスへのアクセスを組み込む必要なく、分散型データストア１０８を自動的に使用することができる。
【００１５】
その上、ＵＩ作成コンポーネント１０６は、一式のユーザインタフェースを生成することができる。ＵＩ作成コンポーネント１０６は、種々の形式の入力をユーザから収集することができ、かつバックエンドシステムの仕様に合うように上記入力を処理することができる、ユーザインタフェースを生成することができる。さらに、ＵＩ作成コンポーネント１０６は、ユーザに出力を提示することができるユーザインタフェースを生成することができる。
【００１６】
さらに、スクリプト言語ベースのフレームワーク１０２は、一式のコントロール１１２を含む。一例に従い、スクリプト言語ベースのフレームワーク１０２は、コントロール１１２を含む１又は複数のスクリプト言語ライブラリを含むことができる。コントロール１１２は、ユーザインタフェースを作成するためのＵＩ作成コンポーネント１０６と、クラウドプラットフォーム１１０上の分散型データスストア１０８により提供されるバックエンドのクラウドベースのサービスにアクセスするためのデータアクセスコンポーネント１０４とによって、活用することができる。１つの例解に従い、コントロール１１２の中から所与のコントロールが有効にされたとき、ＵＩ作成コンポーネント１０６は上記所与のコントロールに基づいてユーザインタフェースを生成することができ、データアクセスコンポーネントは上記所与のコントロールに基づいてクラウドプラットフォーム１１０上の分散型データストア１０８により提供されるバックエンドのクラウドベースのサービスにアクセスすることができる。したがって、ウェブプログラマが所与のコントロールの機能性を提供するためにカスタムコードを書くこととは対照的に、上記所与のコントロールをウェブプログラマが活用することができる。
【００１７】
スクリプト言語ベースのフレームワーク１０２は、さらに、インタフェースコンポーネント１１４を含む。インタフェースコンポーネント１１４は、アプリケーション１１６（例えば、ウェブアプリケーション）のためのスクリプト言語インタフェースとすることができ、ここで、アプリケーション１１６は、スクリプト言語コード及び／又はマークアップ言語コードを含むことができる。アプリケーション１１６は、インタフェースコンポーネント１１４を介してスクリプト言語ベースのフレームワーク１０２を参照して、スクリプト言語ベースのフレームワーク１０２に包含された機能性を用いることができる。その上、アプリケーション１１６は、インタフェースコンポーネント１１４を介して、スクリプト言語ベースのフレームワーク１０２に呼び出し（群）を提供することができる。例えば、呼び出し（群）は、コントロール１１２のうち１又は複数を管理することができる（例えば、ある呼び出しが、コントロール１１２の中からあるコントロールを管理することができる）。一例に従い、呼び出しは、アプリケーション１１６に含まれたスクリプト言語コードから生成することができ、したがって、アプリケーション１１６は、コントロール１１２のうち１又は複数を管理する１又は複数の呼び出しを生成することができるスクリプト言語コードを含むことができる。ここで、上記１又は複数の呼び出しは、インタフェースコンポーネント１１４を介してスクリプト言語ベースのフレームワーク１０２に提供されることができる。
【００１８】
スクリプト言語ベースのフレームワーク１０２の中のコントロール１１２は、アプリケーション１１６に含まれるスクリプト言語コードに基づいて（例えば、インタフェースコンポーネント１１４を介してアプリケーション１１６により提供される呼び出し（群）に応答して）、有効又は無効にすることができる。その上、コントロール１１２は、（例えば、インタフェースコンポーネント１１４を介してアプリケーション１１６により提供される呼び出し（群）に応答して）アプリケーション１１６の中のスクリプト言語コードにより管理されることができる属性及び効果を有することができる。一例に従い、コントロール１１２のうち１又は複数は、アプリケーション１１６の中のスクリプト言語コードに基づいて、動的に様式化することができる。別の例として、コントロール１１２のうち１又は複数は、アプリケーション１１６の中のスクリプト言語コードに応答して設定されることができる広範な属性を有することができる。
【００１９】
スクリプト言語ベースのフレームワーク１０２は、ウェブプログラマが、アプリケーション１１６を開発するときに使用することができる。スクリプト言語ベースのフレームワーク１０２は、データアクセス（例えば、データアクセスコンポーネント１０４を介して）とユーザインタフェース生成（例えば、ＵＩ作成コンポーネント１０６を介して）とに関する機能性を提供する。それに応じて、スクリプト言語ベースのフレームワーク１０２の使用は、ウェブプログラマがアプリケーション１１６を開発するときに費やす時間の量を、削減することができる。したがって、スクリプト言語ベースのフレームワーク１０２は、アプリケーション１１６のウェブプログラマの、スクリプト言語コード及び／又はマークアップ言語コードを用いてデータアクセスとユーザインタフェース作成とを管理する能力を、改善することができる。
【００２０】
データアクセスコンポーネント１０４は、クラウドプラットフォーム１１０上の分散型データストア１０８に直接的にアクセスすることができる。それに応じて、ウェブプログラマは、シンプルなスクリプト言語コード及び／又はマークアップ言語コードを用いて、分散型データストア１０８に対して読み出し及び／又は書き込みをするアプリケーション１１６を生成することができる。ウェブプログラマは、クラウド技術、データ構造、プロトコル、及び類似のものの知識を有することなく、アプリケーション１１６を作成することができる。むしろ、アプリケーション１１６は、コントロール１１２のうち１又は複数を管理する（例えば、有効にする、無効にする、属性又は効果の値を設定する、様式化するなど）ことができ、アプリケーション１１６により管理されたコントロール１１２のうち１又は複数に基づいて、データアクセスコンポーネント１０４は、クラウドプラットフォーム１１０上の分散型データストア１０８に直接的にアクセスすることができる。
【００２１】
分散型データストア１０８は、クラウドプラットフォーム１１０上に構築される。分散型データストア１０８は、クラウドプラットフォーム１１０上の、十分に拡大縮小可能な、複製されたデータストアとすることができる。例示的な実施形態において、分散型データストア１０８は、ＮｏＳＱＬストアとすることができる。さらに、分散型データストア１０８は、検索コンポーネント１１８及びインデックス化コンポーネント１２０の上に構築することができる。検索コンポーネント１１８は、フルのテキスト検索及び／又は画像検索を提供する検索エンジンとすることができる。クラウドプラットフォーム１１０は、さらに、検索コンポーネント１１８とインデックス化コンポーネント１２０とに対する追加又は代替として、他のバックエンドサービスを提供することができる。したがって、一例に従い、データアクセスコンポーネント１０４は、検索コンポーネント１１８を用いて分散型データストア１０８の中のデータを検索すること、インデックス化コンポーネント１２０を用いて分散型データストア１０８の中のデータをインデックス化することなどができる。
【００２２】
クラウドプラットフォーム１１０上の分散型データストア１０８は、一式のアプリケーション・プログラミング・インタフェース（ＡＰＩｓ）１２２を通じて公開される。ＡＰＩ１２２は、ＲＥＳＴｆｕｌな（表現的状態転送（representational  state  transfer））ＡＰＩとすることができる。さらに、ＡＰＩ１２２は、スクリプト言語ベースのフレームワーク１０２に包含することができる。例えば、データアクセスコンポーネント１０４は、ＡＰＩ１２２を用いて分散型データストア１０８にアクセスすることができる。それに応じて、スクリプト言語ベースのフレームワーク１０２は、ウェブプログラマがＡＰＩ１２２をどのように活用すべきかを学習する必要がないように、ＡＰＩ１２２を抽象化することができる。むしろ、インタフェースコンポーネント１１４は、アプリケーション１１６を開発するためにウェブプログラマが用いることができる簡素なスクリプト言語インタフェースを公開することができる。例として、スクリプト言語ベースのフレームワーク１０２において利用可能なコントロール１１２は、インタフェースコンポーネント１１４を介して公開することができる。
【００２３】
その上、一式のサードパーティサービスを、分散型データストア１０８に包含することができる。上記一式のサードパーティサービスは、すなわち、サードパーティサービス１の（参照番号）１２４からサードパーティサービスＮの（参照番号）１２６までであり、ここで、Ｎは、実質的に任意の整数とすることができる（本明細書において集合的にサードパーティサービス１２４〜１２６と呼ぶ）。それに応じて、分散型データストア１０８は、サードパーティサービス１２４〜１２６のＡＰＩへのアクセスを提供することができる。したがって、データアクセスコンポーネント１０４は、クラウドプラットフォーム１１０上の分散型データストア１０８を介してサードパーティサービス１２４〜１２６（例えば、サードパーティのバックエンドのクラウドベースのサービス）にアクセスすることができる。サードパーティサービス１２４〜１２６の例には、ウェブ検索サービス、画像検索サービス、ビデオ検索サービス、ソーシャルネットワーキングサービス、マイクロブログ（microblogging）サービス、地図作成（mapping）サービス、半構造化（semi-structured）データベース検索サービス、認証サービス、クラウドプラットフォームサービスなどを含むことができる。しかしながら、特許請求される対象事項は前述のサードパーティサービス１２４〜１２６の例に限定されないことと、むしろ、いかなるサードパーティサービスも本願に添付の請求項の範囲に入ることが意図されることとを、十分理解されたい。
【００２４】
さらに、アプリケーション１１６は、開発を完了すると、ウェブホスティングサービス（図示せず）にアップロードすることができる。アプリケーション１１６は、スクリプト言語コード及び／又はマークアップ言語コードで書くことができるので、アプリケーション１１６は、例えば、実質的に任意のウェブサイトに埋め込むこと又はアップロードすることができる。アプリケーション１１６は、利用可能になると、実行のためにクライアント装置（図示せず）のウェブブラウザに読み出すこと又はロードすることができる。さらに、アプリケーション１１６は、現代のデスクトップ、ラップトップ及びモバイルのブラウザを介して動作することができるように、クライアント装置に依存しない（agnostic）ものとすることができる。
【００２５】
下記例解は、クラウドベースのデータストアの中にアドレス帳を維持するアプリケーションを開発する従来型の手法を論証するものである。ウェブプログラマは、最初に、データオブジェクトとデータオブジェクト間の関係と（例えば、人々、人々が属する組織など）を定義することができる。その後、ウェブプログラマは、一式のユーザインタフェースを構築することができる。一例に従い、ウェブプログラマは、連絡先を作成するためのユーザインタフェース、上記連絡先を他の連絡先と関連付けるためのユーザインタフェース、連絡先を更新するためのユーザインタフェース、連絡先を削除するためのユーザインタフェース、連絡先にわたって検索するためのユーザインタフェースなどを構築することができる。ユーザインタフェースを開発し、データオブジェクトを定義すると、ウェブプログラマは、一式のバックエンドサービス（例えば、バックエンドのクラウドベースのサービス）を構築すること、及び／又は一式のバックエンドサービスにアクセスするシステムを構築することができる。バックエンドサービスの例には、クラウドベースのデータストアにデータを書き込むサービス、クラウドベースのデータストアからデータを読み出すサービス、クラウドベースのデータストアに保有されているデータにわたって検索するサービス、クラウドベースのデータストアの中のデータを編集するサービス、クラウドベースのデータストアからデータを削除するサービスなどを含むことができる。前述の手法は、ウェブプログラマにとって時間のかかるものとなるおそれがある。その上、こうした開発は、種々のプロトコル、データ構造などについてのかなりの理解を伴う場合がある。
【００２６】
対照的に、スクリプト言語ベースのフレームワーク１０２は、クラウドプラットフォーム１１０上の分散型データストア１０８に組み込まれる。その上、スクリプト言語ベースのフレームワーク１０２は、アプリケーション１１６に含まれるスクリプト言語コードの機能として管理されることができる一式のコントロール１１２を含む。さらに、コントロール１１２は、クラウドベースのバックエンドシステム（例えば、クラウドプラットフォーム１１０上の分散型データストア１０８）にアクセスするように、スクリプト言語ベースのフレームワーク１０２の内部に予めプログラムされることができる。したがって、ウェブプログラマが広範なバックエンドプログラミングをユーザインタフェース開発と同様に行わなければならないことに代わって、ウェブプログラマは、スクリプト言語コード及び／又はマークアップ言語コードを書いてスクリプト言語ベースのフレームワーク１０２のコントロール１１２を管理することができ、コントロール１１２は、クラウドプラットフォーム１１０上の分散型データストア１０８の豊富なバックエンドに組み込まれる。
【００２７】
次に、図２を参照し、サードパーティサービスを用いるウェブアプリケーションを開発することを容易にするシステム２００を示す。システム２００は、スクリプト言語ベースのフレームワーク１０２を含み、システム２００はさらに、データアクセスコンポーネント１０４、ＵＩ作成コンポーネント１０６、一式のコントロール１１２、及びインタフェースコンポーネント１１４を備えることができる。上記で説明されたとおり、データアクセスコンポーネント１０４は、ＡＰＩ１２２を介してクラウドプラットフォーム１１０上の分散型データストア１０８に直接的にアクセスすることができる。
【００２８】
その上、１又は複数のサードパーティサービスを、スクリプト言語ベースのフレームワーク１０２に直接的に組み込むことができる。したがって、サードパーティサービス１の（参照番号）２０２からサードパーティサービスＭの（参照番号）２０４まで（本明細書において集合的にサードパーティサービス２０２〜２０４と呼ぶ）のＡＰＩを、スクリプト言語ベースのフレームワーク１０２のデータアクセスコンポーネント１０４に対して公開することができる。ここで、Ｍは、実質的に任意の整数とすることができる。スクリプト言語ベースのフレームワーク１０２は、サードパーティサービス２０２〜２０４のＡＰＩを抽象化することができる。それに応じて、アプリケーション１１６は、コントロール１１２のうち１又は複数を管理するスクリプト言語コードを含むことができ、ここで、コントロール１１２は、アプリケーション１１６のウェブプログラマが１又は複数のサードパーティサービス２０２〜２０４のＡＰＩについてのデータ構造、プロトコルなどの知識を有する必要なく、データアクセスコンポーネント１０４にサードパーティサービス２０２〜２０４のうち１又は複数を用いさせることができる。したがって、上記の組み込みがスクリプト言語ベースのフレームワーク１０２に包含されているため、ウェブプログラマは、アプリケーション１１６を開発するときに１又は複数のサードパーティサービス２０２〜２０４にアクセスするコードを書く必要がなくなる。
【００２９】
サードパーティサービス２０２〜２０４の例には、ウェブ検索サービス、画像検索サービス、ビデオ検索サービス、ソーシャルネットワーキングサービス、マイクロブログサービス、地図作成サービス、半構造化データベース検索サービス、認証サービス、クラウドプラットフォームサービスなどを含むことができる。しかしながら、特許請求される対象事項は前述のサードパーティサービス２０２〜２０４の例に限定されない。一例に従い、サードパーティサービスは、分散型データストア１０８とデータアクセスコンポーネント１０４との双方に組み込まれることができる（例えば、サードパーティサービスは、サードパーティサービス１２４〜１２６のうちの１つとサードパーティサービス２０２〜２０４のうちの１つとすることができる）。さらに、又は別法として、サードパーティサービスは、分散型データストア１０８又はデータアクセスコンポーネント１０４のいずれかに組み込まれることができる（例えば、サードパーティサービスは、サードパーティサービス１２４〜１２６のうちの１つ、又はサードパーティサービス２０２〜２０４のうちの１つとすることができる）。
【００３０】
例として、クライアント装置（例えば、アプリケーション１１６を実行している装置）のインターネットプロトコル（ＩＰ）アドレスが、（例えば、上記ＩＰアドレスに関連するコンテンツを返すために）サードパーティサービスに提供されることになるとき、コントロール（例えば、コントロール１１２の中の）は、データアクセスコンポーネント１０４に、ＩＰアドレスをサードパーティサービスに間接的に渡すのではなく、ＩＰアドレスをサードパーティサービスに直接的に供給させることができる。したがって、データアクセスコンポーネント１０４は、クラウドプラットフォーム１１０上の分散型データストア１０８を介してアクセス可能なサードパーティ１２４〜１２６のうち１又は複数にＩＰアドレスを送信するのではなく、データアクセスコンポーネント１０４に直接的に組み込まれたサードパーティ２０２〜２０４のうち１又は複数にＩＰアドレスを送信することができる。
【００３１】
次に、図３を参照し、スクリプト言語ベースのフレームワーク１０２を用いてアプリケーション１１６を開発するためのシステム３００を示す。スクリプト言語ベースのフレームワーク１０２は、クラウドベースのバックエンドシステム（群）（例えば、図１のクラウドプラットフォーム１１０上の分散型データストア１０８、図２のサードパーティサービス２０２〜２０４など）にアクセスすることができるデータアクセスコンポーネント１０４と、ユーザインタフェースを生成するＵＩ作成コンポーネント１０６と、アプリケーション１１６とインタフェースをとることができるインタフェースコンポーネント１１４とを含む。
【００３２】
その上、スクリプト言語ベースのフレームワーク１０２は、コントロール１１２を含む。コントロール１１２は、例えば、モデル・ビュー・コントローラ（ＭＶＣ）モデルに基づくことができる。コントロール１１２は、アプリケーション１１６に含まれたスクリプト言語コードの機能として、有効にすること又は無効にすることができる。例えば、コントロール１１２のうち１又は複数がアプリケーション１１６において有効にされるとき、有効にされたコントロール（群）１１２は、ＵＩ作成コンポーネント１０６にユーザインタフェース（群）を生成させることができる。さらに、コントロール１１２は、コントロール１１２に適用することができる広範な属性及び効果を有することができる。１つの例解に従い、コントロール１１２のうち１又は複数は、アプリケーション１１６に含まれたスクリプト言語コードに基づいて様式化することができる。例えば、コントロール１１２のうち１又は複数をアプリケーション１１６が管理して、ＵＩ作成コンポーネント１０６に、クライアント装置のディスプレイにレンダリングされるユーザインタフェース（群）をアニメ化させることができる。見込まれるアニメーションを、スクリプト言語ベースのフレームワーク１０２に含まれるコントロール１１２に組み込むことができる。さらなる例に従い、スクリプト言語ベースのフレームワーク１０２に含まれるコントロール１１２は、互いに依存関係を有することができる。この例に従い、コントロール１１２間の上記依存関係は、ＵＩ作成コンポーネント１０６が、生成されたユーザインタフェース（群）に豊富なアニメーションを提供することを、可能にすることができる。別の例として、コントロール１１２は、例えば、氏名、敬称などの複数の属性を有することができる。
【００３３】
一例に従い、コントロール１１２のうち１又は複数は、アプリケーション１１６のための認証を管理することができる。例えば、アプリケーション１１６は、一式の利用可能な認証スキーム（例えば、種々のサードパーティサービスにより提供される）から認証スキームを選択するスクリプト言語コードを含むことができる。その後、選択された認証スキームを、バックエンド（例えば、図１のクラウドプラットフォーム１１０上の分散型データストア１０８）からフロントエンドまでシステムにわたって用いることができる。
【００３４】
さらに、ＵＩ作成コンポーネント１０６は、アプリケーション１１６を実行しているクライアント装置の能力を検出することができ、かつ、検出された能力の機能のとおりに、コントロール１１２のうち１又は複数に基づいて生成されるユーザインタフェースを調整することができる、調整コンポーネント３０２を含むことができる。例えば、アプリケーション１１６がスマートフォンにロードされた場合、調整コンポーネント３０２は、クライアント装置がカメラ及びマイクロフォンを含むことを、検出することができる。この例に従い、調整コンポーネント３０２は、コントロール１１２のうち１又は複数に基づいて、ＵＩ作成コンポーネント１０６により生成されるユーザインタフェースを変更して、スマートフォンのカメラ及びマイクロフォンに関連する特性を含ませることができる。一方で、調整コンポーネント３０２が、クライアント装置はカメラ及びマイクロフォンを欠いていることを検出したとき、上記の特性は、ＵＩ作成コンポーネント１０６により生成されるユーザインタフェースにおいて省略することができる。調整コンポーネント３０２を含むことによって、スクリプト言語ベースのフレームワーク１０２は、アプリケーション１１６が、アプリケーション１１６を実行しているクライアント装置の能力を用いることを、可能にすることができる。その上、アプリケーション１１６は、ウェブプログラマによる様々な種類の装置をサポートするためのコーディングなく、スクリプト言語ベースのフレームワーク１０２に包含された調整コンポーネント３０２を活用することによって、モバイル装置、デスクトップ、ラップトップなどにわたって動作することができる。
【００３５】
ＵＩ作成コンポーネント１０６は、さらに、段階的にアプリケーション１１６の特性をロールアウトすることができるフライティング（flighting）コンポーネント３０４を含むことができる。例えば、ユーザのサブセットがアプリケーション１１６のある特性へのアクセスを有することを、ウェブプログラマが所望する場合がある。したがって、フライティングコンポーネント３０４は、上記ユーザのうち上記サブセットに対して生成されるユーザインタフェース（群）においてアプリケーション１１６の上記特性を提供することができると同時に、アプリケーション１１６の上記ユーザのうち残りに対して生成されるユーザインタフェース（群）において上記特性を隠すことができる。スクリプト言語ベースのフレームワーク１０２にフライティングコンポーネント３０４を含むことによって、アプリケーション１１６の特性の交互の（staggered）ロールアウトを可能にするカスタムコードを、ウェブプログラマによって書く必要がなくなる。
【００３６】
その上、スクリプト言語ベースのフレームワーク１０２は、コントロール１１２から通知を受信し、かつコントロール１１２に通知を送信する、通知コンポーネント３０６を含むことができる。したがって、スクリプト言語ベースのフレームワーク１０２において、通知コンポーネント３０６は、コントロール１１２間の情報を交換することができ、これにより、コントロール１１２間で依存関係を有することを可能にすることができる。１つの例解に従い、アプリケーション１１６は、スクリプト言語シェルとすることができ、上記スクリプト言語シェルは、複数のコントロール１１２に対する呼び出しを生成するスクリプト言語コードを含むことができる。この例解に従い、アプリケーション１１６の内部で呼び出された上記複数のコントロール１１２は、シェル全体の（shell-wide）通知を通知コンポーネント３０６から受信することができ、これにより上記複数のコントロール１１２の間で相互作用を容易にすることができる。
【００３７】
例えば、２つのコントロール（例えば、コントロール１１２からの）を、ウェブページに含むことができ、例えば、一方のコントロールは氏名のリストビューとすることができ、他方のコントロールは詳細ビューとすることができる。この例に従い、上記２つのコントロールは、通知コンポーネント３０６を介して情報を交換することができる。したがって、例えば、ある氏名がリストビューの中で選択された（例えば、クリックされた）場合、詳細ビューは、上記リストビューの中で選択された氏名に対応する詳細を示すことができる。その上、通知コンポーネント３０６は、コントロール１１２により使用される情報を交換してイベント連鎖（chaining）を生じさせることができる。それに応じて、コントロール１１２の振る舞いは、イベント（例えば、データをロードすること、トランザクションを処理すること、アニメーションの完了、受信されたユーザ入力など）に基づいて連鎖されることができる。
【００３８】
さらに、データアクセスコンポーネント１０４は、コントロール１１２をデータソース（例えば、クラウドベースのバックエンドシステム（群））にバインドすることができるソースバインドコンポーネント３０８を含むことができる。一例に従い、ソースバインドコンポーネント３０８は、コントロール１１２のうち２つを、種々のソースからのオブジェクトにバインドすることができる。この例に従い、ソースバインドコンポーネント３０８は、コントロール１１２のうち一方を第１のソーシャルネットワーキングサービスからのオブジェクトに、コントロール１１２のうち他方を第２のソーシャルネットワークサービスからのオブジェクトに、バインドすることができる。しかしながら、特許請求される対象事項は前述の例に限定されないことを、十分理解されたい。ソースバインドコンポーネント３０８は、コントロール１１２を種々のデータソースにバインドすることができるため、データアクセスコンポーネント１０４は、種々のデータソースからの情報のための標準化スキーマを用いることができる。スキーマのこうした標準化は、コントロール１１２間の情報の柔軟な交換を可能にすることができる。種々の実施形態において、ソースバインドコンポーネント３０８は、コントロール１１２のうち１又は複数を、オープンデータプロトコル（ＯＤｄａｔａ）ソースにバインドすることができるが、特許請求される対象事項はそのように限定されないことを、十分理解されたい。
【００３９】
図４〜図５は、スクリプト言語ベースのフレームワークを用いてウェブアプリケーションを開発することに関連する例示的な方法論を示す。上記方法論は、ある並びで実行される一連の動作であるとして図示及び説明されるが、上記方法論は上記並びの順序によって限定されないことを、把握及び十分理解されたい。例えば、いくつかの動作が、本明細書において説明される順序とは異なる順序で発生してよい。加えて、ある動作が、別の動作と同時に発生してよい。さらに、いくつかの例において、すべての動作が本明細書において説明される方法論を実装するために必要とされるわけではない場合がある。
【００４０】
その上、本明細書において説明される動作は、１若しくは複数のプロセッサにより実施すること及び／又は１若しくは複数のコンピュータ読取可能媒体に記憶することができる、コンピュータ実行可能命令とすることができる。コンピュータ実行可能命令は、ルーチン、サブルーチン、プログラム、実行のスレッド、及び／又は類似のものを含むことができる。またさらに、上記方法論の動作の結果を、コンピュータ読取可能媒体に記憶すること、ディスプレイ装置に表示すること、及び／又は類似のことができる。
【００４１】
図４は、ウェブアプリケーションを開発するための方法論４００を示す。４０２において、スクリプト言語ベースのフレームワークのためのインタフェースを、公開することができる。４０４において、呼び出しを、上記インタフェースを介して受けることができる。上記インタフェースを介して受けた呼び出しは、スクリプト言語ベースのフレームワークに含まれるコントロールを管理することができる。さらに、上記呼び出しは、スクリプト言語ベースのフレームワークを参照するアプリケーションにより提供されることができる。例えば、上記呼び出しは、コントロールを有効にすること、コントロールを無効にすること、コントロールの属性又は効果を設定することなどができる。４０６において、ユーザインタフェースを、上記呼び出しにより管理されたコントロールに基づいて生成することができる。４０８において、クラウドプラットフォーム上の分散型データストアにより提供されるバックエンドのクラウドベースのサービスに、上記呼び出しにより管理されたコントロールに基づいてアクセスすることができる。
【００４２】
次に、図５を参照し、ウェブアプリケーションを開発するための方法論５００を示す。５０２において、一式のコントロールを含むスクリプト言語ベースのフレームワークのためのインタフェースを、公開することができ、上記一式のコントロールは、バックエンドのクラウドベースのサービスにアクセスし、かつ、有効にされたときにユーザインタフェースを生成するように、予めプログラムされる。５０４において、スクリプト言語ベースのフレームワークに含まれる一式のコントロールの中のコントロールを有効にする呼び出しを、上記インタフェースを介して受けることができる。上記呼び出しは、スクリプト言語ベースのフレームワークを参照するアプリケーションにより提供されることができる。５０６において、ユーザインタフェースを、上記呼び出しにより有効にされたコントロールに基づいて生成することができる。５０８において、クラウドプラットフォーム上の分散型データストアにより提供されるバックエンドのクラウドベースのサービスに、上記呼び出しにより有効にされたコントロールに基づいてアクセスすることができる。
【００４３】
次に、図６を参照し、本明細書において開示されるシステム及び方法論に従って使用することができる例示的なコンピューティング装置６００の高水準の例解を示す。例えば、コンピューティング装置６００は、スクリプト言語ベースのフレームワークを用いてウェブアプリケーションを開発するシステムにおいて使用されることができる。別の例として、コンピューティング装置６００は、スクリプト言語ベースのフレームワーク上に構築されたウェブアプリケーションを実行するシステムにおいて使用されることができる。コンピューティング装置６００は、少なくとも１つのプロセッサ６０２を含み、上記少なくとも１つのプロセッサ６０２は、メモリ６０４に記憶された命令を実行する。上記命令は、例えば、上記で論じられた１若しくは複数のコンポーネントにより実行されるとして説明された機能性を実施する命令、又は上記で説明された方法のうち１若しくは複数を実施する命令とすることができる。プロセッサ６０２は、システムバス６０６を通じてメモリ６０４にアクセスすることができる。実行可能命令を記憶することに加えて、メモリ６０４は、アプリケーション、スクリプト言語ベースのフレームワークなどを記憶することもできる。
【００４４】
コンピューティング装置６００は、さらに、データストア６０８を含み、データストア６０８は、システムバス６０６を通じてプロセッサ６０２によりアクセスすることができる。データストア６０８は、実行可能命令、アプリケーション、スクリプト言語ベースのフレームワークなどを含むことができる。コンピューティング装置６００はさらに、入力インタフェース６１０を含み、入力インタフェース６１０は、外部装置がコンピューティング装置６００とやりとりすることを可能にする。例えば、入力インタフェース６１０を用いて、外部のコンピュータ装置、ユーザなどから指示を受け取ることができる。コンピューティング装置６００はさらに、出力インタフェース６１２を含み、出力インタフェース６１２は、コンピューティング装置６００を１又は複数の外部装置とインタフェースでつなぐ。例えば、コンピューティング装置６００は、出力インタフェース６１２を通じて、テキスト、画像などを表示することができる。
【００４５】
さらに、単一のシステムとして図示されているが、コンピューティング装置６００は分散型システムとすることができることを、理解されたい。したがって、例えば、いくつかの装置が、ネットワーク接続を経由して通信することができ、コンピューティング装置６００により実行されるとして説明されたタスクを集合的に実行することができる。
【００４６】
本明細書において、「コンポーネント」及び「システム」という用語は、コンピュータ実行可能命令を用いて構成されたコンピュータ読取可能データ記憶装置を包含することが意図され、上記コンピュータ実行可能命令は、プロセッサにより実行されると、特定の機能性を実行させる。コンピュータ実行可能命令は、ルーチン、関数、又は類似のものを含むことができる。コンポーネント又はシステムは、単一の装置上に局在させてよく、あるいはいくつかの装置にわたって分散させてよい。
【００４７】
さらに、本明細書において、「例示的」という用語は、「何かの例解又は例としての役割を果たすこと」を意味することが意図される。
【００４８】
本明細書において説明される種々の機能は、ハードウェア、ソフトウェア、又はそれらの組み合わせにおいて実装することができる。ソフトウェアにおいて実装される場合、上記機能は、コンピュータ読取可能媒体上の１又は複数の命令又はコードとして、記憶すること又は伝達することができる。コンピュータ読取可能媒体には、コンピュータ読取可能記憶媒体を含む。コンピュータ読取可能記憶媒体は、コンピュータがアクセスすることができる任意の利用可能な記憶媒体とすることができる。限定ではなく例として、こうしたコンピュータ読取可能記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ若しくは他の光学ディスク記憶装置、磁気ディスク記憶装置若しくは他の磁気記憶装置、又は、命令若しくはデータ構造の形式で所望のプログラムコードを担体若しくは記憶するために使用することができ、かつコンピュータによりアクセスすることができる任意の他の媒体を、含むことができる。本明細書において、磁気ディスク（Disk）及びディスク（disc）には、コンパクトディスク（ＣＤ）、レーザーディスク(登録商標)、光ディスク、デジタル多用途ディスク（ＤＶＤ）、フロッピー(登録商標)磁気ディスク、及びブルーレイディスク（ＢＤ）を含み、ここで、磁気ディスクは一般に磁気的にデータを再現し、ディスクは一般にレーザーを用いて光学的にデータを再現する。さらに、伝播される信号は、コンピュータ読取可能記憶媒体の範囲の中に含まれない。コンピュータ読取可能媒体は、さらに、１つの場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含む。接続が、例えば、通信媒体であり得る。例えば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、又は赤外線、無線及びマイクロ波などの無線技術を用いて、ウェブサイト、サーバ、又は他の離れた情報源から送信される場合、上記の同軸ケーブル、光ファイバケーブル、ツイストペア、ＤＳＬ、又は赤外線、無線及びマイクロ波などの無線技術は、通信媒体の定義に含まれる。上記の組み合わせもまた、コンピュータ読取可能媒体の範囲の中に含まれるべきである。
【００４９】
上記で説明されたものには、１又は複数の実施形態の例を含む。前述された態様を説明する目的で上記の装置又は方法論のあらゆる考えられる変更及び調整を説明することは、もちろん不可能であり、しかしながら当業者は、種々の態様の多くのさらなる変更及び置換があり得ることを認識し得る。それに応じて、上記の説明された態様は、添付の請求項の主旨及び範囲に入るすべての上記のような調整、変更及び変形を包含することが意図される。その上、「含む」という用語が本願の詳細説明又は請求項のいずれかにおいて使用される限りにおいて、上記の用語は、「備える」という用語に類似の、「備える」が請求項において移行語として用いられるときに解釈されるような方式で、包括的であることが意図される。
【図１】
2015501993.tif 000003
【図２】
2015501993.tif 000004
【図３】
2015501993.tif 000005
【図４】
2015501993.tif 000006
【図５】
2015501993.tif 000007
【図６】
2015501993.tif 000008
【国際調査報告】
2015501993.tif 000009
2015501993.tif 000010