(57)【要約】      （修正有）【課題】仮想化コンピューティング環境を呼び出すソフトウェアアプリケーションを開発する技術を提供する。【解決手段】ユーザの入力データに基づいて、入力、出力及び動作の表現をグラフィカルに描写するよう動作可能であるグラフィカルなユーザインタフェースをレンダリングする。入力、出力及び動作の表現のグラフィカルな描写をレンダリングする。レンダリングされたグラフィカルな描写は、入力、出力及び動作を実装する機能を実行し仮想化コンピューティング環境でサービスを呼び出すよう動作可能である関連する実行可能コードに関連付けられる。【選択図】図９
2019215877.tif 000002
【特許請求の範囲】
【請求項１】
１以上のプロセッサと該プロセッサに実行される命令を記憶する１以上のメモリとを有するシステムであって、
該システムは、前記プロセッサに、
ビジュアル開発環境によって、１以上のプログラミング動作を表す複数のグラフィカルな構成要素を表示させ、
前記ビジュアル開発環境によって、互いに関係ある複数の前記グラフィカルな構成要素からユーザによる１以上の選択を受領し、
選択を示すデータを、プロバイダネットワークの種々のバックエンドサービスを呼び出す動作させる実行命令に関連させ、
前記選択の受領に基づいて、実行可能な命令を含むビデオゲームを生成させ、
前記バックエンドサービスを実行する前記プロバイダネットワークによって、前記ビデオゲームを実行させ、
前記ビデオゲームへのユーザ入力に基づいて、前記プロバイダネットワークの前記バックエンドサービスの呼び出すため、前記実行可能な命令を実行させる、システム。
【請求項２】
前記互いの関係は、前記グラフィカルな構成要素の入力及び出力を表す、請求項１に記載のシステム。
【請求項３】
前記実行可能な命令が、前記プロバイダネットワークの仮想化データストレージサービスでデータファイルストレージを作成する、読み取る、書き込むかつ修正する関数を呼び出すよう動作可能である、請求項１に記載のシステム。
【請求項４】
前記実行可能な命令が、テンプレートとしてアクセス可能なデータオブジェクトとして、実装される、請求項１に記載のシステム。
【請求項５】
ユーザセッション間で永続するコードが、前記選択に基づいて生成される、請求項１に記載のシステム
【請求項６】
ビジュアル開発環境によって、１以上のプログラミング動作を表す複数のグラフィカルな構成要素を表示させ、
前記ビジュアル開発環境によって、互いに関係ある複数の前記グラフィカルな構成要素からユーザによる１以上の選択を受領し、
選択を示すデータを、プロバイダネットワークの種々のバックエンドサービスを呼び出す動作させる実行命令に関連させ、
前記選択の受領に基づいて、実行可能な命令を含むビデオゲームを生成させ、
前記バックエンドサービスを実行する前記プロバイダネットワークによって、前記ビデオゲームを実行させ、
前記ビデオゲームへのユーザ入力に基づいて、前記プロバイダネットワークの前記バックエンドサービスの呼び出すため、前記実行可能な命令を実行させる、コンピュータ実装方法。
【請求項７】
前記互いの関係は、前記グラフィカルな構成要素の入力及び出力を表す、請求項６に記載のコンピュータ実装方法。
【請求項８】
前記実行可能な命令が、前記プロバイダネットワークの仮想化データストレージサービスでデータファイルストレージを作成する、読み取る、書き込むかつ修正する関数を呼び出すよう動作可能である、請求項６に記載のコンピュータ実装方法。
【請求項９】
前記実行可能な命令が、テンプレートとしてアクセス可能なデータオブジェクトとして、実装される、請求項６に記載のコンピュータ実装方法。
【請求項１０】
ユーザセッション間で永続するコードが、前記選択に基づいて生成される、請求項６に記載のコンピュータ実装方法。
【請求項１１】
１以上のプロセッサに実行される命令を記憶する非一時的なコンピュータ可読ストレージ媒体であって、前記プロセッサで前記命令が実行されると、
ビジュアル開発環境によって、１以上のプログラミング動作を表す複数のグラフィカルな構成要素を表示させ、
前記ビジュアル開発環境によって、互いに関係ある複数の前記グラフィカルな構成要素からユーザによる１以上の選択を受領し、
選択を示すデータを、プロバイダネットワークの種々のバックエンドサービスを呼び出す動作させる実行命令に関連させ、
前記選択の受領に基づいて、実行可能な命令を含むビデオゲームを生成させ、
前記バックエンドサービスを実行する前記プロバイダネットワークによって、前記ビデオゲームを実行させ、
前記ビデオゲームへのユーザ入力に基づいて、前記プロバイダネットワークの前記バックエンドサービスの呼び出すため、前記実行可能な命令を実行させる、コンピュータ可読ストレージ媒体。
【請求項１２】
前記グラフィカルな構成要素は、入力及び出力を含む、請求項１１に記載のコンピュータ可読ストレージ媒体。
【請求項１３】
前記実行可能な命令が、テンプレートとしてアクセス可能なデータオブジェクトとして、実装される、請求項１１に記載のコンピュータ可読ストレージ媒体。
【請求項１４】
ユーザセッション間で永続するコードが、前記選択に基づいて生成される、請求項１１に記載のコンピュータ可読ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１５年９月１８日に出願された米国特許出願第１４／８５９，１７７号の利益を主張するものであり、この出願の開示は、参照によりその全体が本明細書に組み込まれる。
【背景技術】
【０００２】
プロバイダネットワークを運用するエンティティなどのサービスプロバイダは、コンピューティングインスタンス及びストレージリソースなどのコンピューティングリソースをクライアントに提供し得る。サービスプロバイダは、例えばコンピューティング及びネットワークサービスのプラットフォームを提供し得る。複数のクライアントは、コンピューティング及びネットワークサービスのプラットフォームにコンピューティングノードを介してアクセスし、ウェブサービスのプラットフォームに命令を発行し得る。コンピューティング及びネットワークサービスのプラットフォームは、複数のクライアントがプラットフォームにアクセスし得ることを意味するマルチテナントコンピューティング及びネットワークサービスのプラットフォームとも称され得る。
【０００３】
多くのマルチテナントコンピューティング及びネットワークサービスのプラットフォームは、ユーザがウェブブラウザを通じてアクセスし、仮想化されたリソースがあたかもユーザ自身のコンピュータ上にローカルにインストールされたプログラムであるかのように使用することができる仮想化されたリソース及びウェブベースのツールまたはアプリケーションを提供する。そうしたシステムのユーザ用に格納されたデータは、通常、コンピューティングデータセンタに配置されたコンピューティングシステムでホストされる。いくつかの例で、マルチプレーヤゲームなどの電子的に提示されるコンテンツは、多数の異なるユーザから同時にアクセスされ関与され得る。それらのコンテンツがユーザにとって容易に利用可能となるように、そうしたコンテンツのコンテンツ開発者は、サーバの配置かつ管理の技術に熟練せざるを得ないことが多い。
【０００４】
添付の図面は、発明のさらなる理解をもたらすために含まれ、本明細書に組み込まれるとともに本明細書の一部を成し、発明のいくつかの実施形態を例示して、その詳細な記載とともに発明の原理を説明するのに役立つ。本発明の基本的理解かつ本発明がどのように具現化され得るかに必要であり得る以上に本発明の構造的な詳細を示す試みはなされていない。
【図面の簡単な説明】
【０００５】
【図１】本開示の一部の態様によるコンテンツ開発のための例示的なシステムのハイレベルシステム図である。
【図２】本開示の一部の態様による例示的なビジュアルスクリプトの翻訳の図である。
【図３】本開示の一部の態様による例示的なビジュアル開発環境のハイレベルシステム図である。
【図４】本開示の一部の態様による例示的なコンテンツ開発環境の機能ブロック図である。
【図５】本開示の一部の態様による例示的なコンテンツ開発環境の機能ブロック図である。
【図６】本開示の一部の態様によるコンテンツを作成／編集するための例示的なユーザインタフェースの図である。
【図７】本開示の一部の態様によるコンテンツを作成／編集するための例示的なユーザインタフェースの図である。
【図８】本開示の一部の態様によるコンテンツを作成／編集するための例示的なユーザインタフェースの図である。
【図９】コンテンツを開発する例示的な操作手続きの図である。
【図１０】本開示の態様が実施され得るコンピューティング環境の実施形態を表すブロック図である。
【図１１】本開示の態様が実施され得るコンピュータシステムの実施形態を表すブロック図である。
【発明を実施するための形態】
【０００６】
マルチテナントコンピューティング及びネットワークサービスのプラットフォームのユーザは、プラットフォーム上でアプリケーションを開発し公開し得る。多くの場合、ユーザは、ユーザのアプリケーション開発及び配置のニーズに最も適合するリソースの数及び構成ならびにリソースの種類を、そのリソース及びリソースの種類の技術上の規格によって推定する必要があり得る。さらに、ユーザには、開発及び配置の作業を始めることを目的に、サーバ、ストレージデバイス及び他のリソースを適切に構成するために、特定の言語、手続き及び他の技術的詳細を学習し適用することが求められる場合が多い。しかしながら、ユーザの全てが彼らのニーズを満たすのに必要なリソースの数及び構成を正確に推定するための十分な情報または経験を有しているわけではない場合がある。また、全てのユーザがこれらのリソースにアクセスするのに必要な特定の言語及び手続きを学習するために時間及び資源を喜んで投資するわけではない。
【０００７】
本開示は、ソフトウェアアプリケーションを開発し導入するプロセスの態様が、統合された開発及び導入環境によって提供され得る開発環境を記載している。開発及び導入環境は、開発者コンピューティングシステム上で実行され得、かつ／またはマルチテナントコンピューティング及びネットワークサービスのプラットフォーム（プロバイダネットワークとも称される）上で実行され得、かつリモートアクセス技術を介してウェブブラウザインタフェースを用いてアクセス可能であり得る。本開示は、あらゆる種類のコンテンツを作成するためのアプリケーション開発環境のシステム及び方法を記載している。具体的には、所望のアプリケーションが実装され公開されたときにアクセスされ得るプロバイダネットワークの基礎をなしているリソースにアクセスするためのプログラミング言語またはプロセス及び手続きの具体的な知識を要さないビジュアル環境で、コンテンツを作成し、構成し、プログラミングし、かつ／または編集することができる仮想プロジェクト環境を提供するシステム及び方法が記載されている。
【０００８】
一部の実施形態では、ビジュアル開発環境により、開発者は、ビジュアルスクリプトパラダイムを用いて、プロバイダネットワークで種々のサービスを呼び出しそれらにアクセスするコードを生成することが可能になる。ビジュアル開発環境は、例えば、ユーザセッション間で永続するプログラミングロジック構成要素をホストし得る。ユーザは、アプリケーションを開発するのにビジュアルスクリプトパラダイムを用い得、こうして、クライアント−サーバプログラミング、及びプロバイダネットワークで利用可能なサービスにアクセスするための他の特定の方法論を学習する必要性を回避する。プロバイダネットワークで種々のサービスを呼び出しそれらにアクセスするコードが生成されると、そのコードは、仮想化コンテンツ及びビデオゲームなどの多数の種類のソフトウェアアプリケーションを実装するのに用いられる他のコードと統合、または組み合わせることができる。さらに、ソフトウェアアプリケーション全体を、ソフトウェアアプリケーションのコードの全てがビジュアル開発環境を用いて生成されるように、ビジュアルスクリプトパラダイムを用いて作成し得る。
【０００９】
一部の実施形態では、ビジュアル開発環境は、プロバイダネットワークのバックエンドサービスを、開発者のニーズに合うように拡張することができるビジュアルツール及びテンプレートと統合するコードを生成するように構成され得る。テンプレートは、開発者によってアプリケーション及び機能のビルディングブロックの集合を作成し管理するための出発点として用いられ得る。さらに、テンプレートは、アプリケーション全体及び他のコンテンツのサンプル一式を含み得る。
【００１０】
プロバイダネットワークサービスのアクションに対応するコードに翻訳され得るアプリケーション開発のためのビジュアルビルディングブロックを用いることによって、開発者は、各サービスに対する特定のインタフェースを用いる必要なしに、各サービスの特定のプログラミングの詳細を開発者が学習する必要なしに、またはＣ＋＋などの言語で開発者がコードを書く必要なしに、プロバイダネットワークサービスの機能にアクセスすることができ、開発者がプロバイダネットワークサービスにアクセスしそれを利用することにおける使い勝手をよくする。開発者は、ビジュアル開発環境のグラフィカルツールを用いるだけで、アプリケーションスタック及びマシンイメージを作成して所望のオンラインサービスを導入し得る。例えば、ビジュアル開発環境は、ゲームセッション間のプレイヤのグローバルステート及びインベントリ、ゲームのプレイヤ全員の中での相対的なランキングを記録し、プレイヤ間にトレーディングサービスを提供するといった機能を生成するのに用いられ得る。こうして、開発者は、サーバ及び他のコンピューティングリソースの具体的な技術的要件をどのように定義するのかを知る必要なしに、所望のゲームプレイをスクリプトし、出来上がったものをユーザがアクセスするように公開することが可能になり得る。
【００１１】
ビジュアル開発環境を用いて選択され得るビルディングブロックは、ファイル保存、コンテンツ配信、データベースアクセス、クラウドコンピューティング機能、ワークフローサービス、サーバ群の管理及びスケーリングならびにスケーラブルサーバ側のイベントなどの、プロバイダネットワークの種々のバックエンドサービスに実装されるアクションを生成することができる命令及び他のアクション可能な入力に関連付けられ得る。実装されるアクションは、ソフトウェアスタック、サーバマシンイメージ及びセキュリティ設定を直接ビルドし管理する必要なしに生成され得る。例えば、開発者は、ＡＰＩ呼び出しと組み合わされた変更通知を用いてビデオゲームアプリケーションにおけるプレイヤデータなどの、アプリケーションでの変更されているユーザ入力を登録し対応することが可能であり得る。さらに、開発者は、ビジュアル開発環境を用いて、サーバ群に性能及び要求に基づいて自動的にスケールを行わせる（例えばオートスケーリング）コードを生成することが可能であり得る。さらに、開発者は、開発者またはプロジェクトのスポンサーがコンピューティングリソースの実際の使用にのみ関与するように、サーバ側ロジックをスケール可能にスクリプト可能であり得る。
【００１２】
一部の実施形態では、ビジュアル開発環境は、開発者のシステム上で実行され得る。ビジュアル開発環境は、ユーザコンピュータ上で実行され、かつプロバイダネットワークのサービスを呼び出すコードを生成するのに用いられ得る。他の実施形態では、ビジュアル開発環境は、プロバイダネットワーク上かつ／またはこれらのもしくは他のシステム及びネットワークの任意の組み合わせ上で実行され得る。ビジュアル開発環境は、ウェブブラウザインタフェースなどのインタフェースを介して、開発者にとってアクセス可能であり得る。プロバイダネットワーク上で実行されるビジュアル開発環境は、開発者によって、ユーザコンピュータ上で実行され、かつプロバイダネットワークのサービスを呼び出すコードを生成するために用いられ得る。さらなる実施形態では、生成されるコードは、プロバイダネットワーク上で実行され得、ウェブブラウザインタフェースなどのインタフェースを介してエンドユーザにアクセス可能であり得る。
【００１３】
本開示に開示された実施形態はビデオゲーム開発という文脈におけるビジュアル開発環境を考察しているが、他の種類の用途も本明細書に開示された概念及び技術を用いて利用することができることを理解されたい。例えば、本明細書に開示される実施形態は、コンテンツ配信サービスを提供するアプリケーションとともに利用される場合もある。
【００１４】
一部の実施形態では、ビジュアル開発環境により、開発者は、非ビジュアルなかつ従来の開発ツールを用いて、選択された特徴をカスタマイズすることも可能になり得る。例えば、開発者は、ビジュアル開発環境を用いてコードを生成し得る。開発者は、生成コードにアクセスし、直接的なテキストコーディングなどの非ビジュアルな方法を用いて、生成されたコードに修正を行う能力を備え得る。
【００１５】
一部の実施形態では、コンテンツは、開発者によってビジュアル開発環境を用いて作成され得、そしてそれが、コンテンツの導入されたインスタンスをホストまたはそれとインタラクトし得る種々のバックエンド及び他のサービスまたは構成要素と統合される。コンテンツは、ネットワークベースのサービス（例えばオートスケーリング）、仮想化されたオンラインコンテンツ、データ及びレコード管理、協調編集ツールまたはマルチプレイヤビデオゲームに少なくとも部分的に依存するアプリケーションなどの分散型のアプリケーションを含み得る。一部の実施形態では、ビジュアル開発環境にアクセスするための１つまたは複数のオプションを提供するウェブベースのユーザインタフェースが、プロバイダネットワークの開発者ユーザに対して提示され得る。ビジュアル開発環境は、ユーザインタフェースを介して、コンテンツ開発プロジェクトに対する入力を受信し得、特定のユーザの編集履歴などの他の情報にアクセスすることもできる。代替として、ビジュアル開発環境の機能を実装するソフトウェアが開発者のコンピューティングシステムにダウンロードされ得、ローカルで実行され得る。
【００１６】
一部の実施形態では、各種機能モジュールがビジュアル開発環境のビジュアルエディタで露出され得る。ビジュアルエディタは、入力、入力での動作及び動作の出力のグラフィカルな描写、ならびに／または入力、動作及び出力の表現の描写をレンダリングし得る。次いで、グラフィカルな描写は、各種バックエンドサービスを起動かつ制御するのに用いることができる関連する命令に関連付けられ得る。ある実施形態では、グラフィカルな描写は、各種バックエンドサービスで実行することができる対応する命令に翻訳またはスクリプトされ得る。例えば、グラフィカルな描写は、プロバイダネットワークでのサーバ側機能に直接アップロードすることができるＪａｖａＳｃｒｉｐｔに翻訳され得る。さらに、ビジュアル開発環境は、エンドユーザのコンピューティングデバイス上で実行されるコード及びプロバイダネットワークのコンピューティング環境で実行されるコードをスクリプトし得る。
【００１７】
ビジュアル開発環境は、様々なアプリケーション開発のニーズに関連するコンピューティングサービスに基づいて選択される各種バックエンドサービスと統合され得る。例えば、オンラインゲームは通常、データを格納する、データを共有する、構造体をデータに適用する、かつデータに計算を行うといったサービスにアクセスする。一部の実施形態では、バックエンドサービスは、データの作成、読取り、書込み及び修正を可能にするストレージサービスを含み得る。ストレージサービスは、情報をクライアント上で作成しサーバにアップロードすることを可能にし得る。アップロードされた情報は処理され決定され得、変更された状態がクライアントに書き戻される。ストレージサービスはまた、ユーザにより生成されたコンテンツを、ユーザがアップロードしアプリケーションコンテキスト内で他のユーザと共有することができるようにすることも可能にし得る。例えば、ユーザは、ゲームアプリケーションに関するスクリーンショットまたはビデオをキャプチャし、そのデータを他のユーザと共有するためにアップロードし得る。別の例として、ゲームデータは、他のユーザが後にビデオゲームに対する挑戦としてダウンロードするために、記録されアップロードされ得る。
【００１８】
開発者がデータを効率的にユーザに配信しコンテンツ保護及び権利管理を提供することを可能にするコンテンツ配信サービスが提供され得る。例えば、データコンテンツは、予測されるユーザの場所に物理的に近接して位置する選択サーバに格納され得、コンテンツ配信の待ち時間を少なくすることを可能にする。さらに、選択されたコンテンツをアクセスキーと関連付けることができ、許可または購入に基づいてコンテンツの配信を可能とする。
【００１９】
構造体をアプリケーションデータに適用することを可能にするデータベースサービスが提供され得る。例えば、プレイヤ及び非プレイヤのキャラクタの両方に対するゲームデータの永続状態を追跡するために、データセットが作成され保持され得る。ストレージ及び／またはデータベースサービスで検出された変更に基づいてデータに適用される演算及び他の動作のために、サーバ側サービスが提供され得る。例えば、サーバ側スクリプト及びロジックは、データストレージに書込み中の新規のデータに基づいて、または、モニタリングによって指定されたデータストリームに基づいてトリガされ得る。ビジュアル開発環境は、追加のプロバイダネットワークサービスと統合され得る。
【００２０】
図１は、本開示によるビジュアル開発環境を提供するフレームワークを含むシステム１００を例示する図である。図１では、システム１００は、例えば１つまたは複数のサーバコンピュータ１３０および１４０ならびにストレージボリューム１３５上で実行され得る仮想マシンリソース１１０、ストレージボリュームリソース１１５及びバックエンド１２０を含み得る。一部の実施形態では、追加のサーバコンピュータ上でインスタンス化され得る様々な種類の追加のリソースが含まれ得ることが理解されよう。
【００２１】
図１は、コンピュータ１６０及び１７０などの１つまたは複数のコンピュータを含み得るパブリックネットワーク１５０も例示する。ある実施形態によると、リソース１１０、１１５及び１２０は、パブリックネットワーク１５０のコンピュータユーザ（図示せず）に、ゲートウェイ１９０ならびにコンピュータ１６０及び１７０を介してコンピューティングサービスを提供するように構成され得る。例えば、仮想マシンリソース１１０は、ユーザのグループにリモートアクセス企業アプリケーションのセットを提供し得る。リソースは、仮想マシンインスタンス、ストレージリソース及び他の種類のコンピューティングリソースとして実装され得る。
【００２２】
ある実施形態では、コンピュータ１６０または１７０は、アプリケーションを起動または編集するためにビジュアル開発環境１８０にアクセスまたはそれを実行し得る。例えば、ビジュアル開発環境１８０は、少なくとも部分的にコンピュータ１６０または１７０でダウンロードされるソフトウェアアプリケーションが実装し得る。他の実施形態では、ビジュアル開発環境１８０は、データセンタ１００によってホストされ得、コンピュータ１６０または１７０で操作を行っているユーザが、ビジュアル開発環境１８０にアクセスするリクエストを送信することによって、ビジュアル開発環境１８０にアクセスし得る。リクエストは、コンピュータ１６０または１７０のユーザから直接受信され得る。リクエストの受信に応答して、ビジュアル開発環境１８０は、リクエストをログし、このリクエストに応答し得る。ビジュアル開発環境１８０は、必要であれば（１）リクエストの処理、（２）リクエストを満たすリソースへの入札及び（３）リクエストを満たすのに必要なリソースの割当てを容易にするために、プロバイダネットワークの他のサービスと通信し得る。ビジュアル開発環境１８０は、例えば、リクエストのインスタンス化を容易にし、アプリケーションを起動または編集するためのビジュアルインタフェースを生成するインタフェースを提供し得る。ビジュアル開発環境１８０はさらに、リクエストのステータスを確認しリクエストを修正またはキャンセルするためのインタフェース、及びアプリケーションを編集するのに用いられ得る他のユーザインタフェースを提供し得る。一部の実施形態では、ユーザインタフェースの描写は、サービスプロバイダによって生成され、レンダリングのために、ユーザのディスプレイに送信され得る。他の実施形態では、ユーザのコンピューティングデバイスは、ユーザインタフェースの一部または全部を生成する機能を含み得る。例えば、ユーザのウェブブラウザは、サービスプロバイダから受信したデータをレンダリングするグラフィクスの一部を生成するためのコードを含み得る。
【００２３】
図２は、例示的なビジュアル開発環境１８０及びプロバイダネットワークでサービスを呼び出しかつ／または制御するコードの生成を例示するブロック図を示す。ビジュアル開発環境１８０は、ビジュアルスクリプト２１０を表すデータを翻訳するように構成され得る。ビジュアルスクリプト２１０は、コンテンツの機能のグラフィカルな描写をユーザコンピューティングデバイス上にレンダリングし、ユーザがコンテンツとインタラクトし、それを変更することを可能にする種々のソフトウェア及び／またはハードウェア構成要素を用いて編集され得る。ビジュアルスクリプト２１０は、ソフトウェア及び／またはハードウェア機構を介して受信され得る。
【００２４】
ビジュアルスクリプト２１０は、ユーザインタフェース上にグラフィカルに描写される１つまたは複数の関数を表す情報を含み得る。ある実施形態では、ビジュアルスクリプト２１０は、少なくとも１つの入力及び少なくとも１つの出力をさらに含むいくつかの関数またはメソッドを表すデータを含み得る。例えば、グラフィカルな描写は、データファイルなどの入力データ項目上で行われ得る関数または動作のブロック表現を含み得る。グラフィカルな描写はまた、関数または動作に対する入力、及び関数または動作からの出力の表現も含み得る。入力及び出力は、例えば、入力の源及び出力の行き先を描写するために扱われ得る矢印などの線コネクタを用いて表され得る。
【００２５】
ビジュアルスクリプト２１０は通常、関係性及びデータフローのグラフィカルな操作を可能にする複数のブロック表現及び入力／出力表現を含む。描写されたユーザインタフェースによって、ビジュアルスクリプト２１０が、典型的であるドラッグアンドドロップ、及びキーボード、マウス、タッチスクリーン及び他の入力デバイスを用いるユーザインタフェースツールに典型的であり得る他のインタラクティブな機構を用いて編集されることが可能になり得る。
【００２６】
ビジュアルスクリプト２１０は、翻訳構成要素２１５を用いて翻訳され得る。ある実施形態では、翻訳構成要素２１５は、コード要素のデータベースにアクセスし、ビジュアルスクリプト２１０の表現をコード要素の１つまたは複数にマッピングするように構成され得る。マッピングが行われ得、これに基づいて、関数または動作がビジュアルスクリプト２１０に描写される。例えば、ビジュアルスクリプト２１０に基づいて関連コード要素を識別するのにパターン分類システムが用いられ得る。パターン分類システムは、どのコード要素が選択された関数または動作に関連するかをマッピングするものである関係性をエンコードし得る。パターン分類システムは、どの関数または動作が特定のコード要素にマッピングされているかを識別するのにプログラミングされ得る。パターン分類システムはまた、新規のコード要素が追加されると更新され得る。一部の実施形態では、パターン分類システムは、どのコード要素が選択された関数または動作に関連するかを継続的に学習する学習機能を含み得る。学習システムは、次いで、未来の観察を、先のマッピングから作成され得るコード要素のカテゴリーに分類し得る。
【００２７】
翻訳構成要素２１５はまた、ビジュアルスクリプト２１０の表現を受信し、その表現をパースし、パースされた表現を命令セットに変換するように構成され得る。変換は、上記のパターン分類システムを用いて実装され得、またはパースされた表現と対応するコード要素の間の既知の関係に基づいてエンコードされ得る一連の命令に基づき得る。
【００２８】
マッピングされたまたは生成されたコードは、プロバイダネットワークによって提供され得る種々の仮想化されたサービス２２０とインタラクトしそれを制御するよう動作可能であり得る。マッピングされたまたは生成されたコードは、例えば、仮想マシンを構成し起動する仮想化されたインスタンス２３０、構造体をアプリケーションデータに適用するデータベースサービス２４０、データを作成、読取り、書込みかつ修正するストレージサービス２５０、通知をユーザにプッシュするメッセージングサービス２６０、及びイベントに基づいてプロバイダネットワークサービスをトリガするイベント駆動型の関数などのサービスを起動しまたはそれらにアクセスする命令を含み得る。サービスは、図２に例示されていないがプロバイダネットワーク上に提供され得る他のものを含み得る。
【００２９】
例えば、ビジュアルスクリプト２１０は、キー値ストアから値を検索取得するなどの所望の動作を表現し得る。ビジュアルスクリプトは、キーを表す入力の名前及びキー値検索取得からの出力値を表す出力を含み得る。このように、ビジュアルスクリプト２１０は、キーの名前の変数を示すテキスト文字列を含む入力矢印、及び出力変数を示すテキスト文字列を有する出力矢印を含み得る。本例のビジュアルスクリプト２１０は、２つのポートを有するキー値検索取得関数を示すボックスを備え得る。翻訳構成要素２１５は、ビジュアルスクリプト２１０を示すデータを受信し、入力の名前の文字列、出力の名前の文字列及び入力インデックスを含む、ビジュアル開発環境１８０によって定義された機能を継承するクラスを定義するコードを生成し得る。翻訳構成要素２１５はさらに、プロバイダネットワークのデータベースサービスに対する呼出、データベース識別子及び値の情報を含むデータベースへのアクセス、及び値を戻すことを含む関数を生成し得る。コードはさらに、戻り値を受信し、この戻り値をビジュアルスクリプト２１０によって示される出力に提供する命令を含み得る。
【００３０】
図３は、ビジュアル開発環境１８０に関連して用いられ得る例示的なビジュアル編集システム３００を示すブロック図である。ビジュアル編集機能３００は、アプリケーション及び他のコンテンツを作成、編集、テストする機構を提供するソフトウェア及び／またはハードウェアとともに構成された開発コンピューティングノード３０８及び開発コンピューティングノード３１０として図３に示されるものなどであるいくつかの開発者コンピューティングノードを備え得る。コンテンツは、ソフトウェアアプリケーション、インタラクティブビデオなどのインタラクティブコンテンツを含み得る。開発者コンピューティングノード３１０は、ビジュアル開発環境１８０を実行し得る。ビジュアル開発環境１８０は、開発コンピューティングノード３０８のユーザインタフェース構成要素とインタラクトするように構成されたレンダリングモジュール３１４を含み得る。レンダリングモジュール３１４の開発者構成要素は、ユーザインタフェース上に、コンテンツをアップロードして編集するためのオプション、及び１つまたは複数のインタラクティブ構成要素をコンテンツに追加するためのオプションを提示するように構成され得る。
【００３１】
ビジュアル開発環境１８０を用いると、アプリケーションなどのコンテンツは、開発者コンピューティングノード３０８または３１０上でコンテンツの機能のグラフィカルな描写を用いて編集され得、開発者がコンテンツとインタラクトしてそれを変更することが可能になり得る。ビジュアル構成要素を通常伴わないものを含むコンテンツの要素は、ユーザインタフェース上にグラフィカルな要素によって表され得る。このことによって、コンテンツの各要素が、さらなる編集のために容易に選択されることが可能になる。レンダリングモジュール３１４は、開発中のコンテンツのビルディングブロックの表示をレンダリングするように構成され得る。レンダリングモジュール３１４は、コンテンツを構成するグラフィカルな要素をレンダリングするように構成され得る。レンダリングモジュール３１４は、入力、出力、動作、メソッドなどの種々のビジュアルな表示を含むグラフィカルな要素をレンダリングし得る。ビジュアル開発環境１８０は、コンテンツのプロパティを編集する、新規のコンテンツを作成する、望まないコンテンツを削除するなどのための追加モジュールを含み得る。
【００３２】
開発者コンピューティングノード３０８または３１０上のビジュアル開発環境１８０は、コンテンツに対する変更を開発者コンピューティングノード３０８または３１０上でローカルに行って、ネットワーク３０６を介して、リポジトリ３０３に格納するためにコンテンツリポジトリモジュール３０４に送信することを可能にし得る。この情報は、継続的にまたはユーザのリクエストに基づいてオンデマンドに送信され得る。場合によっては、サーバ３１０は、統合された開発環境以外のまたはそれに加えてソフトウェア及び／またはハードウェアを含み得る。例えば、開発者コンピューティングノード３０８または３１０はまた、開発中のコンテンツに対するテストプラットフォームとして機能するようにも構成され得る。
【００３３】
ネットワーク３０６は、コンピューティングノード間で通信する様々な手段を備え得る。例として、ローカルエリアネットワーク、インターネットなどが挙げられる。有線ネットワーク及び無線ネットワークの両方を様々な組み合わせで用い得る。
【００３４】
コンテンツリポジトリモジュール３０４は、リポジトリ３０３のメンテナンスに関するソフトウェア及び／またはハードウェアを備え得る。コンテンツリポジトリモジュール３０４は、開発者コンピューティングノード３０８または３１０から、コンテンツのデータを含む、コンテンツのコンテンツになされた変更を記載している情報を受信し得る。コンテンツリポジトリモジュール３０４はまた、リポジトリのコンテンツのステータスを変更させるリクエストも受信し処理し得る。
【００３５】
コンテンツリポジトリモジュール３０４は、コンテンツのバージョン、及びバージョンが現在編集されている表示を保持し得る。データは、リポジトリ３０３内にログタイプ構造体として格納され得る。リポジトリ３０３は、構造体が保持され得るソリッドステートドライブなどのストレージデバイスを備え得る。コンテンツリポジトリモジュール３０４は、衝突検出、回避、及びリカバリ機構を用いて、コンテンツの一貫性を保護し得る。
【００３６】
コンテンツリポジトリモジュール３０４は、保存されていない変更に対してコミット操作及びロールバック操作を行い得る。レンダリングモジュール３１４は、リポジトリ３０３に格納された、かつコンテンツリポジトリモジュール３０４から受信した送信によって記載された、コンテンツのビジュアルな表示を利用しているコンテンツの表示を生成するように構成され得る。
【００３７】
図４は、より詳細にビジュアル開発環境１８０を描写する機能ブロック図である。ビジュアル開発環境１８０は、ユーザインタフェース構成要素４０４を含み得る。ユーザインタフェース構成要素４０４は、開発者などのユーザがコンテンツを作成、コンテンツを確認、コンテンツとインタラクト、かつ／または他のアクションを行うことを可能にする１つまたは複数のユーザインタフェースを提示するように構成され得る。
【００３８】
ユーザインタフェース構成要素４０４はまた、アプリケーションデータ、ロジックまたは任意の他の編集関連タスクの構成を容易にし得るビジュアル編集インタフェース制御を提供するようにも構成され得る。一部の態様では、ユーザインタフェース構成要素４０４は、コンテンツプロジェクトを定義するために拡張、修正かつ一緒に用いることができるアクションオブジェクトのコアセットを提供するデフォルトエディタを提供し得る。例えば、ユーザインタフェース構成要素４０４は、ユーザが、例えばアプリケーションまたはインタラクティブビデオなどのコンテンツを作成するためのインタフェースを提供し得る。ユーザインタフェース構成要素４０４は、コンテンツをアップロードして編集するための、かつ１つまたは複数の構成要素をコンテンツに追加するためのオプションを提示するように構成され得る。
【００３９】
さらに、ビジュアル開発環境１８０は、入力データを、プロバイダネットワークで実行されるコンピューティングサービス上で実行されるよう動作可能である関連する命令及び他のアクション可能なオブジェクトに関連付ける翻訳構成要素４０６を含み得る。また、開発者が用いるためのテンプレート及び他の再利用可能な情報を提供するテンプレート構成要素４０８も提供され得る。テンプレートは、開発者によって、規則正しく予測可能にコンテンツを作成し管理し、かつそのコンテンツを更新する出発点として用いられ得る。同一プロジェクトの同一なコピーを作成するために、または新規のプロジェクトを始動させる基礎としてテンプレートを用いることによって、開発者は、彼らのプロジェクトに関連する基礎をなしている構造を作成し構成するのに多大な努力をすることなく、アプリケーションを予測可能にかつ繰り返し開発し得る。さらに、開発者は、テンプレートを現状のままで用い得、またはテンプレートを開発者自身のテンプレートを作成する出発点として用い得る。
【００４０】
ある実施形態では、ユーザインタフェース構成要素４０４は、開発者が、リソース、入力、出力、値、相互接続、及び他のパラメータを選択することを可能にし得る。さらに、開発者には、新規のプロジェクトを作成するためのユーザインタフェースが提供され得る。開発者は、変数及びアクションの初期セットを定義するテンプレートを選択または作成し得る。例えば、開発者は、開発者が用いたいテンプレートを選択し得る。ユーザインタフェースは、開発者が導入して開始させることができる人気のあるアプリケーション用のサンプルテンプレートを提供し得る。例えば、開発者には、特定のビデオゲームタイプのための複数のリソースとどのように相互接続しそれを用いるかを示すことができるサンプルテンプレートが提供され得る。開発者はまた、サービスプロバイダストレージまたはカスタマ自身のストレージを用いて先に作成され格納され得た開発者自身のカスタムテンプレートもロードし得る。開発者は、テンプレートパラメータをオーバーライドすることによってテンプレートをカスタマイズし得、または、開発者は、テンプレートによって与えられたデフォルト値を許容し得る。テンプレート構成要素４０８によって、所望のコンテンツが作成され得る。
【００４１】
テンプレート構成要素４０８によって、開発者は、開発者の要件に基づいて、推奨されるアプリケーションの出発点におけるテンプレートをリクエストすることが可能になり得る。開発者は、例えば、新規のコンピューティングプロジェクトの要件を提供し得る。テンプレート構成要素４０８は要件を分析し得、既存のテンプレート及び他の情報に基づいて、テンプレート構成要素４０８は１つまたは複数の推奨されるテンプレートを生成し得る。推奨されるテンプレートは、カスタマの要件または他の基準に基づいて優先順位を付けられランク付けされ得る。開発者は、プロジェクトを生成するために、推奨されるテンプレートの１つを選択し得る。
【００４２】
図５は、複数の開発者コンピューティングノードとリポジトリメンテナンスサーバ５１５の間のデータフローを描写するブロック図である。開発者コンピューティングノード５００は、プロジェクトに対する更新を示すデータを生成し得、クライアント５２０も、プロジェクトに対する更新を示すデータを生成し得る。リポジトリメンテナンスサーバ５１４は、更新に関する情報の同一のセットをクライアント５００及び５２０の両方に送信し得る。情報はクライアント５００及びクライアント５２０の両方によって共有されるので、それらクライアントはそれぞれ、クライアント５００及び５２０に対応するユーザにより行われている働きを示す、コンテンツの表示をレンダリングし得る。一部の実施形態では、変更がリポジトリメンテナンスサーバ５１４に送信されリポジトリ５１６に格納されるとき、データは継続的に送信され発信され得る。他の実施形態では、ビジュアル開発環境１８０は、変更を周期的にまたはリクエストに応じて格納し得る。送信されると、リポジトリメンテナンスサーバ５１４は、プロジェクトで働いていることが知られている全ての開発者コンピューティングノードに情報を発信し得る。
【００４３】
ビジュアル開発環境１８０は開発ツールを含み得、この開発ツールは、一部の実施形態において、アプリケーションを定義する追加の構成データを構築するのに開発者が用い得るソフトウェアライブラリ及びツールのセット、加えてアプリケーションのデータの編集を可能にするように構成され得た追加の開発者ツールを含み得る。
【００４４】
ある実施形態では、アクションオブジェクトは、ビヘイビアを定義し他のアクションオブジェクトを起動するまたはアプリケーションクラスタと通信することができるプログラミングロジック及び／またはデータを含むデジタルオブジェクトであり得る。プログラミングロジックは、さらに、開発ツールを備えたソフトウェアライブラリを用いて構成された任意の形式のスクリプト言語またはプログラミング言語として定義することができる。
【００４５】
図６〜図８は、開発者コンピューティングノード３１０上にコンテンツを編集するために提示され得る一連の例示的なユーザインタフェースの表示を例示する。インタフェースの表示は、ビジュアル開発環境１８０（図１に示す）によって生成され得る。ビジュアル開発環境１８０には、コンピュータ上で実行されると、本明細書で記載された方法を実行するコードセグメントまたはコードセクションを備えるコンピュータ可読媒体が含まれ得る。
【００４６】
図６に例示するように、例えばユーザインタフェース構成要素４０３を介してビジュアル開発環境１８０にアクセス（例えばログイン）し、新規のプロジェクトを作成するオプションを選択した後、空のプロジェクトがロードされ得る。空のプロジェクトには、コンテンツをコンテンツリストから選択するオプションが含まれ得る。コンテンツリストは、ドロップダウンリスト、メニューリストなどとして提供され得る。コンテンツリストは、ユーザによってまたはコンテンツを利用可能とした別のユーザによって事前にアップロードされたコンテンツを備え得る。一部の態様では、ユーザが新規のコンテンツをアップロードするオプションが提示され得る。
【００４７】
図６に示すように、プロジェクト構成要素６１０は、名前、入力及びプレイヤＩＤを示す第１のグラフィカルな構成要素を示し、プロジェクト構成要素６２０への関係を示す矢印を有する。プロジェクト構成要素６２０は、対応する名前、デイリーギフト、及び方法、ゲットログインタイムを示す第２のグラフィカルな構成要素を示し、プロジェクト構成要素６３０への関係を示す矢印を有する。プロジェクト構成要素６３０は、対応する名前、プレイヤレコード、及び変数、ログインタイムを示す第３のグラフィカルな構成要素を示し、プロジェクト構成要素６４０への関係を示す矢印を有する。プロジェクト構成要素６４０は、対応する名前、１日以上を示す第４のグラフィカルな構成要素を示し、プロジェクト構成要素６５０及び６６０への関係を示す矢印を有する。最後に、プロジェクト構成要素６７０は、対応する名前、プレイヤレコード及びインベントリを示す最後のグラフィカルな構成要素を示す。
【００４８】
ある実施形態では、グラフィカルな構成要素は、レンダリングされたユーザインタフェース上で、ポインタを制御するマウスなどのユーザ入力手段によって選択可能であり得る。プロジェクト構成要素６１０などのグラフィカルな構成要素を選択することによって、ユーザは、レンダリングされたユーザインタフェース上で、プロジェクト構成要素６１０を所望の位置に移動させることができ得る。ユーザはまた、矢印または他のコネクタを選択し、その選択したコネクタをプロジェクト構成要素６２０などの別のプロジェクト構成要素に付けることもでき得る。こうして、コネクタは、プロジェクト構成要素６１０の出力及びプロジェクト構成要素６２０への入力を表す。
【００４９】
プロジェクト構成要素によって行われる動作は、利用可能かつ選択可能な動作のリストから選択され得、またはユーザによって定義され得る。例えば、ユーザがあるプロジェクト構成要素を選択した場合、ユーザには選択可能な動作が含まれるコンテキストメニューも提示され得る。代替として、ユーザは、ユーザによって定義される動作のエントリ用の入力フィールドを提示され得る。プロジェクト構成要素に対する動作を選択または定義する他の入力機構が提供され得る。
【００５０】
グラフィカルな構成要素は、ビジュアル開発環境１８０に、順序付き関係のセットとして表され得る。例えば、プロジェクト構成要素間のコネクタは、関連するデータオブジェクトとして表され得る。プロジェクト構成要素は、１つまたは複数の動作または関数の名前または定義として表され得る。ビジュアル開発環境１８０は、グラフィカルな構成要素を表すために標準化命名法を定義し得る。この表現は次いで、プロバイダネットワークでの動作に翻訳またはマッピングされてプロバイダネットワークでのサービスとインタラクトすることができるコードを生成し得る。
【００５１】
グラフィカルな構成要素は、ファイル保存、コンテンツ配信、データベースアクセス、クラウドコンピューティング機能、ワークフローサービス、サーバ群管理及びスケーリングならびにスケーラブルサーバ側のイベントなどの、プロバイダネットワークの種々のバックエンドサービスで実装されるアクションを生成することができるアクション可能な入力を実装するコードに関連付けられ得る。実装されるアクションは、ソフトウェアスタック、サーバマシンイメージ及びセキュリティ設定を直接ビルドし管理する必要なしに生成され得る。例えば、グラフィカルな構成要素は、データの作成、読取り、書込み、及び修正を可能にするストレージサービスとインタラクトするコードに関連付けられ得、または、構造体がアプリケーションデータに適用されることを可能にするデータベースサービスが提供され得る。
【００５２】
図７は、特定のコンテンツ（例えばアプリケーション）が選択された後のスクリーンディスプレイの別の例を示す。コンテンツがロードされたとき、プロジェクト構成要素７１０、７２０、７３０、７４０、及び７５０がレンダリングされ得る。各グラフィカルな構成要素は、対応する入力、及び１つまたは複数の指定されたアクションを含むメソッドを示し、関連する構成要素への対応関係を示す矢印を有する。アクション可能な構成要素の例示されたグラフィカルな描写を用いることによって、開発者は、基礎をなしているバックエンドサービスに特有の言語及び関数を用いる必要なしに、オブジェクト及び変数を指定することによりアプリケーションの所望の機能を生成し得る。図７に例示するように、複数の矢印またはコネクタは、複数のデータインタラクションを伴う構成要素間の関係を示すのに用いられ得る。例えば、プロジェクト構成要素７１０は、プロジェクト構成要素７３０との間に２つの出力インタラクションを表すものとして示される。さらに、プロジェクト構成要素７２０は、プロジェクト構成要素７１０及び７５０との間に２つの出力インタラクションを表すものとして示される。図７に示す例は、メッセージ文字列が検索取得されエンドユーザデバイスに表示のために戻されるというプロバイダネットワークでのデータベースサービスにアクセスするのに用いられ得るプロジェクト構成要素を例示する。プロジェクト構成要素はそれぞれ、ユーザによって定義される数の入力及び出力を有する論理的要素を表し得る。入力が定義されると、値またはイベントが入力に関して受信され得る。あるプロジェクト構成要素の出力が別のプロジェクト構成要素の入力に接続されると、この出力は当該他のプロジェクト構成要素の入力をアクティベートし得る。
【００５３】
プロジェクト構成要素７２０は、プロジェクト構成要素７１０に対する入力として「今日」というパラメータを設定する関数の始まりを表し得る。プロジェクト構成要素７１０は、設定されたパラメータを、オブジェクト「ストリング１」及び「ストリング２」をさらに設定するプロジェクト構成要素７３０に出力する。プロジェクト構成要素７４０は、プロジェクト構成要素７３０から出力を受信して、識別されたテーブル名とともにプロバイダネットワークのデータベースサービスに対するアクセスを生成する。プロジェクト構成要素７４０はまた、プロジェクト構成要素７４０によって、データベースアクセスの成功及び表示するための「メッセージオブザデイ」オブジェクトに対するテキスト文字列の表示を含むプロジェクト構成要素７５０に戻されるだろうメッセージに対する値へのアクセスのためのキー値も設定する。
【００５４】
図８は、特定のコンテンツ（例えばアプリケーション）が選択された後のスクリーンディスプレイの別の例を例示する。コンテンツがロードされたとき、プロジェクト構成要素８０６、８１０、８２０、８３０、８４０、８６０、８６０及び８７０がレンダリングされる。各グラフィカルな構成要素は、対応する入力、及び１つまたは複数の指定されたアクションを含むメソッドを示し、関連する構成要素への対応関係を示す矢印を有する。示すように、複数の矢印は、複数のデータインタラクションを伴う構成要素間の関係を示すのに用いられ得る。さらに、プロジェクト構成要素に複数の動作が追加され得る。さらに、プロジェクト構成要素８６０によって示されるように、プロジェクト構成要素は、複数の入力動作または出力動作に接続され、それらとインタラクトし得る。図８の例は、サーバ側ロジックを起動してインセンティブすなわち報酬をゲームアプリケーションのユーザに送信する機能を含む。プロジェクト構成要素８１０は、キー入力の受信に基づいた関数の始まり表し得、これは押されたキーが離されるとプロジェクト構成要素８３０に出力される。プロジェクト構成要素８３０は、関数「バックエンド起動」を起動して、関数「デイリーギフト」を起動するプロバイダネットワークのサーバ関数を呼び出す。プロジェクト構成要素８１０はまた、離されたというキーステータスを「メッセージ表示」プロジェクト構成要素８２０に送信して、「エントリ選択」表示関数を表示する。プロジェクト構成要素８３０は、「デイリーギフト」関数の出力を、プロジェクト構成要素８５０及び８６０として描写された「メッセージ表示」関数に送信する。プロジェクト構成要素８５０は、プロジェクト構成要素８３０から、Ｙ位置１００で表示されるエラー出力メッセージを受信する。それ以外の場合は、プロジェクト構成要素８６０は、Ｙ位置０で表示される入力「レスポンスボディ」を受信する。描写されたプロジェクト構成要素は、エンドユーザデバイス上でローカルに実行されるコードまたはファイル保存、コンテンツ配信、データベースアクセス及びスケーラブルサーバ側のイベントなどのプロバイダネットワークの種々のバックエンドサービスで実装されるアクションにアクセスまたはそれらを起動するコードのいずれかで記述された機能を実装するコードに関連付けられ得る。
【００５５】
図９は、仮想化コンピューティング環境でソフトウェアアプリケーションを開発する例示的な操作手続きを示す。ある実施形態では、操作手続きは、マルチユーザのコンピューティング及びネットワークサービスのプラットフォームによってホストされる仮想化コンピューティング環境で実装され得る。図９を参照すると、操作手続きは、操作９０２、９０４、９０６、９０８、及び９１０を含み得る。操作９００で、操作手続きは開始される。操作９００に、操作９０２が続き得る。操作９０２は、ソフトウェア機能を開発するためのインタラクティブな環境を描写するグラフィカルなユーザインタフェースをレンダリングすることを示す。ソフトウェア機能は、仮想化コンピューティング環境を呼び出すよう動作可能であり得る。一部の実施形態では、グラフィカルなユーザインタフェースは、入力、出力及び動作を、ならびに／または入力、出力及び動作の表現の描写を少なくともグラフィカルに描写するよう動作可能である。例えば、グラフィカルなユーザインタフェースは、入力、出力及び動作の構成を容易にする働きをするビジュアル編集インタフェース制御を含み得る。
【００５６】
操作９０２に、操作９０４が続き得る。操作９０４は、グラフィカルなユーザインタフェースを介して、入力、出力及び動作を示すデータを受信することを例示する。例えば開発者による入力の変更に基づいて現在の表示が更新されると、操作９０４に操作９０６が続き得る。操作９０６は、少なくとも部分的にそのデータに基づき、入力、出力及び動作のグラフィカルな描写をレンダリングすることを例示する。
【００５７】
開発者が追加の変更を入力し現在の命令に対する更新が必要となれば、操作９０６に操作９０８が続き得る。操作９０８は、データの受信に応答して、データを、仮想化コンピューティング環境で実行されるコンピューティングサービスを呼び出すよう動作可能である関連する命令に関連付けることを例示する。一部の例では、操作９０８は、データを、仮想化コンピューティング環境で実行されるコンピューティングサービス上で実行するよう動作可能である関連する命令に翻訳することを含み得る。関連する命令は、ソフトウェア開発プロジェクトのプログラミングロジックを備え得る。命令は、仮想化コンピューティング環境のサービスとインタラクトするよう動作可能であるコードまたはスクリプトを備え得る。命令は事前に定義され得、一部の実施形態では、データオブジェクトとして実装され得る。事前に定義されたデータオブジェクトは、ソフトウェア開発プロジェクトを開始またはそれに追加するのに用いることができるテンプレートとしてアクセス可能になされ得る。
【００５８】
一部の実施形態では、命令は、仮想化コンピューティング環境の仮想化データストレージサービスでデータファイルストレージを作成する、読み取る、書き込むかつ修正するといった関数を呼び出すよう動作可能であり得る。仮想化データストレージサービスは、ユーザデバイスによって生成された情報が、仮想化データストレージサービスにアップロードされ格納されることを可能にし得る。仮想化データストレージサービスはまた、ユーザによって生成されたコンテンツが、アプリケーションのコンテキスト内で他のユーザと共有されることを可能にし得る。
【００５９】
一部の実施形態では、命令は、データを仮想化データストレージサービスから仮想化コンピューティング環境の選択されたサーバまたはコンピューティングインスタンスに転送するように構成された関数を呼び出すよう動作可能であり得る。例えば、ユーザによって生成されたコンテンツは、予測されるユーザの場所に物理的に近接して位置する選択サーバに格納され得、ユーザによって生成されたコンテンツの配信の待ち時間を短くすることを可能にする。
【００６０】
一部の実施形態では、命令は、アプリケーションデータセットの格納のために仮想化コンピューティング環境のデータベースとインタラクトするよう動作可能であり得る。例えば、アプリケーションデータセットは、アプリケーションのエンドユーザのアプリケーションデータの永続状態を追跡するために作成され保持され得る。
【００６１】
一部の実施形態では、命令は、選択されたイベントに基づいて、仮想化コンピューティング環境の関数を呼び出すよう動作可能であり得る。例えば、ストレージ及び／またはデータベースサービスで検出された変更に基づいて、データに演算及び他の動作を適用するためのサーバ側サービスが提供され得る。一部の実施形態では、サーバ側スクリプト及びロジックは、データストレージに書込み中の新規のデータに基づいて、または指定されたデータストリームのモニタリングに基づいてトリガされ得る。選択されたイベントには、ファイルのアップロード、アプリケーションのアクティビティ、入力デバイスアクションまたはデバイスからの出力の１つまたは複数が含まれる。
【００６２】
一部の実施形態では、命令は、メッセージングサービスとインタラクトする関数を呼び出すよう動作可能であり得る。例えば、電子またはＳＭＳメッセージは、識別されたユーザまたは多数の受信者に自動的に送信され得る。メッセージはまた、仮想化コンピューティング環境の他のサービスにも送信され得る。
【００６３】
一部の実施形態では、命令は、エンドユーザによるプロバイダネットワークサービス及びリソースに対するアクセスを制御するように、かつデータが格納される複数のデバイス及びリソースでデータを同期化するように構成され得るアイデンティティ管理及びデータ同期化サービスとインタラクトする関数を呼び出すよう動作可能であり得る。命令はまた、エンドユーザによるプロバイダネットワークサービス及びリソースに対する許可または拒否を行うセキュリティ及び認証を確立する関数を呼び出すよう動作可能であり得る。
【００６４】
操作９０８に、操作９１０が続き得る。操作９１０は、グラフィカルに描写された入力、出力及び動作によって表された機能を有効にし、コンピューティングサービスを呼び出す関連する命令を生成することを例示する。生成された命令は、例えば、エンドユーザシステムによって実行され得る。グラフィカルなユーザインタフェースのレンダリング、入力、出力及び動作を示すデータの受信、グラフィカルな描写のレンダリング、データの関連する命令への関連付けならびに関連する命令の生成及び実行を含む記載された操作の少なくとも一部は、開発者コンピューティングデバイス上で行われ得、または、仮想化コンピューティング環境上で行われ得る。
【００６５】
一部の実施形態では、アプリケーションプログラミングインタフェース（ＡＰＩ）が、入力、出力及び動作を示すデータのユーザ入力を容易にするために提供され得る。例えば、ＡＰＩは、コンテンツまたはプロジェクト識別子などの情報及び入力、出力及び動作を示すデータとともに呼び出すことができる。ＡＰＩを呼び出した後、ビジュアル開発環境１８０などのサービスは以下のようなアクションをとり得る。
・入力、出力及び動作を示すデータをパース
・翻訳済みコードを備える所定のデータオブジェクトのデータベースにアクセス
・パースされたデータを所定のデータオブジェクトにマッピング
・翻訳関数の起動
【００６６】
ビジュアル開発環境１８０は、結果として生じたコードに関する他の詳細とともに、ＡＰＩを用いてのマッピングまたは翻訳の結果を報告し得る。
【００６７】
さらに、本開示の実施形態は、以下の条項に照らして、説明することができる。
【００６８】
１．マルチテナントコンピューティングサービスのプラットフォームによってホストされる仮想化コンピューティング環境とインタラクトするソフトウェアアプリケーションを開発するコンピュータにより実装される方法であって、
前記仮想化コンピューティング環境で実行されるコンピューティングサービスを呼び出すよう動作可能である命令を開発するためのインタラクティブな環境を描写するグラフィカルなユーザインタフェースをレンダリングすることであって、前記グラフィカルなユーザインタフェースは、前記仮想化コンピューティング環境で実行される前記コンピューティングサービスに関連付けられた入力、出力及び動作の表現を少なくともグラフィカルに描写するよう動作可能であるものである、前記レンダリングすることと、
前記グラフィカルなユーザインタフェースを介して、前記入力、前記出力及び前記動作を示すデータを受信することと、
前記データに少なくとも部分的に基づいて、前記入力、前記出力及び前記動作の前記表現のグラフィカルな描写をレンダリングすることと、
前記データを、前記仮想化コンピューティング環境で実行されるコンピューティングサービスを呼び出すよう動作可能である命令に関連付けることと、
実行されると、前記表現によって表された機能を有効にして前記仮想化コンピューティング環境で実行される前記コンピューティングサービスを呼び出す、前記表現に関連付けられた前記命令を生成することとを備える、前記方法。
【００６９】
２．前記グラフィカルなユーザインタフェースが、前記入力、前記出力及び前記動作の前記表現の構成を容易にする働きをするビジュアル編集インタフェース制御を含む、条項１に記載の方法。
【００７０】
３．前記命令がソフトウェアアプリケーションのプログラミングロジックに含まれる、条項１に記載の方法。
【００７１】
４．前記グラフィカルなユーザインタフェースの前記レンダリング、受信、前記グラフィカルな描写のレンダリング及び関連付けが、開発者コンピューティングデバイスまたは前記仮想化コンピューティング環境上で行われる、条項１に記載の方法。
【００７２】
５．前記ソフトウェアアプリケーションがビデオゲームである、条項３に記載の方法。
【００７３】
６．マルチテナントコンピューティングサービスのプラットフォームによってホストされる仮想化コンピューティング環境とインタラクトするアプリケーションを開発かつ導入するように構成されたシステムであって、前記システムの１つまたは複数のプロセッサによって実行されると、前記システムに少なくとも、
前記仮想化コンピューティング環境を呼び出すよう動作可能である関数を開発するためのインタラクティブな環境を描写させ、
前記関数の少なくとも１つの動作の表現をグラフィカルに描写させ、
仮想化コンピューティング環境によって提供されるサービスに関連付けられかつ前記関数を実装するのに使用可能な複数のデータオブジェクトにアクセスさせ、
前記複数の所定のデータオブジェクトを用いて、前記関数を実装し前記仮想化コンピューティング環境のサービスを呼び出すよう動作可能なコードを生成させるコンピュータ命令が内部に格納された少なくとも１つのメモリを備える、前記システム。
【００７４】
７．前記グラフィカルなユーザインタフェースが、ビジュアル編集インタフェース制御を含む、条項６に記載のシステム。
【００７５】
８．前記コードがユーザセッション間で永続する、条項６に記載のシステム。
【００７６】
９．前記データオブジェクトがテンプレートを含む、条項６に記載のシステム。
【００７７】
１０．前記コードが、仮想化データストレージサービスでデータファイルストレージを作成する、読み取る、書き込むかつ修正する関数を呼び出すよう動作可能である、条項６に記載のシステム。
【００７８】
１１．前記コードが、ユーザデータを受信する、前記ユーザデータを格納する、前記ユーザデータに対して動作を処理する、かつ変更された状態をユーザデバイスに送信する関数を呼び出すよう動作可能である、条項６に記載のシステム。
【００７９】
１２．前記コードが、データを前記仮想化データストレージサービスからサーバに転送する関数を呼び出すよう動作可能である、条項１０に記載のシステム。
【００８０】
１３．前記コードが、アプリケーションデータの格納のために、前記仮想化コンピューティング環境のデータベースとインタラクトするよう動作可能である、条項６に記載のシステム。
【００８１】
１４．前記コードが、選択されたイベントに基づいて、前記仮想化コンピューティング環境の関数を呼び出すよう動作可能である、条項６に記載のシステム。
【００８２】
１５．前記選択されたイベントが、ファイルのアップロード、アプリケーションのアクティビティ、入力デバイスアクション、またはデバイスからの出力の１つまたは複数を含む、条項１４に記載のシステム。
【００８３】
１６．前記コードが、メッセージングサービスとインタラクトする関数を呼び出すよう動作可能である、条項６に記載のシステム。
【００８４】
１７．前記コードが、アイデンティティ管理サービスとインタラクトする関数を呼び出すよう動作可能である、条項６に記載のシステム。
【００８５】
１８．非一時的なコンピュータ可読ストレージ媒体であって、１つまたは複数のコンピューティングデバイス上で実行されると、前記１つまたは複数のコンピューティングデバイスに少なくとも、
ユーザの入力データに少なくとも部分的に基づいて、入力、出力及び動作の表現をグラフィカルに描写するよう動作可能であるグラフィカルなユーザインタフェースをレンダリングさせ、
前記ユーザの入力データに少なくとも部分的に基づいて、前記入力、前記出力及び前記動作の前記表現のグラフィカルな描写をレンダリングさせ、
前記レンダリングされたグラフィカルな描写を、前記入力、前記出力及び前記動作を実装する機能を実行し、前記仮想化マルチテナントコンピューティング環境でサービスを呼び出すよう動作可能な実行可能コードに関連付けさせ、
前記実行可能コードを生成させ、前記実行可能コードの実行により、前記グラフィカルな描写によって表される前記入力、前記出力及び前記動作を実装する機能が呼び起され、前記サービスが呼び出されるコンピュータ可読命令を格納する、前記非一時的なコンピュータ可読ストレージ媒体。
【００８６】
１９．１つまたは複数のコンピューティングデバイス上で実行されると、少なくとも前記１つまたは複数のコンピューティングデバイスに、
前記ユーザの入力データを示す識別子をエンコードする第１の電子メッセージを受信し、
前記第１の電子メッセージの１つの受信に応答して、前記実行可能コードを示す第２の電子メッセージを送信するように構成されたアプリケーションプログラミングインタフェースを実装させるコンピュータ可読命令をさらに備える、条項１８に記載のコンピュータ可読ストレージ媒体。
【００８７】
２０．前記実行可能コードが、前記仮想化マルチテナントコンピューティング環境上でホストされるコンピューティングサービスを制御するよう動作可能である、条項１８に記載のコンピュータ可読ストレージ媒体。
【００８８】
図１０は、本発明の態様を実施し得る例示的な分散型コンピューティング環境を描写する図である。種々のユーザ１０００ａは、任意の種類のコンピューティングデバイス１００２ａ上で動作する種々のクライアントアプリケーションとインタラクトして、通信ネットワーク１００４を介して、データセンタ１０２０内の種々のコンピューティングノード１０１０ａ、１０１０ｂ及び１０１０ｃ上で実行される処理と通信し得る。代替として、クライアントアプリケーション１００２ｂは、ユーザの介入なしに通信し得る。通信ネットワーク１００４は、インターネット、有線かつ無線ローカルエリアネットワーク、光ファイバネットワーク、衛星通信などを含む通信技術の任意の組み合わせを備え得る。任意の数のネットワーキングプロトコルを用い得る。
【００８９】
データセンタ１０２０内で動作しているコンピューティングノード１０１０ａ、１０１０ｂ及び１０１０ｃ上で実行される処理との通信は、ゲートウェイ１００６及びルータ１００８を介して提供され得る。多数の他のネットワーク構成も用いられ得る。図１０に明示的に示されていないが、各種認証機構、ウェブサービス層、ビジネスオブジェクトまたは他の中間層が、コンピューティングノード１０１０ａ、１０１０ｂ及び１０１０ｃ上で実行される処理との通信を仲介するのに提供され得る。これらの中間層の一部は、それ自体が、コンピューティングノードの１つまたは複数上で実行される処理を備え得る。コンピューティングノード１０１０ａ、１０１０ｂ及び１０１０ｃならびにそれらで実行される処理はまた、ルータ１００８を介して互いに通信し得る。代替として、分離した通信経路が用いられ得る。一部の実施形態では、データセンタ１０２０は、追加のデータセンタと通信し、コンピューティングノード及びそれらで実行されている処理が他のデータセンタ内で動作しているコンピューティングノード及び処理と通信し得るように構成され得る。
【００９０】
コンピューティングノード１０１０ａは、１つまたは複数のプロセッサ１０１６、１つまたは複数のメモリ１０１８、及び１つまたは複数のストレージデバイス１０１４を備える物理的なハードウェアに存在するとして描写される。コンピューティングノード１０１０ａ上での処理は、オペレーティングシステムに関連して実行され得、または代替として、プロセッサ１０１６、メモリ１０１８またはストレージデバイス１０１４などの物理的なリソースと直接インタラクトするベアメタル処理として実行され得る。
【００９１】
コンピューティングノード１０１０ｂ及び１０１０ｃは、仮想マシンホスト１０１２上で動作するとして描写され、これは物理的なプロセッサ、メモリ及びストレージデバイスなどの種々の物理的なリソースに対する共有アクセスを提供し得る。コンピューティングノードをホストするのに任意の数の仮想化機構が用いられ得る。
【００９２】
図１０に描写された種々のコンピューティングノードは、ウェブサービス、データベース管理システム、ビジネスオブジェクト、モニタリング及び診断設備などをホストするように構成され得る。コンピューティングノードは、パーソナルコンピュータ、サーバ、クラスタ化コンピューティングデバイスなどの各種コンピューティングリソースを指し得る。コンピューティングノードは、例えば、セルフォン、スマートフォン、タブレット、組み込みデバイスなどの種々のコンピューティングデバイスを指し得る。ハードウェア形式で実装されると、コンピューティングノードは一般に、コンピュータ可読命令を格納するように構成された１つまたは複数のメモリ及び命令を読み取り実行するように構成された１つまたは複数のプロセッサに関連付けられる。ハードウェアベースのコンピューティングノードはまた、１つまたは複数のストレージデバイス、ネットワークインタフェース、通信バス、ユーザインタフェースデバイスなども備え得る。コンピューティングノードはまた、ハイパーバイザを有してまたは有さずに実装された仮想マシン、仮想化ベアメタル環境などの仮想化コンピューティングリソースも包含する。仮想化ベースのコンピューティングノードは、ハードウェアリソースに対する仮想化アクセス及び非仮想化アクセスを有し得る。コンピューティングノードは、オペレーティングシステム及び１つまたは複数のアプリケーションプログラムを実行するように構成され得る。一部の実施形態では、コンピューティングノードはまた、ベアメタルアプリケーションプログラムも備え得る。
【００９３】
少なくとも一部の実施形態では、本明細書に記載される技術の１つまたは複数の一部または全てを実施するサーバは、１つまたは複数のコンピュータアクセス可能媒体を含む、またはそれにアクセスするように構成されたコンピュータシステムを含み得る。図１１は、１つまたは複数のコンピュータアクセス可能媒体を含む、またはそれにアクセスするように構成されたコンピュータシステムを描写する。例示された実施形態では、コンピューティングデバイス１１００は、入力／出力（「Ｉ／Ｏ」）インタフェース１１３０を介してシステムメモリ１１２０に結合された１つまたは複数のプロセッサ１１１０ａ、１１１０ｂ及び／または１１１０ｎ（これらは単数でプロセッサ１１１０と、複数でプロセッサ（複数）１１１０と呼ばれる場合がある）を含む。コンピューティングデバイス１１００はさらに、Ｉ／Ｏインタフェース１１３０に結合されたネットワークインタフェース１１４０を含む。
【００９４】
種々の実施形態では、コンピューティングデバイス１１００は、１つのプロセッサ１１１０を含むユニプロセッサシステム、またはいくつかのプロセッサ１１１０（例えば、２つ、４つ、８つもしくは別の適切な数）を含むマルチプロセッサシステムであり得る。プロセッサ１１１０は、命令を実行することが可能な任意の好適なプロセッサであり得る。例えば、種々の実施形態では、プロセッサ１１１０は、様々な命令セットアーキテクチャ（「ＩＳＡ」）、例えば、ｘ８１１、ＰｏｗｅｒＰＣ、ＳＰＡＲＣ、もしくはＭＩＰＳ  ＩＳＡ、または任意の他の好適なＩＳＡなどのうちのいずれかを実施する汎用または組み込みプロセッサであり得る。マルチプロセッサシステムでは、プロセッサ１１１０のそれぞれは、通常同じＩＳＡを実装してよいが、必ずしも同じＩＳＡを実装しないことがある。
【００９５】
一部の実施形態では、グラフィックプロセッシングユニット（「ＧＰＵ」）１１１２は、グラフィクスレンダリング及び／または物理的な処理能力を提供することに関与し得る。ＧＰＵは、例えば、グラフィクスコンピューティングに特化された高並列プロセッサアーキテクチャを備え得る。一部の実施形態では、プロセッサ１１１０及びＧＰＵ１１１２は、１つまたは複数の同一種類のデバイスとして実装され得る。
【００９６】
システムメモリ１１２０は、プロセッサ（複数可）１１１０によってアクセス可能な命令及びデータを記憶するように構成され得る。種々の実施形態では、システムメモリ１１２０は、スタティックランダムアクセスメモリ（「ＳＲＡＭ」）、同期型ダイナミックＲＡＭ（「ＳＤＲＡＭ」）、不揮発性／フラッシュ（登録商標）タイプのメモリまたは任意の他のタイプのメモリなどの任意の適切なメモリ技術を使用して実装され得る。例示される実施形態では、上記に説明されたそれらの方法、技術及びデータなどの１つまたは複数の所望の機能を実装するプログラム命令及びデータは、コード１１２６及びデータ１１２９としてシステムメモリ１１２０内に記憶されるように示される。
【００９７】
ある実施形態では、Ｉ／Ｏインタフェース１１３０は、ネットワークインタフェース１１４０、または他の周辺インタフェースを含む、プロセッサ１１１０、システムメモリ１１２０及びデバイス内の任意の周辺デバイス間のＩ／Ｏトラフィックを調整するように構成され得る。一部の実施形態では、Ｉ／Ｏインタフェース１１３０は、データ信号をある構成要素（例えば、システムメモリ１１２０）から別の構成要素（例えば、プロセッサ１１１０）による使用に適切なフォーマットに変換するために任意の必要なプロトコル、タイミングまたは他のデータ変換を実施し得る。一部の実施形態では、Ｉ／Ｏインタフェース１１３０は、例えばペリフェラルコンポネントインターコネクト（「ＰＣＩ」）バス規格またはユニバーサルシリアルバス（「ＵＳＢ」）規格の変形などの多様なタイプの周辺バスを通じて取り付けられたデバイスに対するサポートを含み得る。一部の実施形態では、Ｉ／Ｏインタフェース１１３０の機能は、例えば、ノースブリッジ及びサウスブリッジなどの２つ以上の別々の構成要素に分けられ得る。また、一部の実施形態では、システムメモリ１１２０へのインタフェースなどのＩ／Ｏインタフェース１１３０の機能の一部または全ては、プロセッサ１１１０に直接組み込まれ得る。
【００９８】
ネットワークインタフェース１１４０は、コンピューティングデバイス１１００と、例えば、他のコンピュータシステムまたはデバイスなど、ネットワークまたはネットワーク（複数）１１６０に取り付けられた他のデバイスまたはデバイス（複数）１１６０の間でデータが交換されることを可能にするように構成され得る。種々の実施形態では、ネットワークインタフェース１１４０は、例えば、イーサネットネットワークのタイプなどの任意の適切な有線または無線汎用データネットワークを介した通信をサポートし得る。加えて、ネットワークインタフェース１１４０は、アナログ音声ネットワークもしくはデジタルファイバ通信ネットワークなどの電気通信／電話ネットワークを介して、ファイバチャネルＳＡＮ（ストレージエリアネットワーク）などのストレージエリアネットワークを介して、または任意の他の適切なタイプのネットワーク及び／もしくはプロトコルを介した通信をサポートし得る。
【００９９】
一部の実施形態では、システムメモリ１１２０は、対応する方法及び装置の実施形態を実装するための上記に記載したようなプログラム命令及びデータを記憶するように構成された、コンピュータアクセス可能媒体の一実施形態であり得る。しかしながら、他の実施形態では、プログラム命令及び／またはデータは、異なるタイプのコンピュータアクセス可能媒体上で受信、送信、または記憶され得る。一般的に言うと、コンピュータアクセス可能媒体は、Ｉ／Ｏインタフェース１１３０を介してコンピューティングデバイス１１００に結合された磁気または光学媒体、例えば、ディスクまたはＤＶＤ／ＣＤなどの非一時的記憶媒体またはメモリ媒体を含み得る。非一時的コンピュータアクセス可能記憶媒体はまた、システムメモリ１１２０または別のタイプのメモリとしてコンピューティングデバイス１１００の一部の実施形態に含まれ得る、ＲＡＭ（例えば、ＳＤＲＡＭ、ＤＤＲ  ＳＤＲＡＭ、ＲＤＲＡＭ、ＳＲＡＭなど）、ＲＯＭなどの任意の揮発性または不揮発性媒体も含み得る。さらに、コンピュータアクセス可能媒体は、送信媒体、または、ネットワークインタフェース１１４０を介して実装され得るようなものなど、ネットワーク及び／もしくは無線リンクなどの通信媒体を介して伝送される、電気、電磁気、もしくはデジタル信号などの信号を含み得る。図１１に例示されるような複数のコンピューティングデバイスの一部または全ては、例えば、各種様々なデバイス上で実行されるソフトウェア構成要素といった種々の実施形態で記載した機能を実装するのに用いられ得、サーバは機能を提供するのに協働し得る。一部の実施形態では、説明される機能の部分は、ストレージデバイス、ネットワークデバイスまたはコンピュータシステムを使用して実装され得る。本明細書で使用されるように、用語「コンピューティングデバイス」は、少なくとも全てのそれらのタイプのデバイスを指し、それらのタイプのデバイスに限定されない。
【０１００】
コンピュートノードは、コンピューティングノードと呼ばれる場合もあり、タブレットコンピュータ、パーソナルコンピュータ、スマートフォン、ゲーム機、汎用ハードウェアコンピュータ、仮想マシン、ウェブサービス、コンピューティングクラスタ及びコンピューティングアプライアンスなどの多種多様なコンピューティング環境上で実装され得る。これらのコンピューティングデバイスまたは環境のいずれかは、簡便にするために、コンピュートノードとしてまたはコンピューティングノードとして記載され得る。
【０１０１】
インターネット及び／または他のネットワークを介して、分散された一揃いのクライアントにアクセス可能な１つまたは複数のウェブサービス（様々な種類のクラウドベースコンピューティングまたはストレージなど）を提供するために、企業または公的部門組織などのエンティティによって設定されたネットワークは、プロバイダネットワークと称され得る。そのようなプロバイダネットワークには、プロバイダネットワークによって提供されるインフラストラクチャ及びウェブサービスを実装及び分配するために必要とされる、多数のデータセンタがホストする様々なリソースプール、例えば物理的及び／または仮想化コンピュータサーバ、ストレージデバイス、ネットワーキング機器などの集合などが含まれ得る。リソースは、一部の実施形態では、ストレージ用の記憶容量、インスタンスとして、関連するサービスなどのセットとして、処理するための処理能力の大きさなど、ウェブサービスに関連する種々の装置においてクライアントに提供され得る。仮想コンピューティングインスタンスは、例えば、指定された計算能力（これはＣＰＵの種類及び数、メインメモリのサイズなどを示すことによって指定され得る）及び指定されたソフトウェアスタック（例えばオペレーティングシステムの特定のバージョン、これはハイパーバイザ上で稼働し得る）を有する１つまたは複数のサーバを備え得る。
【０１０２】
コンピュータサーバ、ストレージデバイス、ネットワークデバイスなどを含む、様々な実施形態でプロバイダネットワークのリソースを実装するために、いくつかの異なるタイプのコンピューティングデバイスを単独でまたは組み合わせて使用し得る。一部の実施形態では、クライアントまたはユーザに、例えばユーザに管理者ログイン及びパスワードを与えることによって、リソースインスタンスへの直接のアクセス権が提供され得る。他の実施形態では、プロバイダネットワークオペレータは、クライアントが、例えばクライアントがインスタンスまたは実行プラットフォームに直接アクセスする必要なしに、実行プラットフォーム（アプリケーションサーバインスタンス、Ｊａｖａ（商標）、仮想マシン（「ＪＶＭ」）、汎用または特殊目的用オペレーティングシステム、種々のインタプリタ形式のまたはコンパイル形式のプログラミング言語、例えばＲｕｂｙ、Ｐｅｒｌ，Ｐｙｔｈｏｎ，Ｃ、Ｃ＋＋などをサポートするプラットフォームまたは高性能のコンピューティングプラットフォームなど）上のクライアントに代わって、アプリケーションに適した指定されたクライアントアプリケーション及びアプリケーションのスケジュール実行のために実行要件を指定することを可能にし得る。所与の実行プラットフォームは、一部の実装形態で１つまたは複数のリソースインスタンスを利用し得、他の実装形態では、複数の実行プラットフォームが１つのリソースインスタンスに対してマッピングされる場合もある。
【０１０３】
多くの環境において、異なるタイプの仮想化コンピューティング、ストレージ及び／または他のネットワークアクセス可能な機能性を実施するプロバイダネットワークのオペレータは、顧客が、種々のリソース取得モードにおいてリソースへのアクセス権を保有するまたは購入することを可能にし得る。コンピューティングリソースプロバイダは、顧客に対して、所望されるコンピューティングリソースを選択かつ起動する、アプリケーションコンポネントをコンピューティングリソースに導入する、その環境においてアプリケーションが実行するように維持するための機能を提供し得る。加えて、コンピューティングリソースプロバイダはさらに、アプリケーション変更の要望またはその必要能力として、手動でまたは自動スケーリングを通してのいずれかでアプリケーションに割り当られるリソースの数及びタイプを顧客が迅速かつ容易にスケールアップまたはスケールダウンするための機能を提供し得る。コンピューティングリソースプロバイダによって提供されるコンピューティングリソースは、別個のユニットにおいて利用可能にされる場合もあり、これはインスタンスと呼ばれてよい。インスタンスは、物理的サーバハードウェアプラットフォーム、サーバ上で実行中の仮想マシンインスタンス、または２つのいずれかの組み合わせを表し得る。様々なタイプ及び構成のインスタンスを利用可能にすることができ、異なるサイズの様々なオペレーティングシステム（ＯＳ）及び／またはハイパーバイザを実行する異なるサイズのリソース、様々なインストール済みのソフトウェアアプリケーション、ランタイムなどが含まれる。インスタンスはさらに、例えば論理領域、フォールトトレラント領域、データセンタまたは基礎を成すコンピューティングハードウェアの他の地理的な場所を表す特殊な可用性ゾーンにおいて利用可能である場合もある。インスタンスは、可用性ゾーン内で、または可用性ゾーンにわたってコピーされて、インスタンスのリダンダンシーを向上させることができ、またインスタンスは、特定の可用性ゾーン内で、または可用性ゾーンにわたって移動させられる場合もある。一例として、可用性ゾーンにおける特定のサーバとのクライアント通信に関する待ち時間は、異なるサーバとのクライアント通信に関する待ち時間より小さくなってよい。したがってインスタンスが、より高い待ち時間のサーバからより低い待ち時間のサーバに移動されることで、全体のクライアントエクスペリエンスを向上させ得る。
【０１０４】
一部の実施形態において、プロバイダネットワークは、複数の地理的領域内に編成されてよく、各領域が、１つまたは複数の可用性ゾーンを含む場合もある。可用性ゾーン（これは可用性コンテナと呼ばれる場合もある）は、所与の可用性ゾーン内のリソースが他の可用性ゾーン内の不具合から隔離されるまたは遮断されるような方法で構成された、１つまたは複数の異なる場所またはデータセンタを備え得る。すなわち、１つの可用性ゾーン内の不具合が、任意の他の可用性ゾーン内に不具合をもたらすことは予期されない場合がある。よって、リソースインスタンスの可用性のプロファイルは、異なる可用性ゾーン内の他のリソースインスタンスの可用性プロファイルから独立していることが意図される。クライアントは、複数のアプリケーションインスタンスをそれぞれの可用性ゾーンにおいて起動することによって、１つの場所においてそのアプリケーションを障害から保護することができ得る。同時に、一部の実装形態では、同一の地理的領域内にあるリソースインスタンス間に費用が安く、低待ち時間のネットワーク接続性を設け得る（かつ同一の可用性ゾーンのリソース間のネットワーク送信がさらに高速にされ得る）。
【０１０５】
先行するセクションに記載されたプロセス、方法及びアルゴリズムの各々は、１つまたは複数のコンピュータまたはコンピューティングプロセッサによって実行されるコードモジュールによって、完全にまたは一部が自動的に具現化されてよい。コードモジュールは、ハードドライブ、ソリッドステートメモリ、光学ディスク、及び／または同種のもの、などの任意の種類の非一時的コンピュータ可読媒体または他のコンピュータストレージデバイスに記憶されてよい。プロセス及びアルゴリズムは、特定用途向けの回路において部分的にまたは全体が実装されてよい。開示されるプロセス及びプロセスステップの結果は、永久的に記憶されてよい、またはそうでなければ例えば揮発性または不揮発性ストレージなどの任意のタイプの非一時的コンピュータストレージに記憶されてよい。
【０１０６】
上記に記載した種々の特徴及びプロセスは、互いから独立して使用されてよい、または様々な方法で組み合わされる場合もある。全ての可能性のある組み合わせ及び副次的な組み合わせは、本開示の範囲内にあることが意図されている。加えて、特定の方法またはプロセスブロックは、一部の実装形態では省略される場合もある。本明細書に記載される方法及びプロセスは、任意の特定の順序に限定されるものではなく、それに関連するブロックまたは状況は、適切である他の順序で行うこともできる。例えば記載されるブロックまたは状況は、具体的に開示されるもの以外の順番で行われる場合もある、または複数のブロックもしくは状況が、１つのブロックまたは状況に組み合わされる場合もある。一例のブロックまたは状況は、連続して、並行して、または何らかの他のやり方で行われる場合もある。ブロックまたは状況が開示される一例の実施形態に加えられる、または開示される一例の実施形態から削除される場合もある。
【０１０７】
種々のアイテムが、使用される間、メモリ内またはストレージ上に記憶されるように例示されており、これらのアイテムまたはその一部は、メモリ管理及びデータの完全性の目的で、メモリと他のストレージデバイスの間で移動される場合もあることも理解されたい。代替として、他の実施形態では、ソフトウェアモジュール及び／またはシステムの一部または全ては、メモリ内または別のデバイス上で実行されてよく、コンピュータ間の通信を介して、例示されるコンピューティングシステムと通信する場合もある。さらに、一部の実施形態では、システム及び／またはモジュールの一部または全ては、少なくとも部分的にファームウェア及び／またはハードウェアなど他の方法で実装されるまたは設けられる場合もあり、これに限定するものではないが１つまたは複数の特定用途向け集積回路（「ＡＳＩＣ」）、標準的な集積回路、制御装置（例えば適切な命令を実行することによる、かつマイクロコントローラ及び／または埋め込み式制御装置を含む）、フィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）、コンプレックスプログラマブル論理デバイス（「ＣＰＬＤ」）などが含まれる。モジュール、システム及びデータ構造の一部または全てはまた、適切な接続を介して適切なドライブによって読み取られるコンピュータ可読媒体、例えばハードディスク、メモリ、ネットワークまたは持ち運び可能なメディア製品上に記憶される場合もある（例えばソフトウェア命令または構造化データとして）。システム、モジュール及びデータ構造は、生成されたデータ信号（例えば搬送波または他のアナログもしくはデジタル式に伝播された信号の一部として）として、無線式及び有線／ケーブル式媒体を含めた、多様なコンピュータ可読伝送媒体上で伝送されてもよく、（例えば単一のまたは複合的なアナログ信号として、または複数の別個のデジタルパケットもしくはフレームの一部として）種々の形態を採ることができる。そのようなピュータプログラム製品は、他の実施形態では他の形態を採る場合もある。したがって本発明は、他のコンピュータシステム構成とともに実施される場合もある。
【０１０８】
本明細書で使用される条件付き文言、例えばとりわけ「ｃａｎ（できる）」、「ｃｏｕｌｄ（できるだろう）」、「ｍｉｇｈｔ（可能性がある）」、「ｍａｙ（してよい）」などは、特に明記しない限り、または使用される文脈の中で他の意味で理解されない限り、特定の実施形態が特定の特徴、要素及び／またはステップを含み、他の実施形態は特定の特徴、要素及び／またはステップを含まないことを伝えることが一般に意図されている。したがって、係る条件付き文言は、特徴、要素及び／もしくはステップが１つまたは複数の実施形態にいずれにせよ必要とされること、または１つまたは複数の実施形態が必ず、作成者の考えの提供または手助けがあって、またはそれらなしで、これらの特徴、要素及び／もしくはステップが含まれるのかどうか、または任意の特定の実施形態で実行されるべきかどうかを決定するための論理を含むことを暗示することは一般に意図されていない。用語「ｃｏｍｐｒｉｓｉｎｇ（含む、備える）」、「ｉｎｃｌｕｄｉｎｇ（含む）」、「ｈａｖｉｎｇ（有する）」などは同義語であり、オープンエンド方式で包括的に使用され、追加の要素、特徴、行為、動作などを排除しない。また、用語「ｏｒ（または）」は、使用されるとき、例えば要素のリストを接続するために、用語「ｏｒ（または）」がリスト中の要素の１つ、いくつか、またはすべてを意味するようにその包括的な意味で（かつその排他的な意味ではなく）使用される。
【０１０９】
特定の例の実施形態を記載してきたが、これらの実施形態は、例示的なものに過ぎず、本明細書に開示された発明の範囲を限定するようには意図されていない。よって上述の記載においては、任意の特定の機構、特徴、ステップ、モジュールまたはブロックが必須である、または絶対に必要であることを示唆することは意図されていない。当然のことながら、本明細書に記載される新規の方法及びシステムは、様々な他の形態で具現化されてよく、さらに本明細書に記載される方法及びシステムの形態における様々な省略、代替及び変更は、本明細書に開示される発明の精神から逸脱することなくなされてよい。添付の特許請求の範囲及びその等価物は、本明細書に開示される特定の発明の精神及び範囲内にあるそのような形態または修正形態を包含するように意図されている。
【図１】
2019215877.tif 000003
【図２】
2019215877.tif 000004
【図３】
2019215877.tif 000005
【図４】
2019215877.tif 000006
【図５】
2019215877.tif 000007
【図６】
2019215877.tif 000008
【図７】
2019215877.tif 000009
【図８】
2019215877.tif 000010
【図９】
2019215877.tif 000011
【図１０】
2019215877.tif 000012
【図１１】
2019215877.tif 000013