JP2010525450A - クローズド・システムのためのプログラミング・フレームワーク - Google Patents

クローズド・システムのためのプログラミング・フレームワーク Download PDF

Info

Publication number
JP2010525450A
JP2010525450A JP2010504139A JP2010504139A JP2010525450A JP 2010525450 A JP2010525450 A JP 2010525450A JP 2010504139 A JP2010504139 A JP 2010504139A JP 2010504139 A JP2010504139 A JP 2010504139A JP 2010525450 A JP2010525450 A JP 2010525450A
Authority
JP
Japan
Prior art keywords
programming framework
operating system
computer
instruction
computing device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2010504139A
Other languages
English (en)
Other versions
JP5249315B2 (ja
JP2010525450A5 (ja
Inventor
ブレイシュ,ポール・エル
ハーグリーブス,ショーン
ミラー,トム
ピシオッシオ,マシュー・オーレン
ウォーカー,ジョン・エム
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2010525450A publication Critical patent/JP2010525450A/ja
Publication of JP2010525450A5 publication Critical patent/JP2010525450A5/ja
Application granted granted Critical
Publication of JP5249315B2 publication Critical patent/JP5249315B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

プログラミング・フレームワークを用いたコンピューター・プラットフォームの抽象化を可能とするメカニズムが開示される。プログラミング・フレームワークは、プラットフォームを抽象化することにより、アプリケーション・プログラムが様々なプラットフォームと同一の方法で対話することを可能とする。プログラミング・フレームワークは、プラットフォーム特有の要求に適合するよう命令を修正し、アプリケーションは、様々なプラットフォームに渡るプログラミング・フレームワークに対して、同一の命令を用いる。また、プログラミング・フレームワークは、アプリケーションに代わって、プラットフォーム特有の期待されるアプリケーション動作をエミュレートする。また、プログラミング・フレームワークは、アプリケーション・プログラムのアクセスを制限し、プラットフォームのための追加のセキュリティ層を提供する。

Description

一つのコンピューター・プラットフォーム上で上手く動作するソフトウェア・アプリケーションの開発は複雑な作業であるが、複数のプラットフォーム上で上手く動作するソフトウェア・アプリケーションの開発は更に難しい。開発者が所望する結果を作り出すようにコンピューター・プラットフォームのハードウェア及びオペレーティング・システムを制御するには、実行し且つ管理しなければならない多くの作業が存在し、これらの作業を達成する方式は、プラットフォーム間で大きく異なり得る。アプリケーションに期待される動作も、プラットフォーム間で異なる。プロのソフトウェア開発者にとって、異なるプラットフォームにおいて要求される全作業を正しく実行するコードを書き、それらのプラットフォームに期待される動作と合致する新しいアプリケーションを作成することは、プラットフォーム製造業者の完全なサポートが得られない限り、極めて時間がかかり、複雑である。アプリケーション開発のこの側面は、愛好者、学生開発者や、製造業者の認定開発者グループの外にいる他のプログラマーにとって更に難しいものである。
これは、特に、ゲーム・コンソールのようなクローズド・システムにあてはまる。ゲーム・コンソールは、一般に、製造業者によって制御される「署名された」即ち認証されたゲームのみが、コンソール上で実行されることを許容する。この制限は、発行者に対して厳しく制御された環境を保持するビジネスモデルの保護、知的財産権侵害行為の防止、又は、不正行為の可能性の制御を含む、様々な理由によって行われ得る。しかしながら、よりオープンなプラットフォームだけではなく、クローズド・システムのために自分自身のプログラムを作成したいと望む自家製開発者及び愛好者の急激に発展する市場が存在する。これらの開発者は、署名されていないコードをそのようなコンソール上で動作させるために、時間と労力をかけてゲーム・コンソールを改造(hack)する。クローズド・システムに対する保護レベルを依然として維持しながらも、そのような開発者が、クローズド・システムに不法侵入する必要なく自分自身のコンテンツを作成する合法的な方法があることが望ましい。
従って、必要とされているのは、様々なプラットフォーム及びオペレーティング・システムのために自らのソフトウェアをカスタマイズする必要性から開発者を解放する方法である。開発者が、下層の様々なソフトウェア又はハードウェアを処理するためにアプリケーション・コードをカスタマイズすることなしに、プログラムが様々なプラットフォームで動作することを可能とする、オペレーティング・システム又はプログラミング・フレームワークに対する標準インターフェースを用いてプログラムを書くことができれば、彼らの作業は大幅に単純化される。そのようなフレームワークは、プログラミング・フレームワークに下層のコード及びハードウェアの違いを処理させて、開発者が様々なコンピューター装置のオペレーティング・システムと同一の方法で対話することを可能とする必要がある。インターフェースは、また、供給された開発者コードがプラットフォームの制限及び要求をサポートすることを保証するチェック及び検証を増やすことにより、下層のプラットフォームを保護する。これは、開発者を解放して、プログラムを様々なオペレーティング・システム及びハードウェアで動作させるという、より些細なタスクについて心配する必要なしに、彼らのプログラミングの努力をプログラムの創造的側面に集中させる。
下層のプラットフォームを抽象化するプログラミング・フレームワークを介して、開発者コードがコンピューター・システムの資源にアクセスすることを可能とするメカニズムが提供される。複数のプラットフォームに渡る一貫したフレームワークを提供することにより、製造業者は、オペレーティング・システム資源及びハードウェアへのアクセスを得やすくすることによって、サードパーティのソフトウェア開発を促進することができる。本明細書に開示される発明の一態様においては、プログラミング・フレームワークは、プラットフォームのオペレーティング・システム層とアプリケーション・ソフトウェアとの間に提供される。このプログラミング・フレームワークは、アプリケーション・ソフトウェアに代わって、例えばグラフィックス層、オーディオ層、入力層及び記憶層である様々なシステム層と通信する中間層を形成する。これらのシステム層は、プラットフォームのオペレーティング・システム及びハードウェアと共に動作して、プラットフォーム上でアプリケーション・ソフトウェアを実現するために要求されたタスクを達成する。
本プログラミング・フレームワークは、コンピューター・プラットフォームへの標準インターフェースを提供し、開発者のコンテンツがオペレーティング・システム及び関連する資源の態様を制御することを可能とする。これは、同一のアプリケーション・コードを用いて様々なプラットフォームを制御する方法を提供し、それにより、特定のハードウェア及びオペレーティング・システム資源を彼らのアプリケーションと共に動作させることについて心配しなければならないことから、開発者を解放する。プログラミング・フレームワークはプラットフォームの抽象化を行い、そのために、開発者コードは、コードが動作する実際のプラットフォームとは無関係に、同一の方法で、コンピューター・プラットフォームの単一の抽象化されたバージョンと対話する。このフレームワークは、オペレーティング・システム及びハードウェアに対して、開発者アプリケーションの実現に必要なタスクを実行するように指示することのプラットフォーム特有の態様を実現し、開発者をこのタスクから解放する。フレームワークは、また、アプリケーションがプラットフォーム上で上手く動作できるように、プラットフォームによって期待される適切な動作を提供し、アプリケーション・コードとプラットフォームとの間に追加のセキュリティ層を加える。
本要約は、選択された概念を、以下の詳細な説明において更に説明される簡略化された形態で紹介するために提供されることに注意するべきである。本要約は、特許請求の範囲に記載された発明の主要な特徴又は不可欠な特徴を特定する意図はなく、特許請求の範囲に記載された発明の範囲の決定を助けるために用いられることも意図していない。
上記の要約は、以下の詳細な説明とともに、添付の図面と組み合わせて読むことにより、さらに良く理解される。本明細書の開示内容の例を示すために、開示内容の様々な態様が示される。しかしながら、開示内容は、記載された特定の側面に限られるものではない。以下の図面が含まれる。
図1は、開発者ソフトウェアが直接オペレーティング・システム層と相互作用する従来技術のシステムを示す。 図2は、開発者ソフトウェアが、オペレーティング・システム層と通信する方法として、プログラミング・フレームワークと相互作用する例としてのシステムを示す図である。 図3は、開発者ソフトウェアの要求をオペレーティング・システムのグラフィックス層によって期待されている形式に変換することにより、プログラミング・フレームワークがプラットフォーム抽象化を提供する例としての方法を示す図である。 図4は、開発者ソフトウェアの要求を異なるオペレーティング・システムのグラフィックス層によって期待されている他の形式に変換することにより、プログラミング・フレームワークがプラットフォーム抽象化を提供する例としての方法を更に示す図である。 図5は、開発者コードからの要求をオペレーティング・システムのグラフィックス層に伝える際に適切なコードの動作をエミュレートすることにより、プログラミング・フレームワークがプラットフォーム抽象化を提供する例としての方法を示す図である。 図6は、本明細書に開示された発明に従ってプログラミング・フレームワークが実現され得る、非限定的な例としてのコンピューター・システム環境を表すブロック図を示す。 図7は、本明細書に開示された発明のもう一つの態様に従ってプログラミング・フレームワークが実現され得る、非限定的な例としてのマルチメディア・コンソール装置を示すブロック図を示す。
概要
一般に、コンピューター・プラットフォーム上で動作するアプリケーションは、オペレーティング・システムと直接に相互作用する。アプリケーションは、オペレーティング・システムを通して、タスクを達成するために必要なプラットフォームのハードウェア及び資源を操作する。アプリケーションは、通常、アプリケーション・プログラム・インターフェース(API)を用いてオペレーティング・システムの各要素と通信し、自らが必要とするシステム・レベルのタスクを達成する。そのようなタスクの例には、モニター上でのグラフィックス画像の表示、スピーカー上でのオーディオ出力の作成、装置(例えば、キーボード、マウス又はゲーム・コントローラー)を介したユーザーからの入力の受信、メモリー・アクセス、及び記憶装置(例えば、ハード・ディスク・ドライブ、フロッピー(登録商標)・ディスク・ドライブ又はフラッシュ・ドライブ)へのアクセスを含む。ハードウェア及びオペレーティング・システムはプラットフォーム間で異なるので、API及びその使用方法は、必然的に、プラットフォーム毎に異なる。そのため、プラットフォーム上で動作する各アプリケーションは、その意図どおりに動作するべきであるならば、該プラットフォームの特定のオペレーティング・システム及びそれに関連付けられたAPIと適切に対話しなければならない。更に、コンピューター・プラットフォーム上で動作するアプリケーションには期待される動作が存在する。これらの期待される動作も、プラットフォームによって大きく異なる。アプリケーションがプラットフォームの期待どおりに動作できないことは、アプリケーションの失敗又は不正確な動作の原因となり得る。
一方、コンピューター・プラットフォーム上で動作する多くのアプリケーション・ソフトウェアは、プラットフォーム資源から必要とするもの及び期待するものについて、類似の要求を有する。つまり、アプリケーション・ソフトウェアは極めて頻繁に、例えば、メモリー、映像ディスプレイ、コントローラー等の、多くのコンピューター・プラットフォームにとって典型的なハードウェア及びソフトウェアの利用を要求する。そのため、多くのアプリケーションによって要求される資源へのアクセスを依然として提供しつつも、アプリケーションからは、プラットフォームに無関係に、プラットフォームへの同一のインターフェースが見えるようにプラットフォームを抽象化する、アプリケーションのためのインターフェースを提供することが可能である。そのようなインターフェースを提供することにより、開発者は、自分のアプリケーションのプラットフォーム特有の態様に集中しなければならないことから開放されて、複数のプラットフォームと上手く対話することができる単一のプログラムを作成することができる。
本開示内容の非限定的な例としての態様において、プラットフォームの抽象化を実行するプログラミング・フレームワークが提供される。プログラミング・フレームワークは、プラットフォームの各資源に対するAPIと類似した、プラットフォームへのインターフェースを提供するが、プログラミング・フレームワークは、プラットフォームの幾つかの資源へのアクセスを可能とする、プラットフォーム全体へのインターフェースであり得る。アプリケーション・ソフトウェアは、プラットフォームの抽象化されたバージョンと共に動作するので、フレームワークの下層のハードウェア又はソフトウェアに無関係に、プログラミング・フレームワークを介してタスクを達成するよう、同一のアクションを実行する。プログラミング・フレームワークは、アプリケーションからのプラットフォーム資源に対する要求を受け取り、その要求を資源に伝えるが、その際、要求を、当該資源によって要求される特定の方法で正しく受信されるように修正及び形式変換することにより、要求の正しい実行を保証する。同様に、アプリケーション・ソフトウェアに向けられたシステム資源からの情報及び要求は、プログラミング・フレームワークを介してアプリケーション・ソフトウェアに伝えられる。
プログラミング・フレームワークは、また、アプリケーションがプラットフォームに対して「上手く動作している」ように見えるように、アプリケーションに代わって、プラットフォームに対し期待された動作を提供する。これにより、開発者は、様々なプラットフォームに期待される動作の違いを受け入れなければならないことから開放される。
プログラミング・フレームワークは、プラットフォームのための追加のセキュリティ層を提供する。プラットフォームへ標準インターフェースを提供することにより、フレームワークは、アプリケーション・ソフトウェアからの通信及び要求がどのようにプラットフォーム資源に到達するかを制御する。これは、制限されたプラットフォーム資源にアクセスしたり、或いは、プラットフォーム又はプラットフォーム製造者にとって安全ではない又は望ましくない動作を実行したりするかもしれないアプリケーション開発者コードに対し、追加のチェックを提供する。プログラミング・インターフェースは、また、愛好者又は自家製開発者に対し、プラットフォーム資源にアクセスするための更に容易且つ効果的な方法を提供することにより、コンピューター・システム、特にゲーム・コンソールのようなクローズド・システムをハッキングする(hack)誘因を低減し、それによってハッキングの必要性を無くす。
プログラミング・フレームワークの態様
本明細書の発明開示のこのセクションにおいては、プラットフォーム抽象化を提供するためのプログラミング・フレームワークの態様に焦点をあてる。本明細書に開示された発明は、ソフトウェア開発者が装置の少なくとも一つの資源にアクセスするアプリケーション・ソフトウェアを作成できるようにすることが望ましい、任意のコンピューター装置に適用される。このフレームワークを更によく理解するため、従来技術を検討することが有益である。
図1は、開発者コード102が所望の結果を達成するためにオペレーティング・システムの様々な層と直接に対話する、プラットフォーム150上の従来技術のシステムを示す。プラットフォーム150はゲーム・コンソールのようなクローズド・コンピューター装置であってよく、クローズド・コンピューター装置は、オペレーティング・システム及びゲーム・ソフトウェアを実行するよう構成される、或いは、広範なソフトウェアを実行するよう構成されたパーソナル・コンピューターのような、よりオープンなプラットフォームであってよい。図示されているのは、典型的なプラットフォーム150において利用可能であり得る層の例である。これらは、グラフィックス層110、オーディオ層115、入力層120、記憶層125、ネットワーク層130及び計算層135を含む。これらの各層は様々なタスクを受け持つ。例えば、グラフィックス層110は、(フラット・シェーディング、法線マッピング、テクスチャー・マッピング等を含むがそれらに限定されない)グラフィックス表示を担当し、オーディオ層115は、その名前からわかるように、クローズド・システム上のオーディオを担当する。入力層120は、例えばコントローラーのボタン選択、入力装置を用いたクリック等のユーザーからの入力の処理を担当し、記憶層125は、特定のコンテンツの記憶及び呼び出しを担当し、ネットワーク層130は、ネットワーク・アクセスを可能とすることができる。計算層135は、例えば、(グラフィックスが含まれる場合に)更に効率的なマップ表示を可能とするような、或る数学関数の実行を可能とする。
これらの層110、115、120、125、130及び135のそれぞれは、アプリケーションに対してプラットフォーム150の資源へのアクセスを提供する助けをする。これらの層は、また、安全な演算を保証するように(即ち、開発者コードが、プラットフォーム製造者又は他の利害関係者によって意図されてはいない目的のために下層のネイティブOS層103及び任意の関連付けられたプラットフォーム150の資源を引き継ぐことがないように)開発者コード102が通過することを必要とする、ユーザー・モード100と管理者(例えば、カーネル)モード101との間の安全なゲートを提供する。
層110、115、120、125、130及び135は、典型的には、プラットフォーム、オペレーティング・システム又はハードウェアに特有のものである。例えば、32GBのハード・ドライブを備えるプラットフォームのための記憶層125を構成するソフトウェアは、64GBのハード・ドライブを備えるプラットフォーム上で用いられるソフトウェアとは異なり得る。同様に、プラットフォームのオペレーティング・システムの或るバージョンは、記憶層125を、先のバージョンとは違う方法で実装し得る。これは必然的なことであり、異なるハードウェアは、該ハードウェアを制御するための異なるソフトウェアを必要とするからである。同様に、下層のオペレーティング・システムの異なるバージョンは、システム・タスクを達成する異なるソフトウェア及び異なる方法を有することになる。
典型的には、層110、115、120、125、130、及び135は、APIにより、アプリケーション・アクセス層104を介してアクセスされる。これらのAPIは、層を構成するソフトウェアが変われば変わる。従って、アプリケーション・コードは、これを許容しなければならず、アプリケーション・コードは、アプリケーション・ソフトウェアが正しく動作することが望ましい全てのプラットフォーム上に存在する様々なAPIに対する適切な入力を検出し且つ提供するか、或いは、単一のプラットフォームに限定される必要がある。このことは、プロの開発者によって理解され日頃から処理されてはいるが、彼らのコードがマルチプラットフォーム・コンパティブルであることを保証するための時間を費やさなくてもよいように作業すべき共通のフレームワークを持つことの方が、彼らにはずっと容易であろう。入門開発者や愛好者にとって、マルチプラットフォームのサポートは、更に大きな挑戦である。
更に、層110、115、120、125、130及び135へのアクセスに使われ得るAPIは、極めて特殊且つ複雑であり得るので、それらの要件、及びそれらが層とどのように機能するかを完全に理解することが要求される。タスク要求時にAPIに完全且つ正確なデータを提供できないと、タスクの失敗又は誤った状態を招き得る。APIは、また、正しく機能するようにアプリケーションからの特定の動作を期待し得る。これらの動作の知識は、プロではない開発者、又はプラットフォーム製造者と直接一緒に作業していない者、或いはプラットフォーム製造者の認定なしに作業している者にとっては、容易にアクセスできるものではない。更に、これは一般にプロの開発者によって扱われるものではあるが、ソフトウェア開発のこうした側面の処理は、入門開発者にとっては、極めてとっつきにくいタスクであり得る。
図1とは対照的に、図2は、開発者コード202とプラットフォーム250の構成要素との間の通信を促進するためにプログラミング・フレームワーク205を利用するシステムを示している。プラットフォーム250は、例えばゲーム・コンソールのようなクローズド・コンピューター装置であっても、例えばパーソナル・コンピューターのような一層オープンなプラットフォームであってもよく、該コンピューター装置は、プログラミング・フレームワーク205を実装するオペレーティング・システム・ソフトウェア構成要素を実行するように構成される。アプリケーション・アクセス層204内の層210、215、220、225、230及び235は、機能において、図1について上で説明したものと同様である。プログラミング・フレームワーク205は、層210、215、220、225、230及び235にアクセスするために利用されるAPIを抽象化する。本開示内容の例としての非限定的な態様において、プログラミング・フレームワーク205は、例えば層210、215、220、225、230及び235であるプラットフォーム資源に対し、簡略化されたインターフェースを提供する。本明細書で使われる「インターフェース」という用語は、ソフトウェアによって一般的に用いられ得る任意の入出力の広い定義を持つものとする。
図3及び図4は、プログラミング・フレームワークがどのようにアプリケーション・ソフトウェア開発を促進し、プラットフォーム抽象化を提供するかの、非常に簡略化された例を示している。ここで記載される例は、表示されるコンピューター・システムのパーツが極めて限られたものであり、本発明の説明のために大幅に簡略化されていることに注意されたい。また、ここで用いられるコマンドの例は、説明のためだけに簡略化されたコマンドであって、いかなる意味においても、どのような実際のコマンドが用いられるかを示唆したり、本開示内容を限定したりするものではないことにも注意されたい。
図3は、ビデオ・カード355、ネイティブなオペレーティング・システム303、グラフィックス層310及びプログラミング・フレームワーク305を備えるプラットフォーム350上のシステム例を示す。ビデオ・カード355を介してプラットフォーム350に接続されたCRT(陰極線管)モニター360が存在する。プラットフォーム350上で動作する開発者コード302は、プラットフォーム350がディスプレイ上に文字セットを表示することを要求し得る。この例において、開発者コード302は、モニター360での文字「ABC」の表示を要求している。この要求は、「Display{ABC}」というコマンド340により、プログラミング・フレームワークに伝えられる。プログラミング・フレームワーク305は、この要求を受け取り、グラフィックス層310の要求に合うように修正してグラフィックス層310に提示する。この例については、グラフィックス層310は、コマンドが、「GraphicsAPI{printCRT[ABC][50][60][10]}」というコマンド340によって例示されるような形式に変換されることを要求していると想定する。この例において、グラフィックス層310は、表示される文字を超えた他の表示文字のためのフィールドを要求するが、これは、プログラミング・フレームワーク305によって提供されるので、アプリケーション開発者コード302は、グラフィックス層310特有の要求を知るという重荷から開放される。グラフィックス層310は、そこで、ビデオ・カード355を制御するオペレーティング・システム層303と共に動作し、ビデオ・カード305は、次いで、CRTモニター360に文字を表示するよう命令する。
図3を、プラットフォーム450、ビデオ・カード455、ネイティブのオペレーティング・システム403、グラフィックス層410及びプログラミング・フレームワーク405を備えるシステムが示される図4と対比すると、ビデオ・カード455を介してプラットフォーム450に接続されたLCD(液晶表示)モニター460が存在する。ここで、同一の開発者コード302は、このプラットフォーム450上で動作しており、プログラミング・フレームワーク405に対し、図3におけると同じ「Display{ABC}」というコマンド340により、同一の要求を行う。プログラミング・フレームワーク405は、この要求を受け取ってグラフィックス層410のために正しく形式変換するが、この場合、プラットフォーム450は、図3に示すプラットフォーム350とは異なる資源を有するため、グラフィックス層410のコマンド要求は、グラフィックス層310のものとは異なる。そのため、プログラミング・フレームワーク405は、グラフィックス層410に対し、「GraphicsAPI{printLCD[10][50][60][ABC]}」というコマンドを発行する。しかしながら、アプリケーション開発者コード302は、下層のプラットフォーム350及び450の差異を全く理解しなくても、同一のコマンド340により、依然として同じ結果を達成することができる。そこで、グラフィックス層410は、ビデオ・カード455を制御するオペレーティング・システム層403と作用し、次いで、ビデオ・カード455がLCDモニター460に対して、文字を表示するよう命令する。
この例は、プログラミング・フレームワークがどのようにプラットフォーム抽象化を提供するかを示している。図3及び4に示された例において、開発者コード302は、下層のソフトウェア及びハードウェアの違いに関わらず、プログラミング・フレームワーク305及び405に対し、同一のコマンド340を伝えることができた。開発者コード302は、グラフィックス層APIと共に動作するための異なる要件を含む、プラットフォーム間の差異を解決する必要なしに、プラットフォーム350及び450と対話することができた。開発者コードを離れてプラットフォームを抽象化するこの能力は、マルチプラットフォーム・コンパティブルなアプリケーションの作成作業を大幅に簡略化する。本明細書に記載されたプログラミング・フレームワークの利用により、コードがどのプラットフォームでも実行可能であることを保証するために必要とされる極めて大量の単純労働が取り除かれる。
図5は、開発者コードがプラットフォーム550との相互作用において正しい動作を示すことを保証するのを、プログラミング・フレームワーク505がどのように助けるかを示している。図3及び図4と同様に、開発者コード302は、コマンド340の形態で要求をプログラミング・フレームワーク505に通信する。フレームワーク505は、要求340を受信して、当該コマンドが下層のハードウェア及びソフトウェアにおいて実装されるようにする手段を講じる。この例において、文字表示を要求するコマンド530のようなコマンドよりも、表示されるべき文字のためのメモリー空間を要求するコマンド570の方が常に先行することをグラフィックス層510が要求するならば、プログラミング・フレームワーク505がこの追加の要求570を提供する。プラットフォーム抽象化の任務の一環として、フレームワーク505は、開発者コード302がオペレーティング・システム層から正しく動作するように見えるように、任意の必要な追加コマンドを発行し、必要とされる追加の動作を実行して、開発者コード302が意図したとおりに実行されるよう保証するのを助ける。また、これにより、開発者は、様々なプラットフォームにより期待される様々な動作を提供するようにアプリケーション・コード302にコード動作の様々な変形を含めなければならないことから解放される。
また、プログラミング・フレームワークは、プラットフォームのための追加されたセキュリティ層を提供する。再び図2を参照すると、開発者コード202が、プログラミング・フレームワーク205に対し、アクセスするべきではない資源にアクセスするための要求を発行した場合、又は、開発者コード202が、プラットフォーム製造者によって許可されていない或いは望ましくないタスクの制御或いは実行を試みた場合、プログラミング・フレームワーク205は追加の防御として働く。また、プログラミング・フレームワーク205は、単に、そのような禁止された動作を可能とするインターフェース・コマンド又はプログラム・コールによっては利用可能にならないようにしてもよい。例えばグラフィックス層210又は記憶層225のような、プラットフォーム250内のシステムは、典型的には、組み込み型の保護装置を有するが、プログラミング・フレームワーク205の追加は、それらの資源を更に安全にするよう動作する。例えば、開発者コード202が、カーネル又はネイティブのオペレーティング・システム・ソフトウェア203の一部として現在使用されているメモリーへの書き込み要求を発行する場合、プログラミング・インターフェース205は、そのような要求に対する第一線の防御となり得る。フレームワーク205は、記憶層225から受信された、制限されたメモリー位置のリストを有しており、該リストを開発者コード202からのメモリー要求をチェックするために利用してもよい。他の場合においては、プログラミング・フレームワーク205は、例えばディスクのフォーマット化又はパスワード変更のような、開発者コード202にとって厳格に許容されない或るコマンド又は機能の静的なリストを有している。
プログラミング・フレームワークの更なる、より直接的ではないセキュリティ上の特徴点は、特にゲーム・コンソールのようなクローズド・システムについて、プラットフォームのハッキングへの誘因を低減させることである。本明細書に記載されたようなプログラミング・フレームワークが愛好者及び初級開発者に利用可能とされ、彼らがフレームワークによって提供された制限内で容易にソフトウェアを作成することが可能となったならば、そうした開発者は、プラットフォームへのハッキングの代わりに、プログラミング・フレームワークを利用することを選ぶであろう。プログラミング・フレームワークにより、そうした開発者は自分の努力をソフトウェア開発の創造的側面に集中することができる。彼らは、クローズド・システムの制限及び要求されるソフトウェア署名をどのように回避するかを理解するために時間と労力をかける必要がなくなる。オープン・システムにおいても、アクセス可能で利用し易いプログラミング・フレームワークの存在は、開発者が、プラットフォームで利用可能な資源を一層効率的に利用することを可能とし、ユーザーによる新しいソフトウェア開発を促進する。
例としてのコンピューター装置
上記のとおり、本明細書で開示される発明は、ソフトウェア開発者が装置の資源のうちの少なくとも一つにアクセスするアプリケーション・ソフトウェアを作成できるようにすることが望ましい任意のコンピューター装置に適用される。しかしながら、アプリケーション・ソフトウェアのコンテンツと同等な他のコンテンツが、本明細書に開示されたプログラミング・フレームワークと共に動作することが可能であり、本明細書に開示された発明は、本明細書に記載された例に限らず、全ての種類のコンピューター装置に実装可能であることが理解されるべきである。従って、以下の図6に記載される汎用コンピューター装置は一例に過ぎず、本発明は、スタンドアロンの、又はネットワーク/バスによる相互動作可能性及び対話を備える任意のクライアント、サーバー、着脱可能な又は着脱不能な機器によって実現可能である。従って、本発明は、例えば、装置内に置かれたオブジェクトのように、クライアント装置がネットワーク/バスへのインターフェースとしてのみ動作するネットワーク接続環境のような、極めて少ない又は最小限のクライアント資源が関与するネットワーク・ホスト型サービスの環境で実現されてもよい。
必ずしも必要ではないが、本発明は、装置又はオブジェクトのためのサービス又はソフトウェアの開発者による利用のために、部分的にオペレーティング・システムによって実現されてもよく、及び/又は、本発明と結合して動作するアプリケーション・ソフトウェアに含まれてもよい。ソフトウェアは、例えばクライアント・ワークステーション、サーバー又は他の装置のような一つ又はそれ以上のコンピューターによって実行される、例えばプログラム・モジュールのようなコンピューター実行可能命令の一般的な文脈において説明されてもよい。当業者に理解されるように、本発明は、他のコンピューター・システム構成及びプロトコルによっても実現可能である。
図6は、図1〜図5に関連して記載された様々な態様が実現され得る適切なコンピューター・システム環境600の例を示す。ただし、上で明らかにされたとおり、コンピューター・システム環境600は、本明細書に開示された発明の実施に適したコンピューター環境の一例に過ぎず、本明細書の開示内容のこれら様々な態様の用途又は機能の範囲のいかなる限定をも示唆することを意図しない。また、コンピューター環境600を、例としての動作環境600に図示された構成要素の任意の一つ又は組み合わせに関連する、いかなる依存又は要件を有するものとしても解釈してはならない。
図6を参照すると、上記の態様を実現する例としてのコンピューター装置は、上記においてプラットフォームとも呼ばれる、コンピューター610の形態の汎用コンピューター装置を含む。コンピューター610の構成要素は、処理ユニット620、システム・メモリー630、及び、システム・メモリーから処理ユニット620を含む様々なシステム構成要素を結合するシステム・バス621を含み得るが、それらに限定されない。システム・バス621は、メモリー・バス又はメモリー・コントローラー、周辺機器バス、並びに、様々なバス・アーキテクチャーのうち任意のものを用いたローカル・バスを含む、何種類かのバス構造のうちの任意のものであってよい。
典型的には、コンピューター610は様々なコンピューター読み取り可能媒体を備える。コンピューター読み取り可能媒体は、コンピューター610によりアクセス可能な任意の利用可能な媒体であってよい。非限定的な例として、コンピューター読み取り可能媒体は、コンピューター記憶媒体及び通信媒体を含み得る。コンピューター記憶媒体は、例えば、コンピューター読み取り可能命令、データ構造、プログラム・モジュール、又は他のデータのような情報の記憶のための任意の方法又は技術で実現された、揮発性又は不揮発性の、着脱可能又は着脱不能な媒体を含む。コンピューター記憶媒体は、RAM、ROM、EEPROM、フラッシュ・メモリー又は他のメモリー技術、CDROM、デジタル多用途ディスク(DVD)又は他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置又は他の磁気記憶装置、或いは、所望の情報を格納するために利用でき、コンピューター610によってアクセスできる任意の他の媒体を含むが、それらに限定されない。典型的には、通信媒体は、コンピューター読み取り可能命令、データ構造、プログラム・モジュール、又は、例えば搬送波又は他の伝送機構である変調データ信号中の他のデータを具現化するものであって、任意の情報伝送媒体を含む。
システム・メモリー630は、例えば、読み取り専用メモリー(ROM)632及び/又はランダム・アクセス・メモリー(RAM)634のような揮発性及び/又は不揮発性のメモリー形態のコンピューター記憶媒体を含み得る。例えば起動中などにコンピューター610内の構成要素間の情報伝送を助ける基本ルーチンを含む基本入出力システム(BIOS)は、メモリー630に格納され得る。また、典型的には、メモリー630は、処理ユニット620によって直接にアクセス可能な、及び/又は、処理ユニット620によって動作させられているデータ及び/又はプログラム・モジュールをも含み得る。非限定的な例として、メモリー630は、オペレーティング・システム、アプリケーション・プログラム、他のプログラム・モジュール及びプログラム・データを含み得る。
また、コンピューター610は、他の着脱可能/着脱不能な揮発性/不揮発性のコンピューター記憶媒体を含み得る。例えば、コンピューター610は、着脱不能な不揮発性磁気メディアからの読み出し又は書き込みを行うハード・ディスク・ドライブ、着脱可能な不揮発性磁気ディスクからの読み出し又は書き込みを行う磁気ディスク・ドライブ、及び/又は、例えばCD−ROM又は他の光媒体のような着脱可能な不揮発性光ディスクからの読み出し又は書き込みを行う光ディスク・ドライブを含み得る。例としての動作環境において利用できる他の着脱可能/着脱不能な揮発性/不揮発性のコンピューター記憶媒体は、磁気テープ・カセット、フラッシュ・メモリー・カード、デジタル多用途ディスク、デジタル・ビデオ・テープ、ソリッド・ステートRAM、ソリッド・ステートROM及びそれらに類するものを含むが、それらに限定されるものではない。ハード・ディスク・ドライブは、典型的には、例えばインターフェース680のような着脱不能なメモリー・インターフェースを介してシステム・バス621に接続され、磁気ディスク・ドライブ又は光ディスク・ドライブは、典型的には、例えばインターフェース690のような着脱可能なメモリー・インターフェースによってシステム・バス621に接続される。
ユーザーは、コントローラーを介してクローズド・コンピューター装置に入力を提供できるのに加えて、例えばキーボードや、一般にマウスと言われるポインティング・デバイス、トラックボール又はタッチパッドのような入力装置を介してコンピューター610に、命令及び情報を入力することができる。そのような周辺装置に加えて、他の入力装置は、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星アンテナ、スキャナー又はそれらに類するものを含み得る。これらの及び他の入力装置は、システム・バス621に接続されたユーザー入力640及び関連するインターフェースを介して処理ユニット620に接続されることが多いが、パラレル・ポート、ゲーム・ポート又はユニバーサル・シリアル・バス(USB)のような他のインターフェース及びバス構造によって接続されてもよい。グラフィックス・サブシステムもシステム・バス621に接続される。モニター又は他の型式の表示装置も、出力インターフェース650のようなインターフェースを介してシステム・バス621に接続され、該インターフェースはビデオ・メモリーと通信する。モニターに加えて、コンピューターは、スピーカー及びプリンターのような出力インターフェース650を介して接続され得る他の周辺出力装置をも備え得る。
コンピューター610は、ネットワーク接続環境又は分散環境において、例えばリモート・コンピューター670のような、装置610とは異なるメディア能力を備え得る一つ又はそれ以上の他のリモート・コンピューターとの論理接続を用いて動作することができる。リモート・コンピューター670は、パーソナル・コンピューター、サーバー、ルーター、ネットワークPC、ピア・デバイス又は任意の共通ネットワーク・ノード、或いは任意の他のリモート・メディア消費又は伝送装置であってよく、コンピューター610について上記された任意の又は全ての構成要素を含み得る。図6に示された論理接続はネットワーク671を含み、その例には、ローカル・エリア・ネットワーク(LAN)又は広域ネットワーク(WAN)が含まれるが、他のネットワーク/バスを含んでもよい。そのようなネットワーク接続環境は、家庭、オフィス、企業規模のコンピューター・ネットワーク、イントラネット及びインターネットにおいて一般的である。
LANネットワーク接続環境において利用される場合、コンピューター610は、ネットワーク・インターフェース又はアダプターを介してネットワーク671に接続される。WANネットワーク接続環境で利用される場合、コンピューター610は、典型的には、モデム、又は、例えばインターネットのようなWAN上の通信を確立する他の手段を含む。内蔵でも外付けでもよいモデムは、入力640のユーザー入力インターフェース又は他の適切な機構を介してシステム・バス621に接続され得る。ネットワーク接続環境において、コンピューター610に関連して図示されたプログラム・モジュール又はその一部は、リモートのメモリー記憶装置に格納されてもよい。当業者に理解されるとおり、図示の及び説明されたネットワーク接続は例示であり、コンピューター間の通信リンクを確立させる他の手段が利用されてもよい。
例としてのクローズド・システム又はコンソール環境
次に、別の非限定的な例としてのコンピューター装置である例示のマルチメディア・コンソールを示すブロック図を図示する図7を参照すると、例示のマルチメディア・コンソールはクローズされていて、クローズされた装置の製造者又はゲーム・ソフトウェア発行者のような何らかの署名権者によって署名された、限られた量のソフトウェア要素のみへのアクセスを許容する。図7は、本明細書に開示された発明の態様が実施され得るマルチメディア・コンソール700の機能的構成要素を示している。マルチメディア・コンソール700は、レベル1(L1)キャッシュ702、レベル2(L2)キャッシュ704及びフラッシュROM(読み取り専用メモリー)706を有する中央処理装置(CPU)701を備える。レベル1キャッシュ702及びレベル2キャッシュ704は一時的にデータを格納してメモリー・アクセス周期の数を減らし、それによって処理速度及びスループットを向上させる。フラッシュROM706は、マルチメディア・コンソール700の電源が入れられた際のブート・プロセスの初期段階期間にロードされる実行可能コードを格納する。代わりに、初期ブート段階期間にロードされる実行可能コードはフラッシュ・メモリー装置(図示せず)に格納されてもよい。更に、ROM706はCPU701から切り離して配置されてもよい。
このコンソールは、例えば、高速で高解像度なグラフィックス処理のためのビデオ処理パイプラインからのグラフィックス処理ユニット(GPU)708及びビデオ・エンコーダー/ビデオ・コーデック(エンコーダー/デコーダー)714のような、コンソールにとって利用可能な様々な資源を備え得る。この設定において、データは、グラフィックス処理ユニット708からビデオエンコーダー/ビデオ・コーデック(エンコーダー/デコーダー)714へ、バスを介して搬送される。ビデオ処理パイプラインは、テレビ又は他のディスプレイへの伝送のために、A/V(オーディオ/ビデオ)ポート740にデータを出力する。メモリー・コントローラー710はGPU708及びCPU701に接続されており、様々な型式のメモリー712(例えばRAM(ランダム・アクセス・メモリー)であるがそれに限定されない)へのプロセッサーのアクセスを促進する。
マルチメディア・コンソール700は、I/Oコントローラー720、システム管理コントローラー722、オーディオ処理ユニット723、ネットワーク・インターフェース・コントローラー724、第一のUSBホスト・コントローラー726、第二のUSBホスト・コントローラー728及び前面パネルI/Oサブアセンブリ730を含み、これらはモジュール718の上に実現されることが望ましい。USBコントローラー726及び728は、周辺コントローラー742(1)〜742(2)、無線アダプター748及び外付けメモリー・ユニット746(例えば、フラッシュ・メモリー、外付けCD/DVD ROMドライブ、着脱可能なメディア等)のホストとしての機能を果たす。ネットワーク・インターフェース724及び/又は無線アダプター748はネットワーク(例えば、インターネット、家庭内ネットワーク等)へのアクセスを提供するものであり、イーサネット(登録商標)・カード、モデム、ブルートゥース・モジュール、ケーブル・モデム及びそれらに類するものを含む広範な種々の有線又は無線のインターフェース要素のうちの任意のものであってよい。
システム・メモリー743は、ブート・プロセス期間にロードされるアプリケーション・データを格納するために設けられる。メディア・ドライブ744が設けられており、これはDVD/CDドライブ、ハード・ドライブ又は他の着脱可能なメディア・ドライブ等を含み得る。メディア・ドライブ744は、マルチメディア・コンソール700に内蔵されても、外付けであってもよい。アプリケーション・データは、マルチメディア・コンソール700による実行、再生等のために、メディア・ドライブ744を介してアクセスされ得る。メディア・ドライブ744は、シリアルATAバスのようなバス又は他の高速接続(例えば、IEEE1394)を介してI/Oコントローラー720に接続される。
システム管理コントローラー722は、マルチメディア・コンソール700の利用可能性の保証に関連する様々なサービス機能を提供する。オーディオ処理ユニット723及びオーディオ・コーデック732は、高い原音忠実度とステレオ処理能力を備える、対応するオーディオ処理パイプラインを形成する。オーディオ・データは、通信リンクを介してオーディオ処理ユニット723とオーディオ・コーデック726との間を搬送される。オーディオ処理パイプラインは、オーディオ能力を有する外部のオーディオ・プレーヤー又は装置による再生のために、A/Vポート740にデータを出力する。
前面パネルI/Oサブアセンブリ730は、マルチメディア・コンソール700の外面上に露出された任意のLED(発光ダイオード)又は他のインジケーターや、電源ボタン750及び取り出しボタン752の機能をサポートする。システム電源モジュール736は、マルチメディア・コンソール700の構成要素に電力を供給する。ファン738はマルチメディア・コンソール700内の回路を冷却する。
CPU701、GPU708、メモリー・コントローラー710及びマルチメディア・コンソール700内の様々な他の構成要素は、シリアル・バス、パラレル・バス、メモリー・バス、ペリフェラル・バス、及び、任意の様々なバス構造を用いるプロセッサー・バス又はローカル・バスを含む一つ以上のバスを介して相互に接続される。
マルチメディア・コンソール700が、電源が入れられ又は再起動されたとき、アプリケーション・データは、システム・メモリー743からメモリー712及び/又はキャッシュ702、704にロードされ、CPU701で実行され得る。アプリケーションは、マルチメディア・コンソール700上で利用可能な様々なメディア型式へナビゲートする際に、一貫したユーザー体験を提供するグラフィカル・ユーザー・インターフェースを提示し得る。動作において、メディア・ドライブ744に含まれるアプリケーション及び/又は他のメディアは、マルチメディア・コンソール700に追加の機能を提供するように、メディア・ドライブ744から起動又は再生され得る。
マルチメディア・コンソール700は、該システムを単にテレビ又は他のディスプレイに接続することにより、スタンドアローン・システムとして動作する。このスタンドアローン・モードにおいて、マルチメディア・コンソール700は、一人又はそれ以上のユーザーがシステムと対話し、映画を見、音楽を聴き、及びそれに類することを可能とする。しかしながら、ネットワーク・インターフェース724又は無線アダプター748を介して利用可能とされた広帯域接続と統合されると、マルチメディア・コンソール700は、より大きなネットワーク・コミュニティの参加者として更に動作し得る。
図7に示したマルチメディア・コンソールは、例えばゲームのようなマルチメディア・アプリケーションを実行するために利用され得る典型的なマルチメディア・コンソールである。マルチメディア・アプリケーションは、例えばシステム設定、音声チャット、ネットワーク・ゲーム、ネットワークを介して他のユーザーと対話する能力、電子メール、ブラウザー・アプリケーション等を含むシステム特性によって強化され得る。そのようなシステム特性は、例えば異なる場所にいるプレイヤーがインターネットを介して共通のゲームをする能力を有するような、マルチメディア・コンソール700のための改善された機能を可能とし得る。
また、システム特性は、時間とともに更新され又はマルチメディア・アプリケーションに追加され得る。これらのシステム特性を提供するためにマルチメディア開発者に対してマルチメディア・アプリケーションへの重大な修正を行うよう要求するのではなく、本明細書に記載されたシステム及び方法は、マルチメディア開発者が、マルチメディア・アプリケーションと組み合わされて動作する別個のシステム・アプリケーションによってシステム特性を提供することを可能とする。例えば、システム・アプリケーションは、ネットワーク接続能力と関連する機能を体現することができ、それにより、マルチメディア・アプリケーションを、マルチメディア(例えば、ゲーム)開発者の働きをほとんど必要とすることなくネットワーク接続能力を提供するように容易に適応させることができる。そのような能力の一つは、複数のネットワーク接続されたユーザーに対するシステム・レベルの通知の能力である。システム・レベルの通知をシステム・アプリケーションの一部とすることにより、システム上で動作するゲームのような個々のマルチメディア・アプリケーションで取り扱うのではなく、マルチメディア・アプリケーション開発者にとっての開発プロセスから、ゲームへの招待のような通知を表示させる処理を取り去り、彼らがマルチメディア・アプリケーションそのものに集中することを可能とする。
上記のとおり、本発明の例としての実施の形態を、様々なコンピューター装置及びネットワーク・アーキテクチャーとともに説明したが、基礎となる概念は、開発者アプリケーション・ソフトウェアがロードされ実行され得る任意のコンピューター装置又はシステムに適用可能である。例えば、説明された態様のアルゴリズム及びハードウェアの実現態様は、コンピューター装置のオペレーティング・システムに適用されてもよく、該装置上の単独のオブジェクトとして、他のオブジェクトの一部として、再利用可能な制御として、サーバーからダウンロード可能なオブジェクトとして、装置又はオブジェクトとネットワークとの間の「仲介者」として、分散オブジェクトとして、ハードウェアとして、メモリーに、上記の任意の組み合わせ等として提供され得る。例としてのプログラミング言語、名称及び実例は、本明細書においては様々な選択肢の代表として選ばれており、これらの言語、名称及び実例は限定を意図するものではない。
本明細書に記載された様々な技術は、ハードウェア又はソフトウェアと組み合わせて、又は、適切な場合に両方と組み合わせて実現され得る。従って、本発明の方法及び装置、或いは、その特定の態様又は部分は、例えばフロッピー(登録商標)・ディスク、CD−ROM、ハード・ドライブ、又は任意の他のマシン読み取り可能記憶媒体である有形の媒体に具現化されるプログラム・コード(即ち、命令)の形をとり、プログラム・コードが例えばコンピューターであるマシンにロードされてマシンにより実行される際に、該マシンは、本明細書に開示された態様を実現するための装置となる。プログラム可能なコンピューター上でプログラム・コードを実行する場合、コンピューター装置は、一般に、プロセッサー、プロセッサーにより読み取り可能な記憶媒体(揮発性及び不揮発性のメモリー及び/又は記憶要素を含む)、少なくとも一つの入力装置及び少なくとも一つの出力装置を含む。これらの態様に従って提供される任意のソフトウェアを実現又は利用し得る一つ又はそれ以上のプログラムは、コンピューター・システムと通信する高レベルの手続き型の又はオブジェクト指向型のプログラミング言語で実現されることが望ましい。しかしながら、プログラムは、所望に応じて、アセンブリ又はマシン言語で実現されてもよい。いずれの場合にも、言語は、コンパイル又は解釈された言語であり、ハードウェア実現態様と結合され得る。
また、本明細書に開示された態様の方法及び装置は、電線又はケーブル、光ファイバー或いは任意の他の形態の伝送のような、何らかの伝送媒体上で伝送されるプログラム・コードの形で具現化される通信を介して実行され、該プログラム・コードが、例えばEPROM、ゲート・アレイ、プログラム可能論理デバイス(PLD)、クライアント・コンピューター等であるマシンに受信されてロードされ、マシンにより実行される場合、該マシンは、本明細書に開示された発明を実施する装置になる。汎用プロセッサー上で実現される場合、プログラム・コードは、プロセッサーと組み合わされて、本発明の機能を呼び出すよう動作する独自の装置を提供する。更に、本態様と組み合わせて用いられる任意の記憶技術は、必ず、ハードウェア及びソフトウェアの組み合わせであり得る。
上記の態様は、様々な形の好ましい実施の形態と組み合わせて説明されたが、他の類似の実施の形態も利用可能であり、同一の機能を実行するために、記載された実施の形態から逸脱することなく、修正及び追加がなされ得ることが理解されるべきである。例えば、当業者に理解されるように、本出願に記載された方法は、有線か無線かに拘わらず、例えばゲーム・コンソール、ハンドヘルド・コンピューター、携帯型コンピューター等の任意のコンピューター装置又は環境に適用可能であり、通信ネットワークを介して結合され、また、ネットワークを介して対話する任意の数のそのようなコンピューター装置に適用できる。
更に、特に無線ネットワーク装置の数が急増し続けるにつれて、ハンドヘルド・デバイスのオペレーティング・システム及び他のアプリケーション特有のオペレーティング・システムを含む様々なコンピューター・プラットフォームが企図されていることが強調されるべきである。更に、本発明の機能は、複数の処理チップ又は装置において、或いは、複数の処理チップ又は装置に渡って実現され、記憶装置は、複数のデバイスに渡って同様に有効にされ得る。従って、本明細書に開示された態様は、単一の実施の形態に限定されるべきではなく、むしろ、添付の特許請求の範囲に従った幅及び範囲内で構成されるべきである。

Claims (20)

  1. プログラミング・フレームワークを用いてコンピューター・システムにおいてプラットフォームを抽象化する方法であって、
    プログラミング・フレームワークにおいて、少なくとも一つのアプリケーション・プログラムから少なくとも一つの命令を受信するステップと、
    前記プログラミング・フレームワーク内において、前記少なくとも一つの命令を、コンピューター装置のオペレーティング・システムの要求に適合するように修正するステップと、
    前記修正された少なくとも一つの命令を、前記プログラミング・フレームワークから前記コンピューター装置のオペレーティング・システムに伝えるステップであって、前記プログラミング・フレームワークが、様々なオペレーティング・システム及びハードウェアを備える少なくとも2つのコンピューター装置上に構成されることが可能であり、前記プログラミング・フレームワークが、前記少なくとも2つのコンピューター装置上において、前記コンピューター装置のオペレーティング・システム及びハードウェアの異なる要求にも拘わらず、前記少なくとも一つのアプリケーション・プログラムからの前記少なくとも一つの命令を同一の方法で受信するステップと、
    を備える方法。
  2. 請求項1記載の方法であって、前記コンピューター装置のオペレーティング・システムが少なくとも一つの資源層を備え、前記プログラミング・フレームワークが、前記少なくとも一つの命令を、前記コンピューター装置のオペレーティング・システムの前記少なくとも一つの資源層に伝える方法。
  3. 請求項2記載の方法であって、前記コンピューター装置のオペレーティング・システムが、少なくともグラフィックス層、オーディオ層、入力層及び記憶層からなる資源層を有する方法。
  4. 請求項2記載の方法であって、前記プログラミング・フレームワークが、前記少なくとも一つの命令を、少なくとも一つのアプリケーション・プログラミング・インターフェース(API)を介して、前記コンピューター装置のオペレーティング・システムの前記少なくとも一つの資源層に伝える方法。
  5. 請求項1記載の方法であって、前記プログラミング・フレームワークが、前記コンピューター装置のオペレーティング・システムに統合されている方法。
  6. 請求項1記載の方法であって、前記プログラミング・フレームワークが、前記オペレーティング・システムから少なくとも一つの命令を受信し、前記少なくとも一つの命令を、前記アプリケーション・プログラムの要求に適合するように必要に応じて修正し、前記少なくとも一つの命令を前記アプリケーション・プログラムに伝える方法。
  7. 請求項1記載の方法であって、前記プログラミング・フレームワークにおいて前記少なくとも一つのアプリケーション・プログラムから受信された前記少なくとも一つの命令が、前記コンピューター装置のオペレーティング・システムによって制御された資源に対する少なくとも一つの要求を含む方法。
  8. 請求項1に記載されたステップを実行するためのコンピューター実行可能命令を有するコンピューター読み取り可能媒体。
  9. プログラミング・フレームワークを用いて、コンピューター・システムにおいて期待されているアプリケーション・プログラム動作をエミュレートする方法であって、
    プログラミング・フレームワークにおいて、少なくとも一つのアプリケーション・プログラムから少なくとも一つの命令を受信するステップと、
    前記プログラミング・フレームワーク内において、前記少なくとも一つのアプリケーション・プログラムからの前記少なくとも一つの命令が、コンピューター装置のオペレーティング・システムのアプリケーション・プログラム動作に対する期待に適合するように更なる命令を必要とするか否かを決定するステップと、
    前記プログラミング・フレームワークが、前記コンピューター装置のオペレーティング・システムによって前記アプリケーション・プログラムに期待されている動作をエミュレートするように、前記プログラミング・フレームワークからの追加の命令を、適切な時間及び方法で、前記コンピューター装置のオペレーティング・システムに伝えるステップと、
    を備える方法。
  10. 請求項9記載の方法であって、前記コンピューター装置のオペレーティング・システムが、少なくとも一つの資源層を備え、前記プログラミング・フレームワークが、前記追加の命令を、前記コンピューター装置のオペレーティング・システムの前記少なくとも一つの資源層に伝送する方法。
  11. 請求項10記載の方法であって、前記コンピューター装置のオペレーティング・システムが、少なくともグラフィックス層、オーディオ層、入力層及び記憶層からなる資源層を有する方法。
  12. 請求項10記載の方法であって、前記プログラミング・フレームワークが、前記少なくとも一つの命令を、少なくとも一つのアプリケーション・プログラミング・インターフェース(API)を介して、前記コンピューター装置のオペレーティング・システムの前記少なくとも一つの資源層に伝える方法。
  13. 請求項9記載の方法であって、前記プログラミング・フレームワークにおいて前記少なくとも一つのアプリケーション・プログラムから受信された前記少なくとも一つの命令が、前記コンピューター装置のオペレーティング・システムによって制御された資源に対する少なくとも一つの要求を含む方法。
  14. 請求項9記載の方法であって、前記プログラミング・フレームワークが、前記コンピューター装置のオペレーティング・システムに統合されている方法。
  15. 請求項9に記載されたステップを実行するためのコンピューター実行可能命令を有するコンピューター読み取り可能媒体。
  16. プログラミング・フレームワークを用いてコンピューター・システムに追加のセキュリティを提供する方法であって、
    プログラミング・フレームワークにおいて、少なくとも一つのアプリケーション・プログラムから少なくとも一つの命令を受信するステップと、
    前記プログラミング・フレームワーク内において、前記少なくとも一つの命令がコンピューター・システムのセキュリティ・ポリシーに違反しているか否かを決定するステップであって、前記少なくとも一つの命令が前記コンピューター・システムのセキュリティ・ポリシーに違反していない場合に、前記プログラミング・フレームワークが前記命令を前記コンピューター・システムのオペレーティング・システムに伝え、前記少なくとも一つの命令が前記コンピューター・システムのセキュリティ・ポリシーに違反している場合に、前記プログラミング・フレームワークが前記命令を前記コンピューター・システムのオペレーティング・システムに伝えないステップと、
    を備える方法。
  17. 請求項16記載の方法であって、前記プログラミング・フレームワークにおいて前記少なくとも一つのアプリケーション・プログラムから受信された前記少なくとも一つの命令が、前記コンピューター装置のオペレーティング・システムによって制御された資源に対する少なくとも一つの要求を含む方法。
  18. 請求項16記載の方法であって、前記少なくとも一つの命令が前記コンピューター・システムのセキュリティ・ポリシーに違反していない場合に、前記プログラミング・フレームワークが前記命令を、少なくとも一つのアプリケーション・プログラミング・インターフェース(API)を介して、前記コンピューター・システムのオペレーティング・システムに伝える方法。
  19. 請求項16記載の方法であって、前記プログラミング・フレームワークが、前記コンピューター装置のオペレーティング・システムに統合されている方法。
  20. 請求項16に記載されたステップを実行するためのコンピューター実行可能命令を有するコンピューター読み取り可能媒体。
JP2010504139A 2007-04-20 2008-03-20 クローズド・システムのためのプログラミング・フレームワーク Expired - Fee Related JP5249315B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/737,921 2007-04-20
US11/737,921 US7949998B2 (en) 2007-04-20 2007-04-20 Programming framework for closed systems
PCT/US2008/057729 WO2008130767A1 (en) 2007-04-20 2008-03-20 Programming framework for closed systems

Publications (3)

Publication Number Publication Date
JP2010525450A true JP2010525450A (ja) 2010-07-22
JP2010525450A5 JP2010525450A5 (ja) 2011-05-06
JP5249315B2 JP5249315B2 (ja) 2013-07-31

Family

ID=39873511

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010504139A Expired - Fee Related JP5249315B2 (ja) 2007-04-20 2008-03-20 クローズド・システムのためのプログラミング・フレームワーク

Country Status (8)

Country Link
US (1) US7949998B2 (ja)
EP (1) EP2140369A4 (ja)
JP (1) JP5249315B2 (ja)
KR (1) KR101455433B1 (ja)
CN (1) CN101669111A (ja)
CA (1) CA2681842C (ja)
IL (1) IL201164A (ja)
WO (1) WO2008130767A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1696321A1 (en) * 2005-02-23 2006-08-30 Deutsche Thomson-Brandt Gmbh Method and apparatus for executing software applications
JP4849829B2 (ja) 2005-05-15 2012-01-11 株式会社ソニー・コンピュータエンタテインメント センタ装置
US8523666B2 (en) * 2007-05-25 2013-09-03 Microsoft Corporation Programming framework for closed systems
US8752038B1 (en) * 2008-03-17 2014-06-10 Symantec Corporation Reducing boot time by providing quantitative performance cost data within a boot management user interface
US9053295B1 (en) * 2009-02-04 2015-06-09 Sprint Communications Company L.P. Facilitating application development using protected components
US8832855B1 (en) 2010-09-07 2014-09-09 Symantec Corporation System for the distribution and deployment of applications with provisions for security and policy conformance
US8955152B1 (en) * 2010-09-07 2015-02-10 Symantec Corporation Systems and methods to manage an application
US9043863B1 (en) 2010-09-07 2015-05-26 Symantec Corporation Policy enforcing browser
EP2782038A1 (en) 2013-03-19 2014-09-24 STMicroelectronics (Grenoble 2) SAS Resource management in a processor for trusted and untrusted applications
EP2782010A1 (en) * 2013-03-19 2014-09-24 STMicroelectronics (Grenoble 2) SAS Hierarchical resource management
EP2782007A1 (en) 2013-03-19 2014-09-24 STMicroelectronics (Grenoble 2) SAS Launching multiple applications in containers on a processor
US9600256B2 (en) * 2013-10-18 2017-03-21 Microsoft Technology Licensing, Llc Incrementally compiling software artifacts from an interactive development environment
US9740593B2 (en) * 2015-01-08 2017-08-22 International Business Machines Corporation Comparative program execution through control of two or more debug sessions to automatically determine execution differences
US10169467B2 (en) * 2015-03-18 2019-01-01 Microsoft Technology Licensing, Llc Query formulation via task continuum
US11900152B1 (en) * 2021-03-30 2024-02-13 Amazon Technologies, Inc. Controlled automatic updates to disk image layers with compatibility verification

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006508424A (ja) * 2002-09-23 2006-03-09 テレフオンアクチーボラゲット エル エム エリクソン(パブル) ミドルウエアにおけるセキュリティ・アクセス・マネージャ
JP2006285870A (ja) * 2005-04-04 2006-10-19 Canon Inc 印刷制御装置、印刷制御方法、及びプログラム

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5237688A (en) * 1987-11-18 1993-08-17 International Business Machines Corporation Software packaging structure having hierarchical replaceable units
US5388841A (en) 1992-01-30 1995-02-14 A/N Inc. External memory system having programmable graphics processor for use in a video game system or the like
US5680534A (en) 1994-10-31 1997-10-21 Nintendo Co., Ltd. Video game/videographics program fabricating system and method with superimpose control
US6115036A (en) 1994-10-31 2000-09-05 Nintendo Co., Ltd. Video game/videographics program editing apparatus with program halt and data transfer features
US5832264A (en) * 1995-07-19 1998-11-03 Ricoh Company, Ltd. Object-oriented communications framework system with support for multiple remote machine types
US5889990A (en) * 1996-11-05 1999-03-30 Sun Microsystems, Inc. Information appliance software architecture with replaceable service module providing abstraction function between system library and platform specific OS
AUPP149998A0 (en) 1998-01-27 1998-02-19 Aristocrat Leisure Industries Pty Ltd Multi-platform gaming architecture
US7043641B1 (en) 2000-03-08 2006-05-09 Igt Encryption in a secure computerized gaming system
US6651123B1 (en) * 2000-03-30 2003-11-18 International Business Machines Corporation File system locking
US20020057837A1 (en) * 2000-08-14 2002-05-16 Tim Wilkinson Portable operating environment for information devices
US6884171B2 (en) * 2000-09-18 2005-04-26 Nintendo Co., Ltd. Video game distribution network
GB2370236A (en) 2000-12-19 2002-06-26 Nokia Mobile Phones Ltd A method of modifying games content
US7165239B2 (en) * 2001-07-10 2007-01-16 Microsoft Corporation Application program interface for network software platform
WO2003023647A1 (en) 2001-09-10 2003-03-20 Igt Method for developing gaming programs compatible with a computerized gaming operating system and apparatus
US6962530B2 (en) 2002-04-25 2005-11-08 Igt Authentication in a secure computerized gaming system
US7103914B2 (en) * 2002-06-17 2006-09-05 Bae Systems Information Technology Llc Trusted computer system
US7562353B2 (en) * 2003-05-16 2009-07-14 Hewlett-Packard Development Company, L.P. Methods and systems for transforming Java applications of behalf of another device
US8568225B2 (en) 2004-09-16 2013-10-29 Bally Gaming, Inc. User interface system and method for creating and verifying signed content

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006508424A (ja) * 2002-09-23 2006-03-09 テレフオンアクチーボラゲット エル エム エリクソン(パブル) ミドルウエアにおけるセキュリティ・アクセス・マネージャ
JP2006285870A (ja) * 2005-04-04 2006-10-19 Canon Inc 印刷制御装置、印刷制御方法、及びプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6012053691; James Gosling, Henry McGilton: THE JAVA LANGUAGE ENVIRONMENT. A WHITE PAPER , 19951031, pp.10-17, Sun Microsystems Computer Company *

Also Published As

Publication number Publication date
KR101455433B1 (ko) 2014-10-27
KR20100015532A (ko) 2010-02-12
US20080263537A1 (en) 2008-10-23
WO2008130767A1 (en) 2008-10-30
EP2140369A1 (en) 2010-01-06
CN101669111A (zh) 2010-03-10
US7949998B2 (en) 2011-05-24
CA2681842C (en) 2015-10-06
CA2681842A1 (en) 2008-10-30
IL201164A0 (en) 2010-05-17
JP5249315B2 (ja) 2013-07-31
IL201164A (en) 2015-11-30
EP2140369A4 (en) 2010-07-07

Similar Documents

Publication Publication Date Title
JP5249315B2 (ja) クローズド・システムのためのプログラミング・フレームワーク
KR101343258B1 (ko) 웹 서비스에 대한 제3자 확장의 안전하고 안정적인 호스팅
US8601470B2 (en) Symbiotic smart peripherals
US7444621B2 (en) Method and system for providing a common operating system
US7685593B2 (en) Systems and methods for supporting multiple gaming console emulation environments
CN104598257B (zh) 远程应用程序运行的方法和装置
JP5328054B2 (ja) 仮想環境にあるアドオンコンポーネントの動作
KR102089826B1 (ko) 사용자 모드에서의 샌드박스 내의 제한된 드라이버 플랫폼의 드라이버 구동
US10481924B2 (en) Dynamically managing a serial port interface connected to a direct console user interface (DCUI) of virtualization software using headless flags
US10908948B2 (en) Multiple application instances in operating systems that utilize a single process for application execution
US20080182659A1 (en) In-play detection of altered game data
US20170272544A1 (en) Computer System and Method for Sandboxed Applications
US20160283701A1 (en) Secure Connected Digital Media Platform
JP5111516B2 (ja) クローズドシステムにおける無署名コンテンツの実行とアクセスのセキュアリング
US7653684B2 (en) Enabling inter-subsystem resource sharing
US7587722B2 (en) Extending operating system subsystems
US7409691B2 (en) Extending operating system subsystems
US8181039B2 (en) Disc drive counterfeiting countermeasure
US8330764B2 (en) Programming framework for closed systems
Allen Windows Vista Application Development Requirements for User Account Control Compatibility
US8523666B2 (en) Programming framework for closed systems

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110315

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110315

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120928

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121015

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130115

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130214

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130313

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130411

R150 Certificate of patent or registration of utility model

Ref document number: 5249315

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160419

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees