"ビジネス論理ソースコードを入力するステップであって、前記ビジネス論理ソースコードは、実質的な量の任意のプラットフォームに特有のコードを含有せず、前記ビジネス論理ソースコードは、アプリケーションに特有のアプリケーションの実質的にすべての機能性を定義する、ステップと、第1のプラットフォームと関連付けられたプラットフォーム特有のコードおよび前記ビジネス論理ソースコードをコンパイルし、それによって、第1の一式のコンピュータ実行可能命令を生成するステップであって、前記第1の一式のコンピュータ実行可能命令の実行は、前記第1のプラットフォームを提供するデバイスに、前記アプリケーションを提供させる、ステップと、第2のプラットフォームと関連付けられたプラットフォーム特有のコードおよび前記ビジネス論理ソースコードをコンパイルし、それによって、第2の一式のコンピュータ実行可能命令を生成するステップであって、前記第2の一式のコンピュータ実行可能命令の実行は、前記第2のプラットフォームを提供するデバイスに、前記アプリケーションを提供させる、ステップとを含む、方法。第1の一式のソースコードをコンパイルすることによって、第1の一式のコンピュータ実行可能命令を生成するステップであって、前記第1の一式のソースコードは、ビジネス論理ソースコードを含み、前記第1の一式のコンピュータ実行可能命令は、第1のプラットフォーム上での実行に好適である、ステップと、第2の一式のソースコードをコンパイルすることによって、第2の一式のコンピュータ実行可能命令を生成するステップであって、前記第2の一式のソースコードは、前記ビジネス論理ソースコードを含み、前記第2の一式のコンピュータ実行可能命令は、第2のプラットフォーム上での実行に好適である、ステップとを含み、前記ビジネス論理ソースコードは、実質的に、前記第1のプラットフォームに特有のコードがなく、実質的に、前記第2のプラットフォームに特有のコードがなく、前記ビジネス論理ソースコードは、前記アプリケーションに特有である、実質的にすべての機能性を定義する、方法。前記第1の一式のコンピュータ実行可能命令を生成するステップは、第1の一式のプラットフォーム特有のコードをコンパイルするステップを含み、前記第1の一式のプラットフォーム特有のコードは、前記第1のプラットフォームに特有であり、前記第2の一式のコンピュータ実行可能命令を生成するステップは、第2の一式のプラットフォーム特有のコードをコンパイルするステップを含み、前記第2の一式のプラットフォーム特有のコードは、前記第2のプラットフォームに特有である、請求項2に記載の方法。外部の第三者によって提供される、データ記憶システムから、前記第1の一式のプラットフォーム特有のコードをコピーするステップをさらに含む、請求項3に記載の方法。前記第1の一式のコンピュータ実行可能命令を生成するステップは、レイヤーソースコードをコンパイルするステップを含み、前記レイヤーソースコードは、前記第1のプラットフォームまたは前記第2のプラットフォームに特有のコードを含有せず、前記レイヤーソースコードは、コンテンツをレイヤーモジュールにロードする、ロード動作を含む、レイヤークラスを定義し、前記レイヤーモジュールは、前記レイヤークラスのインスタンスであり、前記第2の一式のコンピュータ実行可能命令を生成するステップは、前記レイヤーソースコードをコンパイルするステップを含み、前記第1の一式のプラットフォーム特有のコードは、前記第1のプラットフォーム上で実行されると、前記レイヤーモジュールを使用して、レイヤーをユーザに提示するために使用可能な出力データを生成する、動作を定義し、前記第2の一式のプラットフォーム特有のコードは、前記第2のプラットフォーム上で実行されると、前記レイヤーモジュールを使用して、前記レイヤーを別のユーザに提示するために使用可能な出力データを生成する、動作を定義する、請求項3に記載の方法。前記アプリケーションは、一式のレイヤーを有し、前記レイヤーはそれぞれ、レイヤーURIと関連付けられ、前記第1の一式のコンピュータ実行可能命令を生成するステップは、アプリケーションソースコードをコンパイルするステップを含み、前記アプリケーションソースコードは、前記第1のプラットフォームまたは前記第2のプラットフォームに特有のコードを含有せず、前記アプリケーションソースコードは、アプリケーションモジュールの機能性を定義し、前記アプリケーションモジュールは、ナビゲーション要求が受信されると、呼び出される、ナビゲーション動作を有し、前記ナビゲーション動作は、前記ナビゲーション要求によって指定されたレイヤーURIが、前記レイヤーモジュールと関連付けられているとき、ロード要求を前記レイヤーモジュールに提供し、前記ロード要求は、前記レイヤーモジュールのロード動作を行うための要求を含む、請求項5に記載の方法。前記第1の一式のプラットフォーム特有のコードは、第1のバインディングモジュールの機能性を定義し、前記第1のバインディングモジュールは、レイヤーモジュールを処理し、前記第1のプラットフォームにネイティブである、ユーザインターフェース特徴を使用して、レイヤーを提示するために使用可能な出力データを生成する、レイヤー出力動作を有し、前記第2の一式のプラットフォーム特有のコードは、第2のバインディングモジュールの機能性を定義し、前記第2のバインディングモジュールは、レイヤーモジュールを処理し、前記第2のプラットフォームにネイティブである、ユーザインターフェース特徴を使用して、前記レイヤーを提示するために使用可能な出力データを生成する、異なるレイヤー出力動作を有する、請求項6に記載の方法。前記第1の一式のコンピュータ実行可能命令を生成するステップは、第1のパッケージを生成するステップを含み、前記第1のパッケージは、前記レイヤーモジュールの機能性を定義する、コンピュータ実行可能命令と、前記アプリケーションモジュールと、前記第1のバインディングモジュールとを含み、前記第1のパッケージは、前記第1のプラットフォームを提供するコンピューティングデバイス上でのインストールに好適である、請求項7に記載の方法。デバイス上で実行されると、前記デバイスに、前記アプリケーションの動作を行うと考えられる、シェルアプリケーションを提供させる、コンピュータ実行可能命令を含む、シェルアプリケーションパッケージを生成するステップをさらに含み、前記シェルアプリケーションは、実際には、ナビゲーション要求を前記アプリケーションモジュールに送信し、直列化されたインターフェースデータを前記第1のバインディングモジュールから受信し、前記アプリケーションモジュールおよび前記第1のバインディングモジュールは、サーバシステムで動作する、請求項6に記載の方法。前記一式の命令を生成するステップは、前記第1のバインディングモジュールの機能性を定義する命令を含むクライアントパッケージを生成するステップであって、前記クライアントパッケージは、前記第1のプラットフォームを提供するコンピューティングデバイス上でのインストールに好適である、ステップと、前記レイヤーモジュールおよび前記アプリケーションモジュールの機能性を定義する命令を含むサーバパッケージを生成するステップであって、前記サーバパッケージは、サーバデバイス上でのインストールに好適である、ステップとを含む、請求項6に記載の方法。前記第1の一式のコンピュータ実行可能命令を、前記第1のプラットフォームを提供し、前記第1の一式のコンピュータ実行可能命令を実行可能である、デバイスに配信するステップと、前記第2の一式のコンピュータ実行可能命令を、前記第2のプラットフォームを提供し、前記第2の一式のコンピュータ実行可能命令を実行可能である、デバイスに配信するステップとをさらに含む、請求項2に記載の方法。前記第1の一式のコンピュータ実行可能命令を配信するステップは、前記第1の一式のコンピュータ実行可能命令をアプリケーションストアでの購入に利用可能にするステップを含み、前記第2の一式のコンピュータ実行可能命令を配信するステップは、前記第2の一式のコンピュータ実行可能命令を前記アプリケーションストアまたは別のアプリケーションストアでの購入に利用可能にするステップを含む、請求項11に記載の方法。前記第1の一式のコンピュータ実行可能命令を配信するステップは、前記第1の一式のコンピュータ実行可能命令を前記第1のプラットフォームを提供する組織内のデバイスにプッシュするステップを含み、前記第2の一式のコンピュータ実行可能命令を配信するステップは、前記第2の一式のコンピュータ実行可能命令を前記第2のプラットフォームを提供する組織内のデバイスにプッシュするステップを含む、請求項11に記載の方法。前記ビジネス論理ソースコードは、どのプラットフォームが前記アプリケーションを起動しているかに応じて、条件付きで実行される、コードを含まない、請求項2に記載の方法。第1の一式のプラットフォーム特有のコードおよび第2の一式のプラットフォーム特有のコードを1人以上の外部の第三者から取得するステップであって、前記第1の一式のプラットフォーム特有のコードは、第1のプラットフォームと関連付けられ、前記第2の一式のプラットフォーム特有のコードは、第2のプラットフォームと関連付けられる、ステップと、第1のアプリケーションのためのビジネス論理ソースコードを展開するステップであって、前記ビジネス論理ソースコードは、前記第1のアプリケーションに特有の前記第1のアプリケーションの実質的にすべての機能性を定義し、前記第1の一式のプラットフォーム特有のコードおよび前記第2の一式のプラットフォーム特有のコードは、実質的に、前記第1のアプリケーションに特有のコードがない、ステップと、1つ以上のコンピューティングデバイスを使用して、第1の一式のコンピュータ実行可能命令および第2の一式のコンピュータ実行可能命令を生成するステップとを含み、前記1つ以上のコンピューティングデバイスは、第1の一式のソースコードをコンパイルすることによって、前記第1の一式のコンピュータ実行可能命令を生成し、前記第1の一式のソースコードは、前記ビジネス論理ソースコードおよび前記第1の一式のプラットフォーム特有のコードを含み、前記1つ以上のコンピューティングデバイスは、第2の一式のソースコードをコンパイルすることによって、前記第2の一式のコンピュータ実行可能命令を生成し、前記第2の一式のソースコードは、前記ビジネス論理ソースコードおよび前記第2の一式のプラットフォーム特有のコードを含む、方法。第2のアプリケーションのためのビジネス論理ソースコードを展開するステップと、前記第2のアプリケーションのためのビジネス論理ソースコード、前記第1の一式のプラットフォーム特有のソースコード、および前記第2の一式のプラットフォーム特有のソースコードを使用して、前記第1および第2のプラットフォーム上での実行に好適な一式のコンピュータ実行可能命令を生成するステップとをさらに含む、請求項15に記載の方法。前記第1の一式のコンピュータ実行可能命令を第1のデバイスにインストールするステップであって、前記第1のデバイスは、前記第1のプラットフォームを提供し、前記第1のデバイスによる前記第1の一式のコンピュータ実行可能命令の実行は、前記第1のデバイスに、前記第1のプラットフォームにネイティブである、ユーザインターフェース特徴のみを使用して、前記第1のアプリケーションのユーザインターフェースを提示させる、ステップと、前記第2の一式のコンピュータ実行可能命令を第2のデバイスにインストールするステップであって、前記第2のデバイスは、前記第2のプラットフォームを提供し、前記第2のデバイスによる前記第2の一式のコンピュータ実行可能命令の実行は、前記第2のデバイスに、前記第2のプラットフォームにネイティブである、ユーザインターフェース特徴のみを使用して、前記第1のアプリケーションのユーザインターフェースを提示させる、ステップとをさらに含む、請求項15に記載の方法。1つ以上のデータ記憶メディアであって、コンピュータ実行可能命令と、アプリケーションのためのビジネス論理ソースコードであって、実質的に、任意のプラットフォームに特有のソースコードがなく、前記アプリケーションに特有である、実質的にすべての機能性を定義する、ビジネス論理ソースコードとを記憶する、1つ以上のデータ記憶メディアと、前記命令を前記1つ以上のデータ記憶メディアから読み取り、前記命令を実行する、処理ユニットであって、前記処理ユニットによる前記命令の実行は、前記コンピューティングシステムに、前記ビジネス論理ソースコードを使用し、複数のパッケージを生成させ、前記パッケージは、異なるプラットフォーム上での実行に好適であり、前記プラットフォーム上での前記パッケージの実行は、前記プラットフォームを提供するコンピューティングデバイスに、前記アプリケーションを提供させる、処理ユニットとを含む、コンピューティングシステム。前記異なるプラットフォームは、異なるタイプのモバイルデバイスによって提供される、プラットフォームを含む、請求項18に記載のコンピューティングシステム。命令を記憶するコンピュータ可読データ記憶メディアであって、前記命令は、コンピューティングシステムの処理ユニットによって実行されると、前記コンピューティングシステムに、第1のプラットフォームと関連付けられたプラットフォーム特有のコードおよびビジネス論理ソースコードをコンパイルすることによって、第1の一式の命令を生成することであって、前記第1の一式の命令の実行は、前記第1のプラットフォームを提供するデバイスに、アプリケーションを提供させ、前記ビジネス論理ソースコードは、実質的な量の任意のプラットフォームに特有のコードを含有せず、前記ビジネス論理ソースコードは、前記アプリケーションに特有であるアプリケーションの実質的にすべての機能性を定義させる、ことと、第2のプラットフォームと関連付けられたプラットフォーム特有のコードおよび前記ビジネス論理ソースコードをコンパイルすることによって、第2の一式の命令を生成することであって、前記第2の一式の命令の実行は、前記第2のプラットフォームを提供するデバイスに、前記アプリケーションを提供させる、こととを行わせる、コンピュータ可読データ記憶メディア。前記ビジネス論理ソースコードは、複数のレイヤーを定義し、前記第1の一式の命令の実行は、前記第1のプラットフォームを提供するデバイスに、コンテンツを前記レイヤーにロードさせ、および前記第1のプラットフォームにネイティブである、ユーザインターフェース特徴を使用して、前記レイヤー内のコンテンツを表示させ、前記第2の一式の命令の実行は、前記第2のプラットフォームを提供するデバイスに、前記コンテンツを前記レイヤーにロードさせ、前記第1のプラットフォームにネイティブである、ユーザインターフェース特徴を使用して、前記レイヤー内のコンテンツを表示させる、請求項20に記載のコンピュータ可読データ記憶メディア。一式のコンピュータ可読命令は、一部分において、ビジネス論理ソースコードをコンパイルすることによって、生成される。デバイスによって提供されたプラットフォーム上でネイティブに実行されると、該一式のコンピュータ可読命令は、アプリケーションを提供する。別の一式のコンピュータ可読命令は、一部分において、同一ビジネス論理ソースコードをコンパイルすることによって、生成される。別のデバイスによって提供された別のプラットフォーム上でネイティブに実行されると、該別の一式のコンピュータ可読命令は、同一アプリケーションを提供する。該ビジネス論理ソースコードは、任意のプラットフォームに特有のコードを含有しない。さらに、該ビジネス論理ソースコードは、アプリケーションのすべてのアプリケーション特有の機能性を定義する。図1は、アプリケーションを開発および配信するための例示的システム100を例証する、ブロック図である。図1の実施例では、開発者102は、アプリケーションを開発する。アプリケーションは、特有の機能性をユーザに提供するためのプログラムである。開発者102は、種々の機能性を提供する、アプリケーションを開発することができる。例えば、開発者102は、最もよく売れている本のリストを表示するためのアプリケーションを開発することができる。別の実施例では、開発者102は、ユーザが機械部品を注文するのを支援する、アプリケーションを開発することができる。システム100は、一式のコンピューティングデバイス104A-104N集合的に、コンピューティングデバイス104を含む。図中、要素間の楕円形は、明確にするために、1つ以上の類似要素が、図から省略されていることを示す。文字A-Nを含む、参照番号は、最小または最大数の要素を示すことを意図しない。コンピューティングデバイスは、データを処理する、デバイスである。例示的タイプのコンピューティングデバイスは、電話、スマートフォン、フィーチャーフォン、タブレットコンピュータ、ネットブックコンピュータ、ノートブックコンピュータ、ハンドヘルドゲームデバイス、パーソナルメディアプレーヤ、および車載コンピュータ等のモバイルデバイスを含む。モバイルデバイスは、概して、手で搬送するように設計される、コンピューティングデバイスである。異なるモバイルデバイスは、異なるタイプのプラットフォームを提供する。例示的タイプのコンピューティングデバイスはまた、デスクトップコンピュータ、家庭用または市販器具、テレビセットトップボックス、デジタルビデオレコーダデバイス、テレビ、ゲームコンソール、ゲーム機器、売場専用コンピュータ、電子的在庫管理デバイス、産業コンピューティングデバイス、サーバコンピュータ、およびデータを処理する他のタイプのデバイスを含む。図1の実施例では、一式のコンピューティングデバイス104は、スマートフォン、フィーチャーフォン、デスクトップコンピュータ、およびラップトップコンピュータを含む。他の実施形態は、他のタイプのコンピューティングデバイスを含むことができる。コンピューティングデバイス104の異なるものは、異なるプラットフォームを提供する。プラットフォームは、アプリケーションを起動することができる、フレームワークである。例示的タイプのプラットフォームは、MicrosoftCorp.からのWINDOWSPHONE7登録商標オペレーティングシステム、AppleInc.からのIOS登録商標オペレーティングシステム、GoogleInc.からのANDROID登録商標オペレーティングシステム、MicrosoftCorp.からのWINDOWS7登録商標オペレーティングシステム、Telnetフレームワーク、およびアプリケーションを起動することができる他のタイプのフレームワークを含む。開発者102は、開発者コンピューティングシステム106を使用して、アプリケーションのバージョンが、コンピューティングデバイス104によって提供されるプラットフォーム上で起動可能であるように、アプリケーションを開発する。用語コンピューティングシステムは、1つ以上のコンピューティングデバイスを備える、システムを包含する。開発者コンピューティングシステム106は、開発環境108を提供し、アプリケーションを開発する際、開発者102を補助する。アプリケーションを開発する際、開発者102を補助するために、開発環境108は、開発者102が、アプリケーションのためのソースコードを調製するのを支援する、ツールを提供する。例えば、開発環境108は開発者102が、アプリケーションのためのソースコードを調製するのを支援する、テキスト編集ツールおよび試験ツール、を提供することができる。加えて、開発環境108は、複数のパッケージ112Aから112N集合的に、パッケージ112を生成する。パッケージ112は、同一アプリケーションに対応することができ、各パッケージは、実行される、または別様に、異なるプラットフォームと関連付けられるようにコンパイルされる。パッケージ112は、異なる一式のコンピュータ可読命令を含有する。パッケージ112の異なるものにおける命令は、パッケージ112と関連付けられたプラットフォーム上でネイティブに実行することができる。例えば、パッケージ112Aは、第1のプラットフォームが、ネイティブに実行することができる、命令を含有することができ、パッケージ112Nは、第2のプラットフォームがネイティブに実行することができる、命令を含有することができる。パッケージ112内の命令の実行は、アプリケーションをユーザに提供させる。いくつかの実施形態では、一式のパッケージ112はまた、実行あるいは同一プラットフォームまたは他のプラットフォームとの関連付けのための異なるアプリケーションを含むことができる。開発環境108は、一式のソースコードをコンパイルすることによって、パッケージ112を生成する。各一式のソースコードは、ビジネス論理ソースコード110および異なる一式のプラットフォーム特有のソースコード111を含む。言い換えると、開発者102は、ビジネス論理ソースコード110および一式のプラットフォーム特有のソースコード111を使用して、パッケージ112を生成する。開発環境108は、ビジネス論理ソースコード110を一式のプラットフォーム特有のソースコード111の異なるものとコンパイルすることによって、異なるプラットフォームのための異なる一式のコンピュータ実行可能命令を生成する。ビジネス論理ソースコード110は、アプリケーションに特有である、実質的にすべての機能性を定義する。例えば、ビジネス論理ソースコード110は、アプリケーションによって表示されるべきデータを生成または読み出す、機能性を定義することができる。いくつかの実施形態では、ビジネス論理ソースコード110は、アプリケーションに特有のすべての機能性を定義する。他の実施形態では、ビジネス論理ソースコード110外のごく一部のコードが、アプリケーションに特有の機能性を定義する、それに影響を及ぼす、または作用する。例えば、そのような実施形態では、ビジネス論理ソースコード110外の100未満のコードラインが、アプリケーションに特有の機能性を定義する。ビジネス論理ソースコード110は、実質的に、任意のプラットフォームに特有のコードがない。いくつかの実施形態では、ビジネス論理ソースコード110は、任意のプラットフォームに特有のコードまたは機能コードを含むことができない。例えば、いくつかの実施形態では、ビジネス論理ソースコード110は、ANDROID登録商標プラットフォーム、WINDOWSPHONE7登録商標プラットフォーム、または任意の他のプラットフォームのAPIに特有のコードを含まない。別の実施例では、ビジネス論理ソースコード110は、どのプラットフォームがアプリケーションを起動しているかに応じて、条件付きで実行される、コードを含まない。さらに別の実施例では、ビジネス論理ソースコード110は、アプリケーションに、アプリケーションを起動しているプラットフォームに応じて、異なるコンテンツを提示させる、または異なるナビゲーション構造を有させる、コードを含んでいない場合がある。他の実施形態では、ビジネス論理ソースコード110は、プラットフォームに特有のごく一部のコードを含むことができる。例えば、いくつかの実施形態では、ビジネス論理ソースコード110は、特定のプラットフォームに特有の20未満のコードラインを含む。一式のプラットフォーム特有のソースコード111は、アプリケーションが、特有のプラットフォーム上で動作するのを支援する、コードを含有する。一式のプラットフォーム特有のコード111は、異なるプラットフォームと関連付けられる。一式のプラットフォーム特有のコード111は、実質的に、アプリケーションに特有の機能性を定義する、コードがない。いくつかの実施形態では、一式のプラットフォーム特有のコード111は、特定のアプリケーションに特有の機能性を定義する、任意のコードを含まない。例えば、いくつかの実施形態では、一式のプラットフォーム特有のコード111は、特有のアプリケーションのユーザインターフェース内のコンテンツを定義するコード、ユーザがアプリケーションをナビゲートする方法を定義するコード、または具体的に識別されたアプリケーションに対してのみ実行されるコードのブロックを含んでいない場合がある。いくつかの実施形態では、一式のプラットフォーム特有のコード111は、特定のアプリケーションに特有の機能性を定義する、それに影響を及ぼす、または作用する、ごく一部のコードを含む。例えば、いくつかの実施形態では、一式のプラットフォーム特有のコード111はそれぞれ、特定のアプリケーションに特有の機能性を定義する、20未満のコードラインを含む。一式のプラットフォーム特有のコード111は、実質的に、アプリケーションに特有の機能性を定義する、コードがないため、開発者102および/または他の開発者は、一式のプラットフォーム特有のコード111に任意のまたは少なくとも実質的変更を行うことなく、多くのアプリケーションにおいて、一式のプラットフォーム特有のコード111を再使用することができる。例えば、開発者102は、付加的アプリケーションのためのビジネス論理ソースコードを開発することができる。本実施例では、開発者102は、次いで、付加的アプリケーションのためのビジネス論理ソースコードとともに、以前に使用された一式のプラットフォーム特有のソースコードを使用して、異なるプラットフォーム上での実行に好適な一式のコンピュータ実行可能命令を生成することができる。いくつかの実施形態では、開発者102は、アプリケーションとの併用のために、プラットフォーム特有のコード111を適応するために、20未満のコードラインを修正する必要があり得る。さらに、いくつかの実施形態では、開発者102は、アプリケーションとの併用のために、プラットフォーム特有のコード111を適応するために、コードをコメントアウトする、コードに関するコメントを除去する、またはパラメータの値を修正することのみ必要であり得る。種々の実施形態では、開発者102は、種々の方法において、一式のプラットフォーム特有のコード111を取得することができる。例えば、開発者102は、一式のプラットフォーム特有のコード111を1人以上の外部の第三者から取得することができる。本実施例では、1人以上の外部の第三者は、販売業者、小売業者、コンサルタント、他の開発者、あるいは開発者102または開発者102が属する組織とは別個の他の事業体を含むことができる。さらに、本実施例では、開発者102は、金銭の支払等、価値のあるアイテムまたはサービスと引き換えに、一式のプラットフォーム特有のコード111を1人以上の外部の第三者から取得することができる。さらに、本実施例では、開発者コンピューティングシステム106は、一式のプラットフォーム特有のコード111を1人以上の外部の第三者によって提供されるデータ記憶システムから、ダウンロードまたは別様にコピーすることができる。別の実施例では、開発者102は、一式のプラットフォーム特有のコード111を書くことができる。いくつかの実施形態では、一式のプラットフォーム特有のコード111は、サービスとしてのソフトウェアSaaSベースで利用可能となることができる。いくつかの実施形態では、パッケージ112は、一式のプラットフォーム特有のコード111からコンパイルされたコンピュータ実行可能命令を含む。例えば、パッケージ112Aが、所与のプラットフォームと関連付けられる場合、パッケージ112Aは、所与のプラットフォームと関連付けられる、一式のプラットフォーム特有のコード111のうちの1つからコンパイルされたコンピュータ実行可能命令を含むことができる。開発環境108が、パッケージ112を生成後、パッケージ112は、データ記憶システム114内に記憶される。種々の実施形態は、種々の方法において、データ記憶システム114を実装する。例えば、いくつかの実施形態は、データ記憶システム114をファイルシステムとして実装する。別の実施例では、データ記憶システム114は、関連データベースとして実装することができる。コンピューティングデバイス104は、パッケージ112をデータ記憶システム114から取得する。種々の実施形態では、コンピューティングデバイス104は、種々の方法において、パッケージ112をデータ記憶システム114から取得する。例えば、コンピューティングデバイス104は、パッケージ112をデータ記憶システム114から読み出し、パッケージ112をコンピューティングデバイス104に送信する、要求をサーバ図示せずに送信することによって、パッケージ112のうちの適切なものを取得することができる。別の実施例では、コンピューティングデバイスは、データ記憶システム114からコンピューティングデバイス104のうちの1つ以上に、パッケージ112をプッシュする、配信プロセスを行うことができる。開発者コンピューティングシステム106を使用して、または別様に、本明細書に開示されるように、開発されるアプリケーションは、いくつかの異なるシステムを使用して、配信することができる。例えば、図2は、アプリケーションを配信するための多くの可能性として考えられるシステムの中でもとりわけ、アプリケーションを配信するためのシステムの例示的代替実施形態のブロック図を例証する。図2の実施例では、アプリケーション配信システム200は、図1の実施例に関して前述のように、データ記憶システム114およびコンピューティングデバイス104を含む。パッケージ112を取得するために、コンピューティングデバイス104は、ネットワーク202を介して、アプリケーションストア204と通信する。ネットワーク202は、種々のタイプのネットワークを備えることができる。例えば、ネットワーク202は、インターネット、ローカルエリアネットワーク、キャンパスエリアネットワーク、または別のタイプのネットワークを備えることができる。アプリケーションストア204は、ソフトウェアアプリケーションのための電子マーケットである。例えば、アプリケーションストア204は、AppleInc.のAPPSTORE登録商標、Google,Inc.のAndroidMarket、MicrosoftCorp.のWindows登録商標PhoneMarketplace、ResearchInMotionLtd.のAPPWORLD登録商標、Amazon.com、またはソフトウェアアプリケーションのための別の電子マーケットであり得る。いくつかの実施形態では、アプリケーションストア204の所有者またはオペレータは、データ記憶システム114を所有または操作してもよい。他の実施形態では、アプリケーションストア204およびデータ記憶システム114は、異なる事業体によって、所有および/または操作される。コンピューティングデバイス104のユーザは、コンピューティングデバイス104を使用して、アプリケーションストア204を通して、アプリケーションを購入することができる。コンピューティングデバイス104のうちの1つのユーザが、アプリケーションを購入すると、アプリケーションストア204は、パッケージ112のうちの1つを読み出し、コンピューティングデバイスにパッケージを伝送する。いくつかの事例では、コンピューティングデバイス104のユーザは、異なるアプリケーションストアからの異なるプラットフォームと関連付けられる、パッケージ112のものを購入することができる。図3は、アプリケーションを配信するためのシステムの別の例示的代替実施形態を例証する、ブロック図である。図3の実施例では、アプリケーション配信システム300は、データ記憶システム114を含む。データ記憶システム114は、パッケージ112を記憶する。パッケージ112を取得するために、コンピューティングデバイス104は、ネットワーク202を介して、配信システム302と通信する。配信システム302は、自動的に、パッケージ112をコンピューティングデバイス104に配信する、プロセスを行う。言い換えると、配信システム302は、パッケージ112をコンピューティングデバイス104にプッシュする。例えば、コンピューティングデバイス104は、組織と関連付けることができ、パッケージ112Aは、第1のプラットフォームと関連付けることができ、パッケージ112Nは、第2の異なるプラットフォームと関連付けることができる。本実施例では、配信システム302は、コンピューティングデバイス104と通信し、コンピューティングデバイス104のうちのどれが、第1のプラットフォームを提供し、コンピューティングデバイス104のうちのどれが、第2のプラットフォームを提供するかを判定することができる。本実施例では、配信302は、パッケージ112Aを第1のプラットフォームを提供するコンピューティングデバイス104にプッシュし、パッケージ112Nを第2のプラットフォームを提供するコンピューティングデバイス104にプッシュする。そのような自動化された配信プロセスを行うことは、正確なソフトウェアが、企業のコンピューティングデバイスにインストールされることを確実にするために、組織環境において有用であり得る。図4は、アプリケーションのコンピュータ可読命令を生成するための例示的システム400を例証する、ブロック図である。図4の実施例に例証されるように、コンパイラアプリケーション402は、パッケージ112を生成する。異なる実施形態では、パッケージ112は、アーカイブ形式であってもよく、またはそうでなくてもよい。いくつかの実施形態では、コンパイラアプリケーション402は、開発環境108の一部である。他の実施形態では、コンパイラアプリケーション402は、開発環境108と別個である。コンパイラアプリケーション402は、ビジネス論理ソースコード110および一式のプラットフォーム特有のソースコード111のうちの1つ以上をコンパイルすることによって、パッケージ112を生成する。前述のように、ビジネス論理ソースコード110は、アプリケーションに特有のアプリケーションの機能性を定義する。ビジネス論理ソースコード110は、任意の所与のプラットフォームに特有のコードを含まない。一式のプラットフォーム特有のソースコード111は、アプリケーションが、特有のプラットフォーム上で動作するのを支援する、コードを含有する。一式のプラットフォーム特有のソースコード111は、特定のプラットフォームに特有である。図4の実施例に例証されるように、ビジネス論理ソースコード110は、アプリケーションソースコード404およびレイヤーソースコード406を備える。アプリケーションソースコード404およびレイヤーソースコード406は、アプリケーション特有の機能性を定義し、実質的に、任意の所与のプラットフォームに特有のコードがない。アプリケーションソースコード404は、アプリケーション初期化動作およびナビゲーション動作を定義する。レイヤーソースコード406は、1つ以上のレイヤークラスを定義する。一式のプラットフォーム特有のソースコード111は、コンテナソースコードセット408A-408N集合的に、コンテナソースコードセット408およびバインディングソースコードセット410A-410N集合的に、バインディングソースコードセット410を含む。コンテナソースコードセット408は、アプリケーションを初期化する、プラットフォーム特有の初期化動作を定義する。バインディングソースコードセット410は、異なるプラットフォームによって使用され、異なるプラットフォームにネイティブのユーザインターフェース特徴を使用して、レイヤーを表すことができる、出力データを生成する、レイヤー出力動作を定義する。コンテナソースコードセット408はそれぞれ、異なるプラットフォームに特有のコードを含有する。バインディングソースコードセット410はそれぞれ、異なるプラットフォームに特有のコードを含有する。バインディングソースコードセット410は、実質的に、任意の特定のアプリケーションに特有の機能性を定義する、コードがない。種々の実施形態では、レイヤーソースコード406、アプリケーションソースコード404、コンテナソースコードセット408、およびバインディングソースコードセット410は、種々の高水準プログラミング言語で書かれる。例えば、いくつかの実施形態では、レイヤーソースコード406、アプリケーションソースコード404、コンテナソースコードセット408、および/またはバインディングソースコードセット410は、Cプログラミング言語、オブジェクティブCプログラミング言語、Cプログラミング言語、Cプログラミング言語、Java登録商標プログラミング言語、または別のタイプの高水準プログラミング言語で書かれる。レイヤーソースコード406、アプリケーションソースコード404、コンテナソースコードセット408、およびバインディングソースコードセット410は、高水準プログラミング言語で書かれるため、ソースコード内の構文エラーは、実行時の代わりに、コンパイル時に検出することができる。構文エラーは、実行時の代わりに、コンパイル時に検出されるため、パッケージ112を起動する、コンピューティングデバイスは、そのようなコンピューティングデバイスが、そのような構文エラーのため、クラッシュまたはハングアップする可能性が低いため、より信頼性があり得る。さらに、パッケージ112は、コンパイルされた高水準プログラミング言語コードを備えるため、アプリケーションは、パッケージが、解釈されたプログラミング言語コードを含有する場合より、効率的に実行することができる。したがって、解釈されたコードの代わりに、コンパイルされたコードを実行することによって、パッケージ112を起動する、コンピューティングデバイスは、より高速かつより確実に動作することができる。いくつかの事例では、複数の異なるプラットフォームを、同一コンテナソースコードセット408および/または同一バインディングソースコードセット410と関連付けることができる。例えば、IPHONE登録商標およびIPAD登録商標は両方とも、同一コンテナソースコードセット408および/または同一バインディングソースコードセット410と関連付けることができる。いくつかの事例では、単一プラットフォームは、複数のコンテナソースコードセット408または複数のバインディングソースコードセット410と関連付けることができる。コンテナソースコードセット408および/またはバインディングソースコードセット410はそれぞれ、異なるファイル内に記憶することができる。図5は、例示的アプリケーション開発プロセス500を例証する、流れ図である。開発者102は、アプリケーション開発プロセス500を行い、複数のプラットフォーム上で動作することができる、アプリケーションを開発する。言い換えると、開発者102は、アプリケーション開発プロセス500を使用して、プラットフォーム間共通のアプリケーションを開発する。アプリケーションを構築するために、開発者102は、アプリケーション内に含まれる、レイヤーを識別する502。レイヤーは、ユニットとして、アプリケーションによって、アプリケーションのユーザに提示される、一式のコンテンツを備える。レイヤーは、種々のコンテンツを含有することができる。例えば、アプリケーションのレイヤーは、本の粗筋、テレビスケジュールのリスト、スポーツの点数、ビデオクリップ、アプリケーションのメインメニュー、およびユニットとして、アプリケーションによって、アプリケーションのユーザに提示される、他の一式のコンテンツを含有することができる。レイヤー内のコンテンツは、ユニットとして提示されるため、レイヤー内の付加的コンテンツを見るために、ナビゲーション動作を行う必要はない。ナビゲーション動作は、アプリケーションによって、ユーザに現在提示されているレイヤーを変更するための動作である。例えば、いくつかのプラットフォームでは、ユーザは、レイヤー内の付加的コンテンツをスクロールアップまたはダウンする必要がある場合があるが、付加的コンテンツを見るために、レイヤーから離れてナビゲートする必要はないであろう。異なるプラットフォームは、異なる方法において、同一レイヤーを提示することができる。例えば、Telnetプラットフォームは、本のタイトルを表す、一連のプレーンテキストストリングとして、レイヤー内に本のタイトルのリストを提示することができる。本実施例では、自動音声応答IVRプラットフォームは、本のタイトルの発話された音を出力することによって、本のタイトルの同一リストを表すことができる。さらに、本実施例では、IPHONE登録商標プラットフォームは、本のタイトルを表す、リッチフォーマット形式のテキストストリングのリストとして、本のタイトルの同一リストを表すことができる。アプリケーション内のレイヤーはそれぞれ、異なるレイヤー統一資源識別子URIと関連付けられる。例えば、アプリケーション内の第1のレイヤーは、本の粗筋を含有する、テキストエリアを含有し、アプリケーション内の第2のレイヤーは、別の本の粗筋を含有する、テキストエリアを含有する。本実施例では、第1のレイヤーは、レイヤーURIhttp://www.example.com/applicationl/layerlbookID=32と関連付けることができ、第2のレイヤーは、レイヤーURIhttp://www.example.com/applicationl/layerlbookID=525と関連付けることができる。レイヤーは、1つ以上のコンテンツ要素を備える。コンテンツ要素は、アプリケーションによって、ユーザに提示されるために構造化された一式のコンテンツを備える。種々のコンテンツ要素は、異なる方法において、一式のコンテンツを構造化する。例示的タイプのコンテンツ要素は、リスト、リストデータアイテム、メニュー、メニューアイテム、画像、テキストブロック、テキスト入力エリア、地理的地図、パネル等を含む。異なるプラットフォームは、異なる方法において、同一コンテンツ要素を表すことができる。例えば、IPHONE登録商標プラットフォームは、メニュー内の各メニューアイテムと関連付けられた選択可能グラフィカル要素のリストとして、メニューを提示することができる。本実施例では、Telnetシステムは、メニュー内の各メニューアイテムと関連付けられたテキストストリングのリストと同一メニューを表すことができる。リスト内の各テキストストリングは、数と関連付けられる。本実施例では、Telnetシステムはまた、ユーザに、所望のメニューアイテムの数を入力することを求める、プロンプトを表示する。レイヤーのコンテンツ要素は、ナビゲーション要素を含むことができる。ナビゲーション要素は、ユーザによって選択されると、アプリケーションに、アプリケーションの別のレイヤーにナビゲートさせる、コンテンツ要素である。各ナビゲーション要素は、ユーザが、ナビゲーション要素を選択すると、アプリケーションがナビゲートする、レイヤーのレイヤーURIを指定する。他のタイプのコンテンツ要素同様に、異なるプラットフォームは、異なる方法において、ナビゲーション要素を提示することができる。例えば、いくつかの実施形態では、ウェブブラウザプラットフォームは、ハイパーリンクとして、ナビゲーション要素を提示する。本実施例では、IPHONE登録商標プラットフォームは、グラフィカル制御と同一ナビゲーション要素を提示することができる。いくつかの可能性として考えられる実施形態では、アプリケーションのレイヤーは、ホームレイヤーを含む。アプリケーションのホームレイヤーは、デフォルトによって、アプリケーションのユーザが、アプリケーションとの協働を開始するために使用する、アプリケーションのレイヤーである。種々のアプリケーションでは、ホームレイヤーは、種々のタイプのコンテンツを含有する。例えば、いくつかのアプリケーションでは、ホームレイヤーは、アプリケーションのメインメニューのように作用し、ユーザを種々の他のアプリケーションのレイヤーにナビゲートする、ナビゲーション要素を備える。他のアプリケーションでは、ホームレイヤーは、アプリケーションのためのスプラッシュ画面である。開発者102が、アプリケーション内に含まれるべきレイヤーを識別後、開発者102は、レイヤーソースコード406を開発する504。代替として、開発者102は、既に既存のレイヤーソースコードのライブラリから、レイヤーソースコード406を選択する。すなわち、レイヤーソースコード406は、複数のアプリケーションにおいて、再使用することができる。レイヤーソースコード406は、1つ以上のレイヤークラスを定義する。一般に、レイヤークラスはそれぞれ、クラスの部材オブジェクトを特徴付ける、一式の属性および/またはサービスを定義する、記述ツールである。レイヤークラスはそれぞれ、識別されたレイヤーの異なる1つに対応する。レイヤーモジュールは、レイヤークラスのインスタンスである、ソフトウェアオブジェクトである。レイヤーモジュールは、レイヤーを表す。レイヤーソースコード406によって定義される、レイヤークラスはそれぞれ、ロード動作を含有する。ロード動作は、データをレイヤーモジュールにロードする。ロード動作は、種々のアクティビティを行い、コンテンツを適切なレイヤーモジュールにロードすることができる。例えば、ロード動作は、メニューにメニューアイテムを取り込むことができる。別の実施例では、ロード動作は、ネットワークまたはデータベースからデータを読み出し、データをテキストブロックに取り込むことができる。異なるプラットフォーム上で動作する、アプリケーションのバージョンのために、異なるレイヤーソースコード406を開発または選択する必要がない。言い換えると、レイヤーソースコード406は、任意のプラットフォームに特有ではない。その結果、レイヤーソースコード406によって定義されるロード動作は、アプリケーションが動作しているプラットフォームに関わらず、同一コンテンツをレイヤーモジュールにロードする。アプリケーションを開発するために、開発者102はまた、アプリケーションソースコード404を開発する506。アプリケーションソースコード404は、アプリケーション初期化動作およびナビゲーション動作を定義する。実行されると、アプリケーション初期化動作は、ナビゲーションマップを初期化する。ナビゲーションマップは、レイヤーURIをレイヤーモジュールにマップする。いくつかの実施形態では、アプリケーションソースコード404は、自動的に、レイヤーURIを生成する。他の実施形態では、アプリケーションソースコード404は、所定のレイヤーURIを使用する。アプリケーションが、ナビゲーション要求を受信すると、ナビゲーション動作は、ナビゲーションマップを使用して、適切なレイヤーモジュールを複数のレイヤーモジュールから識別する。適切なレイヤーモジュールは、ナビゲーション要求によって指定されたレイヤーURIと関連付けられる。適切なレイヤーモジュールのロード動作が、次いで、呼び出され、コンテンツを適切なレイヤーモジュールにロードする。ナビゲーション要求は、アプリケーションをあるアプリケーションのレイヤーから別のアプリケーションのレイヤーにナビゲートするための要求である。開発者102が、異なるプラットフォーム上で動作する、アプリケーションのバージョンのための異なるアプリケーションソースコード404を開発する必要はない。むしろ、同一アプリケーションソースコード404は、異なるプラットフォーム上で動作する、アプリケーションのバージョン内で使用される。言い換えると、アプリケーションソースコード404は、任意のプラットフォームに特有ではない。その結果、アプリケーションソースコード404によって指定される、ナビゲーション動作は、アプリケーションが動作しているプラットフォームに関わらず、レイヤーソースコードの同一ロード動作を使用する。アプリケーションのビジネス論理ソースコード110は、アプリケーションソースコード404およびアプリケーションのレイヤーソースコード406を備える。ビジネス論理ソースコード110は、任意のプラットフォームに特有のコードを含有しない。さらに、ビジネス論理ソースコード110は、アプリケーションに特有である、アプリケーションのすべての機能性を定義する。言い換えると、アプリケーションの機能性は、アプリケーションのユーザによって知覚されるように、任意のプラットフォームに特有ではないように、ビジネス論理ソースコード110内に定義される。さらに、アプリケーションを開発するために、開発者102は、アプリケーションが動作すべき、1つ以上のプラットフォームを選択する508。例えば、開発者102は、IPHONE登録商標およびIPAD登録商標と関連付けられたプラットフォームを選択することができる。別の実施例では、開発者102は、Telnetクライアントと関連付けられる、プラットフォームを選択することができる。異なるプラットフォームは、情報をユーザに提示し、ユーザからの入力を受信する、異なるアプリケーションプログラミングインターフェースAPIを提供する。アプリケーションが動作すべきプラットフォームを選択後、開発者102は、選択されたプラットフォームと関連付けられたバインディングソースコードセット410を選択する510。いくつかの実施形態では、開発者102は、所定の一式のバインディングソースコードのライブラリを取得する。そのような実施形態では、開発者102は、種々のソースからライブラリを取得することができる。種々の実施形態では、例えば、開発者102は、個々のバインディングをダウロードする、一式のバインディングをダウンロードする、その独自のバインディングおよび関連付けられたライブラリを開発する、またはSaaSとして提供されたライブラリからバインディングにアクセスすることができる。使用時、開発者102は、ライブラリ内に記憶された一式のバインディングソースコードから、選択されたプラットフォームと関連付けられたバインディングソースコードセット410を選択することができる。例えば、開発者102は、価値のあるアイテムまたはサービスと引き換えに、外部の第三者から、ライブラリのコピーおよび/またはライブラリを使用する権利を入手することができる。ライブラリ内の一式のバインディングソースコードは、アプリケーションの開発に先立って、開発者102または外部の第三者によって、ライブラリに追加することができる。ライブラリ内の一式のバインディングソースコードは、複数のアプリケーション内において、実質的に同一形態で再使用することができる。例えば、いくつかの実施形態では、ライブラリ内の一式のバインディングソースコードは、複数のアプリケーション内において、全く同一形態で再使用することができる。他の実施形態では、ライブラリ内の一式のバインディングソースコードは、一式のバインディングソースコードへの若干の変更例えば、20未満のコードライン後、他のアプリケーションにおいて、再使用することができる。バインディングソースコードセット410は、異なるプラットフォームにネイティブであるユーザインターフェース特徴を使用して、レイヤーを提示するために、異なるプラットフォームによって使用することができる、出力データを生成する、レイヤー出力動作を定義する。例えば、バインディングソースコードセット410Aは、IPHONE登録商標デバイスにネイティブであるユーザインターフェース特徴を使用して、レイヤーを提示するために、レイヤーモジュールを処理する、レイヤー出力動作を定義することができる。本実施例では、バインディングソースコードセット410Bは、ANDROID登録商標ベースの携帯電話にネイティブであるユーザインターフェース特徴を使用して、レイヤーを提示するために、同一レイヤーモジュールを処理する、レイヤー出力動作を定義することができる。次に、開発者102は、コンテナソースコードセット408を開発する512。コンテナソースコードセット408はそれぞれ、選択されたプラットフォームのうちの異なる1つに対応する。本書のいずれかの場所に詳細に説明されるように、コンテナソースコードセット408はそれぞれ、アプリケーションを初期化する、初期化動作を定義する。いくつかの実施形態では、開発者102は、コンテナソースコードセット408を既存の一式のコンテナソースコードのライブラリから取得する。本ライブラリは、開発者が、本明細書に論じられるように、ライブラリからバインディングにアクセスするであろう同一方法において、開発者102、外部の第三者、または別の事業体によって、開発、維持、および/または拡張することができる。いくつかの事例では、開発者102は、価値のあるアイテムまたはサービスと引き換えに、外部の第三者から、ライブラリのコピーおよび/またはライブラリを使用するための権利を受信することができる。そのような実施形態では、開発者102は、コンテナソースコードセット408が、アプリケーションのアプリケーションソースコード404によって定義されるアプリケーションクラスを識別するように、ライブラリ内の既存の一式のコンテナソースコードを修正することによって、コンテナソースコードセット408を開発する。したがって、コンテナソースコードセット408は、アプリケーションおよび選択されたプラットフォームの個々のものに特有である。しかしながら、コンテナソースコードセット408は、そのアプリケーションを他のアプリケーションと区別する、任意の機能性を定義しない。例示的初期化動作は、図15に関して、本明細書に説明される。次に、開発者102は、アプリケーションのための展開技法を選択する514。アプリケーションのための展開技法は、アプリケーション内の種々のモジュールが動作する場所を統制する。種々の展開技法を使用する、アプリケーションの開発、配信、および実行は、図7から14に関して説明される。展開技法を選択後、1つ以上のコンピューティングシステムは、選択されたプラットフォームに対応するパッケージ112を生成する516。パッケージ112はそれぞれ、アプリケーションのためのアプリケーションソースコード404、アプリケーションのためのレイヤーソースコード406、特有のプラットフォームのためのコンテナソースコード508、および特有のプラットフォームのための一式のバインディングソースコード510からコンパイルされる、一式のコンピュータ可読命令を備える。パッケージ112のそれぞれ内の命令は、選択されたプラットフォームの適切なものを提供するデバイスによって、ネイティブに実行されると、同一アプリケーションを提供する。命令は、命令とプラットフォームとの間の介在ソフトウェアが、命令を実行するために必要とされない時、プラットフォーム上でネイティブに実行する。例えば、特殊プラグインまたは仮想マシンは、選択されたプラットフォームの適切なもの上でパッケージ内の命令を実行するために必要とされない。パッケージ112が開発された後、開発者102は、コンピューティングデバイス104上でのインストールおよび使用のために、パッケージ112を配信する518。種々の実施形態では、パッケージ112は、種々の方法において、配信される。例えば、いくつかの実施形態では、AppleInc.のAPPSTORE登録商標等のオンラインアプリケーションストアを使用して、パッケージ112を配信する。他の実施形態では、パッケージ112は、直接、コンピューティングデバイス104に配信される。図6は、アプリケーション600内の例示的モジュールを例証する、ブロック図である。図6の実施例に例証されるように、アプリケーション600は、コンテナモジュール602、アプリケーションモジュール604、レイヤーモジュール606Aから606N集合的に、レイヤーモジュール606、およびバインディングモジュール608を備える。アプリケーションのアプリケーションソースコード404は、アプリケーションモジュール604の機能性を定義する。レイヤーソースコード406内の異なるレイヤークラスは、レイヤーモジュール606の異なるもの機能性を定義する。コンテナソースコードセット408のうちの1つは、コンテナモジュール602の機能性を定義する。バインディングソースコードセット410のうちの1つは、バインディングモジュール608の機能性を定義する。アプリケーション600が、立ち上げられると、コンテナモジュール602は、実行を開始する。コンテナモジュール602が、実行を開始すると、コンテナモジュール602は、初期化動作を行う。初期化動作は、アプリケーションを初期化する。実施例の初期化動作は、図15に関して説明される。初期化動作の一部として、コンテナモジュール602は、初期ナビゲーション要求をアプリケーションモジュール604に提供する。初期ナビゲーション要求は、アプリケーションのホームレイヤーを示す、レイヤーURIを指定する。ナビゲーション要求の受信に応答して、アプリケーションモジュール604は、ナビゲーション動作を行う。例示的ナビゲーション動作は、図16に関して、本明細書に説明される。ナビゲーション動作の一部として、アプリケーションモジュール604は、ナビゲーションマップを使用して、適切なレイヤーモジュールを識別する。適切なレイヤーモジュールは、ナビゲーション要求によって指定される、レイヤーURIと関連付けられたレイヤーモジュール606のうちの1つである。アプリケーションモジュール604は、次いで、ロード要求を適切なレイヤーモジュールに提供する。ロード要求は、適切なレイヤーモジュールのロード動作を行うための要求である。適切なレイヤーモジュールが、ロード要求を受信すると、適切なレイヤーモジュールは、ロード動作を行う。ロード動作は、コンテンツを適切なレイヤーモジュールにロードする。種々の実施形態は、種々の方法において、ロード動作を実装する。例えば、いくつかの実施形態では、各レイヤーモジュールは、1つ以上のコンテンツ要素を備える。ロード動作は、データをレイヤーモジュールのコンテンツ要素のうちの1つ以上にロードすることによって、データをレイヤーモジュールにロードする。例えば、レイヤーモジュールは、リストを表す、コンテンツ要素を含有することができる。実施例では、ロード動作は、ウェブサイトから最も良く売れている本のタイトルを読み出し、タイトルをリストにロードすることによって、データをレイヤーモジュールにロードすることができる。レイヤーモジュール606はそれぞれ、異なるコンテンツ要素を含むことができ、ロード動作を異なるように実装することができる。その結果、異なるコンテンツは、レイヤーモジュール606の異なるものにロードされる。適切なレイヤーモジュールが、ロード動作を行った後、適切なレイヤーモジュールは、ロード完了イベントをアプリケーションモジュール604に提供する。ロード完了イベントは、適切なレイヤーモジュールへの参照を含有する。ロード完了イベントを適切なレイヤーモジュールから受信後、アプリケーションモジュール604は、ロード完了イベントを生成する。アプリケーションモジュール604によって生成されたロード完了イベントは、適切なレイヤーモジュールが、コンテンツのロードを完了したことを示す。いくつかの展開技法では、ロード完了イベントは、レイヤー参照を含有する。レイヤー参照は、適切なレイヤーモジュールへのポインタを備える。他の展開技法では、ロード完了イベントは、適切なレイヤーモジュールの直列化されたバージョンを含有する。コンテナモジュール602は、アプリケーションモジュール604によって生成されたロード完了イベントをリッスンする。コンテナモジュール602が、アプリケーションモジュール604によって生成されたロード完了イベントを検出すると、コンテナモジュール602は、バインディングモジュール608の適切なレイヤーモジュールのレイヤー参照または直列化されたバージョンを提供する。バインディングモジュール608が、適切なレイヤーモジュールのレイヤー参照または直列化されたバージョンを受信すると、バインディングモジュール608は、レイヤー出力動作を適切なレイヤーモジュール上で行う。レイヤー出力動作は、プラットフォームにネイティブである、1つ以上のユーザインターフェース特徴として、適切なレイヤーモジュールを表すために、プラットフォームによって使用することができる、出力データを生成する。後述のように、異なるバインディングモジュールは、レイヤー出力動作を適切なレイヤーモジュール上で行うことによって、種々のタイプの出力データを生成することができる。種々の実施形態は、種々の方法において、レイヤー出力動作を実装する。例えば、いくつかの実施形態では、バインディングソースコードセット410はそれぞれ、コンテンツ出力動作を定義する。コンテンツ出力動作は、異なるタイプのコンテンツ要素に対応する。例えば、バインディングソースコードセット410は、リストのためのコンテンツ出力動作、リストデータアイテムのためのコンテンツ出力動作、メニューのためのコンテンツ出力動作、メニューアイテムのためのコンテンツ出力動作、画像のためのコンテンツ出力動作等を含むことができる。異なるプラットフォームのためのバインディングソースコードセット410内のコンテンツ出力動作は、コンテンツ要素を表すために、異なるプラットフォームによって使用可能な出力データを生成する。例えば、バインディングソースコードセット410Aは、IPHONE登録商標プラットフォームが、リストを提示するために使用することができる、出力データを生成する、コンテンツ出力動作を定義することができる。本実施例では、バインディングソースコードセット410Bは、ANDROID登録商標プラットフォームが、リストを提示するために使用することができる、出力データを生成する、コンテンツ出力動作を定義することができる。レイヤー出力動作を適切なレイヤーモジュール上で行うと、バインディングモジュール608は、適切なレイヤーモジュール内のコンテンツ要素のそれぞれのための出力動作を利用する。例えば、適切なレイヤーモジュールのコンテンツ要素が、リストおよび画像を含む場合、バインディングモジュール608は、レイヤー出力動作を適切なレイヤーモジュール上で行うと、リストのための出力動作および画像のための出力動作を行う。このように、レイヤー出力動作は、特定のプラットフォームにネイティブな1つ以上のユーザインターフェース特徴として、適切なレイヤーモジュールの各コンテンツ要素を提示するために使用可能な出力データを生成する。ユーザが、アプリケーションにおけるレイヤー内のナビゲーション要素を選択すると、アプリケーションモジュール604は、ナビゲーション要求を受信する。ナビゲーション要求は、別のアプリケーションのレイヤーのレイヤーURIを指定する。アプリケーションモジュール604が、ナビゲーション要求を受信すると、前述のプロセス他のレイヤーに関して繰り返される。図7は、クライアントベースの展開技法を使用する、アプリケーションを開発および配信するための例示的システム700を例証する、ブロック図である。アプリケーションが、クライアントベースの展開技法を使用して展開されると、コンテナモジュール602、アプリケーションモジュール604、レイヤーモジュール606、およびバインディングモジュール608は、クライアントコンピューティングデバイス上で動作する。図7の実施例に例証されるように、システム700は、開発者コンピューティングシステム106を備える。開発者コンピューティングシステム106は、コンパイラアプリケーション402を含む。クライアントベースの展開技法では、コンパイラアプリケーション402は、パッケージ112がそれぞれ、アプリケーションモジュール604、レイヤーモジュール606、コンテナモジュール、およびバインディングモジュールを定義する、コンパイルされた命令を含むように、パッケージ112を生成する。パッケージ112は、異なるプラットフォームを提供する、コンピューティングデバイス上でのインストールに好適である。アプリケーションが、クライアントベースの展開技法を使用して展開されると、パッケージ112が、コンピューティングデバイス104に配信される。説明を容易にするために、図7の実施例は、タッチスクリーン式スマートフォンおよびフィーチャーフォンのみを例証する。しかしながら、他の実施形態では、コンピューティングデバイス104は、在庫管理デバイス、携帯電話、タブレットコンピュータ、ネットブックコンピュータ等、種々の異なるタイプのモバイルデバイスであり得る。さらに、モバイルデバイスのみ示されるが、コンピューティングデバイス104に関して、本書に説明される、同一能力および機能性は、いくつかの実施形態では、スマートフォンまたはタブレットコンピュータ等のモバイルデバイス、またはデスクトップコンピュータ、サーバコンピュータ等の非モバイルデバイスによって、行うことができることを理解されたい。パッケージ112が、コンピューティングデバイス104に配信された後、コンピューティングデバイス104は、パッケージ112をインストールする。インストール後、コンピューティングデバイス104は、パッケージ112内の命令を実行する。図8は、クライアントベースの展開技法を使用する、アプリケーションを実行するための例示的システム800を例証する、ブロック図である。図8の実施例に例証されるように、システム800は、コンピューティングデバイス104Aを備える。図8の実施例は、コンピューティングデバイス104Aに関して説明されるが、コンピューティングデバイス104の他のものは、クライアントベースの展開技法を使用する、アプリケーションを実行するための類似システムを採用することができることを理解されたい。コンピューティングデバイス104Aは、入力システム802および出力システム804を備える。入力システム802は、コンピューティングデバイス104Aに、コンピューティングデバイス104Aのユーザ806からの入力を受信させる。種々の実施形態では、入力システム802は、コンピューティングデバイス104Aに、ユーザ806から入力を受信させる、種々の異なるタイプのシステムであり得る。例えば、入力システム802は、タッチスクリーン、キーボード、キーパッド、ポインティングデバイス例えば、マウス、タッチパッド、トラックボール等、ボタンアレイ、マイクロホン、またはコンピューティングデバイス104Aに、ユーザ806からの入力を受信させる、別のタイプのシステムであり得る。出力システム804は、コンピューティングデバイス104Aに、ユーザ806への出力を提供させる。種々の実施形態では、出力システム804は、ユーザへの出力を提供する、種々の異なるタイプのシステムであり得る。例えば、出力システム804は、グラフィック画面例えば、モニタ、LCD画面、LED画面等、スピーカシステム、またはユーザに出力を提供可能な別のタイプのシステムであり得る。さらに、いくつかの実施形態では、入力システム802および出力システム804は、物理的に、同一システムである。例えば、入力システム802および出力システム804は、単一タッチスクリーンであり得る。加えて、コンピューティングデバイス104Aは、オペレーティングシステム808を提供する。オペレーティングシステム808は、コンピューティングデバイス104Aのハードウェアリソースを管理し、ソフトウェアアプリケーションの動作をサポートする、ソフトウェアシステムである。種々の実施形態では、オペレーティングシステム808は、種々の異なるタイプのオペレーティングシステムであり得る。例えば、オペレーティングシステム808は、WINDOWSPHONE7登録商標オペレーティングシステム、WINDOWS7登録商標オペレーティングシステム、IPHONE登録商標オペレーティングシステム、OSX登録商標オペレーティングシステム、HewlettPackardCompanyからのWEBOS登録商標オペレーティングシステム、Linux登録商標オペレーティングシステム、ANDROID登録商標オペレーティングシステム、Google,Inc.からのCHROME登録商標オペレーティングシステム、または別のタイプのオペレーティングシステムであり得る。図8の実施例に例証されるように、コンピューティングデバイス104Aは、パッケージ112Aを備える。コンピューティングデバイス104Aの処理ユニットによる、パッケージ112A内の命令の実行は、コンピューティングデバイス104Aに、コンテナモジュール602、アプリケーションモジュール604、レイヤーモジュール606、およびバインディングモジュール608を提供させる。アプリケーションを使用するために、ユーザ806は、入力システム802を使用して、立ち上げコマンドをオペレーティングシステム808に提供する。応答して、オペレーティングシステム808は、立ち上げ要求をコンテナモジュール602に提供する。コンテナモジュール602が、立ち上げ要求を受信後、コンテナモジュール602、アプリケーションモジュール604、レイヤーモジュール606、およびバインディングモジュール608は、図6の実施例に関して、前述のように挙動する。クライアントベースの展開では、バインディングモジュール608は、バインディングモジュール608が、レイヤーモジュールを処理すると、ユーザインターフェースコマンドを出力する。ユーザインターフェースコマンドは、出力システム804に、レイヤーモジュールによって表されるレイヤーを提示させる。例えば、ユーザインターフェースコマンドは、出力システム804に、レイヤーを表示させることができる、または出力システム804に、レイヤーを表す可聴信号を出力させることができる。図9は、サーバベースの展開技法を使用する、アプリケーションを開発および配信するための例示的システム900を例証する、ブロック図である。アプリケーションが、サーバベースの展開技法を使用して展開されると、コンテナモジュール602、アプリケーションモジュール604、レイヤーモジュール606、およびバインディングモジュール608は、サーバシステム902上で動作する。サーバベースの展開技法は、付加的アプリケーションをコンピューティングデバイス104にインストールすることが望ましくない、または不可能である状況において、有利であり得る。図9の実施例に例証されるように、システム900は、開発者コンピューティングシステム106を備える。システム900はまた、コンピューティングデバイス104を備える。説明を容易にするため、タッチスクリーン式スマートフォンおよびフィーチャーフォンのみ、図9の実施例では例証される。しかしながら、他の実施形態では、コンピューティングデバイス104は、デスクトップコンピュータ、携帯電話、タブレットコンピュータ等、種々の異なるタイプのコンピューティングデバイスによって置換することができる。システム900はまた、サーバシステム902Aから902N集合的に、サーバシステム902を備える。サーバシステム902は、コンピュータシステムである。サーバシステム902は、異なるプラットフォームを提供することができる。例えば、サーバシステム902Aは、アクティブサーバーページASPベースのウェブサーバプラットフォームを提供することができ、サーバシステム902B図示せずは、Telnetサーバプラットフォームを提供することができ、およびサーバシステム902Nは、PHPベースのウェブサーバプラットフォームを提供することができる。サーバベースの展開技法を使用して、アプリケーションを生成するために、コンパイラアプリケーション402は、パッケージ112を生成する。パッケージはそれぞれ、異なるプラットフォームと関連付けられる。コンパイラアプリケーション402は、アプリケーションのレイヤーソースコード406、アプリケーションのアプリケーションソースコード404、プラットフォームのためのコンテナソースコードセット408、およびプラットフォームのためのバインディングソースコードセット410をコンパイルすることによって、パッケージ112を生成する。パッケージ112はそれぞれ、レイヤーモジュール606、アプリケーションモジュール604、コンテナモジュール、およびバインディングモジュールを定義する、コンパイルされた命令を含む。パッケージ112はそれぞれ、パッケージと関連付けられたプラットフォームを提供する、サーバシステム902上でのインストールに好適である。アプリケーションは、サーバベースの展開技法を使用して展開されると、パッケージ112は、サーバシステム902に配信され、サーバシステム902上にインストールされる。インストール後、サーバシステム902は、パッケージ112内の命令を実行し、コンテナモジュール602、アプリケーションモジュール604、レイヤーモジュール606、およびバインディングモジュール608を提供する。コンピューティングデバイス104は、アプリケーションに特有のハードウェアまたはソフトウェアを含まない。例えば、コンピューティングデバイス104Aは、標準的電話であり得、アプリケーションのIVRバージョンは、サーバシステム902Aにインストールされる。本実施例では、ユーザは、コンピューティングデバイス104Aを使用して、サーバシステム902Aをコールすることによって、アプリケーションと相互作用することができる。別の実施例では、ユーザは、コンピューティングデバイス104N上の汎用クライアントアプリケーションを使用して、アプリケーションと相互作用することができる。汎用クライアントアプリケーションは、特有のサーバベースのアプリケーションに結び付けられていない、アプリケーションを含む。例えば、ユーザは、コンピューティングデバイス104N上のウェブブラウザアプリケーションを使用して、アプリケーションのウェブバージョンと相互作用することができる。別の実施例では、ユーザは、コンピューティングデバイス104N上のTelnetクライアントを使用して、アプリケーションのTelnetバージョンと相互作用することができる。図10は、サーバベースの展開技法を使用する、アプリケーションを実行するための例示的システム1000を例証する、ブロック図である。図10の実施例に例証されるように、システム1000は、コンピューティングデバイス104Aおよびサーバシステム902Aを備える。図5の実施例は、コンピューティングデバイス104Aおよびサーバシステム902Aに関して説明されるが、コンピューティングデバイス104およびサーバシステム902の他のものも、サーバベースの展開技法を使用する、アプリケーションを実行するための類似システムを採用することができることを理解されたい。図8の実施例に例証されるコンピューティングデバイス104A同様に、図10の実施例に例証されるコンピューティングデバイス104Aは、入力システム802、出力システム804、およびオペレーティングシステム808を備える。しかしながら、パッケージ112Aを含む代わりに、図10の実施例に例証されるコンピューティングデバイス104Aは、ブラウザアプリケーション1002を備える。異なる実施形態では、ブラウザアプリケーション1002は、異なるタイプのウェブブラウザアプリケーションであり得る。例えば、ブラウザアプリケーション1002は、Apple,Inc.からのSAFARI登録商標ウェブブラウザアプリケーション、MicrosoftCorp.からのINTERNETEXPLORER登録商標ウェブブラウザアプリケーション、MozillaFoundationからのFIREFOX登録商標ウェブブラウザアプリケーション、Google,Inc.からのCHROME登録商標ウェブブラウザアプリケーション、または別のウェブブラウザアプリケーションであり得る。コンピューティングデバイス104Aは、図10の実施例では、ウェブブラウザアプリケーションを提供するが、アプリケーションが、サーバベースの展開技法を使用して展開される、いくつかの事例では、コンピューティングデバイス104Aは、ブラウザアプリケーション1002の代わりに、他のタイプの汎用クライアントアプリケーションを提供することを理解されたい。例えば、コンピューティングデバイス104Aは、ブラウザアプリケーション1002の代わりに、Telnetクライアントを提供することができる。さらに、アプリケーションが、サーバベースの展開技法を使用して展開される、いくつかの事例では、コンピューティングデバイス104Aは、汎用クライアントアプリケーションまたはオペレーティングシステムを提供しない。サーバシステム902Aは、コンテナモジュール602、アプリケーションモジュール604、レイヤーモジュール606、およびバインディングモジュール608を提供する。図10の実施例に例証される、コンテナモジュール602、アプリケーションモジュール604、レイヤーモジュール606、およびバインディングモジュール608は、図6の実施例に例証される、コンテナモジュール602、アプリケーションモジュール604、レイヤーモジュール606、およびバインディングモジュール608と同様に動作する。サーバシステム902Aはまた、サーバアプリケーション1004を提供する。アプリケーションを使用するために、ユーザ806は、入力システム802を使用して、ブラウザアプリケーション1002と相互作用する。ブラウザアプリケーション1002は、ウェブ要求をサーバアプリケーション1004に送信する。ウェブ要求は、アプリケーション内のレイヤーのレイヤーURIを指定する。サーバアプリケーション1004が、ウェブ要求を受信すると、サーバアプリケーション1004は、ナビゲーション要求をアプリケーションモジュール604に提供する。アプリケーションモジュール604は、前述のように、ナビゲーション要求を処理する。続いて、バインディングモジュール608は、リソースデータを生成する。リソースデータは、レイヤーURIによって示される、レイヤーを表す。サーバアプリケーション1004が、リソースデータを受信すると、サーバアプリケーション1004は、ウェブ要求への応答として、ウェブ応答をブラウザアプリケーション1002に送信する。ウェブ応答は、リソースデータを含有する。ブラウザアプリケーション1002が、ウェブ応答を受信すると、ブラウザアプリケーション1002は、レイヤーをユーザ806に提示する、出力システム804を使用する。続いて、ユーザ806は、レイヤーのナビゲーション要素を選択することができる。ユーザ806が、ナビゲーション要素を選択すると、ブラウザアプリケーション1002は、別のウェブ要求をサーバアプリケーション1004に送信する。他のウェブ要求は、アプリケーション内の別のレイヤーのレイヤーURIを指定する。サーバアプリケーション1004は、以前のウェブ要求と同様に、本ウェブ要求を処理する。図11は、クライアントシェル展開技法を使用する、アプリケーションを展開および配信するための例示的システム1100を例証する、ブロック図である。システム1100は、開発者コンピューティングシステム106を備える。加えて、システム1100は、サーバシステム902およびコンピューティングデバイス104を備える。クライアントシェル展開技法を使用して、アプリケーションを生成するために、コンパイラアプリケーション402は、パッケージ112およびシェルアプリケーションパッケージ1102Aから1102N集合的に、シェルアプリケーションパッケージ1102を生成する。パッケージ112はそれぞれ、異なるプラットフォームと関連付けられる。シェルアプリケーションパッケージ1102はそれぞれ、異なるプラットフォームと関連付けられる。コンパイラアプリケーション402は、レイヤーソースコード406、アプリケーションソースコード404、コンテナソースコードセット408、およびバインディングソースコードセット410をコンパイルすることによって、パッケージ112を生成する。パッケージ112はそれぞれ、1つ以上のレイヤーモジュール606、アプリケーションモジュール604、コンテナモジュール、およびバインディングモジュールを定義する、コンパイルされた命令を含む。パッケージ112はそれぞれ、パッケージと関連付けられたプラットフォームを提供する、サーバシステム902上でのインストールに好適である。シェルアプリケーションパッケージ1102はそれぞれ、シェルアプリケーションパッケージと関連付けられたプラットフォームを提供する、コンピューティングデバイス上で実行されると、シェルアプリケーションを提供する、命令を備える。コンパイラアプリケーション402が、パッケージ112を構築後、パッケージ112は、サーバシステム902に配信およびインストールされる。加えて、シェルアプリケーションパッケージ1102は、コンピューティングデバイス104上にインストールされる。シェルアプリケーションパッケージ1102が、コンピューティングデバイス104上にインストールされた後、コンピューティングデバイス104は、コンピューティングデバイス104に、シェルアプリケーションを提供させる、シェルアプリケーションパッケージ1102内のコンピュータ可読命令を実行する。シェル動作は、コンピューティングデバイス104上でネイティブに動作する。コンピューティングデバイス104のユーザの観点から、シェルアプリケーションは、アプリケーションのすべての動作を行うと考えられる。しかしながら、現実には、シェルアプリケーションは、実際に、ナビゲーション要求をサーバシステム902に送信し、直列化されたインターフェースデータをサーバシステム902から受信し、直列化されたインターフェースデータを使用して、アプリケーションのレイヤーをユーザに提示している。種々の実施形態は、種々の方法において、直列化されたインターフェースデータをフォーマットする。例えば、直列化されたインターフェースデータは、HTMLデータ、XMLデータ、画像データ、または他の方法でフォーマットされた他のデータとして、フォーマットすることができる。クライアントシェル展開技法は、アプリケーションの作業をコンピューティングデバイス104から離れて行わせるが、アプリケーションが、コンピューティングデバイス104によって提供されているという体裁を提供することが有利である状況において、有用であり得る。図12は、クライアントシェル展開技法を使用する、アプリケーションを実行するための例示的システム1200を例証する、ブロック図である。図12の実施例に例証されるように、システム1200は、コンピューティングデバイス104Aおよびサーバシステム902Aを備える。図12の実施例は、コンピューティングデバイス104Aおよびサーバシステム902Aに関して説明されるが、コンピューティングデバイス104およびサーバシステム902の他のものが、クライアントシェル展開技法を使用する、アプリケーションを実行するための類似システムを採用することができることを理解されたい。図12の実施例に例証される、コンピューティングデバイス104Aは、図8の実施例に例証される、コンピューティングデバイス104Aに類似する。図8の実施例に例証される、コンピューティングデバイス104A同様に、図12の実施例に例証される、コンピューティングデバイス104Aは、入力システム802、出力システム804、およびオペレーティングシステム808を提供する。しかしながら、コンピューティングデバイス104Aは、ブラウザアプリケーション1002の代わりに、シェルアプリケーション1202を提供する。シェルアプリケーションパッケージ1102のうちの1つ内の命令の実行は、コンピューティングデバイス104Aに、シェルアプリケーション1202を提供させる。さらに、図12の実施例に例証される、サーバシステム902Aは、図10の実施例に例証される、サーバシステム902Aに類似する。図10の実施例に例証される、サーバシステム902A同様に、図12の実施例に例証される、サーバシステム902Aは、コンテナモジュール602、アプリケーションモジュール604、レイヤーモジュール606、およびバインディングモジュール608を提供する。アプリケーションを使用するために、ユーザ806は、入力システム802を使用して、オペレーティングシステム808に、シェルアプリケーション1202を立ち上げるよう指示する。シェルアプリケーション1202が、立ち上がると、シェルアプリケーション1202は、初期ナビゲーション要求をアプリケーションモジュール604に提供する。初期ナビゲーション要求は、アプリケーションのホームレイヤーのレイヤーURIを指定する。アプリケーションモジュール604は、本書のいずれかの場所に説明されるように、ナビゲーション要求を処理する。バインディングモジュール608が、レイヤーモジュールを処理すると、バインディングモジュール608は、直列化されたインターフェースデータをシェルアプリケーション1202に提供する。直列化されたインターフェースデータは、レイヤーURIによって示されるアプリケーションのレイヤーを表す。シェルアプリケーション1202が、直列化されたインターフェースデータを受信すると、シェルアプリケーション1202は、出力システム804を使用して、アプリケーションのレイヤーをユーザ806に提示する。ユーザ806は、レイヤーのナビゲーション要素を選択することができる。ユーザ806が、レイヤーのナビゲーション要素を選択すると、シェルアプリケーションは、別のナビゲーション要求をコンテナモジュール602に提供する。他のナビゲーション要求は、ナビゲーション要素と関連付けられたレイヤーURIを指定する。図13は、ハイブリッド展開技法を使用する、アプリケーションを展開および配信するための例示的システム1300を例証する、ブロック図である。アプリケーションが、ハイブリッド展開技法を使用して展開されると、コンテナモジュール602およびバインディングモジュール608は、コンピューティングデバイス104上で動作し、アプリケーションモジュール604およびレイヤーモジュール606は、サーバシステム902上で動作する。ハイブリッド展開技法は、サーバシステム上で実行するために、プラットフォーム特有のコードにとって望ましくない状況において、有用であり得る。システム1300は、開発者コンピューティングシステム106を備える。加えて、システム1300は、サーバシステム902およびコンピューティングデバイス104を備える。ハイブリッド展開技法を使用して、アプリケーションを生成するために、コンパイラアプリケーション402は、アプリケーションのためのサーバパッケージ1302を生成する。サーバパッケージ1302を生成するために、コンパイラアプリケーション402は、アプリケーションのために、レイヤーソースコード406およびアプリケーションソースコード404をコンパイルする。故に、サーバパッケージ1302は、1つ以上のレイヤーモジュール606およびアプリケーションモジュール604を定義する、命令を含む。サーバパッケージ1302は、サーバシステム902Aによって提供されるプラットフォーム上でのインストールに好適である。コンパイラアプリケーション402が、サーバパッケージ1302を生成した後、サーバパッケージ1302は、サーバシステム902A上に配信およびインストールされる。他の実施形態では、サーバパッケージ1302は、サーバシステム902の他のもの上に配信およびインストールされることを理解されたい。さらに、ハイブリッド展開技法を使用して、アプリケーションを生成するために、コンパイラアプリケーション402は、選択されたプラットフォームのために、クライアントパッケージ1304Aから1304N集合的に、クライアントパッケージ1304を生成する。コンパイラアプリケーション402は、選択されたプラットフォームのために、コンテナソースコードセット408およびバインディングソースコードセット410をコンパイルすることによって、クライアントパッケージ1304を生成する。故に、クライアントパッケージ1304は、コンテナモジュール602およびバインディングモジュール608を定義する、命令を含む。クライアントパッケージ1304のそれぞれ内の命令は、異なるプラットフォーム上でのネイティブ実行のために好適である。コンパイラアプリケーション402が、クライアントパッケージ1304を生成した後、クライアントパッケージ1304は、コンピューティングデバイス104上に配信およびインストールされる。図14は、ハイブリッド展開技法を使用する、アプリケーションを実行するための例示的システム1400を例証する、ブロック図である。図14の実施例に例証されるように、システム1400は、コンピューティングデバイス104Aおよびサーバシステム902Aを備える。図14の実施例は、コンピューティングデバイス104Aおよびサーバシステム902Aに関して説明されるが、コンピューティングデバイス104およびサーバシステム902の他のものが、ハイブリッド展開技法を使用する、アプリケーションを実行するための類似システムを採用することができることを理解されたい。図14の実施例に例証される、コンピューティングデバイス104Aは、図8の実施例に例証される、コンピューティングデバイス104Aに類似する。図8の実施例に例証される、コンピューティングデバイス104A同様に、図14の実施例に例証される、コンピューティングデバイス104Aは、入力システム802、出力システム804、およびオペレーティングシステム808を提供する。しかしながら、パッケージ112Aの代わりに、コンピューティングデバイス104Aは、クライアントパッケージ1304Aを備える。クライアントパッケージ1304Aは、アプリケーションのコンテナモジュール602およびバインディングモジュール608を提供するが、アプリケーションのアプリケーションモジュール604またはレイヤーモジュール606は、提供しない。さらに、図14の実施例に例証される、サーバシステム902Aは、図9の実施例に例証される、サーバシステム902Aに類似する。しかしながら、図14の実施例に例証される、サーバシステム902Aは、サーバパッケージ1302を備える。サーバパッケージ1302は、アプリケーションのアプリケーションモジュール604およびレイヤーモジュール606を提供するが、アプリケーションのコンテナモジュール602またはバインディングモジュール608は、提供しない。アプリケーションを使用するために、ユーザ806は、入力システム802を使用して、オペレーティングシステム808に、アプリケーションを立ち上げるよう指示する。アプリケーションが、立ち上がると、コンテナモジュール602は、初期ナビゲーション要求をサーバシステム902Aにおけるアプリケーションモジュール604に提供する。初期ナビゲーション要求は、アプリケーションのホームレイヤーのレイヤーURIを指定する。アプリケーションモジュール604は、本書のいずれかの場所に説明されるように、初期ナビゲーション要求を処理する。続いて、コンテナモジュール602は、ロード完了イベントをアプリケーションモジュール604から受信する。ロード完了イベントは、レイヤーモジュールの直列化されたバージョンを備える。コンテナモジュール602は、レイヤーモジュールの直列化されたバージョンをコンピューティングデバイス104Aにおけるバインディングモジュール608に提供する。バインディングモジュール608は、次いで、レイヤーモジュールの直列化されたバージョンを処理する。バインディングモジュール608が、レイヤーモジュールの直列化されたバージョンを処理すると、バインディングモジュール608は、オペレーティングシステム808に、出力システム804を使用して、レイヤーをユーザ806に表示させる、ユーザインターフェースコマンドを出力する。ユーザ806は、レイヤーのナビゲーション要素を選択することができる。ユーザ806が、レイヤーのナビゲーション要素を選択すると、オペレーティングシステム808は、別のナビゲーション要求をコンテナモジュール602に提供する。他のナビゲーション要求は、ナビゲーション要素と関連付けられたレイヤーURIを指定する。図15は、コンテナモジュール602の例示的初期化動作1500を例証する、流れ図である。図15の実施例は、コンテナモジュール602、アプリケーションモジュール604、レイヤーモジュール606、およびバインディングモジュール608が、特有の方法で実装される、実施形態を説明する。他の実施形態では、コンテナモジュール602、アプリケーションモジュール604、レイヤーモジュール606、およびバインディングモジュール608が、他の方法で実装されることを理解されたい。図15の実施例に例証されるように、初期化動作1500は、コンテナモジュール602の実行が開始すると、開始する1502。種々の実施形態では、コンテナモジュール602の実行は、種々の時間で開始することができる。例えば、いくつかの実施形態では、コンテナモジュール602の実行は、オペレーティングシステム808が、ユーザ806からの入力に応答して、アプリケーションを立ち上げると、開始する。他の実施形態では、コンテナモジュール602の実行は、サーバアプリケーション1004が、サーバシステム902Aにおいて始動すると、開始する。さらに他の実施形態では、コンテナモジュール602の実行は、サーバシステム902のうちの1つが始動すると、始動する。さらに他の実施形態では、コンテナモジュール602の実行は、サーバシステム902Aが、最初に、コンテナモジュール602のためのウェブ要求またはナビゲーション要求を受信する時、始動する。コンテナモジュール602の実行開始後、コンテナモジュール602は、バインディングモジュール608を初期化する1504。いくつかの実施形態では、バインディングモジュール608は、工場設計パターンに従う。そのような実施形態では、コンテナモジュール602は、バインディングモジュール608の静的初期化方法を呼び出すことによって、バインディングモジュール608を初期化する。異なるバインディングモジュールは、コンテナモジュール602が、バインディングモジュールを初期化すると、異なるアクションを行うことができる。例えば、いくつかのバインディングモジュールの初期化方法の呼び出しは、コンピューティングデバイス104Aに、スプラッシュ画面を表示させる。本実施例では、他のバインディングモジュールの初期化方法の呼び出しは、コンピューティングデバイス104Aに、任意のアクションを行わせない。次に、コンテナモジュール602は、イベントリスナを生成する1506。図15の実施例では、アプリケーションソースコード404は、抽象アプリケーションクラスを定義する。抽象アプリケーションクラスは、アプリケーション初期化動作およびナビゲーション動作を定義する。イベントリスナは、抽象アプリケーションクラスによって生成されたロード完了イベントをリッスンする。本書のいずれかの場所に記載されるように、ロード完了イベントは、レイヤー参照を備える。開発者102が、クライアントベース、サーバベース、またはシェルアプリケーション展開技法を選択する事例では、ロード完了イベントは、レイヤー参照を含み、イベントリスナは、レイヤー参照をバインディングモジュール608に提供する。開発者102が、ハイブリッド展開技法を選択する事例では、ロード完了イベントは、レイヤーモジュールの直列化されたバージョンを含有し、イベントリスナは、レイヤーモジュールの直列化されたバージョンをバインディングモジュール608に提供する。コンテナモジュール602は、次いで、アプリケーションモジュール604をインスタンス化する1508。アプリケーションモジュール604は、アプリケーションソースコード404内に定義される、アプリケーションクラスインスタンスである。アプリケーションクラスは、抽象アプリケーションクラスを拡張する。アプリケーションクラスは、抽象アプリケーションクラスによって定義されるアプリケーション初期化動作をオーバーライドする。アプリケーションモジュール604のアプリケーション初期化動作は、アプリケーションクラスが、インスタンス化されると、常時、呼び出される。実行されると、アプリケーションモジュール604のアプリケーション初期化動作は、レイヤーモジュール606をインスタンス化する。レイヤーモジュール606はそれぞれ、レイヤーソースコード406内に定義される、異なるレイヤークラスのインスタンスである。レイヤークラスはそれぞれ、抽象レイヤークラスを拡張する。抽象レイヤークラスは、ロード動作を定義する。レイヤークラスはそれぞれ、異なる方法において、ロード動作を実装する。その結果、レイヤーモジュールのロード動作は、異なる挙動を有する。さらに、実行されると、アプリケーションモジュール604のアプリケーション初期化動作は、レイヤーURIをレイヤーモジュールにマップする、ナビゲーションマップを生成する。ナビゲーションマップは、レイヤーURIをレイヤーモジュールにマップする、ソフトウェアオブジェクトである。異なるアプリケーションは、異なるアプリケーションクラスを有する。異なるアプリケーションクラスは、異なるアプリケーション初期化方法を実装する。故に、異なるアプリケーションは、異なるナビゲーションマップを初期化することができる。アプリケーション初期化動作はまた、アプリケーションのためのスタイルを初期化する。アプリケーションのためのスタイルは、アプリケーション内のテキストの外観を制御することができる。いくつかの実施形態では、スタイルはまた、個々のレイヤーまたはコンテンツ要素のタイプのために初期化することができる。以下は、いくつかの実施形態で使用される、例示的コードアプリケーションクラスである。アプリケーションオブジェクトをインスタンス化後、コンテナモジュール602は、アプリケーションオブジェクト参照をバインディングモジュール608に提供する1510。アプリケーションオブジェクト参照は、アプリケーションオブジェクトへの参照である。図15の実施例では、バインディングモジュール608は、アプリケーション特性を有する。コンテナモジュール602は、アプリケーションオブジェクト参照をバインディングモジュール608のアプリケーション特性に割り当てる。コンテナモジュール602は、次いで、初期ナビゲーション要求を生成する1512。初期ナビゲーション要求は、アプリケーションのホームレイヤーのレイヤーURIを指定する。図15の実施例では、コンテナモジュール602は、抽象アプリケーションクラスのナビゲート方法を呼び出し、ホームレイヤーのレイヤーURIをパラメータとして提供することによって、初期ナビゲーション要求を生成する。以下は、Consoleバインディングと併用される、例示的コンテナソースコードであって、Consoleバインディングは、Telnetプラットフォームと併用することができる。以下は、Compactバインディングと併用することができる、例示的コンテナソースコードである。Compactバインディングは、MicrosoftWINDOWS登録商標CEプラットフォームと併用することができる。以下は、MonoTouchバインディングと併用される、例示的コンテナソースコードである。MonoTouchバインディングは、APPLEIPHONEおよびAPPLEIPADプラットフォームと併用することができる。図16は、アプリケーションモジュール604の例示的ナビゲーション動作1600を例証する、流れ図である。いくつかの実施形態では、アプリケーションモジュール604は、アプリケーションモジュール604が、ナビゲーション要求を受信する度に、ナビゲーション動作1600を行う。図16の実施例に例証されるように、ナビゲーション動作1600は、アプリケーションモジュール604が、ナビゲーション要求を受信すると、始動する1602。ナビゲーション要求は、レイヤーURLを指定する。レイヤーURIは、ルート部分およびパラメータ部分を備える。レイヤーURIのパラメータ部分は、ゼロ以上のパラメータを備える。パラメータはそれぞれ、名前-値の対である。例えば、http://example.com/booksappbookId=234lang=engは、レイヤーURIであり得る。本実施例では、http://example.com/booksappは、レイヤーURIのルート部分である。本実施例では、レイヤーURIのパラメータ部分は、2つのパラメータ:bookId=234およびlang=engを備える。ナビゲーション要求の受信に応答して、アプリケーションモジュール604は、ナビゲーション要求によって指定されるレイヤーURIを使用して、適切なレイヤーモジュールを識別する1604。適切なレイヤーモジュールは、レイヤーモジュール606のうちの1つである。種々の実施形態では、アプリケーションモジュール604は、種々の方法において、適切なレイヤーモジュールを識別する。例えば、いくつかの実施形態では、アプリケーションモジュール604は、ナビゲーションマップを使用して、適切なレイヤーモジュールを識別する。本実施例では、ナビゲーションマップは、一式のエントリを備える。各エントリは、レイヤーモジュール606のうちの特定の1つに対する正規表現を満たす、任意のレイヤーURIをマップする。適切なレイヤーモジュールを識別後、アプリケーションモジュール604は、ロード要求を適切なレイヤーモジュールに提供する1606。種々の実施形態では、アプリケーションモジュール604は、種々の方法において、ロード要求を適切なレイヤーモジュールに提供する。例えば、いくつかの実施形態では、アプリケーションモジュール604は、適切なレイヤーモジュールのロード動作をコールすることによって、ロード要求を適切なレイヤーモジュールに提供する。アプリケーションモジュール604が、適切なレイヤーモジュールのロード動作をコールすると、アプリケーションモジュール604は、レイヤーURI内に指定されたパラメータをロード動作に提供する。適切なレイヤーモジュールは、種々のアクティビティを行い、コンテンツを適切なレイヤーモジュールにロードすることができる。例えば、適切なレイヤーモジュールは、データをインターネットから取得し、そのデータレイヤー内の種々のコンテンツアイテムにロードすることができる。本実施例では、適切なレイヤーモジュールは、最も良く売れている本のリストをウェブサイトからプルし、本のそれぞれのタイトルをレイヤー内のリストのリストアイテムにプットすることができる。別の実施例では、適切なレイヤーモジュールは、カメラ、マイクロホン、スピーカ、およびコンピューティングデバイス104の他のタイプの特徴と相互作用し、コンテンツをレイヤーにロードすることができる。本実施例では、そのような相互作用は、いくつかのタイプのモバイルデバイスとのみ可能である。適切なレイヤーモジュール上でロード動作をコール後、アプリケーションモジュール604は、ロード完了イベントを生成する1608。ロード完了イベントは、レイヤー参照を備える。レイヤー参照は、適切なレイヤーモジュールのロード動作によって生成されるレイヤーデータ構造を記憶する、場所を識別する。図17は、例示的コンピューティングデバイス1700を例証する、ブロック図である。いくつかの実施形態では、開発者コンピューティングシステム106、コンピューティングデバイス104、および/またはサーバシステム902は、コンピューティングデバイス1700のような1つ以上のコンピューティングデバイスを使用して、実装される。他の実施形態では、開発者コンピューティングシステム106、コンピューティングデバイス104、および/またはサーバシステム902は、図17の実施例に例証されるもの以外のハードウェア構成要素を有する、コンピューティングデバイスを使用して実装されることを理解されたい。異なる実施形態では、コンピューティングデバイスは、異なる方法において、実装される。例えば、図17の実施例では、コンピューティングデバイス1700は、メモリ1702、処理システム1704、二次記憶装置デバイス1706、ネットワークインターフェースカード1708、ビデオインターフェース1710、ディスプレイデバイス1712、外部構成要素インターフェース1714、外部記憶デバイス1716、入力デバイス1718、プリンタ1720、および通信メディア1722を備える。他の実施形態では、コンピューティングデバイスは、より多いまたは少ないハードウェア構成要素を使用して、実装される。例えば、別の例示的実施形態では、コンピューティングデバイスは、ビデオインターフェース、ディスプレイデバイス、外部記憶デバイス、または入力デバイスを含まない。メモリ1702は、データおよび/または命令を記憶可能な1つ以上のコンピュータ可読データ記憶メディアを含む。本書で使用されるように、データ記憶メディアは、コンピューティングデバイスによって可読のデータおよび/またはソフトウェア命令を記憶する、デバイスまたは製品である。異なる実施形態では、メモリ1702は、異なる方法において、実装される。例えば、種々の実施形態では、メモリ1702は、種々のタイプのコンピュータ可読データ記憶メディアを使用して、実装される。例示的タイプのコンピュータ可読データ記憶メディアは、動的ランダムアクセスメモリDRAM、ダブルデータレート同期動的ランダムアクセスメモリDDRSDRAM、待ち時間短縮DRAM、DDR2SDRAM、DDR3SDRAM、RambusRAM、固体メモリ、フラッシュメモリ、読取専用メモリROM、電気的消去可能プログラム可能ROM、およびデータを記憶する、他のタイプのデバイスおよび/または製品を含むが、それらに限定されない。処理システム1704は、選択的に、ソフトウェア命令を実行する、1つ以上の物理的集積回路を含む。種々の実施形態では、処理システム1704は、種々の方法において、実装される。例えば、一例示的実施形態では、処理システム1704は、1つ以上の処理コアとして、実装される。例えば、本例示的実施形態では、処理システム1704は、1つ以上のIntelCORETMシリーズマイクロプロセッサとして、実装されてもよい。別の例示的実施形態では、処理システム1704は、1つ以上の別個のマイクロプロセッサまたはマイクロコントローラとして、実装される。さらに別の例示的実施形態では、処理システム1704は、特有の機能性を提供する、ASICとして、実装される。さらに別の例示的実施形態では、処理システム1704は、ASICを使用し、ソフトウェア命令を実行することによって、特有の機能性を提供する。異なる実施形態では、処理システム1704は、異なる命令セット内のソフトウェア命令を実行する。例えば、種々の実施形態では、処理システム1704は、x86命令セット、電力命令セット、RISC命令セット、SPARC命令セット、IA-64命令セット、MIPS命令セット、および/または他の命令セット等の命令セット内のソフトウェア命令を実行する。二次記憶装置デバイス1706は、1つ以上のコンピュータ可読データ記憶メディアを含む。二次記憶装置デバイス1706は、処理システム1704によって直接アクセス不可能である、データおよびソフトウェア命令を記憶する。言い換えると、処理システム1704は、I/O動作を行い、データおよび/またはソフトウェア命令を二次記憶装置デバイス1706から読み出す。種々の実施形態では、二次記憶装置デバイス1706は、種々のタイプのコンピュータ可読データ記憶メディアによって、実装される。例えば、二次記憶装置デバイス1706は、1つ以上の磁気ディスク、磁気テープドライブ、CD-ROMディスク、DVD-ROMディスク、Blu-Rayディスク、固体メモリデバイス、Bernoulliカートリッジ、および/または他のタイプのコンピュータ可読データ記憶メディアによって、実装されてもよい。ネットワークインターフェースカード1708は、コンピューティングデバイス1700に、コンピュータ通信ネットワークにデータを送信し、そこからデータを受信させる。異なる実施形態では、ネットワークインターフェースカード1708は、異なる方法において、実装される。例えば、種々の実施形態では、ネットワークインターフェースカード1708は、Ethernet登録商標インターフェース、トークンリングネットワークインターフェース、光ファイバネットワークインターフェース、無線ネットワークインターフェース例えば、WiFi、WiMax等、または別のタイプのネットワークインターフェースとして、実装される。ビデオインターフェース1710は、コンピューティングデバイス1700に、ビデオ情報をディスプレイデバイス1712に出力させる。異なる実施形態では、ビデオインターフェース1710は、異なる方法において、実装される。例えば、一例示的実施形態では、ビデオインターフェース1710は、コンピューティングデバイス1700のマザーボードに統合される。別の例示的実施形態では、ビデオインターフェース1710は、ビデオ拡張カードである。例示的タイプのビデオ拡張カードは、ATITechnologies,Inc.Markham、Ontario製RADEON登録商標グラフィックスカード、NvidiaCorporationSantaClara、California製GEFORCE登録商標グラフィックスカード、および他のタイプのグラフィックスカードを含む。種々の実施形態では、ディスプレイデバイス1712は、種々のタイプのディスプレイデバイスとして、実装される。例示的タイプのディスプレイデバイスは、ブラウン管ディスプレイ、LCDディスプレイパネル、プラズマ画面ディスプレイパネル、タッチセンサ式ディスプレイパネル、LED画面、プロジェクタ、および他のタイプのディスプレイデバイスを含むが、それらに限定されない。種々の実施形態では、ビデオインターフェース1710は、種々の方法において、ディスプレイデバイス1712と通信する。例えば、種々の実施形態では、ビデオインターフェース1710は、ユニバーサルシリアルバスUSBコネクタ、VGAコネクタ、デジタルビジュアルインターフェースDVIコネクタ、S-ビデオコネクタ、高精細マルチメディアインターフェースHDMIインターフェース、DisplayPortコネクタ、または他のタイプのコネクタを介して、ディスプレイデバイス1712と通信する。外部構成要素インターフェース1714は、コンピューティングデバイス1700に、外部デバイスと通信させる。種々の実施形態では、外部構成要素インターフェース1714は、異なる方法において、実装される。例えば、一例示的実施形態では、外部構成要素インターフェース1714は、USBインターフェースである。他の例示的実施形態では、コンピューティングデバイス1700は、FireWireインターフェース、シリアルポートインターフェース、パラレルポートインターフェース、PS/2インターフェース、および/またはコンピューティングデバイス1700に、外部構成要素と通信させる、別のタイプのインターフェースである。異なる実施形態では、外部構成要素インターフェース1714は、コンピューティングデバイス1700に、異なる外部構成要素と通信させる。例えば、図17の実施例では、外部構成要素インターフェース1714は、コンピューティングデバイス1700に、外部記憶デバイス1716、入力デバイス1718、およびプリンタ1720と通信させる。他の実施形態では、外部構成要素インターフェース1714は、コンピューティングデバイス1700に、より多いまたは少ない外部構成要素と通信させる。他の例示的タイプの外部構成要素は、スピーカ、電話充電ジャック、モデム、メディアプレーヤドック、他のコンピューティングデバイス、スキャナ、デジタルカメラ、指紋読取機、およびコンピューティングデバイス1700に接続することができる他のデバイスを含むが、それらに限定されない。外部記憶デバイス1716は、1つ以上のコンピュータ可読データ記憶メディアを備える、外部構成要素である。コンピューティングデバイス1700の異なる実装は、異なるタイプの外部記憶デバイスとインターフェースをとる。例示的タイプの外部記憶デバイスは、磁気テープドライブ、フラッシュメモリモジュール、磁気ディスクドライブ、光学ディスクドライブ、フラッシュメモリユニット、ジップディスクドライブ、光ジュークボックス、および1つ以上のコンピュータ可読データ記憶メディアを備える、他のタイプのデバイスを含むが、それらに限定されない。入力デバイス1718は、ユーザ入力をコンピューティングデバイス1700に提供する、外部構成要素である。コンピューティングデバイス1700の異なる実装は、異なるタイプの入力デバイスとインターフェースをとる。例示的タイプの入力デバイスは、キーボード、マウス、トラックボール、スタイラス入力デバイス、キーパッド、マイクロホン、ジョイスティック、タッチセンサ式ディスプレイ画面、およびユーザ入力をコンピューティングデバイス1700に提供する、他のタイプのデバイスを含むが、それらに限定されない。プリンタ1720は、データを紙に印刷する、外部デバイスである。コンピューティングデバイス1700の異なる実装は、異なるタイプのプリンタとインターフェースをとる。例示的タイプのプリンタは、レーザプリンタ、インクジェットプリンタ、フォトプリンタ、コピー機、ファックス機、レシートプリンタ、ドットマトリクスプリンタ、またはデータを紙に印刷する、他のタイプのデバイスを含むが、それらに限定されない。通信メディア1722は、コンピューティングデバイス1700のハードウェア構成要素間の通信を促進する。異なる実施形態では、通信メディア1722は、コンピューティングデバイス1700の異なる構成要素間の通信を促進する。例えば、図17の実施例では、通信メディア1722は、メモリ1702、処理システム1704、二次記憶装置デバイス1706、ネットワークインターフェースカード1708、ビデオインターフェース1710、および外部構成要素インターフェース1714間の通信を促進する。コンピューティングデバイス1700の異なる実装では、通信メディア1722は、異なる方法において、実装される。例えば、コンピューティングデバイス1700の異なる実装では、通信メディア1722は、PCIバス、PCIExpressバス、アクセラレーテッドグラフィックスポートAGPバス、INFINIBAND登録商標インターコネクト、シリアルアドバンスドテクノロジーアタッチメントATAインターコネクト、パラレルATAインターコネクト、ファイバチャネルインターコネクト、USBバス、小型コンピューティングシステムインターフェースSCSIインターフェース、または別のタイプの通信メディアとして、実装されてもよい。メモリ1702は、種々のタイプのデータおよび/またはソフトウェア命令を記憶する。例えば、図17の実施例では、メモリ1702は、ベーシックインプット/アウトプットシステムBIOS1724、オペレーティングシステム1726、アプリケーションソフトウェア1728、およびプログラムデータ1730を記憶する。BIOS1724は、処理システム1704によって実行されると、コンピューティングデバイス1700に、ブートアップさせる、一式のソフトウェア命令を含む。オペレーティングシステム1726は、処理システム1704によって実行されると、コンピューティングデバイス1700に、コンピューティングデバイス1700のアクティビティおよびリソースの共有を調整する、オペレーティングシステムを提供させる、一式のソフトウェア命令を含む。例示的タイプのオペレーティングシステムは、MicrosoftWINDOWS登録商標、Linux登録商標、Unix登録商標、AppleOSX登録商標、AppleIOS登録商標、HPWEBOS登録商標、GoogleCHROME登録商標OS、GoogleANDROID登録商標OS等を含むが、それらに限定されない。アプリケーションソフトウェア1728は、処理システム1704によって実行されると、コンピューティングデバイス1700に、コンピューティングデバイス1700のユーザにアプリケーションを提供させる、一式のソフトウェア命令を含む。プログラムデータ1730は、アプリケーションソフトウェア1728によって生成および/または使用される、データである。前述の種々の実施形態は、例証のみとして提供され、限定として解釈されるべきではない。当業者は、本明細書に例証および説明される例示的実施形態および用途に従うことなく、種々の修正および変更を行ってもよいことを容易に認識するであろう。例えば、図に示される動作は、実施例に過ぎない。種々の実施形態では、類似動作は、図中に示されるものより多いまたは少ないステップを含むことができる。さらに、他の実施形態では、類似動作は、図に示される動作のステップを異なる順序で行うことができる。"