オペレーティングシステムにより、コンピューティング装置の異なるアプリケーション及びランタイムプラットフォームに渡りアプリケーション起動のための共通経路を提供するために、アプリケーション起動コンポーネントを公開するステップと、前記アプリケーション起動コンポーネントを介して、アプリケーションと前記オペレーティングシステムとの間で生成された契約を通じて前記アプリケーションにより提供可能な前記オペレーティングシステムの統合機能として提供される拡張ポイントをサポートするために、前記アプリケーションを登録するステップと、前記アプリケーション起動コンポーネントを介して、1つの前記拡張ポイントの特定の契約を実行するために、前記の登録されたアプリケーションの中から選択されたアプリケーションを呼び出すステップと、を有するコンピュータにより実施される方法。前記アプリケーション起動コンポーネントは、前記オペレーティングシステムにより指示されたように前記拡張ポイントを供するためにアプリケーションを起動するオブジェクト指向プロトコルを実装する、請求項1に記載のコンピュータにより実施される方法。前記アプリケーション起動コンポーネントは、少なくとも生成すべきウインドウの種類及び該ウインドウの位置を指定するオブジェクトを前記アプリケーションに渡すことにより、前記拡張ポイントを供するために前記アプリケーションによるウインドウ生成を制御する、請求項1に記載の方法。前記アプリケーションを呼び出すステップは、前記アプリケーションに関連するランタイムプラットフォームと通信するステップであって、前記ランタイムプラットフォームに、前記アプリケーションを初期化し、前記アプリケーションに、前記1つの拡張ポイントを実装するために、前記アプリケーションが前記特定の契約を履行するのに十分な情報を渡させる、ステップを有する、請求項1に記載のコンピュータにより実施される方法。前記アプリケーションを呼び出すステップは、前記アプリケーションに自身を初期化し前記1つの拡張ポイントを実装させるために、前記1つの拡張ポイントに対応する前記アプリケーションの指定されたエントリポイントを通じて、前記アプリケーションと直接通信するステップを有する、請求項1に記載のコンピュータにより実施される方法。前記アプリケーションを呼び出すステップは、前記アプリケーションの指定されたエントリポイントに契約オブジェクトを伝達するステップを有する、請求項1に記載のコンピュータにより実施される方法。前記契約オブジェクトは、前記アプリケーションの初期化を制御するよう構成される起動設定と、前記特定の契約を識別する契約識別子と、前記アプリケーションにより前記1つの拡張ポイントの実装を制御する契約詳細とを有する、請求項6に記載のコンピュータにより実施される方法。前記アプリケーションを登録するステップは、前記アプリケーションのインストールと関連して生じる、請求項1に記載のコンピュータにより実施される方法。前記アプリケーションを登録するステップは、サポートされる拡張ポイントのために指定されたエントリポイントを示す通知を前記アプリケーションから得るステップと、前記アプリケーションの前記指定されたエントリポイントを対応する拡張ポイントにマッピングするためにマニフェストを更新するステップと、を有する、請求項1に記載のコンピュータにより実施される方法。前記アプリケーション起動コンポーネントは、プラットフォーム不可知の、言語とは独立の通信プロトコルを用いて、アプリケーションのために複数の異なるランタイムプラットフォームをサポートする、請求項1に記載のコンピュータにより実施される方法。本発明は、アプリケーション起動技術を提供する。アプリケーション起動のための技術が記載される。オペレーティングシステムOSは、関連する契約例えば、拡張ポイントにより表される機能の実装を制御する仕様を通じてサービス可能な種々の拡張ポイントを組み込むよう構成され得る。増築可能な特徴は、OSの統合機能として定められ、OSにより集中的に制御される。しかしながら、拡張可能機能の特定の実装は、契約を用いてアプリケーションに降ろされ得るoffload。例えば、OSは、特定の契約を実行するためにアプリケーションを呼び出すオブジェクト指向アプローチを用いる中央アプリケーション起動コンポーネントを有し又はそれを含み得る。起動中、OSは、指定されたアプリケーションを起動し及びアプリケーションにOSにより指定された方法で契約を提供させるために、特定の契約に関する情報例えば、契約オブジェクト又は他の適切なデータを渡し得る。このように、契約がアプリケーションコードにより処理される方法は、異なるアプリケーション及びランタイムプラットフォームをサポートする中央アプリケーション起動コンポーネントを通じて管理及び調整され得る。あるアプローチでは、ランタイムプラットフォームは、OSから提供される契約オブジェクトに基づきアプリケーションの初期化を処理するよう動作し、アプリケーションコード自体を通じて拡張実装の大部分を終える。この要約は、詳細な説明で後述する概念の選択を簡単な形式で紹介する。この要約は、請求の範囲の主要な特徴又は基本的特徴を特定するものではなく、請求の範囲の範囲を限定するものでもない。<概要>コンピューティングシステム内でアプリケーションを実装する従来の協調性のないアプローチは、ユーザがオペレーティングシステムに関して全体的な建設的なユーザ経験を有することを妨げ得る支離滅裂な外観及び雰囲気を生成してしまう。アプリケーションは幾つかのオペレーティングシステム機能を利用できるが、オペレーティングシステムは、アプリケーションが実際にどのように従来のアプローチで機能を実装するかに関して殆ど又は全く制御を有しない。本願明細書に、オペレーティングシステムでアプリケ―ションの統合を実現するアプリケーション起動技術が記載される。オペレーティングシステムOSは、OSとアプリケーションとの間に形成される関連する契約例えば、拡張ポイントにより表される機能の実装を制御する仕様を通じてサービス可能な種々の拡張ポイントを組み込むよう構成され得る。増築可能な特徴は、OSにより提供される統合機能として定められ、OSにより集中的に制御される。しかしながら、拡張可能機能の特定の実装は、契約に従ってアプリケーションに降ろされ得る。例えば、OSは、OSにより公開され、特定の契約を指定された方法で実行するためにアプリケーションを呼び出すオブジェクト指向アプローチを用いる中央アプリケーション起動コンポーネントを有し又はそれを含み得る。起動中、OSは、指定されたアプリケーションを起動し及びアプリケーションにOSにより指定された方法で契約を供させるために、特定の契約に関する情報例えば、契約オブジェクト又は他の適切なデータを渡し得る。このように、アプリケーションコードによる契約の処理は、中央アプリケーション起動コンポーネントを通じて管理され得る。その結果、異なるアプリケーションがOSと統合され、OSに対して並びに異なるアプリケーション及びプラットフォームに渡り一貫した協調したユーザ経験を生成する。以下の議論では、動作環境と題する節が設けられ、1又は複数の実施形態が用いられ得る1つの環境を説明する。これに続き、アプリケーション起動技術と題する節は、1又は複数の実施形態による例示的な実装の詳細を説明する。次に、例示的な方法と題する節は、1又は複数の実施形態による例示的な方法を説明する。最後に、例示的なシステムと題する節は、1又は複数の実施形態を実施するために用いられ得る例示的なコンピューティングシステム及び装置を説明する。<動作環境>図1は、1又は複数の実施形態による動作環境を概して100で示す。環境100は、1又は複数のプロセッサ104と、1又は複数のコンピュータ可読媒体106と、オペレーティングシステム108と、コンピュータ可読媒体に存在しプロセッサにより実行可能な1又は複数のアプリケーション110とを有するコンピューティング装置102を有する。1又は複数のプロセッサ104は、アプリケーション110からコンピュータプログラム命令を読み出し実行し、職場生産性、電子メール、メディア管理、印刷、ネットワーキング、ウェブ閲覧、等を含むがこれらに限定されない広範な機能をコンピューティング装置102に提供しても良い。アプリケーション110に関連する種々のデータ及びプログラムファイルも含まれ、それらの例は、オフィス文書、マルチメディアファイル、電子メール、データファイル、ウェブページ、ユーザプロファイル及び/又はプレファレンスデータ等を含む。一般に、アプリケーション及び他のプログラムモジュールは、ローカルアプリケーション、ホスト装置例えばサーバ又はピア装置を通じて動作するウェブベースアプリケーション、及び/又はクライアント-サーバ若しくはネットワークを介した例えば、クラウドの他の複数装置の相互作用を通じて動作する分散型アプリケーションを含み得る。コンピューティング装置102は、例として且つ限定ではなくデスクトップコンピュータ、ポータブルコンピュータ、のような任意の適切なコンピューティングシステム及び/又は装置として、タブレット若しくは薄型コンピュータ、PDApersonaldigitalassistantのようなハンドヘルドコンピュータ、携帯電話機、セットトップボックス、等として実施され得る。コンピューティング装置102を含む種々のシステム及び/又は装置を表し得るコンピューティングシステムの一例は、図5に示され以下に説明される。コンピュータ可読媒体は、例として且つ限定ではなく、通常コンピューティング装置に関連付けられるあらゆる形式の揮発性及び不揮発性メモリ及び/又は記憶媒体を含み得る。このような媒体は、ROM、RAM、フラッシュメモリ、ハードディスク、取り外し可能媒体等を有し得る。コンピュータ可読媒体は、コンピュータ可読記憶媒体及び通信媒体の両方を含み得る。これらの例は、図5の例示的なコンピューティングシステムの議論で見られる。オペレーティングシステム108は、オペレーティングシステム108に統合された拡張可能機能を表す拡張ポイント112も有する。言い換えると、拡張ポイントは、個々の拡張ポイントをサポートする異なるアプリケーション110により実装され得る拡張可能オペレーティングシステム機能を提供する。OSは、拡張ポイントの機能セットを定め、機能の実装を異なるアプリケーション110に降ろすことができる。拡張ポイント112は、種々の方法で構成され得る。例として且つ限定ではなく、拡張ポイントは、検索クエリ、アプリケーション間のデータ共有、ファイル関連付け、ファイルストリーミング、外部装置操作、メディア自動再生、アプリケーション起動、ウェブサイト相互作用、起動状態制御、プロトコル処理、ネットワーク設定、ハードウェア/装置固有設定機能、インターエクステンション通信、等のような機能を提供し得る。拡張ポイント112の機能は、種々のアプリケーション110により種々の方法で実装され、アプリケーション110の幾つかの特徴をオペレーティングシステム108に効率的に統合できる。したがって、拡張ポイントは、異なるアプリケーションがコード、インタフェース及び異なるアプリケーションの特定の能力を通じて対応するオペレーティングシステム機能を拡張及び調整するために使用し提供し得る集中メカニズムを表す。拡張ポイントにより表される機能の実装を制御するために用いられる仕様は、本願明細書では契約と称される。契約は、拡張機能を使用する要求に応答して、OSとアプリケーションとの間で生成され得る。契約に従って、次にオブジェクト又は他の適切なデータは、アプリケーションに契約を履行させるために、契約/拡張ポイントに対応する適切なアプリケーションへ転送され得る。言い換えると、アプリケーションが拡張ポイントをサポートするという指示をOSに提供する該アプリケーションは、拡張ポイントに関する契約を処理するために、OSにより起動され得る。上述の方法で、少なくとも一部の特定の詳細及び拡張可能OS機能のためのコードは、拡張可能機能を最終的に実装するアプリケーションに降ろされ得る。一般的に、拡張ポイントは、アプリケーション及びプラットフォームについて知ることができない。したがって、異なる種類のアプリケーション/プラットフォームが、同じ拡張ポイントを実装し及び提供するために用いることができる。異なる種類のアプリケーション/プラットフォームに渡る実装は、共通の中央コンポーネントを用いて生じ得る。共通の中央コンポーネントを通じ、OSは、異なるアプリケーション/プラットフォームに指示し、アプリケーション/プラットフォームが拡張ポイント112を提供する方法を制御できる。したがって、拡張可能機能の幾つかの特徴はサービスアプリケーションに降ろされるが、OSは、機能に関する制御を保持し、中央コンポーネントを通じて拡張ポイントのための契約をどのように実行するかをアプリケーションに指示できる。特に、コンピューティングシステム102は、コンピュータ可読媒体に存在しプロセッサにより実行可能なアプリケーション起動コンポーネント114を更に有する。アプリケーション起動コンポーネント114は、図示のように独立型アプリケーションとして又は別のアプリケーションのコンポーネントとして実装され得る。例えば、アプリケーション起動コンポーネント114は、オペレーティングシステム108の統合コンポーネントとして提供され得る。アプリケーション起動コンポーネント114は、共通の中央コンポーネントを表す。共通の中央コンポーネントは、OSにより公開され、拡張ポイント112及び関連する契約に関してアプリケーション110に指示するために用いられ得る。特に、アプリケーション起動コンポーネント114は、アプリケーションを登録するために公開され、拡張ポイントを提供し、登録されたアプリケーションの中から選択し、及び/又はアプリケーションを呼び出して契約を履行する例えば、拡張可能OS機能の特定の呼び出し。アプリケーション起動コンポーネント114は、種々のアプリケーション110による拡張ポイント112の実装に関する制御をOSに保持させる。アプリケーション起動コンポーネント114は、対応するアプリケーションのために実行環境を提供する、コンピューティング装置102の多くの異なる種類のアプリケーション及び/又は異なるランタイムプラットフォーム118をサポートするよう構成され得る。コンピューティング装置102のランタイムプラットフォーム118の例は、少数の例を挙げると、JAVA登録商標ランタイム環境JRE、Adobe登録商標Flash登録商標、Microsoft登録商標、NETフレームワーク、及びMicrosoftSilverlight登録商標を含む。サポートされるアプリケーションは、OS及び/又はアプリケーション起動コンポーネント114と相互作用するよう構成される適切なランタイムプラットフォーム118で実行され得る。ランタイムプラットフォームがOS及び/又はアプリケーション起動コンポーネント114と相互作用可能に設定されると、ランタイムプラットフォームは、新しい更新をサポートするようランタイムの更なる改訂を要求することなく、既存の拡張ポイント及び拡張ポイントに対する将来の更新の両方に使用される準備が整う。少なくとも幾つかの実施形態では、アプリケーション起動コンポーネント114は、オブジェクト指向アプローチを実装し、契約及び拡張ポイント112に関してアプリケーションと通信し及び指示し、及び/又はその他の場合、オペレーティングシステム108の一部として提供される拡張ポイントを管理する。例えば、オブジェクト指向アプローチが用いられるとき、アプリケーション起動コンポーネント114は、契約オブジェクト116を提供し又はそれを用いて、アプリケーション110を起動し契約を履行するよう指示し得る。オブジェクト指向アプローチは、オブジェクト指向アプローチで利用可能な豊富なオブジェクトと比べて面倒で更新が困難で且つ比較的厳格且つ単純なコマンドを提供する従来のストリングに基づくコマンドラインパラメータの代わりに用いることができる。例えば、豊富なオブジェクトは、少数の例を挙げると、2方向通信の提供、外部プロセスからのデータ調達、共有データアクセスのためのアプリケーション間の仲裁オブジェクトの提供のような、コマンドラインパラメータを用いては可能でない能力を提供できる。契約オブジェクト116は、互換性のあるアプリケーションによりサポートされる期待される一貫した通信プロトコルに従って設計され得る。通信プロトコルは、不可知のagnostic、異なるコンピューティング言語、プロトコル及び技術を内部で使用し得る異なるエンティティ及び環境間の通信方法と独立したコンピューティング言語を提供するよう構成される。互換性のあるアプリケーションは、オブジェクトのために用いられる共通フォーマットを理解でき、必要に応じて、オブジェクトを特定のプラットフォーム/環境に適するアプリケーション固有フォーマットに変換する。幾つかの実施形態で用いられ得る適切なプロトコルの一例は、Microsoft登録商標COMComponentObjectModelである。しかしながら、不可知の、異なるエンティティ及び/又は環境間の通信と独立な言語を可能にする任意の適切なプロトコルが、本願明細書に記載のアプリケーション起動フレームワークを実施するために用いられ得る。契約オブジェクト116又は他の等価なオブジェクト、データ及び/又はメッセージは、アプリケーション110に直接に、及び/又は幾つかの場合には、対応する契約を提供するために呼び出されるアプリケーションに対応する個々のランタイムプラットフォーム118を通じて伝達され得る。契約オブジェクト116は、契約に関する任意の適切な情報を受信アプリケーションに渡すよう構成され得る。概して、契約オブジェクト116又はその他を介して渡される情報は、指定されたアプリケーションを起動し、該アプリケーションがOSにより指定された方法で対応する契約を提供可能にするよう構成される。図1に示すように、契約オブジェクト116は、受信アプリケーションへの契約を特定する契約ID120と、契約の概略及び/又は固有データを記述する契約詳細122と、どのように受信アプリケーションが起動し及び/又は契約を処理するために処理を実行するかを制御するために用いられる起動設定124とを有し得る。アプリケーション起動技術の上述の及び他の特徴に関する更なる詳細は、以下の図面に関連して説明される。以上に、例示的な動作環境を説明した。次に、1又は複数の実施形態によるアプリケーション起動の例示的な技術を検討する。<アプリケーション起動技術>以上によると、オペレーティングシステムOSは、関連する契約を通じて提供可能な種々の拡張ポイントを組み込み得る。増築可能な特徴は、OSの統合機能として定められ、OSにより集中的に制御される。しかしながら、拡張可能機能の特定の実装は、契約を通じてアプリケーションに降ろされ得る。アプリケーションコードによる実装の処理は、オブジェクト指向アプローチを用いて、中央アプリケーション起動コンポーネントを通じて管理及び調整され得る。アプリケーション起動技術に関する更なる詳細は、図2に示す概して200で示す例示的な動作シナリオに関連して説明される。特に、図2は、アプリケーション起動を処理するためにOSにより公開され得るアプリケーション起動コンポーネント114に関する幾つかの例示的な詳細を示す。図2に示すように、オペレーティングシステム108は、要求202を受信し得る。要求202は、拡張ポイントにより提供される機能を使用しようとしているエンティティ例えば、アプリケーション、装置、ユーザ又はコンポーネントから得られ得る。言い換えると、要求は、拡張可能機能にアクセスする要求である。本例では、オペレーティングシステム108は、要求202を処理し及びその他の場合にはOSにより提供される拡張可能機能を管理するよう構成されるアプリケーション起動コンポーネント114を組み込む。勿論、アプリケーション起動コンポーネント114は、代替で、上述のようにOSとは別個のコンポーネントとして提供されても良い。要求202に応答して、アプリケーション起動コンポーネント114は、要求に供するためにアプリケーションを選択するよう構成され得る。あるアプローチでは、要求は、拡張可能機能を実装すべき特定のアプリケーションを指定できる。追加又は代替で、互換性のあるアプリケーションは、拡張可能機能をサポートするアプリケーションのグループの中から選択され得る。例えば、アプリケーションは、アプリケーションがサポートし提供できる個々の拡張ポイントに関してOSに登録し又はそれを通知し得る。したがって、OSは、マニフェスト、データベース、テーブル又は異なる拡張ポイントにアプリケーションをマッピングするよう構成される他の適切なデータ構造を保持し、それらにアクセスし、又はそれらを使用できる。このマッピングに基づき、OSは、要求202に対応する特定の拡張ポイントを提供する能力を示した全てのアプリケーションをエミュレートできる。少なくとも幾つかの実施形態では、要求に供すべき可能なアプリケーションのリストは、選択のために要求側に公開され得る。別のアプローチでは、アプリケーション起動コンポーネント114は、プリファレンスリスト、規定の選択、ランク付け、コミュニティフィードバック及び/又は他の適切な選択基準を用いて、自身で例えば、要求側による明示的選択の助けを有しないでアプリケーションを選択するよう構成され得る。概して、前述の例の組合せを含む任意の適切な技術及び/又は経験則は、どのアプリケーションが要求202に応答して起動すべきかを決定するために用いられ得る。いずれにしても、に応答して、アプリケーション起動コンポーネント114は、要求202に供するためにアプリケーションを識別及び/又は選択する。図2に示すように、アプリケーションは、対応するランタイムプラットフォーム118により実装されても、又はそうでなくても良い。アプリケーション起動コンポーネント114は、要求を履行するために選択されたアプリケーションを起動するよう動作し得る。特に、要求202は、アプリケーション起動コンポーネント114に、拡張可能機能を実装するためにアプリケーションとの契約を開始させる。例えば、アプリケーション起動コンポーネント114は、選択されたアプリケーションに伝達するために契約オブジェクト116又は複数の契約オブジェクトを生成し得る。1又は複数の契約オブジェクト116は、アプリケーション起動コンポーネント114により適切なアプリケーション110に渡され、契約を完了するためにアプリケーションにより用いられる種々の情報を提供する。この情報は、契約ID120と、特定の契約についての契約詳細122と、契約が実行される方法、どれが別個のオブジェクトとして提供されるか及び/又は単一の契約オブジェクトを用いるかを制御するための起動設定124とを有する。より詳細には、契約ID120は、実行されるべき特定の契約をアプリケーションに伝達するために用いられる。拡張ポイント112と同様に、異なる契約は、検索クエリ、アプリケーション間のデータ共有、ファイルストリーミング、外部装置操作、アプリケーション起動、ウェブサイト相互作用、起動状態制御等のような異なる機能に関連し得る。アプリケーションは、契約ID120を用いて、異なる種類の契約を区別し、契約オブジェクト116により渡された残りの情報をどのように解釈し処理するかを理解できる。したがって、アプリケーションは、契約IDにより指定される契約オブジェクト116に対応する特定の契約に依存して異なる方法で、契約オブジェクト116を扱い、翻訳し及び/又は処理できる。例えば、契約オブジェクトと共に渡される同一の引数は、契約IDに依存して異なるように解釈され扱われ得る。少なくとも幾つかの実施形態では、契約は、異なる種類の契約に対応するクラスに配列され得る。この場合、契約IDも、契約に対応する契約クラスを伝達するために用いられ得る。契約詳細122は、実行すべき契約に関する固有情報を提供する。これは、パラメータ、リンク、ファイル名、及び契約を実行するために用いられる他のデータを有し得る。契約詳細122も、契約のために実行されるべき特定の処理動作を指定し、及び/又は契約を実行するために用いられ得る方法へのアクセスを提供できる。例として且つ限定ではなく、検索クエリテキストは、検索契約に関連して提供され得る。別の例では、ファイルパス又はストリームは、ファイルストリーミング契約に関連して提供され得る。出力フォルダ位置も提供されても良い。更に別の例では、URLuniformresourcelocator又はウェブサイトアドレスは、ファイル投稿契約に関連して提供され得る。、ファイル投稿契約の詳細は、写真を共有サイトに投稿する前に写真の解像度を減少させるような再フォーマット化動作も指定しても良い。起動設定124は、アプリケーションにどのように契約の履行を開始するかを知らせるパラメータを有する。起動設定124は、所与の契約を扱うために使用すべきアプリケーション又はランタイムの既存のインスタンスも指定できる。起動設定124は、アプリケーション及び/又はランタイムプラットフォーム118の一方又は両方を制御するよう構成され得る。起動設定124は、提示特徴、アプリケーション状態、初期化設定、及びアプリケーションが契約に参加できるようにアプリケーションを指定された状態にどのように初期化するかを指定する他の設定を有し得る。例えば、起動設定124は、アプリケーションのウインドウ生成を制御するために指定されるウインドウ生成パラメータを有し得る。契約オブジェクトと共に渡されるウインドウ生成パラメータは、OS又は他のアプリケーションにより用いられるユーザインタフェースに渡って外観及び雰囲気の連続性を提供するために用いられ得る。このように、異なるアプリケーションのウインドウは、協調され、OSのユーザインタフェースの一部にすっかり没入して見える。あるいは、しかしながら、ほかにも、OSはウインドウのレイアウト、順序及び配置を選択する。ウインドウ生成パラメータは、アプリケーションウインドウの生成のタイミング、選択されたスクリーン位置へのウインドウの配置、及び/又は色、フォント、グラフィック等のような視覚的特徴を制御するよう構成され得る。さらに、ウインドウ生成パラメータは、異なる利用可能オプションの中から生成すべきウインドウの種類を指定するために用いられ得る。ウインドウ種類のオプションは、少数の例を挙げると、フルサイズ/独立型ウインドウ、埋め込み型又は別のアプリケーションUI内に配置された収容型ウインドウ、外部装置への出力のためのウインドウ、隠れたウインドウ例えば、バックグラウンドプロセス、又はミニモードウインドウを有し得る。したがって、ウインドウ生成パラメータは、契約にUIに対する固有制御を可能にし、適正な場所で開始されOS及び/又は他のアプリケーションと協調した外観及び雰囲気を有する適切な種類のウインドウの生成を指定する。あるアプローチでは、起動設定124は、ランタイムプラットフォーム118に向けられる。ランタイムプラットフォーム118は、設定を受信して、ウインドウ生成パラメータ及び/又は他の設定により定められた適切な状態で対応するアプリケーションを起動するために用いる。契約ID及び契約詳細のような契約オブジェクトに含まれる他の情報は、アプリケーションコード自体に渡される。アプリケーションコードは、契約の実際の履行を処理する。このアプローチでは、ランタイムプラットフォーム118は、主にアプリケーション初期化に関するタスクを扱うために、アプリケーション起動に含まれる。ランタイムプラットフォーム118は、契約の細目又はOSにより提供される拡張ポイントを知らずに、これらのタスクを実行できる。ランタイムプラットフォーム118は拡張ポイントを意識しないので、フレームワークは、アプリケーションがランタイムプラットフォーム118を変更することなく利用できる新しい拡張ポイントの開発及び追加を可能にする。したがって、新しい拡張は、装置により用いられ得る種々のランタイムプラットフォーム118の修正なしに、開発され使用され得る。ランタイムは、単に、契約オブジェクトに基づきアプリケーションの初期化を処理するよう動作し、アプリケーションコード自体を通じて拡張実装の大部分を終える。したがって、アプリケーションを起動するために、アプリケーション起動コンポーネント114は、契約オブジェクト116を、アプリケーションにより指定されるエントリポイント204に伝達する。通信は、アプリケーションと直接に、又は特定のランタイム環境で実施されるアプリケーションのための仲介としてランタイムプラットフォーム118を通じて生じ得る。種々の拡張ポイント/契約のためのアプリケーションのエントリポイント204は、アプリケーションが個々の拡張ポイント/契約のサポートを示すためにOSに登録し又はその他の場合OSに通知するとき、指定され得る。エントリポイント204は、対応するアプリケーションのために契約ポイントを提供する。契約ポイントを通じて、アプリケーション起動コンポーネント114は、アプリケーションと相互作用し、アプリケーションを呼び出し及び/又はアプリケーションを起動できる。エントリポイントは、特定の方法、制御、フォーム、ウェブページ、及び/又は契約オブジェクト116及び/又は対応する契約を扱うよう設計されるアプリケーション又はランタイムの他の適切なコンポーネントに対応し得る。エントリポイント204は、契約オブジェクト116のフォーマットを理解し、オブジェクトのアプリケーション固有フォーマットへの変換を扱い得る。例えば、エントリポイント204は、オブジェクト、メッセージ、及び/又はアプリケーション起動コンポーネント114により用いられる、不可知のコンピューティング言語とは独立のプロトコルに従って通信される他のデータを扱うよう構成され得る。特に、契約オブジェクトに作用するアプリケーションの単一の方法が、アプリケーションの一般的エントリポイントとして指定され得る。これは漏斗として動作し、この漏斗を通じて、契約オブジェクト116により伝達される種々の情報がアプリケーションに渡される。方法は、アプリケーションに、契約を履行するために拡張ポイントに参加し始めるよう知らせる。したがって、1つの共通のエントリポイントが、次にアプリケーションに渡されるオブジェクト指向コンポーネントに対して動作を実行する能力を有するアプリケーションに対して指定され得る。契約オブジェクト116がエントリポイントを通じて受信されると、契約オブジェクト116は、エントリポイントに、対応する契約を履行するためにアプリケーションを起動させアプリケーションによる処理を開始する。処理は、OSの指示で、且つ契約詳細122及び/又は起動設定124を通じて契約オブジェクト116により指定された方法で生じる。処理に続いて、アプリケーションは、アプリケーション起動コンポーネント114に返送するために応答206を形成し得る。応答は、少なくとも契約の完了に成功したか否かの指示を含む、アプリケーションによる契約の実行の結果を反映する。アプリケーション起動技術の上述の及び他の特徴に関する更なる詳細は、以下の例示的な方法に関連して説明される。<例示的な方法>以下の節では、1又は複数の実施形態に従って実施され得るアプリケーション起動技術を説明するフロー図を議論する。以下に記載する例示的な方法は、適切なハードウェア、ソフトウェア、ファームウェア又はそれらの任意の組み合わせに関連して実施され得る。図3は、オペレーティングシステムの拡張ポイントに関連する契約を実行するために、オペレーティングシステムがアプリケーションを起動し得る例示的な方法を示す。少なくとも幾つかの実施形態では、方法は、アプリケーション起動コンポーネント114を有するか又はその他の場合それを利用する図1の例示的なコンピューティング装置102のような、適切に構成されるコンピューティング装置により実施され得る。ステップ300は、装置のオペレーティングシステムにより提供される拡張ポイントにアプリケーションを登録する。あるアプローチでは、種々の拡張ポイントをサポートするアプリケーションは、アプリケーションインストールプロセスの一部としてオペレーティングシステムに登録するよう構成され得る。アプリケーションによる特定の拡張ポイントへの登録は、OSに、アプリケーションが拡張ポイントに供するよう構成されることを通知する。アプリケーションは、指定された拡張ポイントに供するためにOSに登録するために、インストールのほかに通知を提供し得る。登録は、アプリケーション起動コンポーネント114を通じて生じ得る。アプリケーション起動コンポーネント114は、異なるアプリケーション及びランタイムプラットフォームに渡りアプリケーション起動のための共通経路を提供するために、オペレーティングシステムにより公開される。特に、アプリケーション起動コンポーネント114は、アプリケーション識別子AppIDを割り当て、異なるアプリケーションについての登録のマニフェストを保持し得る。マニフェストは、AppIDを個別に個々の拡張ポイントに一致させるよう構成される。したがって、マニフェストは、拡張ポイントを、登録されることによりアプリケーションが拡張ポイントに供することができると示す異なるアプリケーションにマッピングする。ステップ302は、拡張ポイントに関連する契約を供するためにアプリケーションを呼び出す。例えば、起動コンポーネント114は、要求を処理し、拡張可能機能にアクセスし、要求に供するためにアプリケーションを選択するよう構成され得る。アプリケーション起動コンポーネント114は、マニフェスト又はアプリケーションを対応する拡張ポイントにマッピングする他の適切なデータ構造を参照することにより、要求に供するために適切なアプリケーションを識別し得る。次に、アプリケーション起動コンポーネント114は、選択したアプリケーションを起動させ得る。特に、ステップ304は、契約オブジェクトをアプリケーションに伝達する。契約オブジェクトは、契約を識別し、アプリケーションに契約を履行させるのに十分な情報を提供する。例えば、契約オブジェクト116は、オブジェクトに基づきアプリケーション110の初期化を扱う対応するランタイムプラットフォーム118のエントリポイントを通じて伝達され得る。次に、ランタイムプラットフォームは、適切なランタイム環境を設定し、アプリケーションを初期化し、アプリケーションに拡張の実装のための詳細の大部分を渡す。ここで、契約実施と固有コードをランタイムプラットフォームから切り離す分岐アプローチが用いられる。ランタイムプラットフォームは初期化を扱い、アプリケーションは契約オブジェクト116の一部として提供される個々の情報を用いて実施を扱う。このように、ランタイムプラットフォームは、拡張ポイント、契約又は実施の固有の詳細を意識する必要がない。したがって、ランタイムプラットフォーム118は、アプリケーション起動フレームワークをサポートするが、拡張ポイントの追加又は修正が行われるのと並行して必ずしも更新される必要がない。さらに、開発者は、ランタイムプラットフォームの更新を気にせずに、フレームワークの拡張ポイントを生成できる。他方で、幾つかのアプリケーションは、自身で初期化を扱うよう設計されても良く、及び/又はランタイムプラットフォームに依存しない思い切りtothemetalネイティブコードでそのまま記述されても良い。この場合、契約オブジェクト116は、アプリケーション自体に含まれるエントリポイントに直接伝達できる。このアプローチでは、アプリケーションは、それ自体の初期化及び契約オブジェクト116に従う拡張の実装の両方を扱うよう構成され得る。さらに、アプリケーションは、バックグラウンドプロセス及び/又は隠れたウインドウを用いてバックグラウンドタスクを実行するために起動され得る。この場合、特定のウインドウ種類を指定するウインドウパラメータは、アプリケーションに全く渡されなくても良い。別のアプローチでは、ランタイムプラットフォームは、プラットフォームが扱うアプリケーションに代わって、契約及び/又は拡張ポイントの選択を実施するよう構成され得る。このアプローチは、例えば、特定の契約及び/又は拡張ポイントがランタイムプラットフォームに関連するアプリケーションにとって比較的重要であると考えられる場合に用いられ得る。例えば、ランタイムプラットフォームに関連する全てのアプリケーションにとって検索契約が適切であると考えられる場合、ランタイムプラットフォームは、アプリケーションに代わって、検索契約を自動的に実施するよう構成され得る。この場合、ランタイムプラットフォームは、本願明細書に記載の方法で契約を供するために起動されるアプリケーションのように動作し得る。起動されると、アプリケーションは、オペレーティングシステムにより指示されたように契約を履行するために処理を実行し得る。種々の異なる処理が、異なる拡張ポイント112に関連して生じ得る。特に、契約オブジェクト116は、アプリケーションに特定の契約及び契約をどのように扱うかについて知らせる契約ID120及び約詳細112を指定し得る。したがって、アプリケーションは、指定された処理を実行し、アプリケーション起動コンポーネント114結果を返送できる。特に、ステップ306は、契約の履行に成功したか否かを示す応答をアプリケーションから得る。例えば、アプリケーション起動コンポーネント114は応答を受信し処理し、契約を実行するためのアプリケーションによる処理が続く。応答は、少なくとも契約の成功又は失敗を示すよう構成され得る。例えば、応答は、アプリケーションが契約の完了に成功したか否かを示すために用いられるブールパラメータを有し得る。契約が成功しない場合、アプリケーション起動コンポーネント114は、同じアプリケーションによるリトライを開始し、アプリケーションを終了し、アプリケーションのためにエラー処理を開始し、及び/又は利用可能ならば契約を完了するために別の互換性のあるアプリケーションを呼び出し得る。契約が成功した場合、OSは、要求側に成功を知らせる、結果に依存する次の契約を開始する、契約の結果を得る及び/又は他のエンティティに提供する、等のような種々の動作を行い得る。図4は、オペレーティングシステムの拡張ポイントに関連する契約を実行するためにアプリケーションが動作する別の例示的な方法を示す。少なくとも幾つかの実施形態では、方法は、アプリケーション起動フレームワークと互換性のある種々のアプリケーション110及び/又は対応するランタイムプラットフォーム118を有するか又はその他の場合それを利用する図1の例示的なコンピューティング装置102のような、適切に構成されるコンピューティング装置により実施され得る。ステップ400は、エントリポイントを通じる1又は複数の拡張ポイントについてアプリケーションによるサポートを示すために、オペレーティングシステムにアプリケーションのエントリポイントに関して通知する。これは、任意の適切な方法で生じ得る。上述のように、通知は、アプリケーションがインストールされるとき、アプリケーションにより提供され得る。通知は、ユーザがオプション機能をオンにしたとき、機能が最初に使用されるとき、又はアプリケーションが最初に実行されるとき、のようなインストールのほかの他のときに提供されても良い。これらの場合には、OSは、相互作用のコンテキストに基づき、特定の拡張を使用するアプリケーションの能力及び意図を推定できても良い。したがって、OSは、特定の拡張についてアプリケーションを登録できる。アプリケーションは、アプリケーション起動コンポーネント114を通じて、オペレーティングシステムに、アプリケーションが提供できる各拡張ポイント112を通知し得る。アプリケーションは、オペレーティングシステムに、対応する拡張ポイント112に関してアプリケーションの指定接点として機能するエントリポイント204も提供する。エントリポイント204は、アプリケーションを起動して個々の拡張ポイントに供するためにアプリケーション起動コンポーネント114により提供される通信を扱うよう構成される。したがって、アプリケーションにより提供される通知は、アプリケーション起動コンポーネント114が、アプリケーション及びそれらのエントリポイントを拡張ポイントにマッピングするマニフェストを更新及び保持することを可能にする。ステップ402は、拡張ポイントのうちの1つに関連する契約を供するために起動する。起動は、オペレーティングシステムの指示で生じ得る。少なくとも幾つかの場合には、起動は、アプリケーションのランタイムプラットフォームを通じて生じ得る。アプリケーションのインスタンスが既に実行中である場合、既存のインスタンスを使用できる。その他の場合、アプリケーションの新しいインスタンスが生成され得る。ステップ404は、対応するエントリポイントを通じて契約オブジェクトを得る。契約オブジェクトは、前述のように、契約を識別し、アプリケーションがどのように契約を履行すべきかを指定する。特に、契約オブジェクト116は、アプリケーションにより指定されるエントリポイントにより受信され得る。エントリポイントは、アプリケーション自体の一部として又は対応するランタイムプラットフォームにより提供され得る。契約オブジェクト116は、OSにより指示されるようにウインドウを設定することを含む、アプリケーションを初期化するために用いられる起動設定124を有し得る。契約オブジェクトは、拡張可能機能を実装するためにアプリケーションにより用いられる契約ID120及び契約詳細122も有する。契約を履行するために、ステップ406は、契約オブジェクトにより指定される処理を実行する。次に、ステップ408は、処理結果をオペレーティングシステムに伝達する。例えば、契約詳細122の一部として提供される種々のデータパラメータは、対応する契約をどのように実行するかをアプリケーションに知らせ得る。これは、実行されるべき処理ステップ、ファイル名/場所、他パーティとの相互作用のためのURL又はドメイン、データフォーマット、応答指示、契約の実行の際に支援し得る方法/オブジェクト、及びアプリケーションを契約を実装可能にする他の情報、等を指定することを含み得る。したがって、アプリケーションは、契約を実行し、オペレーティングシステムにより規定された方法で拡張可能機能を実装する。契約が完了すると、アプリケーションは、処理結果を含む応答をアプリケーション起動コンポーネント114へ送信し得る。結果は、少なくとも契約の完了に成功したか否かの指示を有する。幾つかのシナリオでは、結果は、データ、、ファイル、リンク、及び/又は契約の履行により生成される他の契約固有情報も有し得る。例えば、検索結果は、検索拡張のためにOSに戻され得る。或いは、変換されたファイルは、フォーマット変換拡張の結果として提供され得る。OSは、必要に応じて結果を用いて更なる処理を開始し例えば、他の契約を実行するためにアプリケーションを呼び出す、及び/又は結果を要求側アプリケーション又は装置に提供し得る。留意すべきことに、幾つかの例では、アプリケーションは、OSに応答を返送しなくても良い。例えば、OSは、明示的応答に加えて又はそれに代えて、契約及び/又はアプリケーション状態に関して問い合わせるために種々の時間にアプリケーションにポーリングするよう構成され得る。さらに、ハングアップするアプリケーションは、適切な応答を提供できない可能性がある。したがって、OSがアプリケーション状態を点検することは、OSが起動されたアプリケーション及び対応する契約の経過を追うことができる別のメカニズムを提供し得る。以上に、例示的なアプリケーション起動技術を検討した。次に、1又は複数の実施形態による例示的なシステムを議論する。<例示的なシステム>図5は、概して500で示す例示的なシステムを示す。システム500は、上述の種々の実施形態を実施できるような1又は複数のコンピューティングシステム及び/又は装置を表す例示的なコンピューティング装置502を有する。コンピューティング装置502は、例えば、サービスプロバイダのサーバ、コンピューティング装置102に関連する装置例えば、クライアント装置、オンチップシステム、及び/又は任意の他の適切なコンピューティング装置若しくはコンピューティングシステムであっても良い。例示的なコンピューティング装置502は、1又は複数のプロセッサ504又は演算装置、1又は複数のメモリ及び/又は記憶コンポーネント508を含み得る1又は複数のコンピュータ可読媒体506、入力/出力I/O装置のための1又は複数の入力/出力I/Oインタフェース510、及び種々のコンポーネント及び装置に互いに通信させるバス512を有する。コンピュータ可読媒体506及び/又は1又は複数のI/O装置は、コンピューティング装置502の一部として含まれるか、又は代替でそれに結合されても良い。バス512は、メモリバス又はメモリ制御部、周辺バス、AGPacceleratedgraphicsport、種々のバスアーキテクチャのうちの任意のものを用いるプロセッサ若しくはローカルバスを含む複数種類のバス構造のうちの1又は複数を表しても良い。バス512は、有線及び/又は無線バスを有しても良い。1又は複数のプロセッサ504は、それらが形成される材料又はそれらで用いられる処理メカニズムにより限定されない。例えば、プロセッサは、半導体及び/又はトランジスタ例えば電子集積回路ICを有しても良い。このような状況では、プロセッサ実行可能命令は、電子的に実行可能な命令であっても良い。メモリ/記憶コンポーネント508は、1又は複数のコンピュータ可読媒体に関連するメモリ/記憶容量を表す。メモリ/記憶コンポーネント508は、RAMrandomaccessmemoryのような揮発性媒体、及び/又はROMreadonlymemory、フラッシュメモリ、光ディスク、磁気ディスク等のような不揮発性媒体を含み得る。メモリ/記憶コンポーネント508は、固定媒体RAM、ROM、固定ハードドライブ等、並びに取り外し可能媒体フラッシュメモリドライブ、取り外し可能ハードドライブ、光ディスク等を含み得る。入力/出力インタフェース510は、ユーザがコマンド及び情報をコンピューティング装置502に入力できるようにし、情報がユーザ及び/又は種々の入力/出力装置を用いる他のコンポーネント若しくは装置に提示されるようにする。入力装置の例は、キーボード、タッチスクリーンディスプレイ、カーソル、制御装置例えばマウス、マイクロフォン、スキャナ、等を有する。出力装置の例は、ディスプレイ装置例えば、モニタ又はプロジェクタ、スピーカ、プリンタ、ネットワークカード、等を有する。種々の技術は、ソフトウェア、ハードウェア固定論理回路、又はプログラムモジュールの一般的文脈で本願明細書に記載され得る。概して、このようなモジュールは、特定のタスクを実行し又は特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、エレメント、コンポーネント、データ構造、等を含む。これらのモジュール及び技術の実装は、特定の形式のコンピュータ可読媒体に格納され又はそれを介して送信されても良い。コンピュータ可読媒体は、コンピューティング装置によりアクセスできる種々の利用可能な1又は複数の媒体を有しても良い。例として、限定ではなく、コンピュータ可読媒体は、コンピュータ可読記憶媒体及び通信媒体を有しても良い。コンピュータ可読記憶媒体は、単なる信号送信、搬送波又は信号自体とは対照的に、情報の永続的及び/又は非一時的記憶を可能にする媒体及び/又は装置を表しても良い。したがって、コンピュータ可読記憶媒体は、非信号担体媒体を表す。コンピュータ可読記憶媒体は、記載の技術の態様を実施するために幾つかの実施形態で用いられ得る、命令を有するハードウェアエレメント、モジュール、及び/又はハードウェア形式で実装される固定装置ロジックも含む。コンピュータ可読記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、論理素子/回路、又は他のデータのような情報の記憶に適する方法又は技術で実装される揮発性及び不揮発性、取り外し可能及び非取り外し可能媒体、及び/又は記憶装置を含む。コンピュータ可読記憶媒体の例は、RAM、ROM、EEPROM、フラッシュメモリ又は他のメモリ技術、CD-ROM、DVDdigitalversatiledisk又は他の光記憶装置、ハードディスク、磁気カセット、磁気テープ、磁気ディスク記憶装置又は他の磁気記憶装置、集積回路若しくはチップのハードウェア素子例えば固定ロジック、他の記憶装置、有形媒体、又は所望の情報を格納するのに適しコンピュータによりアクセスできる適切な製品を含むがこれらに限定されない。通信媒体は、例えばネットワークを介してコンピューティング装置のハードウェアへ命令を送信するよう構成される信号担体媒体を表しても良い。通信媒体は、通常、コンピュータ可読命令、データ構造、プログラムモジュール、又は搬送波、データ信号若しくは他のトランスポート機構のような変調データ信号内の他のデータを具現化しても良い。通信媒体は、任意の情報分配媒体も含む。用語変調データ信号は、1又は複数の特性セットを有する信号を意味し、又は信号内の情報をエンコードするために変更されても良い。例として限定ではなく、通信媒体は、有線ネットワーク又は直接有線接続のような有線媒体、並びに音響、RF、赤外線IRのような無線媒体及び他の無線媒体を含む。上述のうちの任意の組合せも、コンピュータ可読媒体の範囲に包含されるべきである。したがって、ソフトウェア、ハードウェア又はプログラムモジュールは、アプリケーション起動コンポーネント114、オペレーティングシステム108、アプリケーション110及び他のプログラムモジュールを含み、特定形式のコンピュータ可読媒体に具現化された1又は複数の命令及び/又はロジックとして実装されても良い。したがって、本開示の特定のモジュール、機能、コンポーネント及び技術は、ソフトウェア、ハードウェア、ファームウェア及び/又はそれらの組み合わせで実施されてもよい。コンピューティング装置502は、コンピュータ可読媒体に実装されるソフトウェア及び/又はハードウェアモジュールに対応する特定の命令及び/又は機能を実装するよう構成されても良い。この命令及び/又は機能は、アプリケーション起動のための技術並びに他の技術を実装するために、1又は複数の製品例えば、1又は複数のコンピューティング装置502及び/又はプロセッサ504により実行可能/動作可能であっても良い。このような技術は、本開示の例示的な手順を含むがこれに限定されない。したがって、コンピュータ可読媒体は、本開示の1又は複数の装置により実行されると、種々のアプリケーション起動技術を生じさせる命令を格納し又はその他の場合には提供するよう構成されても良い。<まとめ>アプリケーション起動技術が記載された。以上によると、オペレーティングシステムOSは、関連する契約を通じてサービス可能な種々の拡張ポイントを組み込み得る。増築可能な特徴は、OSの統合機能として定められ、OSにより集中的に制御される。しかしながら、増築可能な機能の特定の実装は、契約を通じてアプリケーションに降ろされ得る。機能の実装がアプリケーションコードにより処理される方法は、オブジェクト指向アプローチを用いて、中央アプリケーション起動コンポーネントを通じて管理及び調整され得る。本発明の主題は構造的特徴及び/又は方法論的動作に特有の言葉で記載されたが、本発明の主題は、特許請求の範囲に定められる上述の特定の特徴又は動作に限定されないことが理解されるべきである。むしろ、上述の特定の特徴及び動作は、特許請求の範囲の実施の例示的携帯として開示されたものである。