JP5852246B2 - 柔軟性の高いメタデータの合成 - Google Patents

柔軟性の高いメタデータの合成 Download PDF

Info

Publication number
JP5852246B2
JP5852246B2 JP2014529670A JP2014529670A JP5852246B2 JP 5852246 B2 JP5852246 B2 JP 5852246B2 JP 2014529670 A JP2014529670 A JP 2014529670A JP 2014529670 A JP2014529670 A JP 2014529670A JP 5852246 B2 JP5852246 B2 JP 5852246B2
Authority
JP
Japan
Prior art keywords
type
file
namespace
files
information
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.)
Active
Application number
JP2014529670A
Other languages
English (en)
Other versions
JP2014526727A5 (ja
JP2014526727A (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 JP2014526727A publication Critical patent/JP2014526727A/ja
Publication of JP2014526727A5 publication Critical patent/JP2014526727A5/ja
Application granted granted Critical
Publication of JP5852246B2 publication Critical patent/JP5852246B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/164File meta data generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/164File meta data generation
    • G06F16/166File name conversion
    • 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)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Library & Information Science (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Description

コンピューティング・デバイスは多くの場合、コンピューティング・デバイスのハードウェアおよび/またはソフトウェア・リソースを管理するための手法として、オペレーティングシステムを実行する。いくつかのケースにおいて、オペレーティング・システムは、単純化され、プログラムに基づいた、リソースへのアクセスを提供し得る。たとえば、オペレーティングシステムは、さまざまなコンポーネントを外部からアクセス可能とするためのアプリケーション・プログラミング・インターフェース(API)を含み得る。アプリケーションを実装するのに使用されたプログラミング言語および/または型システムが、APIにより提供されるプログラミング言語および/または型システムとは異なっていたとしても、アプリケーションによるAPIを首尾よく呼び出すことが出来る場合がある。がしかし、これは、どの型がAPIに関連づけられているかをアプリケーションが知っている場合に限られる。たとえば、APIは、1つ以上の入力および/または出力パラメータを含み得る。APIを呼び出すために、プログラマは、APIのパラメータだけでなく、どのデータ型が各パラメータに関連づけられているかも決定しなくてはならない。
上述したように、呼び出し側で使用されるプログラミング言語の型システムとは異なる型システムによってAPIが記述されている場合がある。そこで、異なる型システムを橋渡し(ブリッジング)するために、互いに異なる型システム同士の間を翻訳するためのラッパー・コードをプログラマが書くことが一般的に行われている。プログラマがプログラムの中にAPIアクセスを含ませるための1つの手法は、1つ以上のファイルおよび/または名前空間によるAPI定義をソースコード中に含ませることである。ソースコード中にファイルおよび/または名前空間を首尾よく組み込むために、ソースコードは、ファイル/名前空間の特定の場所の参照(たとえば、ハード・コーディングされたパス、そのパスによりレジストリ・キーにアクセスする、等)を含むように構成され得る。場所、ファイル名、および/または、名前空間の名前が変わった場合、コードおよび/またはソフトウェア・ツールが適切な変更によって更新されるまで、連係は中断する。
発明の概要に関する以下の説明は、詳細な説明において以下にさらに説明される概念の選択を、単純化された形態で紹介するために提供される。発明の概要に関する以下の説明は、特許請求の範囲に記載された発明の主題において鍵となる技術的特徴、すなわち、技術的重要な特徴を限定することを意図したものではない。同時に、当該発明の概要に関する以下の説明は、特許請求の範囲に記載された発明の主題に係る技術的範囲を限定するために使用されることを意図したものでもない。
本発明に係るさまざまな実施形態は、複数の異なる型システム同士の間における型解決の仕組みを抽象化するための機能を実現する。少なくとも1つの型が、プログラムに基づいてアクセス可能な1つ以上のファイルに記述され得る。いくつかの実施形態において、異なる型システムを使用するアプリケーションは、型の記述が存在する場所の知識なしに、その型システムの型に、プログラムに基づいてアクセスし、その型を解決することができる。あるいは、または加えて、プログラムに基づいてアクセス可能な1つ以上のファイルに含まれた型の記述は分析され、型システムの記述に少なくとも部分的に基づいて、プログラムに基づいてアクセス可能な1つ以上の新たなファイルへと再構築されることができる。
同一の番号は、全図面を通して同様の特徴を参照するために使用される。
図1Aは、1つ以上の実施形態に係る、本明細書で説明されるさまざまな原理が用いられ得る動作環境を示す図である。
図1Bは、1つ以上の実施形態に係る、本明細書で説明されるさまざまな原理が用いられ得る動作環境を示す図である。
図2は、1つ以上の実施形態に係るアーキテクチャを示す図である。
図3は、1つ以上の実施形態に係るフローチャートである。
図4は、1つ以上の実施形態に係る関係図である。
図5は、1つ以上の実施形態に係るフローチャートである。
図6は、1つ以上の実施形態を実現するために利用され得る例示的なシステムを示す図である。
概要
本発明に係るさまざまな実施形態は、複数の異なる型システム同士の間における型解決の仕組みを抽象化するための機能を実現する。1つの型システムを使用するアプリケーションは、そのアプリケーションがどのように異なる型システム同士の間をブリッジするかについての知識を有する場合、もう1つの型システム中において呼び出しを実行し得る。たとえば、型システムの特性(たとえば、データ型、データ型の振る舞い、関数呼び出しパラメータ、イベント、等)が、プログラムに基づいてアクセス可能な1つ以上のファイルに記述され得る。アプリケーションは、そのようなファイルにアクセスすることによって、異なる型システムを使用した型解決を実行し得る。本発明に係るいくつかの実施形態においては、型解決の仕組みが抽象化され得るので、アプリケーションは、どのファイルにアクセスするか、および/または、どこにファイルが存在するか、といった予備知識なしに上述した型システムの特性記述にアクセスすることができる。
以下の説明では、「動作環境」と題するセクションが提供され、1つ以上の実施形態が用いられ得る複数の環境を説明する。これに続き、「型解決アーキテクチャ」と題するセクションにおいて、プログラムに基づいて上述した型解決を実行するシステムを実現可能にするアーキテクチャを説明する。次に、「型記述の格納」と題するセクションにおいて、型記述を格納するための柔軟性の高い仕組みを実現可能にするために使用され得るさまざまな方法を説明する。最後に、「例示的なシステム」と題するセクションにおいて、1つ以上の実施形態を実現するために利用され得る例示的なシステムを説明する。
本発明に関し、以下に後述するさまざまな実施形態についての概要を提供したので、ここでは、本発明に係る1つ以上の実施形態が実現され得る基盤となる例示的な動作環境を考慮する。
動作環境
図1Aおよび図1Bは、1つ以上の実施形態に係る動作環境を示し、図1Aおよび図1Bにおいては、当該動作環境はそれぞれ、100aおよび100bとして一般化した形で示されている。図1Aは、以下において後述するとおり、1つ以上のメタデータファイルの生成に関連して利用され得る例示的な動作環境を示す。図1Aの環境は、「ビルド段階」の環境とみなされ得る。図1Bは、柔軟性の高い型システムを使用した型解決に関連して利用され得る例示的な動作環境を示す。図1Bの環境は、ランタイム時の環境とみなされ得る。本発明に係るいくつかの実施形態において、動作環境100aおよび100bは、少なくともいくつかの同様のコンポーネントを有する。したがって、簡潔化のために、図1Aおよび図1Bは一緒に説明される。図1Aに関連づけられたコンポーネントが、「1XXa」との命名規則に従って命名されるコンポーネントとして特定される場合、図1Bに関連づけられる同様のコンポーネントは、「1XXb」との命名規則に従って命名されるコンポーネントとして特定される。同様に、動作環境特有のコンポーネントは、単に「1XX」として特定される。
動作環境100aおよび100bはそれぞれ、1つ以上のプロセッサ104a、104bを有するコンピューティング・デバイス102a、102b、および1つ以上のコンピュータ読み取り可能な記憶媒体106a、106bを含む。コンピュータ読み取り可能な記憶媒体は、コンピューティング・デバイスに典型的に関連づけられる全ての形態の揮発性および不揮発性のメモリおよび/または記憶媒体を含み得る。そのような媒体の具体例を限定目的ではなく単に例示目的で挙げるならば、当該媒体は、ROM、RAM、フラッシュ・メモリ、ハードディスク、リムーバブル・メディア、等を含み得る。コンピューティング・デバイスの1つの特定の例が、図6において以下に示され説明される。
加えて、コンピューティング・デバイス102a、102bは、オペレーティング・システム(OS)108a、108b、およびアプリケーション110a、110bを含む。オペレーティング・システム108a、108bは、コンピューティング・デバイス102a、102bのソフトウェア・リソースおよび/またはハードウェア・リソースを管理するように構成された機能を表す。これは、メモリ管理、ファイル管理、サービス、関数、リソース管理、周辺機器管理、等を含み得る。アプリケーション110a、110bは、コンピューティング・デバイス102a、102b上で、典型的にはオペレーティング・システム108a、108bにより支援されて、実行するように構成されたソフトウェアを表す。アプリケーション110a、110bは、以下においてさらに説明されるように、オペレーティング・システム108a、108bの型システムと同一のおよび/または異なる型システムで実現され得る。
コンピューティング・デバイス102a、102bはまた、1つ以上のソフトウェア・インターフェース112a、112bを含み、1つ以上のソフトウェア・インターフェース112a、112bは、ソフトウェアおよび/またはアプリケーションによって提供される関数、サービス、データ、等への、プログラムに基づいたアクセス手段を表す。ソフトウェア・インターフェース112a、112bは、オペレーティング・システム108a、108bおよび/またはアプリケーション110a、110bへの、プログラムに基づいたアクセスを可能にし得る。たとえば、アプリケーション110a、110bは、ソフトウェア・インターフェース112a、112bを呼び出すことにより、オペレーティング・システム108a、108bによって提供される機能にアクセスし得る。いくつかの実施形態において、ソフトウェア・インターフェースを介して提供される型システムとは異なる型システムを使用するアプリケーション112a、112bは、以下においてさらに説明するように、型の相違をプログラムに基づいて解決し得る。
加えて、コンピューティング・デバイス102a、102bはまた、1つ以上のメタデータ・ファイル114a、114bを含み、1つ以上のメタデータ・ファイル114a、114bは、ソフトウェア・インターフェース112a、112b、オペレーティング・システム108a、108b、および/またはアプリケーション110a、110bに関連づけられた、入力パラメータの型、パラメータの呼び出し順序、インターフェース間の関係、等といった情報を含む、1つ以上の機械読み取り可能なファイルを表す。あるいは、または加えて、ソフトウェア・インターフェースは、コンピューティング・デバイス102a、102bに接続された周辺機器、たとえば、プリンタ、スキャナ、スマートフォン、等に関連づけられ得る。いくつかの実施形態において、メタデータ・ファイル114a、114bは、以下においてさらに説明されるように、任意の適切な手法でインターフェースを記述するように構成され得る。
コンピューティング・デバイス102aはまた、マージ・モジュール116を含む。マージモジュール116は、1つ以上のメタデータ・ファイルを読み出し、ファイルの内容を分析し、再構成された内容を含む1つ以上の新たなメタデータ・ファイルを出力し得る機能を表す。本発明に係るいくつかの実施形態において、内容は、型記述に少なくとも部分的に基づいて再編成され得る。
コンピューティング・デバイス102bは、型解決モジュール118を含む。型解決モジュール118は、関連づけられた型データにアクセスするための要求を受信し、型解決情報の場所を特定するように構成された機能を表す。本発明に係るいくつかの実施形態において、型解決モジュール118は、情報が場所を変えても無関係に、ユーザ入力なしで型解決情報の場所を特定し得る。たとえば、型解決モジュール118は、以下においてさらに説明されるように、情報が第1のファイルから第2のファイルに移動した場合、ユーザ入力なしでインターフェース記述情報の場所を特定し得る。
コンピューティング・デバイス102a、102bの具体例を限定目的ではなく、例示目的で挙げるならば、これらは、例えば、デスクトップ型コンピュータ、ポータブル型コンピュータ、ノートブック型コンピュータ、携帯情報端末(PDA)のようなハンドヘルド型コンピュータ、携帯電話、等といった任意の適切なコンピューティング・デバイスとして具現化され得る。
例示的な動作環境を説明したので、ここでは、場所のファイル名および/または場所とは無関係に型解決を可能にするように構成された型解決アーキテクチャの説明を考慮する。
型解決アーキテクチャ
プログラミング言語が技術的に進歩するにつれ、それらの能力も進歩する。たとえば、第1のプログラミング言語で書かれたアプリケーションが、第2のプログラミング言語で書かれたソフトウェアから呼び出され得る。本来、プログラミング言語は、異なる型システムを有する。したがって、異なる型システムの下に存在するソフトウェアを首尾よく呼び出すために、第1のプログラミング言語は、自身の型システムとは異なる型を解決するための技法を使用する。たとえば、プログラマは、型を変換するためのラッパー・コードを手作業で書くことが可能である。あるいは、型システムの定義がファイルに格納され、プログラムに基づいてアクセスされ得る。
型の定義を含むファイルにプログラムに基づいてアクセスすることは、機能および記述をアプリケーションがランタイムに決定することを可能にする。しかしながら、ファイルにアクセスするということは、どのファイルにアクセスべきであるかだけでなく、ファイルの格納場所も知っていなければならないことを暗に意味する。ファイルの内容が変わった場合および/またはファイルの格納場所が変わった場合、ファイルにアクセスしようと試みるアプリケーションは、適切に更新されない限り、場合によっては失敗し得る。これは時に、アプリケーションとファイルとの間の意図しない結合を生じさせる可能性がある。
本発明に係るさまざまな実施形態は、複数の型システム同士の間における型解決の仕組みを抽象化するための機能を実現する。型解決に関連づけられた情報は、プログラムに基づいてアクセス可能なファイルに格納され得る。いくつかの実施形態において、1つの型システムを使用するアプリケーションは、ファイルへのアクセスを通じて、もう1つの型システムを使用することにより動的に型解決を実行し得る。あるいは、または加えて、アプリケーションは、どのファイルにアクセスするのか、および/または、どこにファイルが存在するのかに関する知識を持つことなしに、ファイルにアクセスし得る。
図2を見ると、1つ以上の実施形態に係る例示的なアーキテクチャ200が示されている。アーキテクチャ200は、オペレーティング・システム202を含み、オペレーティングシステム202は、コンピューティング・デバイス上で実行するように構成され得る。簡潔化のためにオペレーティング・システム202の全体が示されていないことが理解されるべきである。オペレーティング・システム202は、コンピューティング・デバイスに関連づけられたリソースを管理するように構成された1つ以上のオペレーティング・システムコンポーネント204を含む。いくつかの実施形態において、オペレーティング・システムコンポーネント204は、リソースを管理することに関連づけられた1つ以上のサービスおよび/または特徴だけでなく、リソースへのプログラムに基づいたアクセスをも提供し得る。オペレーティング・システム・コンポーネント204はまた、オペレーティング・システム202に関連づけられた基本的な要素だけでなく、基本的な要素から構築された複合的な要素をも含み得る。この例はオペレーティング・システム202によって提供される機能を外部からアクセス可能とする(エクスポーズする)アーキテクチャを示しているが、このアーキテクチャが、特許請求の主題の精神から逸脱することなく、他の適切なタイプのアプリケーションによって提供される機能を外部からアクセス可能とするために適用され得ることが認められ、理解されるべきである。
本発明に係るいくつかの実施形態において、オペレーティング・システム・コンポーネント204は、ここではオペレーティング・システム・インターフェース206として示されている1つ以上のインターフェースを介して外部からアクセス可能とされ得る(エクスポーズされ得る)。このようなインターフェースは、任意の適切な形態のインターフェース、たとえば、アプリケーション・プログラミング・インターフェース(API)とすることが可能である。アプリケーションは、以下においてさらに説明されるように、呼び出し中および/または実行中のオペレーティング・システム・インターフェース206により、オペレーティング・システム・コンポーネント204によって提供される機能にアクセスし得る。本実施形態に係るいくつかのケースにおいて、アプリケーションは、オペレーティング・システム・インターフェース206を記述するために使用される型システムとは異なる型システムを利用する。いくつかのケースにおいて、オペレーティング・システム・インターフェース206は、アプリケーション・バイナリ・インターフェース(ABI)を含み得る。ABIは、機械により解釈実行可能な命令語レベルで、関数、方法、API、等を呼び出すためのバイナリ・コントラクトを記述する。バイナリ・コントラクトは、関数に関連づけられた識別子または名前、関数を呼び出すために使用され得るシグネチャ、関数に受け渡されるパラメータの順序、および/または、パラメータに関連づけられたデータ型、等を含み得る。あるいは、または加えて、バイナリ・コントラクトは、型システムの少なくとも1つの型に関連づけられたエクスポーズ動作の挙動に関する定義および/または規則を含み得る。
オペレーティング・システム202はまた、さまざまなメタデータ208を含む。メタデータ208は、関連づけられたオペレーティング・システム・インターフェース206のさまざまな態様を記述する型解決情報、たとえば、バージョン情報、どの方法が利用可能か、インターフェースがどのパラメータを採用するか、パラメータのデータ型、パラメータを受け渡す順序、データ型の振る舞い、および/または解決情報、等を含み得る。本発明に係るいくつかの実施形態において、メタデータは、インターフェースに関連づけられた階層情報、たとえば、インターフェース間の関係を記述した、および/または、オブジェクト指向でインターフェースを記述した情報、を含み得る。メタデータはまた、クラスの記述、クラスの関連づけられた方法およびパラメータ、等を含み得る。本実施形態に係るいくつかのケースにおいて、メタデータは、抽象型システム(たとえば、特定のプログラミング言語と無関係の型システム)を使用してインターフェースを記述し得る。あるいは、または加えて、メタデータは、特定の型システム、たとえば、抽象型システムの記述を含み得る。すると、特定のプログラミング言語は、特定の型システム(たとえば、抽象型システム)の記述を特定のプログラミング言語にマッピングし得る。さらに、どのインターフェースが利用可能かを決定することを望むプログラマは、手作業で、および/またはプログラムに基づいて、各インターフェースの記述にアクセスすることができる。たとえば、どのインターフェースがオペレーティング・システム・コンポーネント204のアクセス手段として存在するか、インターフェースがどの型システムで記述されているか、どのようにそれらを呼び出すか、を決定するために、プログラマは、関連づけられたメタデータ208にアクセスし得る。
アーキテクチャ200はまた、1つ以上のアプリケーション210を含む。アプリケーション210は、1つ以上のプログラミング言語、たとえば、HTML、JavaScript(登録商標)、Visual Basic、C#、C++、等から生成された1つ以上のアプリケーションを含み得る。いくつかの実施形態において、アプリケーション210は、オペレーティングシステムコンポーネントへの1つ以上の呼び出しを含む。いくつかのケースにおいて、アプリケーション210は、まず、どのインターフェースが利用可能かをプログラムに基づいて決定し、次に、決定されたインターフェースのうちの1つ以上への呼び出しを行うように構成され得る。いくつかのケースにおいて、アプリケーション210は、以下においてさらに説明するように、1つ以上の生成された言語投影モジュール212からの支援を受けて、インターフェースにアクセスする。
1つ以上の実施形態において、生成された言語投影モジュール212は、抽象型の定義を特定のプログラミング言語にマッピングする。任意の適切なプログラミング言語がマッピングされることができ、それらの例は上述したとおりである。いくつかの実施形態において、生成された言語投影モジュールは、各プログラミング言語毎に一意であり得る。本発明に係る他の実施形態において、生成された言語投影モジュールは、多目的な機能モジュールであり、複数のプログラミング言語によって利用され得る。上述したマッピングは、抽象型システムを使用して記述される現在および未来のインターフェースが、追加のプログラミング・ステートメント(たとえば、ラッパー関数)なしに特定のプログラミング言語にアクセスできるようにすることができる。上述したマッピングはさらに、特定のプログラミング言語にとってネイティブの手法で、当該特定のプログラミング言語がインターフェースを呼び出すことを可能にする。任意の適切なタイプの情報、たとえば、クラス、データ型、関数ポインタ、構造、等が、マッピングされ得る。
インターフェースの記述は、アプリケーションがどのようにインターフェースを呼び出すべきかを記述するだけでなく、インターフェースに関連づけられた型システムの挙動を記述するためにも使用され得る。記述の情報格納場所が特定されたことに応答して、アプリケーションは、どのようにインターフェースを呼び出すかを動的に決定し、アプリケーションとインターフェースとの間における型システムの相違を解決し得る。本発明に係るいくつかの実施形態において、異なる型システムを使用するアプリケーションは、型記述が存在する情報格納場所の知識なしに、プログラムに基づいて、インターフェースによって利用される型にアクセスし、その型の型解決を実行し得る。あるいは、または加えて、以下においてさらに説明するように、どのような方法で記述がグループ化されるかを特定することにより、自動的な型解決を実現可能にすることができる。
以下の実施例においては、JavaScriptを使用してアプリケーションを書くプログラマがいると仮定する。この例はJavaScriptを使用した実現形態を説明するが、任意のプログラミング言語が特許請求の範囲に記載された技術思想から逸脱することなく使用され得ることが当業者にとって自明なものとして認められ理解されるべきである。外部の機能にアクセスするために、プログラマは、機能に関連づけられた名前空間および/または型を識別するように構成されたステートメントをソースコード中に含めることができる。たとえば、外部の型は、ソースコード内に以下のようにして含められ、および/または、以下のソースコードで記述され得る。
OperatingSystem.Foo.Bar.Type1
この特定の例において、Type1は、アクセスされる機能を表現する。これは、任意の適切なタイプの機能であることができ、その例は、上述および後述されるとおりである。上記シンタックスは、Type1の情報格納場所を特定するために横断的に走査することができる多層構造の名前空間階層を表現する。最も高い階層レベルにおいては、Type1は、「OperatingSystem」として識別された名前空間に存在する。「OperatingSystem」内に「Foo」として識別された名前空間が存在する。同様に、「Foo」内には「Bar」として識別された名前空間が存在し、「Bar」にはType1が存在する。したがって、シンタックスは、Type1の論理的な情報格納場所を識別するために使用され得る。しかしながら、Type1の物理的な情報格納場所(たとえば、どのファイルにType1情報が存在するか、および/または、どのディレクトリにファイルが存在するか)は時間の経過に従って変わる可能性がある。従来、物理的な情報格納場所は、アプリケーション内においてパスおよびファイル名を(直接的または間接的に)ハード・コーディングすることによって決定されることができた。したがって、Type1情報のファイル名および/またはパスが変わった場合、アプリケーションによって利用されるファイル名および/またはパスの任意の直接的または間接的な参照は、更新されるまで不適切であろう。さらに、直接的または間接的な参照が更新されるまで、アプリケーションは、場合によっては適切に機能することができなかった。
本発明に係るさまざまな実施形態は、型解決の仕組みを抽象化するための機能を実現する。たとえば、型は、関連づけられた型解決情報の情報格納場所に関する完全な知識なしに、アプリケーションにより、プログラムに基づいて解決されることができる。本発明に係るいくつかの実施形態において、型解決情報は、情報格納場所を表している新たな情報によって、解決情報を利用するアプリケーションを更新せずに、再配置され得る。アプリケーションは、どのファイル中に型解決情報が存在するかに関わらず、型解決情報の場所を特定するように構成されることが可能となる。
図3を見ると、本発明の1つ以上の実施形態に係る方法を実施するための一連の処理ステップを説明したフローチャートが示されている。当該方法は、任意の適切なハードウェア、ソフトウェア、ファームウェア、またはそれらの組み合わせによって実行され得る。本発明に係る少なくともいくつかの実施形態において、当該方法の実施態様は、1つ以上のコンピューティング・デバイス上で実行中の1つ以上の適切に構成されたソフトウェア・モジュール(たとえば、図1Bの型解決モジュール118)によって実現され得る。本発明に係るいくつかの実施形態において、当該方法は、ユーザによる介入なしに実行され得る。
ステップ302は、解決される型と一致するファイル名を有するファイルを探索する。これは、上述した複数のメタデータ・ファイルの探索を含み得る。上記シンタックスの例を参照すると、アプリケーションがOperatingSystem.Foo.Bar.Type1にアクセスすることに応答して、ステップ302は、「OperatingSystem.Foo.Bar.Type1」という名前を有するファイルを探索する。任意の適切なタイプの探索が実行され得る。たとえば、探索は、型とファイル名との間の完全一致、型とファイル名との間の部分一致、等を探すように構成され得る。あるいは、または加えて、探索は、1つのディレクトリ、複数のディレクトリ、および/またはサブディレクトリ、またはそれらの任意の組み合わせの中を探索するように構成され得る。
ステップ304は、ファイルが存在するかどうかを決定する。ファイルが存在するとの決定に応答して、ステップ306は、型が名前空間であることを示す情報を送信する。ファイルが存在しないとの決定に応答して、ステップ308は、解決される型に関連づけられた名前空間と一致するファイル名を探索する。いくつかのケースにおいて、これは、どの名前空間上を探索するかを決定するために、名前空間の階層を表す情報を含むストリングを操作することを含み得る。上述した例において、Type1は、名前空間の階層において3階層下に配置されるものとして示されている。ストリングに対する操作は、型(たとえば、Type1)を表す部分を削除し、名前空間の階層を表す部分を残すように実行され得る。ここで、ステップ308は、名前空間の階層「OperatingSystem.Foo.Bar」に関連づけられた名前を探索するだろう。上記と同様に、この探索は、完全一致または部分一致の探索方法に従って探索を実行し、1つのディレクトリの中を探索し、さらにそのサブディレクトリの中を探索する、といった具合に構成され得る。
ステップ310は、ファイル名に関連づけられたファイルが存在するかどうかを決定する。ファイルが存在するとの決定に応答して、ステップ312は、型に関連づけられた情報のためにファイルを処理する。
ステップ314は、型に関連づけられた情報がファイル内に配置されているかどうかを決定する。型に関連づけられた情報がファイル内にあるとの決定に応答して、ステップ316は、情報を戻す。たとえば、情報は、呼び出しているプログラムに戻され得る。しかしながら、型に関連づけられた情報がファイル内にないとの決定に応答して、処理はステップ318に進む。
ステップ318においては、より高い階層レベルの名前空間と一致するファイル名が探索される。ステップ318におけるこの探索動作は、たとえば、ステップ310の実行時におけるファイルが存在しないとの決定に応答する形で、または、ステップ314の実行時に、型に関連づけられた情報の格納場所をファイル内において特定することができないことに応答する形で実行することが可能である。より高い階層レベルの名前空間は、任意の適切な手法で決定され得る。たとえば、上記の例では、ストリングが、名前空間階層における1つ上のレベル(たとえば、「OperatingSystem.Foo」)を反映させるようにさらに操作され得る。ステップ318は、より高い階層レベルの名前空間を決定し、関連づけられた名前を有するファイルを探索する。
ステップ320は、ファイル名に関連づけられたファイルが存在するかどうかを決定する。ステップ310のケースのように、ファイルが存在すると決定された場合、処理は、ステップ312、314、および/または316に進み、ファイルが、関連づけられた型情報のために処理される。
ファイルが存在しないとの決定に応答して、ステップ322は、さらに別の名前空間階層レベルが存在するかどうかを決定する。これは、任意の適切な手法で決定され得る。たとえば、レベル分離文字についてストリングを探索することができる。上記の例では、シンタックス「.」が、名前空間階層のレベルを区別する。
さらに別の名前空間階層レベルが存在するとの決定に応答して、上述した処理が繰り返され、処理はステップ318に戻り、新たに決定された名前空間を有するファイルを探索する。ステップ318、320、および322は、適切なファイルが見つかるまで、または、名前空間階層の最上部に到達し、最上部が探索されるまで、繰り返し実行される。さらに別の名前空間階層レベルが存在しないとの決定に応答して、ステップ324はエラーを戻す。これは、例外処理を実行すること、ポップアップ・ダイアログ・ボックスを表示すること、等を含み得る。
上述した方法の使用により、複数のファイルおよび/または情報格納場所が、型解決情報について探索され得る。説明したように、型の探索は、階層名前空間情報に少なくとも部分的に基づき得る。図3は、より低い名前空間階層レベル(たとえば、「OperatingSystem.Foo.Bar.Type1」)から始まり、型の格納場所が特定されるか又は最上部の名前空間階層レベル(たとえば、「OperatingSystem」)に到達するまで、名前空間の各階層レベルを上に向かって横断的に走査するように実行される型の探索動作を説明する。しかしながら、この探索動作は、任意の適切な順序で実行され得る。本発明に係るいくつかの実施形態では、型の探索動作は、より高い名前空間階層レベル(たとえば、「OperatingSystem」)から始まり、型の格納場所が特定されるか最下部の名前空間階層レベル(たとえば、「OperatingSystem.Foo.Bar.Type1」)に到達するまで、名前空間の各階層レベルを下に向かって横断的に走査し得る。名前空間階層上の探索は、型解決情報がどこに存在し得るかを抽象化することができ、さらに、型解決情報にアクセスするアプリケーションに影響を及ぼさずに型解決情報の情報格納場所を変更することを可能にする。
場所のファイル名および/または場所とは無関係に型解決を可能にするように構成された型解決アーキテクチャが考慮されたので、ここでは、1つ以上の実施形態に係るフレキシブルな型記述の格納の説明を考慮する。
型記述の格納
メタデータ・ファイルが、ソフトウェア・インターフェースのさまざまな態様を記述するために使用され得る。上述したように、メタデータ・ファイルは、クラス階層、抽象型システム、関連づけられた方法、プロパティ、およびイベント、等によってインターフェースを記述する情報を含み得る。本実施形態に係るいくつかのケースにおいて、関連づけられた情報は、複数のファイル内に存在し得る。たとえば、異なるメタデータファイルが、同一の名前空間に関連する情報を含み得る。複数のメタデータ・ファイルは、メタデータ・ファイルの開発者に高い柔軟性を与え得る一方で、それは時に、メタデータ・ファイルをユーザが探索する際の妨げとなり得る。以下の例では、各名前空間が、それ独自の関連づけられたメタデータ・ファイルを有する例を考慮する。分割の観点からは、各名前空間のための別個のファイルは、名前空間に対する変更を、関連づけられたファイルに分離することができる。しかしながら、探索の観点からは、情報について複数のファイルを探索しなくてはならないことは、ランタイムでの探索時の性能を低下させ得る。さらに、知識の観点からは、何の情報が何のファイルの中にあるかの追跡を維持することは、ファイル数が増加すると複雑化し得る。
本発明に係るさまざまな実施形態は、型解決情報が存在するファイル名およびファイル格納場所の予備知識なしの型解決を実現可能にする。複数の入力ファイルから成るファイル群の内容が分析され、少なくとも部分的には合成規則に基づいて分割され得る。複数の出力ファイルから成るファイル群を生成することができ、分割された内容を含むように構成される。出力ファイルは、内容がどこに存在するかの予備知識なしに内容の格納場所を特定することを可能にし得る。
例として、図4を見ると、1つ以上の実施形態に係る、記述言語ファイル、メタデータ・ファイル、およびマージ・モジュール間の関係が示されている。本発明に係る少なくともいくつかの実施形態において、この関係図に示されたモジュールは、ソフトウェア、ハードウェア、またはそれらの任意の組み合わせ、たとえば、図1Aのマージ・モジュール116として実現され得る。
例示され説明された実施形態において、Foo.idl 402は、1つ以上のインターフェースを記述するように構成された記述言語ファイルを表す。本発明に係るいくつかの実施形態において、インターフェースは、図1のオペレーティング・システム・インターフェース108および/またはアプリケーション110といった、オペレーティング・システムおよび/またはアプリケーションに関連づけられ得る。記述言語ファイルは、任意の適切な記述、マーク付け言語、および/またはシンタックスを使用して、たとえば、インターフェース定義言語(IDL)、拡張可能なマーク付け言語(XML)、等を用いて、インターフェースを記述し得る。この特定の例において、Foo.idlは、IDLファイルを表す。
Foo.idl 402は、3つの型の記述、Type Foo.Bar.Type1 404、Type Foo.Bar.Type2 406、およびType Foo.Bar.Type3 408を含む。3つのエントリを用いて説明するが、任意の適切な数の記述、ならびに型の記述が、特許請求の範囲に記載された発明の技術思想から逸脱することなく、Foo.idl 402に含まれ得ることが認められ理解されるべきである。たとえば、型は、クラス、インターフェース、方法、プロパティ、イベント、等の記述を含み得る。この例では、型404、406、および408は、「Foo.Bar」の階層名前空間に含まれるものとして記述される。
図4はまた、第2の記述言語ファイル、Bar.idl 410を示す。Foo.idl 402と同様に、Bar.idl 410は、3つの型、Type Foo.Bar.Type4 412、Type Foo.Quux.Type1 414、およびType Foo.Quux.Type2 416を含む記述言語ファイルを表す。型412、414、および416のシンタックスを参照すると、Bar.idl 410は、名前空間「Foo.Bar」における少なくとも1つの型、および、名前空間「Foo.Quux」における少なくとも2つの型を含む。
Foo.metadata 418は、Foo.idl 402に少なくとも部分的に基づいた機械読み取り可能なメタデータ・ファイルを表す。説明は省略するが、本発明に係るいくつかの実施形態において、Foo.metadata 418は、Foo.idl 402からコンパイラによって生成され得る。Foo.idl 402と同様に、Foo.metadata 418は、メタデータファイルにネイティブなフォーマットの型の記述、Foo.Bar.Type1 420、Foo.Bar.Type2 422、およびFoo.Bar.Type3 424を含む。Bar.metadata 426もまた、Bar.idl 410に少なくとも部分的に基づいた機械読み取り可能なメタデータ・ファイルを表す。Foo.metadata 418のケースのように、Bar.metadata 426は、型の記述、Foo.Bar.Type4 428、Foo.Quux.Type1 430、およびFoo.Quux.Type3 432を含む。
図4に含まれるのは、マージ・モジュール434である。マージ・モジュール434は、1つ以上の入力ファイルを受け取ると、判定基準および/または規則のセットに基づいて1つ以上の出力ファイルを生成し得る。たとえば、入力ファイルを探索する入力ディレクトリ、出力ファイルを置く出力ディレクトリ、適用する検査のレベル、どの名前空間階層レベルで統合および/または分割するか、どのようにして出力ファイルに命名するか、出力ファイルをいくつ生成するか、どの深度でメタデータ・ファイルが生成されるべきか、等を指定する入力コマンドおよび/または規則が、マージ・モジュール434に適用され得る。判定基準および/または規則は、任意の適切な手法、たとえば、1つ以上の規則を含むコマンド・ラインおよび/または「makefile」によって、マージ・モジュール434に与えられ得る。
この例では、Foo.metadata 418およびBar.metadata 426が、マージ・モジュール434への入力である。マージ・モジュール434は、入力ファイルをオペランド解析し、指示どおりに出力ファイルを生成する。ここで、マージ・モジュール434は、2つの出力ファイル、Foo.Bar.metadata 436およびFoo.Quux.metadata 438を生成する。Foo.Bar.metadata 436は、「Foo.Bar」の名前空間に関連する型(たとえば、Foo.Bar.Type1 440、Foo.Bar.Type2 442、Foo.Bar.Type3 444、およびFoo.Bar.Type4 446)を含む。同様に、Foo.Quux.metadata 438は、「Foo.Quux」の名前空間に関連する型(たとえば、Foo.Quux.Type1 448、Foo.Quux.Type2 450)を含む。上記の例におけるように、Foo.Bar.metadata 436およびFoo.Quux.metadata 438は、場合によっては関連づけられた入力ファイルから再編成および/または再グループ化されたデータを含む、機械読み取り可能なメタデータ・ファイルを表す。したがって、マージ・モジュール434は、複数のファイルからの内容を分析し、判定基準のセットに従って内容を再構築し得る。
本発明に係るいくつかの実施形態において、ファイルの命名規則が、抽象型解決を可能にするために利用され得る。たとえば、名前空間階層が命名規則として使用され得る。図4において、ファイルFoo.Bar.metadata 436およびFoo.Quux.metadata 438は、それらのファイル名に、関連づけられた名前空間階層(たとえば、それぞれ、「Foo.Bar」および「Foo.Quux」)を含む。この命令規則を利用することにより、型情報は、特定のファイル名ではなく、それに関連づけられた名前空間に基づいて、探索されることが可能である。あるいは、または加えて、出力ファイルは、複数の名前空間階層レベルのデータを含み得る。図4において、Foo.Bar.metadata 436は、「Foo.Bar」の名前空間にデータを含むものとして示されている。しかしながら、Foo.Bar.metadata 436はまた、「Foo.Bar.Level1.Level2.Level3」という名前空間階層レベルに存在する型情報を含むように構成され得る。したがって、命名規則は、ファイル内に含まれ得る最も高いレベルの名前空間を示す。
加えて、適切な型を格納している格納場所が特定されるまで、図3において説明されたような探索アルゴリズムが、異なる階層レベルの名前空間(および関連づけられたファイル)を横断的に走査するために用いられ得る。同一の名前空間階層レベルにおける全ての型情報を同一のファイル内に存在するように構成することにより、特定のレベルに関連づけられた情報は、情報を利用するアプリケーションに影響を及ぼさずにファイルからファイルへ移動させられることが可能となる。名前空間階層に関連づけられた情報は、任意の適切な手法で分割され得る。たとえば、複数の階層レベルが同一のファイル内に存在する(たとえば、Foo.Bar、Foo.Bar.Level1、およびFoo.Bar.Level2がすべて、「Foo.Bar.metadata」と命名されたファイル内に存在する)ようにすることも可能であるし、または、各ファイルがそれ独自の関連づけられたファイルを有する(たとえば、Foo.Barのレベルにおける情報が、「Foo.Bar.meatadata」内に存在し、Foo.Bar.Level1における情報が、「Foo.Bar.Level1.metadata」ファイル内に存在する)ようにすることも可能である、といった具合である。情報がそれに関連づけられた名前空間階層に従って置かれる場合、型解決は、特定のファイル名への依存を除くことによって、抽象化され得る。
ここで図5を見ると、本発明の1つ以上の実施形態に係る方法を実施するための一連の処理ステップを説明したフローチャートが示されている。この方法は、任意の適切なハードウェア、ソフトウェア、ファームウェア、またはそれらの組み合わせによって実行され得る。本発明に係る少なくともいくつかの実施形態において、この方法の実施態様は、図1Aのマージ・モジュール116のような、1つ以上のコンピューティング・デバイス上で実行中の、適切に構成された1つ以上のソフトウェア・モジュールによって実現され得る。
ステップ502は、1つ以上の出力ファイルを生成することに関連づけられた1つ以上の入力判定基準を受信する。本発明に係るいくつかの実施形態において、当該入力判定基準は、情報をどのようにして1つ以上の出力ファイルへと分割するかを指定する規則を含み得る。たとえば、当該入力判定基準は、出力ファイルに一緒にグループ化する1つ以上の名前空間階層レベルを指定し得る。あるいは、または加えて、当該入力判定基準は、たとえば、どのファイルおよび/またはどのディレクトリから情報を引き出すかを指定することによって、どこで情報を見つけるかを記述し得る。
1つ以上の入力判定基準を受信することに応答して、ステップ504は、1つ以上のソフトウェア・インターフェースと関連づけられた情報を含む1つ以上の入力ファイルを受信する。当該情報は、抽象型システムを使用するソフトウェア・インターフェースの記述、オブジェクト指向の関連づけ、方法、プロパティ、関数ポインタ、入力および/または出力パラメータ、型システム情報、等といった、任意の適切なタイプの情報とすることが可能である。本発明に係る実施形態において、型情報は、名前空間の階層情報を含み得る。
1つ以上の入力ファイルを受信することに応答して、ステップ506は、1つ以上の入力判定基準に少なくとも部分的に基づいて情報を分析する。これは、どの名前空間階層の型情報が各ファイル内に存在するかを決定するために入力ファイルを分析することを含み得る。
情報を分析することに応答して、ステップ508は、当該情報を含む少なくとも1つの出力ファイルを生成する。本発明に係るいくつかの実施形態において、当該出力ファイルは、上述した入力判定基準に少なくとも部分的に基づいて異なるファイルに再分割された情報を含み得る。当該出力ファイルは、任意の適切な手法で構成されることができ、そのような手法の例は、上述されたとおりである。たとえば、当該出力ファイルは、メタデータ・ファイルに含まれる名前空間階層に基づいた命名規則を用いて命名されたメタデータ・ファイルとして構成され得る。あるいは、または加えて、当該出力ファイルは、複数のレベルの名前空間階層を含むように構成され得る。名前空間階層情報を出力ファイル中に一緒にグループ化することによって、アプリケーションは、特定のファイル名ではなく、名前空間階層レベルに基づいて情報を探索することができる。これは、アプリケーションに影響を及ぼさない形で情報の分割を柔軟に実行することを可能にする。アプリケーションがどの名前空間階層レベルに特定の型が存在するのかを知っている限り、どのように名前空間階層レベルがグループ化されるかに関わらず、関連づけられた型情報の情報格納場所が出力ファイル中で特定され得る。
柔軟性の高い型記述情報の格納方法を説明したので、以下の説明においては、本発明の1つ以上の実施形態に係る例示的なシステムの説明を考慮する。
例示的なシステム
図6は、上述したさまざまな実施形態を実現するために使用され得る例示的なコンピューティングデバイス600を示す。コンピューティングデバイス600は、たとえば、図1Aおよび図1Bのコンピューティングデバイス102aおよび/または102b、または任意の他の適切なコンピューティングデバイスとすることが可能である。
コンピューティング・デバイス600は、1つ以上のプロセッサまたは処理ユニット602、1つ以上のメモリおよび/またはストレージ・コンポーネント604、1つ以上の入力/出力(I/O)デバイス606、および、さまざまなコンポーネントおよびデバイスに互いに通信することを可能にさせるバス608を含む。バス608は、メモリ・バスまたはメモリ・コントローラ、周辺機器用バス、アクセラレイティッド・グラフィックス・ポート、および、さまざまなバス・アーキテクチャのうちのいずれかを使用するプロセッサまたはローカル・バスを含む、いくつかのタイプのバス構造のうちのいずれかの1つ以上を表す。バス608は、有線および/または無線バスを含み得る。
メモリ/ストレージ・コンポーネント604は、1つ以上のコンピュータ・ハードウェア記憶媒体を表す。コンポーネント604は、揮発性媒体(たとえば、ランダム・アクセス・メモリ(RAM))および/または不揮発性媒体(たとえば、読み出し専用メモリ(ROM)、フラッシュ・メモリ、光学ディスク、磁気ディスク、等)を含み得る。コンポーネント604は、固定媒体(たとえば、RAM、ROM、固定ハード・ドライブ、等)だけでなく、取り外し可能な媒体(たとえば、フラッシュ・メモリ・ドライブ、リムーバブル・ハードドライブ、光学ディスク、等)を含み得る。
1つ以上の入力/出力デバイス606は、ユーザによるコンピューティング・デバイス600へのコマンドおよび情報の入力を可能にし、また、ユーザおよび/または他のコンポーネントまたはデバイスへの情報の提示を可能にする。入力デバイスの例は、キーボード、カーソル操作用デバイス(たとえば、マウス)、マイクロフォン、スキャナ、等を含む。出力デバイスの例は、ディスプレイ装置(たとえば、モニタまたはプロジェクタ)、スピーカー、プリンタ、ネットワーク・カード、等を含む。
さまざまな技法が、ソフトウェアまたはプログラム・モジュールの一般的なコンテキストで、本明細書において説明され得る。一般的に、ソフトウェアは、特定のタスクを実行するか、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、等を含む。これらのモジュールおよび技法の実現は、何らかの形態のコンピュータ読み取り可能な媒体上に記憶されるか、またはそのような媒体によって伝送され得る。コンピュータ読み取り可能な媒体は、コンピューティング・デバイスによってアクセス可能な、任意の利用可能な単数の媒体または複数の媒体とすることが可能である。限定ではなく例として、コンピュータ読み取り可能な媒体は、「コンピュータ読み取り可能な記憶媒体」を備え得る。
「コンピュータ読み取り可能な記憶媒体」は、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、または他のデータ、といった情報の記憶のための、任意の方法または技術において実現される、揮発性および不揮発性の、取り外し可能および取り外し不可能な、ハードウェア媒体を含む。コンピュータ読み取り可能なハードウェア記憶媒体は、RAM、ROM、EEPROM、フラッシュ・メモリ、または他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)、または他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気ストレージデバイス、または、所望の情報を記憶するために使用可能かつコンピュータによってアクセス可能な任意の他の媒体を含むが、これらに限定されない。
結論
さまざまな実施形態は、複数の型システム間の型解決を抽象化するための能力を提供する。少なくとも1つの型が、プログラムに基づいてアクセス可能な1つ以上のファイルに記述され得る。いくつかの実施形態において、異なる型システムを使用するアプリケーションは、型の記述が存在する場所の知識なしに、少なくとも1つの型システムの型に、プログラムに基づいてアクセスし、その型を解決することができる。あるいは、または加えて、プログラムに基づいてアクセス可能な1つ以上のファイルに含まれる型の記述は分析され、型の記述に少なくとも部分的に基づいて、プログラムに基づいてアクセス可能な1つ以上の新たなファイルへと再構築されることができる。
主題は、構造上の特徴および/または方法の動作特有の表現で説明されたが、添付の請求項において定義される主題は、必ずしも上述した特定の特徴または動作に限定されるものではないことが理解されるべきである。そうではなく、上述した特定の特徴および動作は、請求項を実現する例示的な形態として開示されている。

Claims (10)

  1. コンピューティング装置上で実行中のプロセッサ実行可能なソフトウェア・モジュールによって実行され、コンピュータにより実現される方法であって、
    型解決情報の格納位置を特定しようとするアプリケーションからの要求に応じて、前記型解決情報に関連づけられた第1のファイルを複数のファイルの中から探索するステップであって、前記型解決情報は、特定の型について前記アプリケーションの型システムとその他の型システムとの間における相違を型解決するための情報である、ステップと、
    前記第1のファイルが存在するとの決定に応答して、前記型が名前空間を表す型であることを示す情報を送信するステップと、
    前記第1のファイルが存在しないとの決定に応答して、前記型に関連づけられた第1の名前空間レベル階層と一致するファイル名に関連づけられたファイルを前記複数のファイルの中から探索するステップと、
    前記型に関連づけられた第1の名前空間レベル階層と一致するファイル名が存在するとの決定に応答して、前記型に関連づけられた情報に関して前記ファイル名に関連づけられたファイルを処理するステップと、
    前記型に関連づけられた前記第1の名前空間レベル階層と一致する前記ファイル名が存在しないとの決定に応答して、前記型に関連づけられたさらに別の名前空間階層レベルが存在するかどうかを決定するステップと、
    さらに別の名前空間階層レベルが存在するとの決定に応答して、前記さらに別の名前空間階層レベルに関連づけられたファイル名を前記複数のファイルの中から探索するステップと
    を備える方法。
  2. 前記第1のファイルを複数のファイルの中から前記探索するステップはさらに、前記型に関連づけられた名前と一致するファイル名を有するファイルを前記複数のファイルの中から探索する処理動作を備える、請求項1に記載のコンピュータにより実現される方法。
  3. 前記第1のファイルを複数のファイルの中から前記探索するステップはさらに、前記型が存在する情報格納場所に関する知識なしに、前記第1のファイルを探索する処理動作を備える、請求項2に記載のコンピュータにより実現される方法。
  4. ユーザの介入なしに実行される、請求項1に記載のコンピュータにより実現される方法。
  5. 前記複数のファイルは、メタデータ・ファイルを備え、個々の前記メタデータ・ファイルは、オペレーティング・システムのソフトウェア・インターフェースに関連づけられた記述を含む、請求項1に記載のコンピュータにより実現される方法。
  6. 前記メタデータ・ファイルは、特定のプログラミング言語とは無関係に前記型を記述するように構成される、請求項5に記載のコンピュータにより実現される方法。
  7. コンピュータ読み取り可能な命令コードを備える1つ以上のコンピュータ読み取り可能なハードウェア記憶媒体であって、前記命令コードは、実行された際に、型解決モジュールの機能を実現し、前記型解決モジュールは、コンピューティング装置上でプロセッサ実行可能なソフトウェア・モジュールとして実装され、ユーザの介入なしに:
    型解決情報の格納位置を特定しようとするアプリケーションからの要求に応じて、前記アプリケーションの型システムに関連づけられた特定の型の名前空間と一致するファイル名を有するファイルについて1つ以上のメタデータ・ファイルを探索し;
    前記ファイルが存在するとの決定に応答して、前記特定の型に関連づけられた情報に関して前記ファイルを処理し;
    前記ファイルが存在しないとの決定に応答して:
    前記特定の型に関連づけられたさらに別の名前空間階層レベルが存在するかどうかを決定する処理動作;および、
    さらに別の名前空間階層レベルが存在するとの決定に応答して、前記さらに別の名前空間階層レベルと一致するファイル名を有するファイルについて前記1つ以上のメタデータ・ファイルを探索する処理動作;
    を少なくとも一度実行するように構成され、前記少なくとも一度実行する動作は、
    前記別の名前空間階層レベルと一致するファイル名を有する前記ファイルが存在すると決定されたこと、または
    別の名前空間階層レベルが存在しないと決定されたこと、
    に応答して、少なくとも実行を一旦終了することを特徴とするモジュールであり、
    前記型解決情報は、特定の型について前記アプリケーションの型システムとその他の型システムとの間における相違を型解決するための情報である、1つ以上のコンピュータ読み取り可能な
    ハードウェア記憶媒体。
  8. 前記別の名前空間階層レベルと一致するファイル名を有するファイルについて前記1つ以上のメタデータ・ファイルを探索する処理動作は、前記名前空間階層レベルと一致する少なくとも部分的なファイル名の探索動作を備える、請求項7に記載の1つ以上のコンピュータ読み取り可能なハードウェア記憶媒体。
  9. 前記型システムに関連づけられた型は、オペレーティング・システムに関連づけられたアプリケーション・プログラミング・インターフェース(API)を備える、請求項7に記載の1つ以上のコンピュータ読み取り可能なハードウェア記憶媒体。
  10. 前記型システムに関連づけられた型の名前空間と一致するファイル名を有するファイルについて1つ以上のメタデータ・ファイルを探索する処理動作はさらに、前記型が存在する情報格納場所の知識なしで実行される探索動作を備える、請求項7に記載の1つ以上のコンピュータ読み取り可能なハードウェア記憶媒体。
JP2014529670A 2011-09-10 2011-10-08 柔軟性の高いメタデータの合成 Active JP5852246B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/229,697 2011-09-10
US13/229,697 US8433697B2 (en) 2011-09-10 2011-09-10 Flexible metadata composition
PCT/US2011/055491 WO2013036248A1 (en) 2011-09-10 2011-10-08 Flexible metadata composition

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2015236788A Division JP6088031B2 (ja) 2011-09-10 2015-12-03 柔軟性の高いメタデータの合成

Publications (3)

Publication Number Publication Date
JP2014526727A JP2014526727A (ja) 2014-10-06
JP2014526727A5 JP2014526727A5 (ja) 2014-11-13
JP5852246B2 true JP5852246B2 (ja) 2016-02-03

Family

ID=47830769

Family Applications (4)

Application Number Title Priority Date Filing Date
JP2014529670A Active JP5852246B2 (ja) 2011-09-10 2011-10-08 柔軟性の高いメタデータの合成
JP2015236788A Active JP6088031B2 (ja) 2011-09-10 2015-12-03 柔軟性の高いメタデータの合成
JP2017017884A Active JP6338714B2 (ja) 2011-09-10 2017-02-02 柔軟性の高いメタデータの合成
JP2017017883A Active JP6338713B2 (ja) 2011-09-10 2017-02-02 柔軟性の高いメタデータの合成

Family Applications After (3)

Application Number Title Priority Date Filing Date
JP2015236788A Active JP6088031B2 (ja) 2011-09-10 2015-12-03 柔軟性の高いメタデータの合成
JP2017017884A Active JP6338714B2 (ja) 2011-09-10 2017-02-02 柔軟性の高いメタデータの合成
JP2017017883A Active JP6338713B2 (ja) 2011-09-10 2017-02-02 柔軟性の高いメタデータの合成

Country Status (5)

Country Link
US (3) US8433697B2 (ja)
EP (1) EP2754034A4 (ja)
JP (4) JP5852246B2 (ja)
KR (2) KR101924747B1 (ja)
WO (1) WO2013036248A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005338008A (ja) 2004-05-28 2005-12-08 Asahi Kasei Electronics Co Ltd センサの試験用治具基板及び試験装置並びに試験方法
US8433697B2 (en) 2011-09-10 2013-04-30 Microsoft Corporation Flexible metadata composition
US8738581B1 (en) * 2012-02-15 2014-05-27 Symantec Corporation Using multiple clients for data backup
US9767108B2 (en) * 2012-07-13 2017-09-19 Hitachi Solutions, Ltd. Retrieval device, method for controlling retrieval device, and recording medium
US11061859B2 (en) 2018-12-19 2021-07-13 Red Hat, Inc. Object creation from hierarchical metadata stored on a storage device

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2171568A1 (en) * 1995-03-24 1996-09-25 Peter B. Kessler Method and system for type identification for multiple object interfaces in a distributed object environment
US6035297A (en) * 1996-12-06 2000-03-07 International Business Machines Machine Data management system for concurrent engineering
US6330567B1 (en) 1998-08-13 2001-12-11 Tornado Technologies Co., Ltd Searching system for searching files stored in a hard disk of a personal computer
US6560613B1 (en) 2000-02-08 2003-05-06 Ensim Corporation Disambiguating file descriptors
US6856993B1 (en) * 2000-03-30 2005-02-15 Microsoft Corporation Transactional file system
US6842761B2 (en) * 2000-11-21 2005-01-11 America Online, Inc. Full-text relevancy ranking
US7216289B2 (en) 2001-03-16 2007-05-08 Microsoft Corporation Method and apparatus for synchronizing multiple versions of digital data
EP1490767B1 (en) * 2001-04-05 2014-06-11 Audible Magic Corporation Copyright detection and protection system and method
DE60232165D1 (de) * 2001-09-28 2009-06-10 Commvault Systems Inc System und verfahren zur erzeugung und verwaltung von schnellwiederherstellungsvolumen
US7743045B2 (en) * 2005-08-10 2010-06-22 Google Inc. Detecting spam related and biased contexts for programmable search engines
US7865498B2 (en) * 2002-09-23 2011-01-04 Worldwide Broadcast Network, Inc. Broadcast network platform system
KR101292982B1 (ko) * 2003-05-16 2013-08-02 마이크로소프트 코포레이션 Clr 객체의 계층 구조 결정 방법, 컴퓨터 판독가능 매체, 객체를 선언적으로 정의하는 방법, clr 객체의 계층 구조 결정 메카니즘, 및 clr 객체를 선언적으로 정의하는 장치
US7730012B2 (en) 2004-06-25 2010-06-01 Apple Inc. Methods and systems for managing data
US7774326B2 (en) 2004-06-25 2010-08-10 Apple Inc. Methods and systems for managing data
US7962465B2 (en) * 2006-10-19 2011-06-14 Yahoo! Inc. Contextual syndication platform
US7941402B2 (en) * 2004-09-24 2011-05-10 Sap Ag Storing and using classes in databases
WO2006055758A2 (en) 2004-11-17 2006-05-26 Avalere, Inc. Systems and methods for managing digital assets
WO2006096939A1 (en) * 2005-03-18 2006-09-21 Kwok Kay Wong Remote access of heterogeneous data
JP2007006214A (ja) * 2005-06-24 2007-01-11 Nippon Telegr & Teleph Corp <Ntt> リソース情報検索システム、リゾルバ及びプログラム
US7797359B1 (en) * 2005-08-23 2010-09-14 Hewlett-Packard Development Company, L.P. Recursive data naming
US20070169079A1 (en) 2005-11-08 2007-07-19 Microsoft Corporation Software update management
US20080040388A1 (en) 2006-08-04 2008-02-14 Jonah Petri Methods and systems for tracking document lineage
US7599972B2 (en) 2006-08-25 2009-10-06 Qnx Software Systems Gmbh & Co. Kg File system having variable logical storage block size
US8005806B2 (en) * 2006-11-15 2011-08-23 Yahoo! Inc. System and method for information retrieval using context information
US7797295B2 (en) * 2007-01-04 2010-09-14 Yahoo! Inc. User content feeds from user storage devices to a public search engine
US7822765B2 (en) * 2007-07-20 2010-10-26 Fuji Xerox Co., Ltd. Component-based control system for collaborative exploratory search systems
US8010779B2 (en) * 2007-09-19 2011-08-30 Novell Inc. Techniques for secure network searching
US8230365B2 (en) 2007-10-29 2012-07-24 Kabushiki Kaisha Kaisha Document management system, document management method and document management program
US8219563B2 (en) * 2008-12-30 2012-07-10 Oracle International Corporation Indexing mechanism for efficient node-aware full-text search over XML
US8627331B1 (en) * 2010-04-30 2014-01-07 Netapp, Inc. Multi-level parallelism of process execution in a mutual exclusion domain of a processing system
US9165307B2 (en) * 2011-03-29 2015-10-20 Open Text S.A. System, method and computer program product for templated export of content
US8689184B2 (en) * 2011-03-30 2014-04-01 The Procter & Gamble Company Apparatus, system, and method for managing industrial software configurations
US8849880B2 (en) * 2011-05-18 2014-09-30 Hewlett-Packard Development Company, L.P. Providing a shadow directory and virtual files to store metadata
US8645388B1 (en) * 2011-06-16 2014-02-04 Emc Corporation Method and system for processing a query
US20130055291A1 (en) * 2011-08-31 2013-02-28 Microsoft Corporation Describing native application programming interfaces of an operating system with metadata
US8433697B2 (en) 2011-09-10 2013-04-30 Microsoft Corporation Flexible metadata composition

Also Published As

Publication number Publication date
US20140149437A1 (en) 2014-05-29
KR101798705B1 (ko) 2017-11-16
WO2013036248A1 (en) 2013-03-14
US20130066899A1 (en) 2013-03-14
US8433697B2 (en) 2013-04-30
CN103049299A (zh) 2013-04-17
JP2017111832A (ja) 2017-06-22
EP2754034A1 (en) 2014-07-16
JP2014526727A (ja) 2014-10-06
US9043305B2 (en) 2015-05-26
KR20170127060A (ko) 2017-11-20
US8914350B2 (en) 2014-12-16
US20150074128A1 (en) 2015-03-12
KR20140068943A (ko) 2014-06-09
EP2754034A4 (en) 2015-04-08
KR101924747B1 (ko) 2018-12-03
JP2017123174A (ja) 2017-07-13
JP6338714B2 (ja) 2018-06-06
JP6088031B2 (ja) 2017-03-01
JP2016066367A (ja) 2016-04-28
JP6338713B2 (ja) 2018-06-06

Similar Documents

Publication Publication Date Title
AU2017200899B2 (en) Runtime system
JP6338713B2 (ja) 柔軟性の高いメタデータの合成
RU2598600C2 (ru) Проецирование собственных интерфейсов прикладного программирования операционной системы в другие языки программирования
US20130054630A1 (en) Pre-generation of structured query language (sql) from application programming interface (api) defined query systems
JP5244826B2 (ja) ユーザーインターフェース要素を用いた分離、管理および通信
Nagel et al. Professional C# 2012 and. Net 4.5
US20090037466A1 (en) Method and system for resolving feature dependencies of an integrated development environment with extensible plug-in features
US9063758B2 (en) Population of dynamic objects representing static namespace hierarchies
US10866845B2 (en) Exposing native OS APIS in a web browser

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140911

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140911

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: 20150928

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: 20151104

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151203

R150 Certificate of patent or registration of utility model

Ref document number: 5852246

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

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