(57)【要約】  プログラミング・フレームワークを用いたコンピューター・プラットフォームの抽象化を可能とするメカニズムが開示される。プログラミング・フレームワークは、プラットフォームを抽象化することにより、アプリケーション・プログラムが様々なプラットフォームと同一の方法で対話することを可能とする。プログラミング・フレームワークは、プラットフォーム特有の要求に適合するよう命令を修正し、アプリケーションは、様々なプラットフォームに渡るプログラミング・フレームワークに対して、同一の命令を用いる。また、プログラミング・フレームワークは、アプリケーションに代わって、プラットフォーム特有の期待されるアプリケーション動作をエミュレートする。また、プログラミング・フレームワークは、アプリケーション・プログラムのアクセスを制限し、プラットフォームのための追加のセキュリティ層を提供する。
2010525450.tif 000002
【特許請求の範囲】
【請求項１】
プログラミング・フレームワークを用いてコンピューター・システムにおいてプラットフォームを抽象化する方法であって、
プログラミング・フレームワークにおいて、少なくとも一つのアプリケーション・プログラムから少なくとも一つの命令を受信するステップと、
前記プログラミング・フレームワーク内において、前記少なくとも一つの命令を、コンピューター装置のオペレーティング・システムの要求に適合するように修正するステップと、
前記修正された少なくとも一つの命令を、前記プログラミング・フレームワークから前記コンピューター装置のオペレーティング・システムに伝えるステップであって、前記プログラミング・フレームワークが、様々なオペレーティング・システム及びハードウェアを備える少なくとも２つのコンピューター装置上に構成されることが可能であり、前記プログラミング・フレームワークが、前記少なくとも２つのコンピューター装置上において、前記コンピューター装置のオペレーティング・システム及びハードウェアの異なる要求にも拘わらず、前記少なくとも一つのアプリケーション・プログラムからの前記少なくとも一つの命令を同一の方法で受信するステップと、
を備える方法。
【請求項２】
請求項１記載の方法であって、前記コンピューター装置のオペレーティング・システムが少なくとも一つの資源層を備え、前記プログラミング・フレームワークが、前記少なくとも一つの命令を、前記コンピューター装置のオペレーティング・システムの前記少なくとも一つの資源層に伝える方法。
【請求項３】
請求項２記載の方法であって、前記コンピューター装置のオペレーティング・システムが、少なくともグラフィックス層、オーディオ層、入力層及び記憶層からなる資源層を有する方法。
【請求項４】
請求項２記載の方法であって、前記プログラミング・フレームワークが、前記少なくとも一つの命令を、少なくとも一つのアプリケーション・プログラミング・インターフェース（ＡＰＩ）を介して、前記コンピューター装置のオペレーティング・システムの前記少なくとも一つの資源層に伝える方法。
【請求項５】
請求項１記載の方法であって、前記プログラミング・フレームワークが、前記コンピューター装置のオペレーティング・システムに統合されている方法。
【請求項６】
請求項１記載の方法であって、前記プログラミング・フレームワークが、前記オペレーティング・システムから少なくとも一つの命令を受信し、前記少なくとも一つの命令を、前記アプリケーション・プログラムの要求に適合するように必要に応じて修正し、前記少なくとも一つの命令を前記アプリケーション・プログラムに伝える方法。
【請求項７】
請求項１記載の方法であって、前記プログラミング・フレームワークにおいて前記少なくとも一つのアプリケーション・プログラムから受信された前記少なくとも一つの命令が、前記コンピューター装置のオペレーティング・システムによって制御された資源に対する少なくとも一つの要求を含む方法。
【請求項８】
請求項１に記載されたステップを実行するためのコンピューター実行可能命令を有するコンピューター読み取り可能媒体。
【請求項９】
プログラミング・フレームワークを用いて、コンピューター・システムにおいて期待されているアプリケーション・プログラム動作をエミュレートする方法であって、
プログラミング・フレームワークにおいて、少なくとも一つのアプリケーション・プログラムから少なくとも一つの命令を受信するステップと、
前記プログラミング・フレームワーク内において、前記少なくとも一つのアプリケーション・プログラムからの前記少なくとも一つの命令が、コンピューター装置のオペレーティング・システムのアプリケーション・プログラム動作に対する期待に適合するように更なる命令を必要とするか否かを決定するステップと、
前記プログラミング・フレームワークが、前記コンピューター装置のオペレーティング・システムによって前記アプリケーション・プログラムに期待されている動作をエミュレートするように、前記プログラミング・フレームワークからの追加の命令を、適切な時間及び方法で、前記コンピューター装置のオペレーティング・システムに伝えるステップと、
を備える方法。
【請求項１０】
請求項９記載の方法であって、前記コンピューター装置のオペレーティング・システムが、少なくとも一つの資源層を備え、前記プログラミング・フレームワークが、前記追加の命令を、前記コンピューター装置のオペレーティング・システムの前記少なくとも一つの資源層に伝送する方法。
【請求項１１】
請求項１０記載の方法であって、前記コンピューター装置のオペレーティング・システムが、少なくともグラフィックス層、オーディオ層、入力層及び記憶層からなる資源層を有する方法。
【請求項１２】
請求項１０記載の方法であって、前記プログラミング・フレームワークが、前記少なくとも一つの命令を、少なくとも一つのアプリケーション・プログラミング・インターフェース（ＡＰＩ）を介して、前記コンピューター装置のオペレーティング・システムの前記少なくとも一つの資源層に伝える方法。
【請求項１３】
請求項９記載の方法であって、前記プログラミング・フレームワークにおいて前記少なくとも一つのアプリケーション・プログラムから受信された前記少なくとも一つの命令が、前記コンピューター装置のオペレーティング・システムによって制御された資源に対する少なくとも一つの要求を含む方法。
【請求項１４】
請求項９記載の方法であって、前記プログラミング・フレームワークが、前記コンピューター装置のオペレーティング・システムに統合されている方法。
【請求項１５】
請求項９に記載されたステップを実行するためのコンピューター実行可能命令を有するコンピューター読み取り可能媒体。
【請求項１６】
プログラミング・フレームワークを用いてコンピューター・システムに追加のセキュリティを提供する方法であって、
プログラミング・フレームワークにおいて、少なくとも一つのアプリケーション・プログラムから少なくとも一つの命令を受信するステップと、
前記プログラミング・フレームワーク内において、前記少なくとも一つの命令がコンピューター・システムのセキュリティ・ポリシーに違反しているか否かを決定するステップであって、前記少なくとも一つの命令が前記コンピューター・システムのセキュリティ・ポリシーに違反していない場合に、前記プログラミング・フレームワークが前記命令を前記コンピューター・システムのオペレーティング・システムに伝え、前記少なくとも一つの命令が前記コンピューター・システムのセキュリティ・ポリシーに違反している場合に、前記プログラミング・フレームワークが前記命令を前記コンピューター・システムのオペレーティング・システムに伝えないステップと、
を備える方法。
【請求項１７】
請求項１６記載の方法であって、前記プログラミング・フレームワークにおいて前記少なくとも一つのアプリケーション・プログラムから受信された前記少なくとも一つの命令が、前記コンピューター装置のオペレーティング・システムによって制御された資源に対する少なくとも一つの要求を含む方法。
【請求項１８】
請求項１６記載の方法であって、前記少なくとも一つの命令が前記コンピューター・システムのセキュリティ・ポリシーに違反していない場合に、前記プログラミング・フレームワークが前記命令を、少なくとも一つのアプリケーション・プログラミング・インターフェース（ＡＰＩ）を介して、前記コンピューター・システムのオペレーティング・システムに伝える方法。
【請求項１９】
請求項１６記載の方法であって、前記プログラミング・フレームワークが、前記コンピューター装置のオペレーティング・システムに統合されている方法。
【請求項２０】
請求項１６に記載されたステップを実行するためのコンピューター実行可能命令を有するコンピューター読み取り可能媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
一つのコンピューター・プラットフォーム上で上手く動作するソフトウェア・アプリケーションの開発は複雑な作業であるが、複数のプラットフォーム上で上手く動作するソフトウェア・アプリケーションの開発は更に難しい。開発者が所望する結果を作り出すようにコンピューター・プラットフォームのハードウェア及びオペレーティング・システムを制御するには、実行し且つ管理しなければならない多くの作業が存在し、これらの作業を達成する方式は、プラットフォーム間で大きく異なり得る。アプリケーションに期待される動作も、プラットフォーム間で異なる。プロのソフトウェア開発者にとって、異なるプラットフォームにおいて要求される全作業を正しく実行するコードを書き、それらのプラットフォームに期待される動作と合致する新しいアプリケーションを作成することは、プラットフォーム製造業者の完全なサポートが得られない限り、極めて時間がかかり、複雑である。アプリケーション開発のこの側面は、愛好者、学生開発者や、製造業者の認定開発者グループの外にいる他のプログラマーにとって更に難しいものである。
【０００２】
これは、特に、ゲーム・コンソールのようなクローズド・システムにあてはまる。ゲーム・コンソールは、一般に、製造業者によって制御される「署名された」即ち認証されたゲームのみが、コンソール上で実行されることを許容する。この制限は、発行者に対して厳しく制御された環境を保持するビジネスモデルの保護、知的財産権侵害行為の防止、又は、不正行為の可能性の制御を含む、様々な理由によって行われ得る。しかしながら、よりオープンなプラットフォームだけではなく、クローズド・システムのために自分自身のプログラムを作成したいと望む自家製開発者及び愛好者の急激に発展する市場が存在する。これらの開発者は、署名されていないコードをそのようなコンソール上で動作させるために、時間と労力をかけてゲーム・コンソールを改造（hack）する。クローズド・システムに対する保護レベルを依然として維持しながらも、そのような開発者が、クローズド・システムに不法侵入する必要なく自分自身のコンテンツを作成する合法的な方法があることが望ましい。
【０００３】
従って、必要とされているのは、様々なプラットフォーム及びオペレーティング・システムのために自らのソフトウェアをカスタマイズする必要性から開発者を解放する方法である。開発者が、下層の様々なソフトウェア又はハードウェアを処理するためにアプリケーション・コードをカスタマイズすることなしに、プログラムが様々なプラットフォームで動作することを可能とする、オペレーティング・システム又はプログラミング・フレームワークに対する標準インターフェースを用いてプログラムを書くことができれば、彼らの作業は大幅に単純化される。そのようなフレームワークは、プログラミング・フレームワークに下層のコード及びハードウェアの違いを処理させて、開発者が様々なコンピューター装置のオペレーティング・システムと同一の方法で対話することを可能とする必要がある。インターフェースは、また、供給された開発者コードがプラットフォームの制限及び要求をサポートすることを保証するチェック及び検証を増やすことにより、下層のプラットフォームを保護する。これは、開発者を解放して、プログラムを様々なオペレーティング・システム及びハードウェアで動作させるという、より些細なタスクについて心配する必要なしに、彼らのプログラミングの努力をプログラムの創造的側面に集中させる。
【発明の概要】
【課題を解決するための手段】
【０００４】
下層のプラットフォームを抽象化するプログラミング・フレームワークを介して、開発者コードがコンピューター・システムの資源にアクセスすることを可能とするメカニズムが提供される。複数のプラットフォームに渡る一貫したフレームワークを提供することにより、製造業者は、オペレーティング・システム資源及びハードウェアへのアクセスを得やすくすることによって、サードパーティのソフトウェア開発を促進することができる。本明細書に開示される発明の一態様においては、プログラミング・フレームワークは、プラットフォームのオペレーティング・システム層とアプリケーション・ソフトウェアとの間に提供される。このプログラミング・フレームワークは、アプリケーション・ソフトウェアに代わって、例えばグラフィックス層、オーディオ層、入力層及び記憶層である様々なシステム層と通信する中間層を形成する。これらのシステム層は、プラットフォームのオペレーティング・システム及びハードウェアと共に動作して、プラットフォーム上でアプリケーション・ソフトウェアを実現するために要求されたタスクを達成する。
【０００５】
本プログラミング・フレームワークは、コンピューター・プラットフォームへの標準インターフェースを提供し、開発者のコンテンツがオペレーティング・システム及び関連する資源の態様を制御することを可能とする。これは、同一のアプリケーション・コードを用いて様々なプラットフォームを制御する方法を提供し、それにより、特定のハードウェア及びオペレーティング・システム資源を彼らのアプリケーションと共に動作させることについて心配しなければならないことから、開発者を解放する。プログラミング・フレームワークはプラットフォームの抽象化を行い、そのために、開発者コードは、コードが動作する実際のプラットフォームとは無関係に、同一の方法で、コンピューター・プラットフォームの単一の抽象化されたバージョンと対話する。このフレームワークは、オペレーティング・システム及びハードウェアに対して、開発者アプリケーションの実現に必要なタスクを実行するように指示することのプラットフォーム特有の態様を実現し、開発者をこのタスクから解放する。フレームワークは、また、アプリケーションがプラットフォーム上で上手く動作できるように、プラットフォームによって期待される適切な動作を提供し、アプリケーション・コードとプラットフォームとの間に追加のセキュリティ層を加える。
【０００６】
本要約は、選択された概念を、以下の詳細な説明において更に説明される簡略化された形態で紹介するために提供されることに注意するべきである。本要約は、特許請求の範囲に記載された発明の主要な特徴又は不可欠な特徴を特定する意図はなく、特許請求の範囲に記載された発明の範囲の決定を助けるために用いられることも意図していない。
【０００７】
上記の要約は、以下の詳細な説明とともに、添付の図面と組み合わせて読むことにより、さらに良く理解される。本明細書の開示内容の例を示すために、開示内容の様々な態様が示される。しかしながら、開示内容は、記載された特定の側面に限られるものではない。以下の図面が含まれる。
【図面の簡単な説明】
【０００８】
【図１】図１は、開発者ソフトウェアが直接オペレーティング・システム層と相互作用する従来技術のシステムを示す。
【図２】図２は、開発者ソフトウェアが、オペレーティング・システム層と通信する方法として、プログラミング・フレームワークと相互作用する例としてのシステムを示す図である。
【図３】図３は、開発者ソフトウェアの要求をオペレーティング・システムのグラフィックス層によって期待されている形式に変換することにより、プログラミング・フレームワークがプラットフォーム抽象化を提供する例としての方法を示す図である。
【図４】図４は、開発者ソフトウェアの要求を異なるオペレーティング・システムのグラフィックス層によって期待されている他の形式に変換することにより、プログラミング・フレームワークがプラットフォーム抽象化を提供する例としての方法を更に示す図である。
【図５】図５は、開発者コードからの要求をオペレーティング・システムのグラフィックス層に伝える際に適切なコードの動作をエミュレートすることにより、プログラミング・フレームワークがプラットフォーム抽象化を提供する例としての方法を示す図である。
【図６】図６は、本明細書に開示された発明に従ってプログラミング・フレームワークが実現され得る、非限定的な例としてのコンピューター・システム環境を表すブロック図を示す。
【図７】図７は、本明細書に開示された発明のもう一つの態様に従ってプログラミング・フレームワークが実現され得る、非限定的な例としてのマルチメディア・コンソール装置を示すブロック図を示す。
【発明を実施するための形態】
【０００９】
概要
一般に、コンピューター・プラットフォーム上で動作するアプリケーションは、オペレーティング・システムと直接に相互作用する。アプリケーションは、オペレーティング・システムを通して、タスクを達成するために必要なプラットフォームのハードウェア及び資源を操作する。アプリケーションは、通常、アプリケーション・プログラム・インターフェース（ＡＰＩ）を用いてオペレーティング・システムの各要素と通信し、自らが必要とするシステム・レベルのタスクを達成する。そのようなタスクの例には、モニター上でのグラフィックス画像の表示、スピーカー上でのオーディオ出力の作成、装置（例えば、キーボード、マウス又はゲーム・コントローラー）を介したユーザーからの入力の受信、メモリー・アクセス、及び記憶装置（例えば、ハード・ディスク・ドライブ、フロッピー（登録商標）・ディスク・ドライブ又はフラッシュ・ドライブ）へのアクセスを含む。ハードウェア及びオペレーティング・システムはプラットフォーム間で異なるので、ＡＰＩ及びその使用方法は、必然的に、プラットフォーム毎に異なる。そのため、プラットフォーム上で動作する各アプリケーションは、その意図どおりに動作するべきであるならば、該プラットフォームの特定のオペレーティング・システム及びそれに関連付けられたＡＰＩと適切に対話しなければならない。更に、コンピューター・プラットフォーム上で動作するアプリケーションには期待される動作が存在する。これらの期待される動作も、プラットフォームによって大きく異なる。アプリケーションがプラットフォームの期待どおりに動作できないことは、アプリケーションの失敗又は不正確な動作の原因となり得る。
【００１０】
一方、コンピューター・プラットフォーム上で動作する多くのアプリケーション・ソフトウェアは、プラットフォーム資源から必要とするもの及び期待するものについて、類似の要求を有する。つまり、アプリケーション・ソフトウェアは極めて頻繁に、例えば、メモリー、映像ディスプレイ、コントローラー等の、多くのコンピューター・プラットフォームにとって典型的なハードウェア及びソフトウェアの利用を要求する。そのため、多くのアプリケーションによって要求される資源へのアクセスを依然として提供しつつも、アプリケーションからは、プラットフォームに無関係に、プラットフォームへの同一のインターフェースが見えるようにプラットフォームを抽象化する、アプリケーションのためのインターフェースを提供することが可能である。そのようなインターフェースを提供することにより、開発者は、自分のアプリケーションのプラットフォーム特有の態様に集中しなければならないことから開放されて、複数のプラットフォームと上手く対話することができる単一のプログラムを作成することができる。
【００１１】
本開示内容の非限定的な例としての態様において、プラットフォームの抽象化を実行するプログラミング・フレームワークが提供される。プログラミング・フレームワークは、プラットフォームの各資源に対するＡＰＩと類似した、プラットフォームへのインターフェースを提供するが、プログラミング・フレームワークは、プラットフォームの幾つかの資源へのアクセスを可能とする、プラットフォーム全体へのインターフェースであり得る。アプリケーション・ソフトウェアは、プラットフォームの抽象化されたバージョンと共に動作するので、フレームワークの下層のハードウェア又はソフトウェアに無関係に、プログラミング・フレームワークを介してタスクを達成するよう、同一のアクションを実行する。プログラミング・フレームワークは、アプリケーションからのプラットフォーム資源に対する要求を受け取り、その要求を資源に伝えるが、その際、要求を、当該資源によって要求される特定の方法で正しく受信されるように修正及び形式変換することにより、要求の正しい実行を保証する。同様に、アプリケーション・ソフトウェアに向けられたシステム資源からの情報及び要求は、プログラミング・フレームワークを介してアプリケーション・ソフトウェアに伝えられる。
【００１２】
プログラミング・フレームワークは、また、アプリケーションがプラットフォームに対して「上手く動作している」ように見えるように、アプリケーションに代わって、プラットフォームに対し期待された動作を提供する。これにより、開発者は、様々なプラットフォームに期待される動作の違いを受け入れなければならないことから開放される。
【００１３】
プログラミング・フレームワークは、プラットフォームのための追加のセキュリティ層を提供する。プラットフォームへ標準インターフェースを提供することにより、フレームワークは、アプリケーション・ソフトウェアからの通信及び要求がどのようにプラットフォーム資源に到達するかを制御する。これは、制限されたプラットフォーム資源にアクセスしたり、或いは、プラットフォーム又はプラットフォーム製造者にとって安全ではない又は望ましくない動作を実行したりするかもしれないアプリケーション開発者コードに対し、追加のチェックを提供する。プログラミング・インターフェースは、また、愛好者又は自家製開発者に対し、プラットフォーム資源にアクセスするための更に容易且つ効果的な方法を提供することにより、コンピューター・システム、特にゲーム・コンソールのようなクローズド・システムをハッキングする（hack）誘因を低減し、それによってハッキングの必要性を無くす。
【００１４】
プログラミング・フレームワークの態様
本明細書の発明開示のこのセクションにおいては、プラットフォーム抽象化を提供するためのプログラミング・フレームワークの態様に焦点をあてる。本明細書に開示された発明は、ソフトウェア開発者が装置の少なくとも一つの資源にアクセスするアプリケーション・ソフトウェアを作成できるようにすることが望ましい、任意のコンピューター装置に適用される。このフレームワークを更によく理解するため、従来技術を検討することが有益である。
【００１５】
図１は、開発者コード１０２が所望の結果を達成するためにオペレーティング・システムの様々な層と直接に対話する、プラットフォーム１５０上の従来技術のシステムを示す。プラットフォーム１５０はゲーム・コンソールのようなクローズド・コンピューター装置であってよく、クローズド・コンピューター装置は、オペレーティング・システム及びゲーム・ソフトウェアを実行するよう構成される、或いは、広範なソフトウェアを実行するよう構成されたパーソナル・コンピューターのような、よりオープンなプラットフォームであってよい。図示されているのは、典型的なプラットフォーム１５０において利用可能であり得る層の例である。これらは、グラフィックス層１１０、オーディオ層１１５、入力層１２０、記憶層１２５、ネットワーク層１３０及び計算層１３５を含む。これらの各層は様々なタスクを受け持つ。例えば、グラフィックス層１１０は、（フラット・シェーディング、法線マッピング、テクスチャー・マッピング等を含むがそれらに限定されない）グラフィックス表示を担当し、オーディオ層１１５は、その名前からわかるように、クローズド・システム上のオーディオを担当する。入力層１２０は、例えばコントローラーのボタン選択、入力装置を用いたクリック等のユーザーからの入力の処理を担当し、記憶層１２５は、特定のコンテンツの記憶及び呼び出しを担当し、ネットワーク層１３０は、ネットワーク・アクセスを可能とすることができる。計算層１３５は、例えば、（グラフィックスが含まれる場合に）更に効率的なマップ表示を可能とするような、或る数学関数の実行を可能とする。
【００１６】
これらの層１１０、１１５、１２０、１２５、１３０及び１３５のそれぞれは、アプリケーションに対してプラットフォーム１５０の資源へのアクセスを提供する助けをする。これらの層は、また、安全な演算を保証するように（即ち、開発者コードが、プラットフォーム製造者又は他の利害関係者によって意図されてはいない目的のために下層のネイティブＯＳ層１０３及び任意の関連付けられたプラットフォーム１５０の資源を引き継ぐことがないように）開発者コード１０２が通過することを必要とする、ユーザー・モード１００と管理者（例えば、カーネル）モード１０１との間の安全なゲートを提供する。
【００１７】
層１１０、１１５、１２０、１２５、１３０及び１３５は、典型的には、プラットフォーム、オペレーティング・システム又はハードウェアに特有のものである。例えば、３２ＧＢのハード・ドライブを備えるプラットフォームのための記憶層１２５を構成するソフトウェアは、６４ＧＢのハード・ドライブを備えるプラットフォーム上で用いられるソフトウェアとは異なり得る。同様に、プラットフォームのオペレーティング・システムの或るバージョンは、記憶層１２５を、先のバージョンとは違う方法で実装し得る。これは必然的なことであり、異なるハードウェアは、該ハードウェアを制御するための異なるソフトウェアを必要とするからである。同様に、下層のオペレーティング・システムの異なるバージョンは、システム・タスクを達成する異なるソフトウェア及び異なる方法を有することになる。
【００１８】
典型的には、層１１０、１１５、１２０、１２５、１３０、及び１３５は、ＡＰＩにより、アプリケーション・アクセス層１０４を介してアクセスされる。これらのＡＰＩは、層を構成するソフトウェアが変われば変わる。従って、アプリケーション・コードは、これを許容しなければならず、アプリケーション・コードは、アプリケーション・ソフトウェアが正しく動作することが望ましい全てのプラットフォーム上に存在する様々なＡＰＩに対する適切な入力を検出し且つ提供するか、或いは、単一のプラットフォームに限定される必要がある。このことは、プロの開発者によって理解され日頃から処理されてはいるが、彼らのコードがマルチプラットフォーム・コンパティブルであることを保証するための時間を費やさなくてもよいように作業すべき共通のフレームワークを持つことの方が、彼らにはずっと容易であろう。入門開発者や愛好者にとって、マルチプラットフォームのサポートは、更に大きな挑戦である。
【００１９】
更に、層１１０、１１５、１２０、１２５、１３０及び１３５へのアクセスに使われ得るＡＰＩは、極めて特殊且つ複雑であり得るので、それらの要件、及びそれらが層とどのように機能するかを完全に理解することが要求される。タスク要求時にＡＰＩに完全且つ正確なデータを提供できないと、タスクの失敗又は誤った状態を招き得る。ＡＰＩは、また、正しく機能するようにアプリケーションからの特定の動作を期待し得る。これらの動作の知識は、プロではない開発者、又はプラットフォーム製造者と直接一緒に作業していない者、或いはプラットフォーム製造者の認定なしに作業している者にとっては、容易にアクセスできるものではない。更に、これは一般にプロの開発者によって扱われるものではあるが、ソフトウェア開発のこうした側面の処理は、入門開発者にとっては、極めてとっつきにくいタスクであり得る。
【００２０】
図１とは対照的に、図２は、開発者コード２０２とプラットフォーム２５０の構成要素との間の通信を促進するためにプログラミング・フレームワーク２０５を利用するシステムを示している。プラットフォーム２５０は、例えばゲーム・コンソールのようなクローズド・コンピューター装置であっても、例えばパーソナル・コンピューターのような一層オープンなプラットフォームであってもよく、該コンピューター装置は、プログラミング・フレームワーク２０５を実装するオペレーティング・システム・ソフトウェア構成要素を実行するように構成される。アプリケーション・アクセス層２０４内の層２１０、２１５、２２０、２２５、２３０及び２３５は、機能において、図１について上で説明したものと同様である。プログラミング・フレームワーク２０５は、層２１０、２１５、２２０、２２５、２３０及び２３５にアクセスするために利用されるＡＰＩを抽象化する。本開示内容の例としての非限定的な態様において、プログラミング・フレームワーク２０５は、例えば層２１０、２１５、２２０、２２５、２３０及び２３５であるプラットフォーム資源に対し、簡略化されたインターフェースを提供する。本明細書で使われる「インターフェース」という用語は、ソフトウェアによって一般的に用いられ得る任意の入出力の広い定義を持つものとする。
【００２１】
図３及び図４は、プログラミング・フレームワークがどのようにアプリケーション・ソフトウェア開発を促進し、プラットフォーム抽象化を提供するかの、非常に簡略化された例を示している。ここで記載される例は、表示されるコンピューター・システムのパーツが極めて限られたものであり、本発明の説明のために大幅に簡略化されていることに注意されたい。また、ここで用いられるコマンドの例は、説明のためだけに簡略化されたコマンドであって、いかなる意味においても、どのような実際のコマンドが用いられるかを示唆したり、本開示内容を限定したりするものではないことにも注意されたい。
【００２２】
図３は、ビデオ・カード３５５、ネイティブなオペレーティング・システム３０３、グラフィックス層３１０及びプログラミング・フレームワーク３０５を備えるプラットフォーム３５０上のシステム例を示す。ビデオ・カード３５５を介してプラットフォーム３５０に接続されたＣＲＴ（陰極線管）モニター３６０が存在する。プラットフォーム３５０上で動作する開発者コード３０２は、プラットフォーム３５０がディスプレイ上に文字セットを表示することを要求し得る。この例において、開発者コード３０２は、モニター３６０での文字「ＡＢＣ」の表示を要求している。この要求は、「Ｄｉｓｐｌａｙ｛ＡＢＣ｝」というコマンド３４０により、プログラミング・フレームワークに伝えられる。プログラミング・フレームワーク３０５は、この要求を受け取り、グラフィックス層３１０の要求に合うように修正してグラフィックス層３１０に提示する。この例については、グラフィックス層３１０は、コマンドが、「ＧｒａｐｈｉｃｓＡＰＩ｛ｐｒｉｎｔＣＲＴ［ＡＢＣ］［５０］［６０］［１０］｝」というコマンド３４０によって例示されるような形式に変換されることを要求していると想定する。この例において、グラフィックス層３１０は、表示される文字を超えた他の表示文字のためのフィールドを要求するが、これは、プログラミング・フレームワーク３０５によって提供されるので、アプリケーション開発者コード３０２は、グラフィックス層３１０特有の要求を知るという重荷から開放される。グラフィックス層３１０は、そこで、ビデオ・カード３５５を制御するオペレーティング・システム層３０３と共に動作し、ビデオ・カード３０５は、次いで、ＣＲＴモニター３６０に文字を表示するよう命令する。
【００２３】
図３を、プラットフォーム４５０、ビデオ・カード４５５、ネイティブのオペレーティング・システム４０３、グラフィックス層４１０及びプログラミング・フレームワーク４０５を備えるシステムが示される図４と対比すると、ビデオ・カード４５５を介してプラットフォーム４５０に接続されたＬＣＤ（液晶表示）モニター４６０が存在する。ここで、同一の開発者コード３０２は、このプラットフォーム４５０上で動作しており、プログラミング・フレームワーク４０５に対し、図３におけると同じ「Ｄｉｓｐｌａｙ｛ＡＢＣ｝」というコマンド３４０により、同一の要求を行う。プログラミング・フレームワーク４０５は、この要求を受け取ってグラフィックス層４１０のために正しく形式変換するが、この場合、プラットフォーム４５０は、図３に示すプラットフォーム３５０とは異なる資源を有するため、グラフィックス層４１０のコマンド要求は、グラフィックス層３１０のものとは異なる。そのため、プログラミング・フレームワーク４０５は、グラフィックス層４１０に対し、「ＧｒａｐｈｉｃｓＡＰＩ｛ｐｒｉｎｔＬＣＤ［１０］［５０］［６０］［ＡＢＣ］｝」というコマンドを発行する。しかしながら、アプリケーション開発者コード３０２は、下層のプラットフォーム３５０及び４５０の差異を全く理解しなくても、同一のコマンド３４０により、依然として同じ結果を達成することができる。そこで、グラフィックス層４１０は、ビデオ・カード４５５を制御するオペレーティング・システム層４０３と作用し、次いで、ビデオ・カード４５５がＬＣＤモニター４６０に対して、文字を表示するよう命令する。
【００２４】
この例は、プログラミング・フレームワークがどのようにプラットフォーム抽象化を提供するかを示している。図３及び４に示された例において、開発者コード３０２は、下層のソフトウェア及びハードウェアの違いに関わらず、プログラミング・フレームワーク３０５及び４０５に対し、同一のコマンド３４０を伝えることができた。開発者コード３０２は、グラフィックス層ＡＰＩと共に動作するための異なる要件を含む、プラットフォーム間の差異を解決する必要なしに、プラットフォーム３５０及び４５０と対話することができた。開発者コードを離れてプラットフォームを抽象化するこの能力は、マルチプラットフォーム・コンパティブルなアプリケーションの作成作業を大幅に簡略化する。本明細書に記載されたプログラミング・フレームワークの利用により、コードがどのプラットフォームでも実行可能であることを保証するために必要とされる極めて大量の単純労働が取り除かれる。
【００２５】
図５は、開発者コードがプラットフォーム５５０との相互作用において正しい動作を示すことを保証するのを、プログラミング・フレームワーク５０５がどのように助けるかを示している。図３及び図４と同様に、開発者コード３０２は、コマンド３４０の形態で要求をプログラミング・フレームワーク５０５に通信する。フレームワーク５０５は、要求３４０を受信して、当該コマンドが下層のハードウェア及びソフトウェアにおいて実装されるようにする手段を講じる。この例において、文字表示を要求するコマンド５３０のようなコマンドよりも、表示されるべき文字のためのメモリー空間を要求するコマンド５７０の方が常に先行することをグラフィックス層５１０が要求するならば、プログラミング・フレームワーク５０５がこの追加の要求５７０を提供する。プラットフォーム抽象化の任務の一環として、フレームワーク５０５は、開発者コード３０２がオペレーティング・システム層から正しく動作するように見えるように、任意の必要な追加コマンドを発行し、必要とされる追加の動作を実行して、開発者コード３０２が意図したとおりに実行されるよう保証するのを助ける。また、これにより、開発者は、様々なプラットフォームにより期待される様々な動作を提供するようにアプリケーション・コード３０２にコード動作の様々な変形を含めなければならないことから解放される。
【００２６】
また、プログラミング・フレームワークは、プラットフォームのための追加されたセキュリティ層を提供する。再び図２を参照すると、開発者コード２０２が、プログラミング・フレームワーク２０５に対し、アクセスするべきではない資源にアクセスするための要求を発行した場合、又は、開発者コード２０２が、プラットフォーム製造者によって許可されていない或いは望ましくないタスクの制御或いは実行を試みた場合、プログラミング・フレームワーク２０５は追加の防御として働く。また、プログラミング・フレームワーク２０５は、単に、そのような禁止された動作を可能とするインターフェース・コマンド又はプログラム・コールによっては利用可能にならないようにしてもよい。例えばグラフィックス層２１０又は記憶層２２５のような、プラットフォーム２５０内のシステムは、典型的には、組み込み型の保護装置を有するが、プログラミング・フレームワーク２０５の追加は、それらの資源を更に安全にするよう動作する。例えば、開発者コード２０２が、カーネル又はネイティブのオペレーティング・システム・ソフトウェア２０３の一部として現在使用されているメモリーへの書き込み要求を発行する場合、プログラミング・インターフェース２０５は、そのような要求に対する第一線の防御となり得る。フレームワーク２０５は、記憶層２２５から受信された、制限されたメモリー位置のリストを有しており、該リストを開発者コード２０２からのメモリー要求をチェックするために利用してもよい。他の場合においては、プログラミング・フレームワーク２０５は、例えばディスクのフォーマット化又はパスワード変更のような、開発者コード２０２にとって厳格に許容されない或るコマンド又は機能の静的なリストを有している。
【００２７】
プログラミング・フレームワークの更なる、より直接的ではないセキュリティ上の特徴点は、特にゲーム・コンソールのようなクローズド・システムについて、プラットフォームのハッキングへの誘因を低減させることである。本明細書に記載されたようなプログラミング・フレームワークが愛好者及び初級開発者に利用可能とされ、彼らがフレームワークによって提供された制限内で容易にソフトウェアを作成することが可能となったならば、そうした開発者は、プラットフォームへのハッキングの代わりに、プログラミング・フレームワークを利用することを選ぶであろう。プログラミング・フレームワークにより、そうした開発者は自分の努力をソフトウェア開発の創造的側面に集中することができる。彼らは、クローズド・システムの制限及び要求されるソフトウェア署名をどのように回避するかを理解するために時間と労力をかける必要がなくなる。オープン・システムにおいても、アクセス可能で利用し易いプログラミング・フレームワークの存在は、開発者が、プラットフォームで利用可能な資源を一層効率的に利用することを可能とし、ユーザーによる新しいソフトウェア開発を促進する。
【００２８】
例としてのコンピューター装置
上記のとおり、本明細書で開示される発明は、ソフトウェア開発者が装置の資源のうちの少なくとも一つにアクセスするアプリケーション・ソフトウェアを作成できるようにすることが望ましい任意のコンピューター装置に適用される。しかしながら、アプリケーション・ソフトウェアのコンテンツと同等な他のコンテンツが、本明細書に開示されたプログラミング・フレームワークと共に動作することが可能であり、本明細書に開示された発明は、本明細書に記載された例に限らず、全ての種類のコンピューター装置に実装可能であることが理解されるべきである。従って、以下の図６に記載される汎用コンピューター装置は一例に過ぎず、本発明は、スタンドアロンの、又はネットワーク／バスによる相互動作可能性及び対話を備える任意のクライアント、サーバー、着脱可能な又は着脱不能な機器によって実現可能である。従って、本発明は、例えば、装置内に置かれたオブジェクトのように、クライアント装置がネットワーク／バスへのインターフェースとしてのみ動作するネットワーク接続環境のような、極めて少ない又は最小限のクライアント資源が関与するネットワーク・ホスト型サービスの環境で実現されてもよい。
【００２９】
必ずしも必要ではないが、本発明は、装置又はオブジェクトのためのサービス又はソフトウェアの開発者による利用のために、部分的にオペレーティング・システムによって実現されてもよく、及び／又は、本発明と結合して動作するアプリケーション・ソフトウェアに含まれてもよい。ソフトウェアは、例えばクライアント・ワークステーション、サーバー又は他の装置のような一つ又はそれ以上のコンピューターによって実行される、例えばプログラム・モジュールのようなコンピューター実行可能命令の一般的な文脈において説明されてもよい。当業者に理解されるように、本発明は、他のコンピューター・システム構成及びプロトコルによっても実現可能である。
【００３０】
図６は、図１〜図５に関連して記載された様々な態様が実現され得る適切なコンピューター・システム環境６００の例を示す。ただし、上で明らかにされたとおり、コンピューター・システム環境６００は、本明細書に開示された発明の実施に適したコンピューター環境の一例に過ぎず、本明細書の開示内容のこれら様々な態様の用途又は機能の範囲のいかなる限定をも示唆することを意図しない。また、コンピューター環境６００を、例としての動作環境６００に図示された構成要素の任意の一つ又は組み合わせに関連する、いかなる依存又は要件を有するものとしても解釈してはならない。
【００３１】
図６を参照すると、上記の態様を実現する例としてのコンピューター装置は、上記においてプラットフォームとも呼ばれる、コンピューター６１０の形態の汎用コンピューター装置を含む。コンピューター６１０の構成要素は、処理ユニット６２０、システム・メモリー６３０、及び、システム・メモリーから処理ユニット６２０を含む様々なシステム構成要素を結合するシステム・バス６２１を含み得るが、それらに限定されない。システム・バス６２１は、メモリー・バス又はメモリー・コントローラー、周辺機器バス、並びに、様々なバス・アーキテクチャーのうち任意のものを用いたローカル・バスを含む、何種類かのバス構造のうちの任意のものであってよい。
【００３２】
典型的には、コンピューター６１０は様々なコンピューター読み取り可能媒体を備える。コンピューター読み取り可能媒体は、コンピューター６１０によりアクセス可能な任意の利用可能な媒体であってよい。非限定的な例として、コンピューター読み取り可能媒体は、コンピューター記憶媒体及び通信媒体を含み得る。コンピューター記憶媒体は、例えば、コンピューター読み取り可能命令、データ構造、プログラム・モジュール、又は他のデータのような情報の記憶のための任意の方法又は技術で実現された、揮発性又は不揮発性の、着脱可能又は着脱不能な媒体を含む。コンピューター記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリー又は他のメモリー技術、ＣＤＲＯＭ、デジタル多用途ディスク（ＤＶＤ）又は他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置又は他の磁気記憶装置、或いは、所望の情報を格納するために利用でき、コンピューター６１０によってアクセスできる任意の他の媒体を含むが、それらに限定されない。典型的には、通信媒体は、コンピューター読み取り可能命令、データ構造、プログラム・モジュール、又は、例えば搬送波又は他の伝送機構である変調データ信号中の他のデータを具現化するものであって、任意の情報伝送媒体を含む。
【００３３】
システム・メモリー６３０は、例えば、読み取り専用メモリー（ＲＯＭ）６３２及び／又はランダム・アクセス・メモリー（ＲＡＭ）６３４のような揮発性及び／又は不揮発性のメモリー形態のコンピューター記憶媒体を含み得る。例えば起動中などにコンピューター６１０内の構成要素間の情報伝送を助ける基本ルーチンを含む基本入出力システム（ＢＩＯＳ）は、メモリー６３０に格納され得る。また、典型的には、メモリー６３０は、処理ユニット６２０によって直接にアクセス可能な、及び／又は、処理ユニット６２０によって動作させられているデータ及び／又はプログラム・モジュールをも含み得る。非限定的な例として、メモリー６３０は、オペレーティング・システム、アプリケーション・プログラム、他のプログラム・モジュール及びプログラム・データを含み得る。
【００３４】
また、コンピューター６１０は、他の着脱可能／着脱不能な揮発性／不揮発性のコンピューター記憶媒体を含み得る。例えば、コンピューター６１０は、着脱不能な不揮発性磁気メディアからの読み出し又は書き込みを行うハード・ディスク・ドライブ、着脱可能な不揮発性磁気ディスクからの読み出し又は書き込みを行う磁気ディスク・ドライブ、及び／又は、例えばＣＤ−ＲＯＭ又は他の光媒体のような着脱可能な不揮発性光ディスクからの読み出し又は書き込みを行う光ディスク・ドライブを含み得る。例としての動作環境において利用できる他の着脱可能／着脱不能な揮発性／不揮発性のコンピューター記憶媒体は、磁気テープ・カセット、フラッシュ・メモリー・カード、デジタル多用途ディスク、デジタル・ビデオ・テープ、ソリッド・ステートＲＡＭ、ソリッド・ステートＲＯＭ及びそれらに類するものを含むが、それらに限定されるものではない。ハード・ディスク・ドライブは、典型的には、例えばインターフェース６８０のような着脱不能なメモリー・インターフェースを介してシステム・バス６２１に接続され、磁気ディスク・ドライブ又は光ディスク・ドライブは、典型的には、例えばインターフェース６９０のような着脱可能なメモリー・インターフェースによってシステム・バス６２１に接続される。
【００３５】
ユーザーは、コントローラーを介してクローズド・コンピューター装置に入力を提供できるのに加えて、例えばキーボードや、一般にマウスと言われるポインティング・デバイス、トラックボール又はタッチパッドのような入力装置を介してコンピューター６１０に、命令及び情報を入力することができる。そのような周辺装置に加えて、他の入力装置は、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星アンテナ、スキャナー又はそれらに類するものを含み得る。これらの及び他の入力装置は、システム・バス６２１に接続されたユーザー入力６４０及び関連するインターフェースを介して処理ユニット６２０に接続されることが多いが、パラレル・ポート、ゲーム・ポート又はユニバーサル・シリアル・バス（ＵＳＢ）のような他のインターフェース及びバス構造によって接続されてもよい。グラフィックス・サブシステムもシステム・バス６２１に接続される。モニター又は他の型式の表示装置も、出力インターフェース６５０のようなインターフェースを介してシステム・バス６２１に接続され、該インターフェースはビデオ・メモリーと通信する。モニターに加えて、コンピューターは、スピーカー及びプリンターのような出力インターフェース６５０を介して接続され得る他の周辺出力装置をも備え得る。
【００３６】
コンピューター６１０は、ネットワーク接続環境又は分散環境において、例えばリモート・コンピューター６７０のような、装置６１０とは異なるメディア能力を備え得る一つ又はそれ以上の他のリモート・コンピューターとの論理接続を用いて動作することができる。リモート・コンピューター６７０は、パーソナル・コンピューター、サーバー、ルーター、ネットワークＰＣ、ピア・デバイス又は任意の共通ネットワーク・ノード、或いは任意の他のリモート・メディア消費又は伝送装置であってよく、コンピューター６１０について上記された任意の又は全ての構成要素を含み得る。図６に示された論理接続はネットワーク６７１を含み、その例には、ローカル・エリア・ネットワーク（ＬＡＮ）又は広域ネットワーク（ＷＡＮ）が含まれるが、他のネットワーク／バスを含んでもよい。そのようなネットワーク接続環境は、家庭、オフィス、企業規模のコンピューター・ネットワーク、イントラネット及びインターネットにおいて一般的である。
【００３７】
ＬＡＮネットワーク接続環境において利用される場合、コンピューター６１０は、ネットワーク・インターフェース又はアダプターを介してネットワーク６７１に接続される。ＷＡＮネットワーク接続環境で利用される場合、コンピューター６１０は、典型的には、モデム、又は、例えばインターネットのようなＷＡＮ上の通信を確立する他の手段を含む。内蔵でも外付けでもよいモデムは、入力６４０のユーザー入力インターフェース又は他の適切な機構を介してシステム・バス６２１に接続され得る。ネットワーク接続環境において、コンピューター６１０に関連して図示されたプログラム・モジュール又はその一部は、リモートのメモリー記憶装置に格納されてもよい。当業者に理解されるとおり、図示の及び説明されたネットワーク接続は例示であり、コンピューター間の通信リンクを確立させる他の手段が利用されてもよい。
【００３８】
例としてのクローズド・システム又はコンソール環境
次に、別の非限定的な例としてのコンピューター装置である例示のマルチメディア・コンソールを示すブロック図を図示する図７を参照すると、例示のマルチメディア・コンソールはクローズされていて、クローズされた装置の製造者又はゲーム・ソフトウェア発行者のような何らかの署名権者によって署名された、限られた量のソフトウェア要素のみへのアクセスを許容する。図７は、本明細書に開示された発明の態様が実施され得るマルチメディア・コンソール７００の機能的構成要素を示している。マルチメディア・コンソール７００は、レベル１（Ｌ１）キャッシュ７０２、レベル２（Ｌ２）キャッシュ７０４及びフラッシュＲＯＭ（読み取り専用メモリー）７０６を有する中央処理装置（ＣＰＵ）７０１を備える。レベル１キャッシュ７０２及びレベル２キャッシュ７０４は一時的にデータを格納してメモリー・アクセス周期の数を減らし、それによって処理速度及びスループットを向上させる。フラッシュＲＯＭ７０６は、マルチメディア・コンソール７００の電源が入れられた際のブート・プロセスの初期段階期間にロードされる実行可能コードを格納する。代わりに、初期ブート段階期間にロードされる実行可能コードはフラッシュ・メモリー装置（図示せず）に格納されてもよい。更に、ＲＯＭ７０６はＣＰＵ７０１から切り離して配置されてもよい。
【００３９】
このコンソールは、例えば、高速で高解像度なグラフィックス処理のためのビデオ処理パイプラインからのグラフィックス処理ユニット（ＧＰＵ）７０８及びビデオ・エンコーダー／ビデオ・コーデック（エンコーダー／デコーダー）７１４のような、コンソールにとって利用可能な様々な資源を備え得る。この設定において、データは、グラフィックス処理ユニット７０８からビデオエンコーダー／ビデオ・コーデック（エンコーダー／デコーダー）７１４へ、バスを介して搬送される。ビデオ処理パイプラインは、テレビ又は他のディスプレイへの伝送のために、Ａ／Ｖ（オーディオ／ビデオ）ポート７４０にデータを出力する。メモリー・コントローラー７１０はＧＰＵ７０８及びＣＰＵ７０１に接続されており、様々な型式のメモリー７１２（例えばＲＡＭ（ランダム・アクセス・メモリー）であるがそれに限定されない）へのプロセッサーのアクセスを促進する。
【００４０】
マルチメディア・コンソール７００は、Ｉ／Ｏコントローラー７２０、システム管理コントローラー７２２、オーディオ処理ユニット７２３、ネットワーク・インターフェース・コントローラー７２４、第一のＵＳＢホスト・コントローラー７２６、第二のＵＳＢホスト・コントローラー７２８及び前面パネルＩ／Ｏサブアセンブリ７３０を含み、これらはモジュール７１８の上に実現されることが望ましい。ＵＳＢコントローラー７２６及び７２８は、周辺コントローラー７４２（１）〜７４２（２）、無線アダプター７４８及び外付けメモリー・ユニット７４６（例えば、フラッシュ・メモリー、外付けＣＤ／ＤＶＤ  ＲＯＭドライブ、着脱可能なメディア等）のホストとしての機能を果たす。ネットワーク・インターフェース７２４及び／又は無線アダプター７４８はネットワーク（例えば、インターネット、家庭内ネットワーク等）へのアクセスを提供するものであり、イーサネット（登録商標）・カード、モデム、ブルートゥース・モジュール、ケーブル・モデム及びそれらに類するものを含む広範な種々の有線又は無線のインターフェース要素のうちの任意のものであってよい。
【００４１】
システム・メモリー７４３は、ブート・プロセス期間にロードされるアプリケーション・データを格納するために設けられる。メディア・ドライブ７４４が設けられており、これはＤＶＤ／ＣＤドライブ、ハード・ドライブ又は他の着脱可能なメディア・ドライブ等を含み得る。メディア・ドライブ７４４は、マルチメディア・コンソール７００に内蔵されても、外付けであってもよい。アプリケーション・データは、マルチメディア・コンソール７００による実行、再生等のために、メディア・ドライブ７４４を介してアクセスされ得る。メディア・ドライブ７４４は、シリアルＡＴＡバスのようなバス又は他の高速接続（例えば、ＩＥＥＥ１３９４）を介してＩ／Ｏコントローラー７２０に接続される。
【００４２】
システム管理コントローラー７２２は、マルチメディア・コンソール７００の利用可能性の保証に関連する様々なサービス機能を提供する。オーディオ処理ユニット７２３及びオーディオ・コーデック７３２は、高い原音忠実度とステレオ処理能力を備える、対応するオーディオ処理パイプラインを形成する。オーディオ・データは、通信リンクを介してオーディオ処理ユニット７２３とオーディオ・コーデック７２６との間を搬送される。オーディオ処理パイプラインは、オーディオ能力を有する外部のオーディオ・プレーヤー又は装置による再生のために、Ａ／Ｖポート７４０にデータを出力する。
【００４３】
前面パネルＩ／Ｏサブアセンブリ７３０は、マルチメディア・コンソール７００の外面上に露出された任意のＬＥＤ（発光ダイオード）又は他のインジケーターや、電源ボタン７５０及び取り出しボタン７５２の機能をサポートする。システム電源モジュール７３６は、マルチメディア・コンソール７００の構成要素に電力を供給する。ファン７３８はマルチメディア・コンソール７００内の回路を冷却する。
【００４４】
ＣＰＵ７０１、ＧＰＵ７０８、メモリー・コントローラー７１０及びマルチメディア・コンソール７００内の様々な他の構成要素は、シリアル・バス、パラレル・バス、メモリー・バス、ペリフェラル・バス、及び、任意の様々なバス構造を用いるプロセッサー・バス又はローカル・バスを含む一つ以上のバスを介して相互に接続される。
【００４５】
マルチメディア・コンソール７００が、電源が入れられ又は再起動されたとき、アプリケーション・データは、システム・メモリー７４３からメモリー７１２及び／又はキャッシュ７０２、７０４にロードされ、ＣＰＵ７０１で実行され得る。アプリケーションは、マルチメディア・コンソール７００上で利用可能な様々なメディア型式へナビゲートする際に、一貫したユーザー体験を提供するグラフィカル・ユーザー・インターフェースを提示し得る。動作において、メディア・ドライブ７４４に含まれるアプリケーション及び／又は他のメディアは、マルチメディア・コンソール７００に追加の機能を提供するように、メディア・ドライブ７４４から起動又は再生され得る。
【００４６】
マルチメディア・コンソール７００は、該システムを単にテレビ又は他のディスプレイに接続することにより、スタンドアローン・システムとして動作する。このスタンドアローン・モードにおいて、マルチメディア・コンソール７００は、一人又はそれ以上のユーザーがシステムと対話し、映画を見、音楽を聴き、及びそれに類することを可能とする。しかしながら、ネットワーク・インターフェース７２４又は無線アダプター７４８を介して利用可能とされた広帯域接続と統合されると、マルチメディア・コンソール７００は、より大きなネットワーク・コミュニティの参加者として更に動作し得る。
【００４７】
図７に示したマルチメディア・コンソールは、例えばゲームのようなマルチメディア・アプリケーションを実行するために利用され得る典型的なマルチメディア・コンソールである。マルチメディア・アプリケーションは、例えばシステム設定、音声チャット、ネットワーク・ゲーム、ネットワークを介して他のユーザーと対話する能力、電子メール、ブラウザー・アプリケーション等を含むシステム特性によって強化され得る。そのようなシステム特性は、例えば異なる場所にいるプレイヤーがインターネットを介して共通のゲームをする能力を有するような、マルチメディア・コンソール７００のための改善された機能を可能とし得る。
【００４８】
また、システム特性は、時間とともに更新され又はマルチメディア・アプリケーションに追加され得る。これらのシステム特性を提供するためにマルチメディア開発者に対してマルチメディア・アプリケーションへの重大な修正を行うよう要求するのではなく、本明細書に記載されたシステム及び方法は、マルチメディア開発者が、マルチメディア・アプリケーションと組み合わされて動作する別個のシステム・アプリケーションによってシステム特性を提供することを可能とする。例えば、システム・アプリケーションは、ネットワーク接続能力と関連する機能を体現することができ、それにより、マルチメディア・アプリケーションを、マルチメディア（例えば、ゲーム）開発者の働きをほとんど必要とすることなくネットワーク接続能力を提供するように容易に適応させることができる。そのような能力の一つは、複数のネットワーク接続されたユーザーに対するシステム・レベルの通知の能力である。システム・レベルの通知をシステム・アプリケーションの一部とすることにより、システム上で動作するゲームのような個々のマルチメディア・アプリケーションで取り扱うのではなく、マルチメディア・アプリケーション開発者にとっての開発プロセスから、ゲームへの招待のような通知を表示させる処理を取り去り、彼らがマルチメディア・アプリケーションそのものに集中することを可能とする。
【００４９】
上記のとおり、本発明の例としての実施の形態を、様々なコンピューター装置及びネットワーク・アーキテクチャーとともに説明したが、基礎となる概念は、開発者アプリケーション・ソフトウェアがロードされ実行され得る任意のコンピューター装置又はシステムに適用可能である。例えば、説明された態様のアルゴリズム及びハードウェアの実現態様は、コンピューター装置のオペレーティング・システムに適用されてもよく、該装置上の単独のオブジェクトとして、他のオブジェクトの一部として、再利用可能な制御として、サーバーからダウンロード可能なオブジェクトとして、装置又はオブジェクトとネットワークとの間の「仲介者」として、分散オブジェクトとして、ハードウェアとして、メモリーに、上記の任意の組み合わせ等として提供され得る。例としてのプログラミング言語、名称及び実例は、本明細書においては様々な選択肢の代表として選ばれており、これらの言語、名称及び実例は限定を意図するものではない。
【００５０】
本明細書に記載された様々な技術は、ハードウェア又はソフトウェアと組み合わせて、又は、適切な場合に両方と組み合わせて実現され得る。従って、本発明の方法及び装置、或いは、その特定の態様又は部分は、例えばフロッピー（登録商標）・ディスク、ＣＤ−ＲＯＭ、ハード・ドライブ、又は任意の他のマシン読み取り可能記憶媒体である有形の媒体に具現化されるプログラム・コード（即ち、命令）の形をとり、プログラム・コードが例えばコンピューターであるマシンにロードされてマシンにより実行される際に、該マシンは、本明細書に開示された態様を実現するための装置となる。プログラム可能なコンピューター上でプログラム・コードを実行する場合、コンピューター装置は、一般に、プロセッサー、プロセッサーにより読み取り可能な記憶媒体（揮発性及び不揮発性のメモリー及び／又は記憶要素を含む）、少なくとも一つの入力装置及び少なくとも一つの出力装置を含む。これらの態様に従って提供される任意のソフトウェアを実現又は利用し得る一つ又はそれ以上のプログラムは、コンピューター・システムと通信する高レベルの手続き型の又はオブジェクト指向型のプログラミング言語で実現されることが望ましい。しかしながら、プログラムは、所望に応じて、アセンブリ又はマシン言語で実現されてもよい。いずれの場合にも、言語は、コンパイル又は解釈された言語であり、ハードウェア実現態様と結合され得る。
【００５１】
また、本明細書に開示された態様の方法及び装置は、電線又はケーブル、光ファイバー或いは任意の他の形態の伝送のような、何らかの伝送媒体上で伝送されるプログラム・コードの形で具現化される通信を介して実行され、該プログラム・コードが、例えばＥＰＲＯＭ、ゲート・アレイ、プログラム可能論理デバイス（ＰＬＤ）、クライアント・コンピューター等であるマシンに受信されてロードされ、マシンにより実行される場合、該マシンは、本明細書に開示された発明を実施する装置になる。汎用プロセッサー上で実現される場合、プログラム・コードは、プロセッサーと組み合わされて、本発明の機能を呼び出すよう動作する独自の装置を提供する。更に、本態様と組み合わせて用いられる任意の記憶技術は、必ず、ハードウェア及びソフトウェアの組み合わせであり得る。
【００５２】
上記の態様は、様々な形の好ましい実施の形態と組み合わせて説明されたが、他の類似の実施の形態も利用可能であり、同一の機能を実行するために、記載された実施の形態から逸脱することなく、修正及び追加がなされ得ることが理解されるべきである。例えば、当業者に理解されるように、本出願に記載された方法は、有線か無線かに拘わらず、例えばゲーム・コンソール、ハンドヘルド・コンピューター、携帯型コンピューター等の任意のコンピューター装置又は環境に適用可能であり、通信ネットワークを介して結合され、また、ネットワークを介して対話する任意の数のそのようなコンピューター装置に適用できる。
【００５３】
更に、特に無線ネットワーク装置の数が急増し続けるにつれて、ハンドヘルド・デバイスのオペレーティング・システム及び他のアプリケーション特有のオペレーティング・システムを含む様々なコンピューター・プラットフォームが企図されていることが強調されるべきである。更に、本発明の機能は、複数の処理チップ又は装置において、或いは、複数の処理チップ又は装置に渡って実現され、記憶装置は、複数のデバイスに渡って同様に有効にされ得る。従って、本明細書に開示された態様は、単一の実施の形態に限定されるべきではなく、むしろ、添付の特許請求の範囲に従った幅及び範囲内で構成されるべきである。
【図１】
2010525450.tif 000003
【図２】
2010525450.tif 000004
【図３】
2010525450.tif 000005
【図４】
2010525450.tif 000006
【図５】
2010525450.tif 000007
【図６】
2010525450.tif 000008
2010525450.tif 000009
【図７】
2010525450.tif 000010
【国際調査報告】
2010525450.tif 000011
2010525450.tif 000012