JP2014525622A - オペレーティングシステムのネイティブアプリケーションプログラミングインターフェイスのメタデータを用いた記述 - Google Patents

オペレーティングシステムのネイティブアプリケーションプログラミングインターフェイスのメタデータを用いた記述 Download PDF

Info

Publication number
JP2014525622A
JP2014525622A JP2014528373A JP2014528373A JP2014525622A JP 2014525622 A JP2014525622 A JP 2014525622A JP 2014528373 A JP2014528373 A JP 2014528373A JP 2014528373 A JP2014528373 A JP 2014528373A JP 2014525622 A JP2014525622 A JP 2014525622A
Authority
JP
Japan
Prior art keywords
metadata
operating system
api
computer
application programming
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.)
Pending
Application number
JP2014528373A
Other languages
English (en)
Other versions
JP2014525622A5 (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 JP2014525622A publication Critical patent/JP2014525622A/ja
Publication of JP2014525622A5 publication Critical patent/JP2014525622A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • 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/448Execution paradigms, e.g. implementations of programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

ネイティブオペレーティングシステムアプリケーションプログラミングインターフェイス(API)はメタデータを使用して記述され、そうした記述は標準フォーマットにおいて既知のロケーションに保管される。こうしたメタデータを使用しているAPI規定を保管することにより、他のアプリケーションは直ちにAPIを特定して使用することができる。こうしたAPI表現を作成するために、開発期間中に、開発者はAPIのシェイプを記述する。これらに限定されるわけではないが、クラス、インターフェイス、メソッド、プロパティ、イベント、パラメーター、構造、および、APIにより規定された加算タイプを含んでいる。このAPI表現は、マシンで読取り可能なメタデータファイルを生成するツールによって処理される。マシンで読取り可能なメタデータファイルは、API記述と同一の情報を含んでいる。しかしながら、人が著したものより、むしろ、フォーマットはマシンで読取るようにデザインされている。

Description

本発明は、オペレーティングシステムのネイティブアプリケーションプログラミングインターフェイスのメタデータを用いた記述に関する。
オペレーティングシステムは、典型的にいくつかのプログラミングインターフェイスを有しており、アプリケーションはオペレーティングシステムによってサポートされている機能性にアクセスすることができる。こうしたAPIは、典型的にコンピュータープログラミング言語における名前付ファイルまたはオブジェクトを使用してオペレーティングシステムによって規定されている。例えば、Cプログラミング言語は、"interface.h"といった名前のヘッダーファイルを使用する。同様に、"P/Invoke"と呼ばれるC#メカニズムにおいて、オペレーティングシステムAPIにアクセスするためにシグネチャー(signature)が使用されている。オペレーティングシステムAPIを使用するコンピュータープログラムを書く人は、典型的にプログラムの中の名前付APIファイル又はオブジェクトを参照し、または、プログラミング言語によって提供される別のメカニズムを使用する。プログラムは、例えば、そのAPIによって規定されたファンクションに対するコール(call)を含んでいる。そのAPIによって使用されている構文においてである。
こうしたやり方で規定されたAPIは、それらが書き込まれた言語以外の言語によっては直接的にアクセスすることができない。他の言語の中に書き込まれたプログラムにアクセスできるようにするために、APIはラップ(”wrapped”)される。このラップは、典型的にはAPIごと及び言語ごとに行われる必要があり、対象言語とAPIとオペレーティングシステムの深い理解を要するものである。従って、多くのオペレーティングシステムAPIは利用できない。
本概要は、以降の詳細な説明でより詳しく記述される本発明の概念について、簡素化された形式において代表的な概念の選択を紹介するものである。本概要は、特許請求された技術的事項の主要な特徴または本質的な特徴を特定することを意図するものではない。また、特許請求された技術的事項の範囲を限定するために使用されることを意図するものではない。
ネイティブオペレーティングシステムのアプリケーションプログラミングインターフェイス(API)は、メタデータを使用して記述され、そうした記述は標準ファイルフォーマットで既知のロケーションに保管されている。こうしたメタデータを使用したAPI規定を保管することによって、他のアプリケーションは、直ちにAPIを特定し、使用することができる。
こうしたAPI表現を作成するために、開発の最中に、開発者はAPIのシェイプ(shape)を記述する。それは、(これらに限定されるわけではないが、)クラス、インターフェイス、メソッド、プロパティ、イベント、パラメーター、構造体、および、APIで規定される列挙型(enumerated type)を含んでいる。このAPI記述はツールによって処理され、マシンで読取り可能なメタデータが生成される。マシンで読取り可能なメタデータファイルは、API記述と同一の情報を含んでいる。しかしながら、それは人が著したものより、むしろマシンで読み取られるようにデザインされたフォーマットである。例えば、このマシンで読取り可能なメタデータファイルは、ECMA−335 CLIフォーマットで保管されてよい。
オペレーティングシステムが創作されるとき、それぞれのAPI記述は全て、それぞれのメタデータファイルの中にコンパイルされる。これらのメタデータファイルは一緒に結合され、システムの中で利用可能な全てのAPIに関する包括的な情報を提供する。この結合されたメタデータは、インストールのためのオペレーティングシステムイメージ(つまり、コンパイルされたバイナリーファイル)の中に含まれている。例えば、結合されたシステムメタデータは、ECMA−335 CLIフォーマットで、一連のメタデータファイルの中に保管されてよい。しかし、本発明にとって特定のフォーマットであることは重要ではない。このようにして、オペレーティングシステム及びそのAPIは、自己記述的(self−describing)である。
メタデータと独立してプログラミング言語によって完全に記述されるAPIに対するオペレーティングシステムを有することにより、言語投射を創作することができる。メタデータを読み出すことができ、別のプログラミング言語においてAPIを実施するアプリケーションである。例えば、JavaScript(登録商標)インタープリター(interpreter)は、こうした言語投射を含むことができ、JavaScriptプログラムによるオペレーティングシステムのAPIへのアクセスを自動的に提供することができる。コンパイルされた言語におけるプログラムは、コンパイラーによる同様なアクセスを備えることができ、こうした言語投射を含んでいる。後に続くリリース(release)において、オペレーティングシステムが新たなAPIを追加する場合、新たなリリースと供に配布されるメタデータにより、アプリケーションは、インタープリター又はコンパイラーへ変更することなく、即座に新たな機能性を利用することができる。
従って、一つの態様において、コンピューターのオペレーティングシステムは、コンピューターストレージメディア上に保管されたコンピュータープログラムインストラクションを含んでいる。インストラクションは、プロセッサデバイスによって処理されると、オペレーティングシステムを実施するオペレーションを実行するようにプロセッサに指示する。オペレーティングシステムは、アプリケーションプログラムによってアクセス可能な一つまたはそれ以上のアプリケーションプログラミングインターフェイスを有しており、アプリケーションプログラムに対してオペレーティングシステムによって実施される機能性へのアクセスを提供する。メタデータファイルは、マシンで読取り可能なプログラミング言語の独立したフォーマットにおいて、アプリケーションプログラミングインターフェイスの名前付きエレメントを記述する。名前付きエレメントは、あらゆる種類のデータタイプであってよく、また、含んでよい。ベーシックタイプ、列挙型、構造体、デリゲート、インターフェイス、クラス、メソッド、プロパティ、および、イベントといったものである。メタデータファイルは、アプリケーションプログラミングインターフェイスのそれぞれの名前付きエレメントに対して、名前空間の中に配置される識別子(またはタイプ名)を含んでよい。
以降の説明においては、添付の図面が参照される。図面は、明細書の一部を構成しており、説明図として、本技術に係る所定の実施例が示されている。本発明開示の範囲を逸脱することなく、他の実施例が使用され、構成の変更がなされ得ることが理解されるべきである。
図1は、アプリケーションプログラミングインターフェイスを記述するメタデータを伴うオペレーティングシステムの実施例に係るブロックダイヤグラムである。 図2は、アプリケーションプログラミングインターフェイスを記述するメタデータを伴うオペレーティングシステムを作成するための開発ツールに係る実施例を説明するフローチャートである。 図3は、メタデータを生成するためにAPI記述ファイルがどのようにプロセスされるかを説明するフローチャートである。 図4は、こうしたシステムが実施されるコンピューターデバイスの実施例に係るブロックダイヤグラムである。
以降のセクションは、そうしたオペレーティングシステムが実施されるコンピューター環境の実施例を提供する。
図1を参照すると、コンピューターシステム100は、オペレーティングシステム102を含んでおり、コンピューターハードウェアとの組み合せにおいて(図4参照)、種々のアプリケーション104が実行されるプラットフォームを提供する。アプリケーションは、オペレーティングシステムによって管理されたプロセスとして実行され、ファイル等といった、オペレーティングシステムによって管理されたコンピューターシステムのリソースを使用し、または、そうでなければ有している。
オペレーティングシステムは、アプリケーション104によってアクセスされるいくつかのアプリケーションプログラミングインターフェイス106を提供する。こうしたAPI106は、一つまたはそれ以上のメタデータファイル108によって記述される。メタデータファイル108は、マシンで読取り可能であり、オペレーティングシステムのAPIに係るプログラミング言語の独立した表現である。以下に説明するように、こうしたメタデータファイルはAPI記述ファイルから自動的に作成することができ、従って、マシンで読取り可能な、オペレーティングシステムのサーフェス(surface)、または全てのAPI、に係るプログラミング言語の独立した記述を自動的に生成することができる。こうしたメタデータファイルは、言語コンパイラー及び/又はインタープリター(図示なし)と結合されて、オペレーティングシステムのAPIが自然で自動的な方法でプログラミング言語の中に投射されるやり方において、アプリケーション104が開発できるようにしている。
このコンテクスト(context)で、図2と図3に関してこうしたオペレーティングシステムの実施例がより詳細に説明される。
図2において、アプリケーションハイパーバイザー発明のデータフローの実施例が示されている。アプリケーションプログラミングインターフェイス記述ファイル200は、開発プロセスの最中に開発者によって規定される。開発プロセスは、つまり、オペレーティングシステムを実施するコードを書くプロセスである。
ビルドツール(build tool)202は、オペレーティングシステムのためのコードをコンピューターシステム上にインストールされるよう実行可能にコンパイルするために使用されるが、API記述をファイルを処理してメタデータファイル204を生成する。最後に、ビルドツール202は、メタデータファイル204を複合メタファイル206へと結合する。
ビルドツール202のあらゆる実施は、プログラミング言語及びAPI記述ファイル200に対するあらゆる規格に基づいている。こうしたAPI記述ファイル200は、ファンクション、または、オブジェクトクラス、または、データ構造であるインターフェイスを規定することができ、一つまたはそれ以上のメソッド、イベント、プロパティ、パラメーター、データタイプ、パラメーター順序、例外、および、そうしたインターフェイスなどといったものを規定することができる。ビルドツールは、こうしたAPI記述ファイルをパース(parse)し、インターフェイスの特性を特定して、マシンで読取り可能で、プログラミング言語と独立したフォーマットにおけるそうした特性を表すデータをメタデータファイルの中に保管する。
図3は、ビルドツールによって実行されるプロセスの一般的な実施例を示している。ビルドツールは、API記述ファイルにアクセスする300。API記述ファイルを処理して302、クラス、メソッド、データタイプ、プロパティ、イベント、例外、等といったようなAPIの名前付きエレメントを特定する。特定された名前付きエレメントは、そのメタデータ表現に対してマップされる。このメタデータ表現は、API記述ファイルに対応するメタデータファイルの中に保管される。API記述ファイルが完全に処理されるまで、308で決定されるように、ステップ302からステップ308が繰り返される。API記述ファイルの処理の後で、別のAPIファイルが(もしあれば、ステップ310で判断されるように)アクセスされて、そのファイルに対してステップ302からステップ308が繰り返される。全てのAPI記述ファイルの処理が完了したすると、復号メタデータファイルが作成される312。例えば、結合されたシステムメタデータはECMA−335 CLIフォーマットで一連のメタデータファイルの中に保管されてよいが、本発明にとって特定のフォーマットは需要ではない。この復号メタデータファイルは、このよにうに、完結していて、自動的で、オペレーティングシステムのサーフェス、つまり利用可能なインターフェイス、に係るプログラミング言語を提供する。
ステップ304で使用できるマッピング(mapping)の実施例についてこれから説明する。APIにおける名前付きエレメントを表現するために使用されるメタデータの形式と構造の両方に関して、他のマッピングも可能であることが理解されるべきである。この実施例において、API記述ファイルをメタデータに対してマップすることは、最初に、そのAPI記述ファイルにおける名前付きエレメントを特定することを含んでいる。名前付きエレメントは、ベーシックタイプ、列挙型、構造体、デリゲート、インターフェイス、クラス、メソッド、プロパティ、および、イベントといった、あらゆる種類のデータタイプであってよく、または、含んでよい。
この実施例において、それぞれの名前付きエレメントは、あらゆる種類のデータタイプであってよく、または、含んでよく、名前空間の中に配置された識別子を有している。2つの名前付きエレメントは、それらが分離した名前空間に存在している限りは、同一の識別子を有することができる。APIを規定するAPIファイルが、パラメーター又はストラクトフィールドにおけるといった、名前付きエレメントを使用する場合、ファイルの作成者は、完全に名前空間により認定された名前又はショート識別子を使用することができる。ショート識別子が使用される場合、現行の名前空間スコープ(scope)上にショート識別子を付け加えることにより、完全に名前空間により認定された名前が使用される。このメカニズムを使用すれば、メタデータにおいて名前が不明確になることはない。メタデータにおいて名前空間ブロックを使用することができ、これらのブロックはネストされて(nested)よい。ブロックの中のそれぞれの名前付きエレメント上に名前空間を宣言することを避けるためである。名前付きエレメントは、属性と供にタグ(tag)され得る。属性の実施例は、これらに限定されるわけではないが、バージョン番号、簡素なフラグを含んでおり、パラメーターにおける追加の情報を含んでもよい。
表現の詳細の実施例にこれから移ると、基本的なタイプの名前付きエレメントは、その基本的なタイプと一貫したキーワードによって表現され得る。ブール(Boolean)、バイト、ダブル、フロート(float)、イント(int)、ロング、ショート、キャラクター、文字列(string)、グローバル一意識別子(guid)、ハンドル、エラーステイタス、等であり、API記述ファイルの中で使用される識別子が続く。例えば、「アンサー(”answer”)」と呼ばれる値を表すブール値は、以下のように表現される。
「ブールアンサー(”Boolean Answer”)」
アレイの表現の実施例は、以下のとおりである。”array”といった、キーワードの一般的な形式を有し、識別子が続く。これに、ポインターとアレイの中のエレメントの数である2つの値が続く。例えば、以下のようである。
array [identifier]
{
[pointer]
[number of elements]
]
列挙型(”Enum”)表現の実施例は以下のとおりである。最初に、列挙型であることを特定するキーワード”enum”を伴う一般的な形式を有し、識別子が続く。識別子に、enum値の集まりが続く。全てのタイプと同じように、enum識別子は、それらが含まれる名前空間の中で唯一のものである。しかしながら、enum値識別子は、enum自身の中でのみ唯一のものであり得る。
enum [identifier]
{
[value 1 identifier] [optional:=value], ...
[value n identifier] [optional:=value]
}
例えば、トランプカードのランク付けを利用すると以下のようである。
enum CardRank
{
Ace=1,
Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King
}
簡素なデータ構造タイプ(”struct”)表現の実施例は以下のとおりである。最初に、構造タイプ指定子を伴う一般的な形式を有し、フィールドの集まりが続く。それぞれのフィールドは、タイプと識別子を有している。全てのタイプと同じように、ストラクト識別子は、それらが含まれる名前空間の中で唯一のものである。しかしながら、ストラクトフィールド識別子は、ストラクト自身の中でのみ唯一のものであり得る。
[version([version number])]
struct [struct.identifier]
{
[field[l] type] [field[l] identifier];
[field[n] type] [field[n] identifier];
};
マウスイベントのための引数に対するストラクトの所定の実施例としては、以下のものがある。
[version(OS.version.number)]
struct MouseEventArgs
{
MouseButtons Buttons;
unsigned int Clicks;
unsigned int Delta;
Point Location;
}
インターフェイスの表現の実施例は、メソッド、プロパティ、または、イベントの集まりである。メソッドの実施は、インターフェイスを実施するクラスにおいて行うことができる。共通の属性に加えて、インターフェイスは、指定されるべきUUID属性を使用する。インターフェイスは、別のインターフェイスを「要求(”require”)」できる。このことは、コンポーネントが与えられたインターフェイスを実施する場合に、同一のコンポーネントによって全ての「要求された(”required”)」インターフェイスも、また、実施されることを示している。インターフェイスを表現する規則の実施例は以下のとおりである。
interface:
|attributes "interface"IDENTIFIER':'IDENTIFER requires '{'interface_member_list'}'
requires:
|<empty>
|"requires"interface_list
interface_list:
|IDENTIFIER
|IDENTIFIER "," interface_list
interface_member_list:
|<empty>
|interface_member
|interface_member interface_member_list
interface_member:
|method
|property
|event
この実施例において、インターフェイスの表現の終わりは、メソッド、プロパティ、及び/又は、イベントである。この例で、インターフェイスは、ゼロ以上のパラメーターを取得して一つのタイプをリターンするメソッドを含んでよい。メソッドのリターンタイプはHRESULTである。パラメーターは、名前とタイプを有している。パラメーターは、〔in〕または〔out〕属性のいずれかを用いてマーク付けされる。入力及び出力パラメーターはあらゆる数量であり得る。パラメーターは、全てのRIDL−supportedポインタータイプに対して、入力と出力の両方であるとしてマーク付けされ得る。一つの出力パラメーターは、HRESULTリターン値を例外にマップする言語に対して、任意的に〔retval〕を用いてマーク付けされ得る。インターフェイスの中のメソッドの名前は唯一のものである。
この実施例においては、また、プロパティはフィールドと類似してよい。しかし、アクセスするために使用されるプット(put)及びゲット(get)オペレーションの入力及び出力パラメーターに関連している。
インターフェイスは、イベント、何かが発生したときに興味のあるパティーに知らせるインターフェイスのためのメカニズムをサポートしている。表現は、追加メソッドの指定と削除メソッドの指定を含んでいる。追加メソッドは、イベントデリゲート(delegate)タイプの入力パラメーターである第1パラメーターとEvenRegistrationTokenタイプの出力パラメーターである第2パラメーターを有している。削除メソッドは、EvenRegistrationTokenタイプの入力パラメーターである第1パラメーターを有している。イベントに対するイベントデリゲートタイプ自身は、イベントソース(source)へのインターフェイスポインターである第1パラメーターを有している。つまり、このイベントを送付するオブジェクトである。以下は、デリゲートタイプMouseEventHandlerが、インターフェイスイベントを宣言するためにどのように使用され得るかを示す実施例である。
[eventadd] HRESULT MouseMove(
[in] MouseEventHandler*pMouse,
[out] EventRegistrationToken* oken);
[eventremove] HRESULT MouseMove(
[in] EventRegistrationToken token).
デリゲートは、一つのメソッドのInvokeを伴うインターフェイスとして表現することができ、その署名はデリゲート仕様の署名と一致している。メソッドは、一つのリターンタイプとゼロ以上のパラメーターを有している。デリゲートのリターンタイプはHRESULTである。パラメーターは、名前とタイプを有している。パラメーターは、出力又は入力のいずれかであるとしてマーク付けされる。入力及び出力パラメーターはあらゆる数量であり得る。一つの出力パラメーターは、HRESULTリターン値を例外にマップする言語に対するリターン値として、任意的にマーク付けされ得る。デリゲートを表現する規則実施例は以下のとおりである。
delegate:
|delegate_attributes"delegate"TYPE_IDENTIFIER IDENTIFIER'('parameter_list')'!;'
上述のものは、メタデータから独立したプログラミング言語においてAPIのエレメントがどのように表現され得るかの単なる実施例であることが理解されるべきである。種々のメタデータ表現を使用することができる。
APIがメタデータから独立したプログラミング言語によって完全に記述されているオペレーティングシステムを有することにより、言語投射を創作することができる。言語投射は、メタデータを読み出して、別のプログラミング言語においてAPIを実施するアプリケーションである。例えば、JavaScriptインタープリターは、そうした言語投射を含み、オペレーティングシステムAPIへのJavaScriptプログラムによるアクセスを自動的に提供することができる。コンパイルされた言語におけるプログラムは、コンパイラーによって同様なアクセスを提供することができ、そうした言語投射を含んでいる。
実施例について説明してきたので、そうしたシステムが動作するようにデザインされたコンピューター環境の実施例についてこれから説明する。以降の記載は、このシステムが実施され得る好適なコンピューター環境について簡潔で一般的な説明を提供するように意図されたものである。システムは、数多くの汎用又は専用コンピューターハードウェア構成を用いて実施することができる。好適なよく知られたコンピューターデバイスの実施例は、これらに限定されるわけではないが、以下のものを含んでいる。パーソナルコンピューター、サーバーコンピューター、ハンドヘルド又はラップトップデバイス(例えば、メディアプレーヤー、ノートブックコンピューター、携帯電話、パーソナルデータアシスタント、ボイスレコーダー)、マルチプロセッサシステム、マイクロプロセッサベースシステム、セットトップボックス、ゲームコンソール、プログラム可能な家電、ノートブックPC、ミニコンピューター、メインフレームコンピューター、上記のあらゆるシステム又はデバイスを含む分散コンピューティング環境、等である。
図4は、好適なコンピューターシステム環境の実施例を示している。コンピューターシステム環境は、好適なコンピューター環境の単なる一例であって、こうしたコンピューター環境の使用範囲又は機能性に関していかなる限定も意図するものではない。コンピューター環境は、オペレーション環境の中に示されたあらゆる一つのコンポーネント又はその組み合わせに関していかなる依存も要求も有しないものとして理解されるべきである。
図4に関して、コンピューター環境の実施例は、コンピューターマシン400といった、コンピューターマシンを含んでいる。最も基本的な構成において、コンピューターマシン400は、典型的に、少なくとも一つのプロセッサユニット402とメモリー404を含んでいる。コンピューターデバイスは、複数のプロセッサユニット、及び/又は、グラフィックプロセッサユニット420といった追加のコプロセッサユニット(co−processing unit)を含んでよい。コンピューターデバイスのまさにその構成とタイプに基づいて、メモリー404は、揮発性(RAMといったもの)、不揮発性(ROM、フラッシュメモリー、等といったもの)、または、これら2つのいくつかの組み合わせであってよい。この最も基本的な構成は、破線406によって図4の中に示されている。加えて、コンピューターマシン400は、また、追加の特性/機能性を有し得る。例えば、コンピューターマシン400は、また、追加ストレージ(リムーバブル及び/又は非リムーバブルのもの)を含んでよい。これらに限定されるわけではないが、磁気又は光ディスク又はテープを含んでいる。こうした追加ストレージは、リムーバブルストレージ408及び非リムーバブルストレージ410として図4の中に示されている。コンピューターストレージメディアは、揮発性と不揮発性、リムーバブルと非リムーバブルメディアを含んでおり、コンピュータープログラムインストラクション、データ構造、プログラムモジュール、または、他のデータといった情報を保管するためのあらゆる方法又は技術において実施される。メモリー404、リムーバブルストレージ408及び非リムーバブルストレージ410は、全てコンピューターストレージメディアの実施例である。コンピューターストレージメディアは、これらに限定されるわけではないが、以下のものを含んでいる。RAM、ROM、EEPROM、フラッシュメモリーまたは他のメモリー技術、CD−ROM、デジタル多目的ディスク(DVD)または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、または、所望の情報を保管するために使用でき、コンピューターマシン400によってアクセスされ得る他のあらゆるメディア、である。
コンピューターマシン400は、また、コミュニケーション接続412を含んでおり、デバイスは他のデバイスとコミュニケーションすることができる。コミュニケーション接続412は、コミュニケーションメディアの実施例である。コミュニケーションメディアは、典型的に、コンピュータープログラムインストラクション、データ構造、プログラムモジュール、または、キャリア波又は他の伝送メカニズムといった変調されたデータ信号における他のデータを保持しており、あらゆる情報伝達メディアを含んでいる。用語「変調されたデータ信号(”modulated data signal”)」は、一つまたはそれ以上の特性セットを有する信号、または、信号におけるエンコード情報に関して、そうしたやり方で変換された信号を意味しており、それによって、信号の受信装置の構成または状態が変化している。実施例として、そして限定ではなく、コミュニケーションメディアは、有線ネットワーク又はダイレクト有線接続、および、音声、RF、赤外線、又は他の無線メディアといった無線メディアを含んでいる。
コンピューターマシン400は、ディスプレイ、キーボード、マウス、ペン、カメラ、タッチ入力デバイス、等といった種々の入力デバイス414を有してよい。スピーカー、プリンター、等といった出力デバイス416も、また、含まれてよい。こうしたデバイスの全ては従来技術としてよく知られており、ここにおいて長らく説明することを要しないものである。
アプリケーションプログラミングインターフェイスを記述するメタデータを伴うこうしたオペレーティングシステムは、ソフトウェアの一般的なコンテクスト(context)において実施され得る。プログラムモジュールといった、コンピューターで実行可能なインストラクション及び/又はコンピューターで解釈されるインストラクションを含み、コンピューターマシンによって処理されるものである。一般的に、プログラムモジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、等を含み、プロセッサユニットによって処理されると、プロセッサユニットに対して所定のタスク又は所定の抽象的なデータタイプを実行するように指示する。このシステムは、分散コンピューター環境において実施されてもよい。タスクは、コミュニケーションネットワークを通じてリンクされた離れたプロセッサデバイスによって実行される。分散コンピューター環境において、プログラムモジュールは、メモリストレージデバイスを含むローカル及びリモート両方のコンピューターストレージメディアの中に存在し得る。
添付の請求項のプリアンブルにおける用語「製造方法」、「プロセス」、「マシン」、および、「組み合せ」は、米国特許法第101条におけるこれらの用語の使用によって規定される特許可能な技術的事項の範囲内にあるものと考えられる技術的事項に請求項を限定するように意図されたものである。
ここにおいて説明されたあらゆる又は全ての前出の代替的な実施例は、追加のハイブリッドな実施例を形成するために望まれるあらゆる組み合せにおいて使用され得るものである。添付の請求項において定められる技術的事項は、上述の所定の実施例に必ずしも限定されるものではないことが理解されるべきである。上述の所定の実施例は、単なる例として開示されたものである。

Claims (10)

  1. コンピューターマシンであって:
    プロセッサと;
    一つまたはそれ以上のコンピューターストレージメディアと;
    前記プロセッサによって処理されるときに、オペレーションを実行するように前記プロセッサに指示し、前記コンピューターストレージメディア上に保管されたコンピュータープログラムインストラクションであり、
    前記インストラクションは、オペレーティングシステムを提供するオペレーションを含み、それを通じてアプリケーションが前記コンピューターマシンのリソースにアクセスする、
    インストラクションと、を含み、
    前記オペレーティングシステムは、
    アプリケーションプログラムによってアクセス可能な一つまたはそれ以上のプログラミングインターフェイスであり、前記アプリケーションプログラムに対して前記オペレーティングシステムによって実施される機能性に対するアクセスを提供するためのプログラミングインターフェイスを提供し、
    前記アプリケーションプログラミングインターフェイスのそれぞれが関連のメタデータを有しており、
    前記メタデータファイルは、マシンで読取り可能なプログラミング言語の独立したフォーマットにおいて、前記アプリケーションプログラミングインターフェイスのエレメントを記述する、
    ことを特徴とするコンピューターマシン。
  2. 前記メタデータファイルは、前記アプリケーションプログラミングインターフェイスの名前付きエレメントに対する、名前空間の中に配置された識別子を含んでいる、
    請求項1に記足のコンピューターマシン。
  3. 前記名前付きエレメントは、一式の基本的なデータタイプのうちの一つである、
    請求項2に記載のコンピューターマシン。
  4. 前記名前付きエレメントは、さらに、
    インターフェイス、メソッド、プロパティ、および、イベントのうちの一つである、
    請求項3に記載のコンピューターマシン。
  5. 前記名前付きエレメントは、さらに、
    データ構造、列挙型、および、アレイのうちの一つである、
    請求項3に記載のコンピューターマシン。
  6. コンピューターで実施される方法であって:
    アプリケーションプログラムに対してオペレーティングシステムによって実施される機能性に対するアクセスを提供するためのアプリケーションプログラミングインターフェイスを規定するデータファイルを受け取るステップと;
    前記アプリケーションプログラミングインターフェイスに対して関連するメタデータファイルを生成するステップであり、前記メタデータは、マシンで読取り可能なプログラミング言語の独立したフォーマットにおいて、前記アプリケーションプログラミングインターフェイスのエレメントを記述するステップと;
    前記オペレーティングシステムの一部として前記メタデータファイルを保管するステップと、を含む、
    ことを特徴とする方法。
  7. 前記メタデータは、前記アプリケーションプログラミングインターフェイスの名前付きエレメントに対する、名前空間の中に配置された識別子を含む、
    請求項6に記載の方法。
  8. 前記名前付きエレメントは、一式の基本的なデータタイプのうちの一つである、
    請求項7に記載の方法。
  9. 前記名前付きエレメントは、さらに、インターフェイス、メソッド、プロパティ、および、イベントのうちの一つである、
    請求項8に記載の方法。
  10. 前記名前付きエレメントは、さらに、データ構造である、
    請求項8に記載の方法。
JP2014528373A 2011-08-31 2011-10-11 オペレーティングシステムのネイティブアプリケーションプログラミングインターフェイスのメタデータを用いた記述 Pending JP2014525622A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/223,291 2011-08-31
US13/223,291 US20130055291A1 (en) 2011-08-31 2011-08-31 Describing native application programming interfaces of an operating system with metadata
PCT/US2011/055700 WO2013032505A1 (en) 2011-08-31 2011-10-11 Describing native application programming interfaces of an operating system with metadata

Publications (2)

Publication Number Publication Date
JP2014525622A true JP2014525622A (ja) 2014-09-29
JP2014525622A5 JP2014525622A5 (ja) 2014-11-13

Family

ID=47445791

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014528373A Pending JP2014525622A (ja) 2011-08-31 2011-10-11 オペレーティングシステムのネイティブアプリケーションプログラミングインターフェイスのメタデータを用いた記述

Country Status (6)

Country Link
US (1) US20130055291A1 (ja)
EP (1) EP2751675A4 (ja)
JP (1) JP2014525622A (ja)
KR (1) KR20140067018A (ja)
CN (1) CN102866910A (ja)
WO (1) WO2013032505A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014526727A (ja) * 2011-09-10 2014-10-06 マイクロソフト コーポレーション 柔軟性の高いメタデータの合成

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10089119B2 (en) 2009-12-18 2018-10-02 Microsoft Technology Licensing, Llc API namespace virtualization
US8776094B2 (en) 2011-08-11 2014-07-08 Microsoft Corporation Runtime system
US8695021B2 (en) 2011-08-31 2014-04-08 Microsoft Corporation Projecting native application programming interfaces of an operating system into other programming languages
US9830146B2 (en) 2013-06-07 2017-11-28 Microsoft Technology Licensing, Llc API lifecycle platform and version management
US10635504B2 (en) 2014-10-16 2020-04-28 Microsoft Technology Licensing, Llc API versioning independent of product releases
CN105511875B (zh) * 2015-12-04 2019-01-29 福建星网锐捷网络有限公司 硬件资源的访问方法及装置
CN106897153B (zh) * 2015-12-18 2021-07-30 阿里巴巴集团控股有限公司 调用应用编程接口的方法和***
US10394552B2 (en) 2016-05-17 2019-08-27 Dropbox, Inc. Interface description language for application programming interfaces
LU93300B1 (de) * 2016-11-10 2018-06-18 Phoenix Contact Gmbh & Co Kg Intellectual Property Licenses & Standards Austausch von Echtzeitdaten zwischen Programmmodulen
CN106445562B (zh) * 2016-11-14 2019-11-15 用友网络科技股份有限公司 基于元数据的OpenAPI实现方法及OpenAPI实现装置
US10318254B2 (en) 2017-01-27 2019-06-11 Oracle International Corporation Integrating application features into a platform interface based on application metadata
US10915377B2 (en) * 2018-05-18 2021-02-09 International Business Machines Corporation Automatically building a web API definition from a microservice or web application
US10754628B2 (en) * 2018-11-02 2020-08-25 Microsoft Technology Licensing, Llc Extracting web API endpoint data from source code to identify potential security threats
CN110780950B (zh) * 2019-10-24 2024-02-20 深圳前海环融联易信息科技服务有限公司 接口元数据管理方法、装置、计算机设备及存储介质
CN111124471A (zh) * 2019-12-20 2020-05-08 中国电子科技集团公司第二十八研究所 基于数据类型模板的仿真模型注册方法及计算机存储介质
CN113742094A (zh) * 2020-05-31 2021-12-03 华为技术有限公司 一种api元数据确定方法、装置及***
CN112379951A (zh) * 2020-11-19 2021-02-19 北京百度网讯科技有限公司 服务接口的访问方法、装置、电子设备和介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001296996A (ja) * 2000-04-12 2001-10-26 Nec Corp コンポーネントの自動生成装置および表現方法
JP2004326736A (ja) * 2003-03-27 2004-11-18 Microsoft Corp アプリケーション中心のユーザインターフェース方法
JP2005129022A (ja) * 2003-10-24 2005-05-19 Microsoft Corp コンピュータプラットフォームのプログラミングインターフェース
JP2005182775A (ja) * 2003-12-10 2005-07-07 Microsoft Corp カーネルモードシミングのためのドライバ固有コンテキスト
JP2007519081A (ja) * 2003-10-23 2007-07-12 マイクロソフト コーポレーション オーディオ/ビデオデータを体系化するシステムおよび方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030188043A1 (en) * 2002-03-27 2003-10-02 Woodall Thomas R. Two layer middleware architecture with an intermediate target independent interface
US7380235B1 (en) * 2003-06-27 2008-05-27 Microsoft Corporation Application program interface call replay tool
US7716246B2 (en) * 2005-11-30 2010-05-11 Microsoft Corporation Dynamic mechanism for providing metadata
US20070156913A1 (en) * 2005-12-30 2007-07-05 Hiroyuki Miyamoto Method for enabling extension points through plug-ins
US8104048B2 (en) * 2006-08-04 2012-01-24 Apple Inc. Browsing or searching user interfaces and other aspects
US7971208B2 (en) * 2006-12-01 2011-06-28 Microsoft Corporation Developing layered platform components
JP2009020705A (ja) * 2007-07-12 2009-01-29 Hitachi Ltd Guiアプリケーション開発支援装置及び開発支援方法
KR101528853B1 (ko) * 2007-12-14 2015-07-01 삼성전자주식회사 Api 서비스 방법과 api 매쉬업 생성 방법, 장치 및기록매체

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001296996A (ja) * 2000-04-12 2001-10-26 Nec Corp コンポーネントの自動生成装置および表現方法
JP2004326736A (ja) * 2003-03-27 2004-11-18 Microsoft Corp アプリケーション中心のユーザインターフェース方法
JP2007519081A (ja) * 2003-10-23 2007-07-12 マイクロソフト コーポレーション オーディオ/ビデオデータを体系化するシステムおよび方法
JP2005129022A (ja) * 2003-10-24 2005-05-19 Microsoft Corp コンピュータプラットフォームのプログラミングインターフェース
JP2005182775A (ja) * 2003-12-10 2005-07-07 Microsoft Corp カーネルモードシミングのためのドライバ固有コンテキスト

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6015042889; Matt Pietrek: '"特集1 Microsoft.NETのすべて Part II:Microsoft.NET Framewo' msdn magazine No.8, 20001118, pp.31-45, 株式会社アスキー *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014526727A (ja) * 2011-09-10 2014-10-06 マイクロソフト コーポレーション 柔軟性の高いメタデータの合成
JP2016066367A (ja) * 2011-09-10 2016-04-28 マイクロソフト テクノロジー ライセンシング,エルエルシー 柔軟性の高いメタデータの合成
JP2017111832A (ja) * 2011-09-10 2017-06-22 マイクロソフト テクノロジー ライセンシング,エルエルシー 柔軟性の高いメタデータの合成
JP2017123174A (ja) * 2011-09-10 2017-07-13 マイクロソフト テクノロジー ライセンシング,エルエルシー 柔軟性の高いメタデータの合成

Also Published As

Publication number Publication date
KR20140067018A (ko) 2014-06-03
EP2751675A1 (en) 2014-07-09
EP2751675A4 (en) 2015-01-28
US20130055291A1 (en) 2013-02-28
CN102866910A (zh) 2013-01-09
WO2013032505A1 (en) 2013-03-07

Similar Documents

Publication Publication Date Title
JP2014525622A (ja) オペレーティングシステムのネイティブアプリケーションプログラミングインターフェイスのメタデータを用いた記述
TWI556170B (zh) 將作業系統之原始應用程式介面投射至其它程式語言(二)
US9830146B2 (en) API lifecycle platform and version management
KR101795844B1 (ko) 런타임 시스템
JP2012079332A (ja) コンピュータプラットフォームのプログラミングインターフェース
JP2015534145A (ja) 宣言テンプレートを使用してコントロールをスタンプアウトするためのユーザインターフェイスコントロールフレームワーク
US9244706B2 (en) Command line shell command generation based on schema
US20090249249A1 (en) User interface framework and techniques
Nagel et al. Professional C# 5.0 and. NET 4.5. 1
US20070282863A1 (en) Method, system, and program product for providing proxies for data objects
Ali Advanced IOS 4 Programming: Developing Mobile Applications for Apple IPhone, IPad, and IPod Touch
Sikora Dart Essentials
Hollister et al. Blender “DNA” and Serialization
Ludin Learn BlackBerry 10 App Development: A Cascades-Driven Approach
Millas Microsoft. Net Framework 4. 5 Quickstart Cookbook
Newcomb Multimedia Interchange Using SGML/HyTime, Part II: Principles and Applications
Sells et al. ATL internals: working with ATL 8
Ali iPhone SDK 3 programming: advanced mobile development for Apple iPhone and iPod touch
Evjen et al. . NET 4 Wrox PDF Bundle: Professional ASP. NET 4, Professional C# 4, VB 2010 Programmer's Ref, WPF Programmer's Ref, Professional Visual Studio 2010
Curtis Level Up Your Web Apps With Go: Performance, Concurrency, Scalability
Hollister Core Blender Development
Meroño Peñuela Development of modules for the GNU PDF project

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140925

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140925

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150523

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150924

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151027

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20160322