(57)【特許請求の範囲】
【請求項１】
オペレーティングシステムにより、コンピューティング装置の異なるアプリケーション及びランタイムプラットフォームに渡りアプリケーション起動のための共通経路を提供するために、アプリケーション起動コンポーネントを公開するステップと、
前記アプリケーション起動コンポーネントを介して、アプリケーションと前記オペレーティングシステムとの間で生成された契約を通じて前記アプリケーションにより提供可能な前記オペレーティングシステムの統合機能として提供される拡張ポイントをサポートするために、前記アプリケーションを登録するステップと、
前記アプリケーション起動コンポーネントを介して、１つの前記拡張ポイントの特定の契約を実行するために、前記の登録されたアプリケーションの中から選択されたアプリケーションを呼び出すステップと、
を有し、
前記アプリケーションを呼び出すステップは、前記アプリケーションに関連するランタイムプラットフォームと通信するステップであって、前記ランタイムプラットフォームに、
１又は複数の契約オブジェクトの中の、前記アプリケーション起動コンポーネントにより提供される起動設定に基づき、前記アプリケーションを初期化し、
前記契約のために実行されるべき処理動作を有する情報を前記アプリケーションに渡し、及び／又は前記契約を実行するために使用できる方法へのアクセスを提供する、
ようにさせる、ステップを有する、コンピュータにより実施される方法。
【請求項２】
前記アプリケーション起動コンポーネントは、前記オペレーティングシステムにより指示されたように前記拡張ポイントを供するためにアプリケーションを起動するオブジェクト指向プロトコルを実装する、請求項１に記載のコンピュータにより実施される方法。
【請求項３】
前記アプリケーション起動コンポーネントは、少なくとも生成すべきウインドウの種類及び該ウインドウの位置を指定するオブジェクトを前記アプリケーションに渡すことにより、前記拡張ポイントを供するために前記アプリケーションによるウインドウ生成を制御する、請求項１に記載の方法。
【請求項４】
前記アプリケーションを呼び出すステップは、前記アプリケーションに自身を初期化し前記１つの拡張ポイントを実装させるために、前記１つの拡張ポイントに対応する前記アプリケーションの指定されたエントリポイントを通じて、前記アプリケーションと直接通信するステップを有する、請求項１に記載のコンピュータにより実施される方法。
【請求項５】
前記アプリケーションを呼び出すステップは、前記アプリケーションの指定されたエントリポイントに前記１又は複数の契約オブジェクトを伝達するステップを有する、請求項１に記載のコンピュータにより実施される方法。
【請求項６】
前記１又は複数の契約オブジェクトは、前記特定の契約を識別する契約識別子と、前記アプリケーションにより前記１つの拡張ポイントの実装を制御する契約詳細とを更に有する、請求項５に記載のコンピュータにより実施される方法。
【請求項７】
前記アプリケーションを登録するステップは、前記アプリケーションのインストールと関連して生じる、請求項１に記載のコンピュータにより実施される方法。
【請求項８】
前記アプリケーションを登録するステップは、
サポートされる拡張ポイントのために指定されたエントリポイントを示す通知を前記アプリケーションから得るステップと、
前記アプリケーションの前記指定されたエントリポイントを対応する拡張ポイントにマッピングするためにマニフェストを更新するステップと、
を有する、請求項１に記載のコンピュータにより実施される方法。
【請求項９】
前記アプリケーション起動コンポーネントは、プラットフォーム不可知の、言語とは独立の通信プロトコルを用いて、アプリケーションのために複数の異なるランタイムプラットフォームをサポートする、請求項１に記載のコンピュータにより実施される方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーション起動技術に関する。
【背景技術】
【０００２】
従来、特定のコンピューティングシステムのアプリケーションは大部分が自動である。アプリケーションは幾つかのオペレーティングシステム機能を利用し、ユーザのために特定のタスクを実行するためにオペレーティングシステムにより起動され得るが、オペレーティングシステムは、アプリケーションがどのように機能を実施しタスクを実行するかに関して殆ど又は全く制御を有しない。さらに、異なるアプリケーション、特に異なるランタイムプラットフォームに関連するアプリケーションは、ウインドウ生成、レイアウト及び順序付け、色スキーム、フォント、等のような特徴を個々に制御し得る。したがって、アプリケーション実施に対する従来の協調性のないアプローチは、ユーザがオペレーティングシステムに関して全体的な建設的なユーザ経験を有することを妨げ得る支離滅裂な「外観及び雰囲気」を生成してしまう。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明は、アプリケーション起動技術を提供する。
【課題を解決するための手段】
【０００４】
アプリケーション起動のための技術が記載される。オペレーティングシステム（ＯＳ）は、関連する契約（例えば、拡張ポイントにより表される機能の実装を制御する仕様）を通じてサービス可能な種々の拡張ポイントを組み込むよう構成され得る。増築可能な特徴は、ＯＳの統合機能として定められ、ＯＳにより集中的に制御される。しかしながら、拡張可能機能の特定の実装は、契約を用いてアプリケーションに降ろされ得る（offload）。例えば、ＯＳは、特定の契約を実行するためにアプリケーションを呼び出すオブジェクト指向アプローチを用いる中央アプリケーション起動コンポーネントを有し又はそれを含み得る。起動中、ＯＳは、指定されたアプリケーションを起動し及びアプリケーションにＯＳにより指定された方法で契約を提供させるために、特定の契約に関する情報（例えば、契約オブジェクト又は他の適切なデータ）を渡し得る。このように、契約がアプリケーションコードにより処理される方法は、異なるアプリケーション及びランタイムプラットフォームをサポートする中央アプリケーション起動コンポーネントを通じて管理及び調整され得る。あるアプローチでは、ランタイムプラットフォームは、ＯＳから提供される契約オブジェクトに基づきアプリケーションの初期化を処理するよう動作し、アプリケーションコード自体を通じて拡張実装の大部分を終える。
【０００５】
この要約は、詳細な説明で後述する概念の選択を簡単な形式で紹介する。この要約は、請求の範囲の主要な特徴又は基本的特徴を特定するものではなく、請求の範囲の範囲を限定するものでもない。
【図面の簡単な説明】
【０００６】
同一の参照符号は、同様の特徴を表すために図面を通じて使用される。
【図１】１又は複数の実施形態に従って本願明細書に記載の種々の原理が用いられ得る動作環境を示す。
【図２】１又は複数の実施形態によるアプリケーション起動の例示的な動作シナリオを示す。
【図３】１又は複数の実施形態による例示的な方法のステップを示すフロー図である。
【図４】１又は複数の実施形態による別の例示的な方法のステップを示すフロー図である。
【図５】１又は複数の実施形態を実施するために用いられ得る例示的なコンピューティングシステムを示す。
【発明を実施するための形態】
【０００７】
＜概要＞
コンピューティングシステム内でアプリケーションを実装する従来の協調性のないアプローチは、ユーザがオペレーティングシステムに関して全体的な建設的なユーザ経験を有することを妨げ得る支離滅裂な「外観及び雰囲気」を生成してしまう。アプリケーションは幾つかのオペレーティングシステム機能を利用できるが、オペレーティングシステムは、アプリケーションが実際にどのように従来のアプローチで機能を実装するかに関して殆ど又は全く制御を有しない。
【０００８】
本願明細書に、オペレーティングシステムでアプリケ―ションの統合を実現するアプリケーション起動技術が記載される。オペレーティングシステム（ＯＳ）は、ＯＳとアプリケーションとの間に形成される関連する契約（例えば、拡張ポイントにより表される機能の実装を制御する仕様）を通じてサービス可能な種々の拡張ポイントを組み込むよう構成され得る。増築可能な特徴は、ＯＳにより提供される統合機能として定められ、ＯＳにより集中的に制御される。しかしながら、拡張可能機能の特定の実装は、契約に従ってアプリケーションに降ろされ得る。
【０００９】
例えば、ＯＳは、ＯＳにより公開され、特定の契約を指定された方法で実行するためにアプリケーションを呼び出すオブジェクト指向アプローチを用いる中央アプリケーション起動コンポーネントを有し又はそれを含み得る。起動中、ＯＳは、指定されたアプリケーションを起動し及びアプリケーションにＯＳにより指定された方法で契約を供させるために、特定の契約に関する情報（例えば、契約オブジェクト又は他の適切なデータ）を渡し得る。このように、アプリケーションコードによる契約の処理は、中央アプリケーション起動コンポーネントを通じて管理され得る。その結果、異なるアプリケーションがＯＳと統合され、ＯＳに対して並びに異なるアプリケーション及びプラットフォームに渡り一貫した協調したユーザ経験を生成する。
【００１０】
以下の議論では、「動作環境」と題する節が設けられ、１又は複数の実施形態が用いられ得る１つの環境を説明する。これに続き、「アプリケーション起動技術」と題する節は、１又は複数の実施形態による例示的な実装の詳細を説明する。次に、「例示的な方法」と題する節は、１又は複数の実施形態による例示的な方法を説明する。最後に、「例示的なシステム」と題する節は、１又は複数の実施形態を実施するために用いられ得る例示的なコンピューティングシステム及び装置を説明する。
【００１１】
＜動作環境＞
図１は、１又は複数の実施形態による動作環境を概して１００で示す。環境１００は、１又は複数のプロセッサ１０４と、１又は複数のコンピュータ可読媒体１０６と、オペレーティングシステム１０８と、コンピュータ可読媒体に存在しプロセッサにより実行可能な１又は複数のアプリケーション１１０とを有するコンピューティング装置１０２を有する。１又は複数のプロセッサ１０４は、アプリケーション１１０からコンピュータプログラム命令を読み出し実行し、職場生産性、電子メール、メディア管理、印刷、ネットワーキング、ウェブ閲覧、等を含むがこれらに限定されない広範な機能をコンピューティング装置１０２に提供しても良い。アプリケーション１１０に関連する種々のデータ及びプログラムファイルも含まれ、それらの例は、オフィス文書、マルチメディアファイル、電子メール、データファイル、ウェブページ、ユーザプロファイル及び／又はプレファレンスデータ等を含む。一般に、アプリケーション及び他のプログラムモジュールは、ローカルアプリケーション、ホスト装置（例えばサーバ又はピア装置）を通じて動作するウェブベースアプリケーション、及び／又はクライアント−サーバ若しくはネットワークを介した（例えば、「クラウドの」）他の複数装置の相互作用を通じて動作する分散型アプリケーションを含み得る。
【００１２】
コンピューティング装置１０２は、例として且つ限定ではなくデスクトップコンピュータ、ポータブルコンピュータ、のような任意の適切なコンピューティングシステム及び／又は装置として、タブレット若しくは薄型コンピュータ、ＰＤＡ（personal  digital  assistant）のようなハンドヘルドコンピュータ、携帯電話機、セットトップボックス、等として実施され得る。コンピューティング装置１０２を含む種々のシステム及び／又は装置を表し得るコンピューティングシステムの一例は、図５に示され以下に説明される。
【００１３】
コンピュータ可読媒体は、例として且つ限定ではなく、通常コンピューティング装置に関連付けられるあらゆる形式の揮発性及び不揮発性メモリ及び／又は記憶媒体を含み得る。このような媒体は、ＲＯＭ、ＲＡＭ、フラッシュメモリ、ハードディスク、取り外し可能媒体等を有し得る。コンピュータ可読媒体は、「コンピュータ可読記憶媒体」及び「通信媒体」の両方を含み得る。これらの例は、図５の例示的なコンピューティングシステムの議論で見られる。
【００１４】
オペレーティングシステム１０８は、オペレーティングシステム１０８に統合された拡張可能機能を表す拡張ポイント１１２も有する。言い換えると、拡張ポイントは、個々の拡張ポイントをサポートする異なるアプリケーション１１０により実装され得る拡張可能オペレーティングシステム機能を提供する。ＯＳは、拡張ポイントの機能セットを定め、機能の実装を異なるアプリケーション１１０に降ろすことができる。拡張ポイント１１２は、種々の方法で構成され得る。例として且つ限定ではなく、拡張ポイントは、検索クエリ、アプリケーション間のデータ共有、ファイル関連付け、ファイルストリーミング、外部装置操作、メディア自動再生、アプリケーション起動、ウェブサイト相互作用、起動状態制御、プロトコル処理、ネットワーク設定、ハードウェア／装置固有設定機能、インターエクステンション通信、等のような機能を提供し得る。
【００１５】
拡張ポイント１１２の機能は、種々のアプリケーション１１０により種々の方法で実装され、アプリケーション１１０の幾つかの特徴をオペレーティングシステム１０８に効率的に統合できる。したがって、拡張ポイントは、異なるアプリケーションがコード、インタフェース及び異なるアプリケーションの特定の能力を通じて対応するオペレーティングシステム機能を拡張及び調整するために使用し提供し得る集中メカニズムを表す。拡張ポイントにより表される機能の実装を制御するために用いられる仕様は、本願明細書では契約と称される。契約は、拡張機能を使用する要求に応答して、ＯＳとアプリケーションとの間で生成され得る。契約に従って、次にオブジェクト又は他の適切なデータは、アプリケーションに契約を履行させるために、契約／拡張ポイントに対応する適切なアプリケーションへ転送され得る。言い換えると、アプリケーションが拡張ポイントをサポートするという指示をＯＳに提供する該アプリケーションは、拡張ポイントに関する契約を処理するために、ＯＳにより起動され得る。
【００１６】
上述の方法で、少なくとも一部の特定の詳細及び拡張可能ＯＳ機能のためのコードは、拡張可能機能を最終的に実装するアプリケーションに降ろされ得る。一般的に、拡張ポイントは、アプリケーション及びプラットフォームについて知ることができない。したがって、異なる種類のアプリケーション／プラットフォームが、同じ拡張ポイントを実装し及び提供するために用いることができる。異なる種類のアプリケーション／プラットフォームに渡る実装は、共通の中央コンポーネントを用いて生じ得る。共通の中央コンポーネントを通じ、ＯＳは、異なるアプリケーション／プラットフォームに指示し、アプリケーション／プラットフォームが拡張ポイント１１２を提供する方法を制御できる。したがって、拡張可能機能の幾つかの特徴はサービスアプリケーションに降ろされるが、ＯＳは、機能に関する制御を保持し、中央コンポーネントを通じて拡張ポイントのための契約をどのように実行するかをアプリケーションに指示できる。
【００１７】
特に、コンピューティングシステム１０２は、コンピュータ可読媒体に存在しプロセッサにより実行可能なアプリケーション起動コンポーネント１１４を更に有する。アプリケーション起動コンポーネント１１４は、図示のように独立型アプリケーションとして又は別のアプリケーションのコンポーネントとして実装され得る。例えば、アプリケーション起動コンポーネント１１４は、オペレーティングシステム１０８の統合コンポーネントとして提供され得る。
【００１８】
アプリケーション起動コンポーネント１１４は、共通の中央コンポーネントを表す。共通の中央コンポーネントは、ＯＳにより公開され、拡張ポイント１１２及び関連する契約に関してアプリケーション１１０に指示するために用いられ得る。特に、アプリケーション起動コンポーネント１１４は、アプリケーションを登録するために公開され、拡張ポイントを提供し、登録されたアプリケーションの中から選択し、及び／又はアプリケーションを呼び出して契約を履行する（例えば、拡張可能ＯＳ機能の特定の呼び出し）。アプリケーション起動コンポーネント１１４は、種々のアプリケーション１１０による拡張ポイント１１２の実装に関する制御をＯＳに保持させる。アプリケーション起動コンポーネント１１４は、対応するアプリケーションのために実行環境を提供する、コンピューティング装置１０２の多くの異なる種類のアプリケーション及び／又は異なるランタイムプラットフォーム１１８をサポートするよう構成され得る。コンピューティング装置１０２のランタイムプラットフォーム１１８の例は、少数の例を挙げると、ＪＡＶＡ（登録商標）ランタイム環境（ＪＲＥ）、Ａｄｏｂｅ（登録商標）Ｆｌａｓｈ（登録商標）、Ｍｉｃｒｏｓｏｆｔ（登録商標）、ＮＥＴフレームワーク、及びＭｉｃｒｏｓｏｆｔ  Ｓｉｌｖｅｒｌｉｇｈｔ（登録商標）を含む。サポートされるアプリケーションは、ＯＳ及び／又はアプリケーション起動コンポーネント１１４と相互作用するよう構成される適切なランタイムプラットフォーム１１８で実行され得る。ランタイムプラットフォームがＯＳ及び／又はアプリケーション起動コンポーネント１１４と相互作用可能に設定されると、ランタイムプラットフォームは、新しい更新をサポートするようランタイムの更なる改訂を要求することなく、既存の拡張ポイント及び拡張ポイントに対する将来の更新の両方に使用される準備が整う。
【００１９】
少なくとも幾つかの実施形態では、アプリケーション起動コンポーネント１１４は、オブジェクト指向アプローチを実装し、契約及び拡張ポイント１１２に関してアプリケーションと通信し及び指示し、及び／又はその他の場合、オペレーティングシステム１０８の一部として提供される拡張ポイントを管理する。例えば、オブジェクト指向アプローチが用いられるとき、アプリケーション起動コンポーネント１１４は、契約オブジェクト１１６を提供し又はそれを用いて、アプリケーション１１０を起動し契約を履行するよう指示し得る。オブジェクト指向アプローチは、オブジェクト指向アプローチで利用可能な豊富なオブジェクトと比べて面倒で更新が困難で且つ比較的厳格且つ単純なコマンドを提供する従来のストリングに基づくコマンドラインパラメータの代わりに用いることができる。例えば、豊富なオブジェクトは、少数の例を挙げると、２方向通信の提供、外部プロセスからのデータ調達、共有データアクセスのためのアプリケーション間の仲裁オブジェクトの提供のような、コマンドラインパラメータを用いては可能でない能力を提供できる。
【００２０】
契約オブジェクト１１６は、互換性のあるアプリケーションによりサポートされる期待される一貫した通信プロトコルに従って設計され得る。通信プロトコルは、不可知の（agnostic）、異なるコンピューティング言語、プロトコル及び技術を内部で使用し得る異なるエンティティ及び環境間の通信方法と独立したコンピューティング言語を提供するよう構成される。互換性のあるアプリケーションは、オブジェクトのために用いられる共通フォーマットを理解でき、必要に応じて、オブジェクトを特定のプラットフォーム／環境に適するアプリケーション固有フォーマットに変換する。幾つかの実施形態で用いられ得る適切なプロトコルの一例は、Ｍｉｃｒｏｓｏｆｔ（登録商標）ＣＯＭ（Component  Object  Model）である。しかしながら、不可知の、異なるエンティティ及び／又は環境間の通信と独立な言語を可能にする任意の適切なプロトコルが、本願明細書に記載のアプリケーション起動フレームワークを実施するために用いられ得る。
【００２１】
契約オブジェクト１１６（又は他の等価なオブジェクト、データ及び／又はメッセージ）は、アプリケーション１１０に直接に、及び／又は幾つかの場合には、対応する契約を提供するために呼び出されるアプリケーションに対応する個々のランタイムプラットフォーム１１８を通じて伝達され得る。契約オブジェクト１１６は、契約に関する任意の適切な情報を受信アプリケーションに渡すよう構成され得る。概して、契約オブジェクト１１６（又はその他）を介して渡される情報は、指定されたアプリケーションを起動し、該アプリケーションがＯＳにより指定された方法で対応する契約を提供可能にするよう構成される。図１に示すように、契約オブジェクト１１６は、受信アプリケーションへの契約を特定する契約ＩＤ１２０と、契約の概略及び／又は固有データを記述する契約詳細１２２と、どのように受信アプリケーションが起動し及び／又は契約を処理するために処理を実行するかを制御するために用いられる起動設定１２４とを有し得る。アプリケーション起動技術の上述の及び他の特徴に関する更なる詳細は、以下の図面に関連して説明される。
【００２２】
以上に、例示的な動作環境を説明した。次に、１又は複数の実施形態によるアプリケーション起動の例示的な技術を検討する。
【００２３】
＜アプリケーション起動技術＞
以上によると、オペレーティングシステム（ＯＳ）は、関連する契約を通じて提供可能な種々の拡張ポイントを組み込み得る。増築可能な特徴は、ＯＳの統合機能として定められ、ＯＳにより集中的に制御される。しかしながら、拡張可能機能の特定の実装は、契約を通じてアプリケーションに降ろされ得る。アプリケーションコードによる実装の処理は、オブジェクト指向アプローチを用いて、中央アプリケーション起動コンポーネントを通じて管理及び調整され得る。
【００２４】
アプリケーション起動技術に関する更なる詳細は、図２に示す概して２００で示す例示的な動作シナリオに関連して説明される。特に、図２は、アプリケーション起動を処理するためにＯＳにより公開され得るアプリケーション起動コンポーネント１１４に関する幾つかの例示的な詳細を示す。図２に示すように、オペレーティングシステム１０８は、要求２０２を受信し得る。要求２０２は、拡張ポイントにより提供される機能を使用しようとしているエンティティ（例えば、アプリケーション、装置、ユーザ又はコンポーネント）から得られ得る。言い換えると、要求は、拡張可能機能にアクセスする要求である。本例では、オペレーティングシステム１０８は、要求２０２を処理し及びその他の場合にはＯＳにより提供される拡張可能機能を管理するよう構成されるアプリケーション起動コンポーネント１１４を組み込む。勿論、アプリケーション起動コンポーネント１１４は、代替で、上述のようにＯＳとは別個のコンポーネントとして提供されても良い。
【００２５】
要求２０２に応答して、アプリケーション起動コンポーネント１１４は、要求に供するためにアプリケーションを選択するよう構成され得る。あるアプローチでは、要求は、拡張可能機能を実装すべき特定のアプリケーションを指定できる。追加又は代替で、互換性のあるアプリケーションは、拡張可能機能をサポートするアプリケーションのグループの中から選択され得る。例えば、アプリケーションは、アプリケーションがサポートし提供できる個々の拡張ポイントに関してＯＳに登録し又はそれを通知し得る。したがって、ＯＳは、マニフェスト、データベース、テーブル又は異なる拡張ポイントにアプリケーションをマッピングするよう構成される他の適切なデータ構造を保持し、それらにアクセスし、又はそれらを使用できる。このマッピングに基づき、ＯＳは、要求２０２に対応する特定の拡張ポイントを提供する能力を示した全てのアプリケーションをエミュレートできる。少なくとも幾つかの実施形態では、要求に供すべき可能なアプリケーションのリストは、選択のために要求側に公開され得る。別のアプローチでは、アプリケーション起動コンポーネント１１４は、プリファレンスリスト、規定の選択、ランク付け、コミュニティフィードバック及び／又は他の適切な選択基準を用いて、自身で（例えば、要求側による明示的選択の助けを有しないで）アプリケーションを選択するよう構成され得る。概して、前述の例の組合せを含む任意の適切な技術及び／又は経験則は、どのアプリケーションが要求２０２に応答して起動すべきかを決定するために用いられ得る。
【００２６】
いずれにしても、アプリケーション起動コンポーネント１１４は、要求２０２に供するためにアプリケーションを識別及び／又は選択する。図２に示すように、アプリケーションは、対応するランタイムプラットフォーム１１８により実装されても、又はそうでなくても良い。アプリケーション起動コンポーネント１１４は、要求を履行するために選択されたアプリケーションを起動するよう動作し得る。特に、要求２０２は、アプリケーション起動コンポーネント１１４に、拡張可能機能を実装するためにアプリケーションとの契約を開始させる。例えば、アプリケーション起動コンポーネント１１４は、選択されたアプリケーションに伝達するために契約オブジェクト１１６（又は複数の契約オブジェクト）を生成し得る。１又は複数の契約オブジェクト１１６は、アプリケーション起動コンポーネント１１４により適切なアプリケーション１１０に渡され、契約を完了するためにアプリケーションにより用いられる種々の情報を提供する。この情報は、契約ＩＤ１２０と、特定の契約についての契約詳細１２２と、契約が実行される方法、どれが別個のオブジェクトとして提供されるか及び／又は単一の契約オブジェクトを用いるかを制御するための起動設定１２４とを有する。
【００２７】
より詳細には、契約ＩＤ１２０は、実行されるべき特定の契約をアプリケーションに伝達するために用いられる。拡張ポイント１１２と同様に、異なる契約は、検索クエリ、アプリケーション間のデータ共有、ファイルストリーミング、外部装置操作、アプリケーション起動、ウェブサイト相互作用、起動状態制御等のような異なる機能に関連し得る。
【００２８】
アプリケーションは、契約ＩＤ１２０を用いて、異なる種類の契約を区別し、契約オブジェクト１１６により渡された残りの情報をどのように解釈し処理するかを理解できる。したがって、アプリケーションは、契約ＩＤにより指定される契約オブジェクト１１６に対応する特定の契約に依存して異なる方法で、契約オブジェクト１１６を扱い、翻訳し及び／又は処理できる。例えば、契約オブジェクトと共に渡される同一の引数は、契約ＩＤに依存して異なるように解釈され扱われ得る。少なくとも幾つかの実施形態では、契約は、異なる種類の契約に対応するクラスに配列され得る。この場合、契約ＩＤも、契約に対応する契約クラスを伝達するために用いられ得る。
【００２９】
契約詳細１２２は、実行すべき契約に関する固有情報を提供する。これは、パラメータ、リンク、ファイル名、及び契約を実行するために用いられる他のデータを有し得る。契約詳細１２２も、契約のために実行されるべき特定の処理動作を指定し、及び／又は契約を実行するために用いられ得る方法へのアクセスを提供できる。例として且つ限定ではなく、検索クエリテキストは、検索契約に関連して提供され得る。別の例では、ファイルパス又はストリームは、ファイルストリーミング契約に関連して提供され得る。出力フォルダ位置も提供されても良い。更に別の例では、ＵＲＬ（uniform  resource  locator）又はウェブサイトアドレスは、ファイル投稿契約に関連して提供され得る。ファイル投稿契約の詳細は、写真を共有サイトに投稿する前に写真の解像度を減少させるような再フォーマット化動作も指定しても良い。
【００３０】
起動設定１２４は、アプリケーションにどのように契約の履行を開始するかを知らせるパラメータを有する。起動設定１２４は、所与の契約を扱うために使用すべきアプリケーション又はランタイムの既存のインスタンスも指定できる。起動設定１２４は、アプリケーション及び／又はランタイムプラットフォーム１１８の一方又は両方を制御するよう構成され得る。起動設定１２４は、提示特徴、アプリケーション状態、初期化設定、及びアプリケーションが契約に参加できるようにアプリケーションを指定された状態にどのように初期化するかを指定する他の設定を有し得る。
【００３１】
例えば、起動設定１２４は、アプリケーションのウインドウ生成を制御するために指定されるウインドウ生成パラメータを有し得る。契約オブジェクトと共に渡されるウインドウ生成パラメータは、ＯＳ又は他のアプリケーションにより用いられるユーザインタフェースに渡って外観及び雰囲気の連続性を提供するために用いられ得る。このように、異なるアプリケーションのウインドウは、協調され、ＯＳのユーザインタフェースの一部にすっかり没入して見える。あるいは、しかしながら、ほかにも、ＯＳはウインドウのレイアウト、順序及び配置を選択する。ウインドウ生成パラメータは、アプリケーションウインドウの生成のタイミング、選択されたスクリーン位置へのウインドウの配置、及び／又は色、フォント、グラフィック等のような視覚的特徴を制御するよう構成され得る。さらに、ウインドウ生成パラメータは、異なる利用可能オプションの中から生成すべきウインドウの種類を指定するために用いられ得る。ウインドウ種類のオプションは、少数の例を挙げると、フルサイズ／独立型ウインドウ、埋め込み型又は別のアプリケーションＵＩ内に配置された収容型ウインドウ、外部装置への出力のためのウインドウ、隠れたウインドウ（例えば、バックグラウンドプロセス）、又はミニモードウインドウを有し得る。したがって、ウインドウ生成パラメータは、契約にＵＩに対する固有制御を可能にし、適正な場所で開始されＯＳ及び／又は他のアプリケーションと協調した外観及び雰囲気を有する適切な種類のウインドウの生成を指定する。
【００３２】
あるアプローチでは、起動設定１２４は、ランタイムプラットフォーム１１８に向けられる。ランタイムプラットフォーム１１８は、設定を受信して、ウインドウ生成パラメータ及び／又は他の設定により定められた適切な状態で対応するアプリケーションを起動するために用いる。契約ＩＤ及び契約詳細のような契約オブジェクトに含まれる他の情報は、アプリケーションコード自体に渡される。アプリケーションコードは、契約の実際の履行を処理する。このアプローチでは、ランタイムプラットフォーム１１８は、主にアプリケーション初期化に関するタスクを扱うために、アプリケーション起動に含まれる。ランタイムプラットフォーム１１８は、契約の細目又はＯＳにより提供される拡張ポイントを知らずに、これらのタスクを実行できる。ランタイムプラットフォーム１１８は拡張ポイントを意識しないので、フレームワークは、アプリケーションがランタイムプラットフォーム１１８を変更することなく利用できる新しい拡張ポイントの開発及び追加を可能にする。したがって、新しい拡張は、装置により用いられ得る種々のランタイムプラットフォーム１１８の修正なしに、開発され使用され得る。ランタイムは、単に、契約オブジェクトに基づきアプリケーションの初期化を処理するよう動作し、アプリケーションコード自体を通じて拡張実装の大部分を終える。
【００３３】
したがって、アプリケーションを起動するために、アプリケーション起動コンポーネント１１４は、契約オブジェクト１１６を、アプリケーションにより指定されるエントリポイント２０４に伝達する。通信は、アプリケーションと直接に、又は特定のランタイム環境で実施されるアプリケーションのための仲介としてランタイムプラットフォーム１１８を通じて生じ得る。種々の拡張ポイント／契約のためのアプリケーションのエントリポイント２０４は、アプリケーションが個々の拡張ポイント／契約のサポートを示すためにＯＳに登録し又はその他の場合ＯＳに通知するとき、指定され得る。エントリポイント２０４は、対応するアプリケーションのために契約ポイントを提供する。契約ポイントを通じて、アプリケーション起動コンポーネント１１４は、アプリケーションと相互作用し、アプリケーションを呼び出し及び／又はアプリケーションを起動できる。
【００３４】
エントリポイントは、特定の方法、制御、フォーム、ウェブページ、及び／又は契約オブジェクト１１６及び／又は対応する契約を扱うよう設計されるアプリケーション（又はランタイム）の他の適切なコンポーネントに対応し得る。エントリポイント２０４は、契約オブジェクト１１６のフォーマットを理解し、オブジェクトのアプリケーション固有フォーマットへの変換を扱い得る。例えば、エントリポイント２０４は、オブジェクト、メッセージ、及び／又はアプリケーション起動コンポーネント１１４により用いられる、不可知のコンピューティング言語とは独立のプロトコルに従って通信される他のデータを扱うよう構成され得る。特に、契約オブジェクトに作用するアプリケーションの単一の方法が、アプリケーションの一般的エントリポイントとして指定され得る。これは漏斗として動作し、この漏斗を通じて、契約オブジェクト１１６により伝達される種々の情報がアプリケーションに渡される。方法は、アプリケーションに、契約を履行するために拡張ポイントに参加し始めるよう知らせる。したがって、１つの共通のエントリポイントが、次にアプリケーションに渡されるオブジェクト指向コンポーネントに対して動作を実行する能力を有するアプリケーションに対して指定され得る。
【００３５】
契約オブジェクト１１６がエントリポイントを通じて受信されると、契約オブジェクト１１６は、エントリポイントに、対応する契約を履行するためにアプリケーションを起動させアプリケーションによる処理を開始する。処理は、ＯＳの指示で、且つ契約詳細１２２及び／又は起動設定１２４を通じて契約オブジェクト１１６により指定された方法で生じる。
【００３６】
処理に続いて、アプリケーションは、アプリケーション起動コンポーネント１１４に返送するために応答２０６を形成し得る。応答は、少なくとも契約の完了に成功したか否かの指示を含む、アプリケーションによる契約の実行の結果を反映する。アプリケーション起動技術の上述の及び他の特徴に関する更なる詳細は、以下の例示的な方法に関連して説明される。
【００３７】
＜例示的な方法＞
以下の節では、１又は複数の実施形態に従って実施され得るアプリケーション起動技術を説明するフロー図を議論する。以下に記載する例示的な方法は、適切なハードウェア、ソフトウェア、ファームウェア又はそれらの任意の組み合わせに関連して実施され得る。
【００３８】
図３は、オペレーティングシステムの拡張ポイントに関連する契約を実行するために、オペレーティングシステムがアプリケーションを起動し得る例示的な方法を示す。少なくとも幾つかの実施形態では、方法は、アプリケーション起動コンポーネント１１４を有するか又はその他の場合それを利用する図１の例示的なコンピューティング装置１０２のような、適切に構成されるコンピューティング装置により実施され得る。
【００３９】
ステップ３００は、装置のオペレーティングシステムにより提供される拡張ポイントにアプリケーションを登録する。あるアプローチでは、種々の拡張ポイントをサポートするアプリケーションは、アプリケーションインストールプロセスの一部としてオペレーティングシステムに登録するよう構成され得る。アプリケーションによる特定の拡張ポイントへの登録は、ＯＳに、アプリケーションが拡張ポイントに供するよう構成されることを通知する。アプリケーションは、指定された拡張ポイントに供するためにＯＳに登録するために、インストールのほかに通知を提供し得る。
【００４０】
登録は、アプリケーション起動コンポーネント１１４を通じて生じ得る。アプリケーション起動コンポーネント１１４は、異なるアプリケーション及びランタイムプラットフォームに渡りアプリケーション起動のための共通経路を提供するために、オペレーティングシステムにより公開される。特に、アプリケーション起動コンポーネント１１４は、アプリケーション識別子（ＡｐｐＩＤ）を割り当て、異なるアプリケーションについての登録のマニフェストを保持し得る。マニフェストは、ＡｐｐＩＤを個別に個々の拡張ポイントに一致させるよう構成される。したがって、マニフェストは、拡張ポイントを、登録されることによりアプリケーションが拡張ポイントに供することができると示す異なるアプリケーションにマッピングする。
【００４１】
ステップ３０２は、拡張ポイントに関連する契約を供するためにアプリケーションを呼び出す。例えば、起動コンポーネント１１４は、要求を処理し、拡張可能機能にアクセスし、要求に供するためにアプリケーションを選択するよう構成され得る。アプリケーション起動コンポーネント１１４は、マニフェスト又はアプリケーションを対応する拡張ポイントにマッピングする他の適切なデータ構造を参照することにより、要求に供するために適切なアプリケーションを識別し得る。次に、アプリケーション起動コンポーネント１１４は、選択したアプリケーションを起動させ得る。
【００４２】
特に、ステップ３０４は、契約オブジェクトをアプリケーションに伝達する。契約オブジェクトは、契約を識別し、アプリケーションに契約を履行させるのに十分な情報を提供する。例えば、契約オブジェクト１１６は、オブジェクトに基づきアプリケーション１１０の初期化を扱う対応するランタイムプラットフォーム１１８のエントリポイントを通じて伝達され得る。次に、ランタイムプラットフォームは、適切なランタイム環境を設定し、アプリケーションを初期化し、アプリケーションに拡張の実装のための詳細の大部分を渡す。ここで、契約実施と固有コードをランタイムプラットフォームから切り離す分岐アプローチが用いられる。ランタイムプラットフォームは初期化を扱い、アプリケーションは契約オブジェクト１１６の一部として提供される個々の情報を用いて実施を扱う。このように、ランタイムプラットフォームは、拡張ポイント、契約又は実施の固有の詳細を意識する必要がない。したがって、ランタイムプラットフォーム１１８は、アプリケーション起動フレームワークをサポートするが、拡張ポイントの追加又は修正が行われるのと並行して必ずしも更新される必要がない。さらに、開発者は、ランタイムプラットフォームの更新を気にせずに、フレームワークの拡張ポイントを生成できる。
【００４３】
他方で、幾つかのアプリケーションは、自身で初期化を扱うよう設計されても良く、及び／又はランタイムプラットフォームに依存しない「思い切り（to  the  metal）」ネイティブコードでそのまま記述されても良い。この場合、契約オブジェクト１１６は、アプリケーション自体に含まれるエントリポイントに直接伝達できる。このアプローチでは、アプリケーションは、それ自体の初期化及び契約オブジェクト１１６に従う拡張の実装の両方を扱うよう構成され得る。さらに、アプリケーションは、バックグラウンドプロセス及び／又は隠れたウインドウを用いてバックグラウンドタスクを実行するために起動され得る。この場合、特定のウインドウ種類を指定するウインドウパラメータは、アプリケーションに全く渡されなくても良い。
【００４４】
別のアプローチでは、ランタイムプラットフォームは、プラットフォームが扱うアプリケーションに代わって、契約及び／又は拡張ポイントの選択を実施するよう構成され得る。このアプローチは、例えば、特定の契約及び／又は拡張ポイントがランタイムプラットフォームに関連するアプリケーションにとって比較的重要であると考えられる場合に用いられ得る。例えば、ランタイムプラットフォームに関連する全てのアプリケーションにとって検索契約が適切であると考えられる場合、ランタイムプラットフォームは、アプリケーションに代わって、検索契約を自動的に実施するよう構成され得る。この場合、ランタイムプラットフォームは、本願明細書に記載の方法で契約を供するために起動されるアプリケーションのように動作し得る。
【００４５】
起動されると、アプリケーションは、オペレーティングシステムにより指示されたように契約を履行するために処理を実行し得る。種々の異なる処理が、異なる拡張ポイント１１２に関連して生じ得る。特に、契約オブジェクト１１６は、アプリケーションに特定の契約及び契約をどのように扱うかについて知らせる契約ＩＤ１２０及び約詳細１１２を指定し得る。したがって、アプリケーションは、指定された処理を実行し、アプリケーション起動コンポーネント１１４結果を返送できる。
【００４６】
特に、ステップ３０６は、契約の履行に成功したか否かを示す応答をアプリケーションから得る。例えば、アプリケーション起動コンポーネント１１４は応答を受信し処理し、契約を実行するためのアプリケーションによる処理が続く。応答は、少なくとも契約の成功又は失敗を示すよう構成され得る。例えば、応答は、アプリケーションが契約の完了に成功したか否かを示すために用いられるブールパラメータを有し得る。契約が成功しない場合、アプリケーション起動コンポーネント１１４は、同じアプリケーションによるリトライを開始し、アプリケーションを終了し、アプリケーションのためにエラー処理を開始し、及び／又は利用可能ならば契約を完了するために別の互換性のあるアプリケーションを呼び出し得る。契約が成功した場合、ＯＳは、要求側に成功を知らせる、結果に依存する次の契約を開始する、契約の結果を得る及び／又は他のエンティティに提供する、等のような種々の動作を行い得る。
【００４７】
図４は、オペレーティングシステムの拡張ポイントに関連する契約を実行するためにアプリケーションが動作する別の例示的な方法を示す。少なくとも幾つかの実施形態では、方法は、アプリケーション起動フレームワークと互換性のある種々のアプリケーション１１０及び／又は対応するランタイムプラットフォーム１１８を有するか又はその他の場合それを利用する図１の例示的なコンピューティング装置１０２のような、適切に構成されるコンピューティング装置により実施され得る。
【００４８】
ステップ４００は、エントリポイントを通じる１又は複数の拡張ポイントについてアプリケーションによるサポートを示すために、オペレーティングシステムにアプリケーションのエントリポイントに関して通知する。これは、任意の適切な方法で生じ得る。上述のように、通知は、アプリケーションがインストールされるとき、アプリケーションにより提供され得る。通知は、ユーザがオプション機能をオンにしたとき、機能が最初に使用されるとき、又はアプリケーションが最初に実行されるとき、のようなインストールのほかの他のときに提供されても良い。これらの場合には、ＯＳは、相互作用のコンテキストに基づき、特定の拡張を使用するアプリケーションの能力及び意図を推定できても良い。したがって、ＯＳは、特定の拡張についてアプリケーションを登録できる。アプリケーションは、アプリケーション起動コンポーネント１１４を通じて、オペレーティングシステムに、アプリケーションが提供できる各拡張ポイント１１２を通知し得る。アプリケーションは、オペレーティングシステムに、対応する拡張ポイント１１２に関してアプリケーションの指定接点として機能するエントリポイント２０４も提供する。エントリポイント２０４は、アプリケーションを起動して個々の拡張ポイントに供するためにアプリケーション起動コンポーネント１１４により提供される通信を扱うよう構成される。したがって、アプリケーションにより提供される通知は、アプリケーション起動コンポーネント１１４が、アプリケーション及びそれらのエントリポイントを拡張ポイントにマッピングするマニフェストを更新及び保持することを可能にする。
【００４９】
ステップ４０２は、拡張ポイントのうちの１つに関連する契約を供するために起動する。起動は、オペレーティングシステムの指示で生じ得る。少なくとも幾つかの場合には、起動は、アプリケーションのランタイムプラットフォームを通じて生じ得る。アプリケーションのインスタンスが既に実行中である場合、既存のインスタンスを使用できる。その他の場合、アプリケーションの新しいインスタンスが生成され得る。
【００５０】
ステップ４０４は、対応するエントリポイントを通じて契約オブジェクトを得る。契約オブジェクトは、前述のように、契約を識別し、アプリケーションがどのように契約を履行すべきかを指定する。特に、契約オブジェクト１１６は、アプリケーションにより指定されるエントリポイントにより受信され得る。エントリポイントは、アプリケーション自体の一部として又は対応するランタイムプラットフォームにより提供され得る。契約オブジェクト１１６は、ＯＳにより指示されるようにウインドウを設定することを含む、アプリケーションを初期化するために用いられる起動設定１２４を有し得る。契約オブジェクトは、拡張可能機能を実装するためにアプリケーションにより用いられる契約ＩＤ１２０及び契約詳細１２２も有する。
【００５１】
契約を履行するために、ステップ４０６は、契約オブジェクトにより指定される処理を実行する。次に、ステップ４０８は、処理結果をオペレーティングシステムに伝達する。例えば、契約詳細１２２の一部として提供される種々のデータパラメータは、対応する契約をどのように実行するかをアプリケーションに知らせ得る。これは、実行されるべき処理ステップ、ファイル名／場所、他パーティとの相互作用のためのＵＲＬ又はドメイン、データフォーマット、応答指示、契約の実行の際に支援し得る方法／オブジェクト、及びアプリケーションを契約を実装可能にする他の情報、等を指定することを含み得る。したがって、アプリケーションは、契約を実行し、オペレーティングシステムにより規定された方法で拡張可能機能を実装する。
【００５２】
契約が完了すると、アプリケーションは、処理結果を含む応答をアプリケーション起動コンポーネント１１４へ送信し得る。結果は、少なくとも契約の完了に成功したか否かの指示を有する。幾つかのシナリオでは、結果は、データ、ファイル、リンク、及び／又は契約の履行により生成される他の契約固有情報も有し得る。例えば、検索結果は、検索拡張のためにＯＳに戻され得る。或いは、変換されたファイルは、フォーマット変換拡張の結果として提供され得る。ＯＳは、必要に応じて結果を用いて更なる処理を開始し（例えば、他の契約を実行するためにアプリケーションを呼び出す）、及び／又は結果を要求側アプリケーション又は装置に提供し得る。
【００５３】
留意すべきことに、幾つかの例では、アプリケーションは、ＯＳに応答を返送しなくても良い。例えば、ＯＳは、明示的応答に加えて又はそれに代えて、契約及び／又はアプリケーション状態に関して問い合わせるために種々の時間にアプリケーションにポーリングするよう構成され得る。さらに、ハングアップするアプリケーションは、適切な応答を提供できない可能性がある。したがって、ＯＳがアプリケーション状態を点検することは、ＯＳが起動されたアプリケーション及び対応する契約の経過を追うことができる別のメカニズムを提供し得る。
【００５４】
以上に、例示的なアプリケーション起動技術を検討した。次に、１又は複数の実施形態による例示的なシステムを議論する。
【００５５】
＜例示的なシステム＞
図５は、概して５００で示す例示的なシステムを示す。システム５００は、上述の種々の実施形態を実施できるような１又は複数のコンピューティングシステム及び／又は装置を表す例示的なコンピューティング装置５０２を有する。コンピューティング装置５０２は、例えば、サービスプロバイダのサーバ、コンピューティング装置１０２に関連する装置（例えば、クライアント装置）、オンチップシステム、及び／又は任意の他の適切なコンピューティング装置若しくはコンピューティングシステムであっても良い。
【００５６】
例示的なコンピューティング装置５０２は、１又は複数のプロセッサ５０４又は演算装置、１又は複数のメモリ及び／又は記憶コンポーネント５０８を含み得る１又は複数のコンピュータ可読媒体５０６、入力／出力（Ｉ／Ｏ）装置のための１又は複数の入力／出力（Ｉ／Ｏ）インタフェース５１０、及び種々のコンポーネント及び装置に互いに通信させるバス５１２を有する。コンピュータ可読媒体５０６及び／又は１又は複数のＩ／Ｏ装置は、コンピューティング装置５０２の一部として含まれるか、又は代替でそれに結合されても良い。バス５１２は、メモリバス又はメモリ制御部、周辺バス、ＡＧＰ（accelerated  graphics  port）、種々のバスアーキテクチャのうちの任意のものを用いるプロセッサ若しくはローカルバスを含む複数種類のバス構造のうちの１又は複数を表しても良い。バス５１２は、有線及び／又は無線バスを有しても良い。
【００５７】
１又は複数のプロセッサ５０４は、それらが形成される材料又はそれらで用いられる処理メカニズムにより限定されない。例えば、プロセッサは、半導体及び／又はトランジスタ（例えば電子集積回路（ＩＣ））を有しても良い。このような状況では、プロセッサ実行可能命令は、電子的に実行可能な命令であっても良い。メモリ／記憶コンポーネント５０８は、１又は複数のコンピュータ可読媒体に関連するメモリ／記憶容量を表す。メモリ／記憶コンポーネント５０８は、（ＲＡＭ（random  access  memory）のような）揮発性媒体、及び／又は（ＲＯＭ（read  only  memory）、フラッシュメモリ、光ディスク、磁気ディスク等のような）不揮発性媒体を含み得る。メモリ／記憶コンポーネント５０８は、固定媒体（ＲＡＭ、ＲＯＭ、固定ハードドライブ等）、並びに取り外し可能媒体（フラッシュメモリドライブ、取り外し可能ハードドライブ、光ディスク等）を含み得る。
【００５８】
入力／出力インタフェース５１０は、ユーザがコマンド及び情報をコンピューティング装置５０２に入力できるようにし、情報がユーザ及び／又は種々の入力／出力装置を用いる他のコンポーネント若しくは装置に提示されるようにする。入力装置の例は、キーボード、タッチスクリーンディスプレイ、カーソル、制御装置（例えばマウス）、マイクロフォン、スキャナ、等を有する。出力装置の例は、ディスプレイ装置（例えば、モニタ又はプロジェクタ）、スピーカ、プリンタ、ネットワークカード、等を有する。
【００５９】
種々の技術は、ソフトウェア、ハードウェア（固定論理回路）、又はプログラムモジュールの一般的文脈で本願明細書に記載され得る。概して、このようなモジュールは、特定のタスクを実行し又は特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、エレメント、コンポーネント、データ構造、等を含む。これらのモジュール及び技術の実装は、特定の形式のコンピュータ可読媒体に格納され又はそれを介して送信されても良い。コンピュータ可読媒体は、コンピューティング装置によりアクセスできる種々の利用可能な１又は複数の媒体を有しても良い。例として、限定ではなく、コンピュータ可読媒体は、「コンピュータ可読記憶媒体」及び「通信媒体」を有しても良い。
【００６０】
「コンピュータ可読記憶媒体」は、単なる信号送信、搬送波又は信号自体とは対照的に、情報の永続的及び／又は非一時的記憶を可能にする媒体及び／又は装置を表しても良い。したがって、コンピュータ可読記憶媒体は、非信号担体媒体を表す。コンピュータ可読記憶媒体は、記載の技術の態様を実施するために幾つかの実施形態で用いられ得る、命令を有するハードウェアエレメント、モジュール、及び／又はハードウェア形式で実装される固定装置ロジックも含む。
【００６１】
コンピュータ可読記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、論理素子／回路、又は他のデータのような情報の記憶に適する方法又は技術で実装される揮発性及び不揮発性、取り外し可能及び非取り外し可能媒体、及び／又は記憶装置を含む。コンピュータ可読記憶媒体の例は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ又は他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（digital  versatile  disk）又は他の光記憶装置、ハードディスク、磁気カセット、磁気テープ、磁気ディスク記憶装置又は他の磁気記憶装置、集積回路若しくはチップのハードウェア素子（例えば固定ロジック）、他の記憶装置、有形媒体、又は所望の情報を格納するのに適しコンピュータによりアクセスできる適切な製品を含むがこれらに限定されない。
【００６２】
「通信媒体」は、例えばネットワークを介してコンピューティング装置のハードウェアへ命令を送信するよう構成される信号担体媒体を表しても良い。通信媒体は、通常、コンピュータ可読命令、データ構造、プログラムモジュール、又は搬送波、データ信号若しくは他のトランスポート機構のような変調データ信号内の他のデータを具現化しても良い。通信媒体は、任意の情報分配媒体も含む。用語「変調データ信号」は、１又は複数の特性セットを有する信号を意味し、又は信号内の情報をエンコードするために変更されても良い。例として限定ではなく、通信媒体は、有線ネットワーク又は直接有線接続のような有線媒体、並びに音響、ＲＦ、赤外線（ＩＲ）のような無線媒体及び他の無線媒体を含む。
【００６３】
上述のうちの任意の組合せも、コンピュータ可読媒体の範囲に包含されるべきである。したがって、ソフトウェア、ハードウェア又はプログラムモジュールは、アプリケーション起動コンポーネント１１４、オペレーティングシステム１０８、アプリケーション１１０及び他のプログラムモジュールを含み、特定形式のコンピュータ可読媒体に具現化された１又は複数の命令及び／又はロジックとして実装されても良い。
【００６４】
したがって、本開示の特定のモジュール、機能、コンポーネント及び技術は、ソフトウェア、ハードウェア、ファームウェア及び／又はそれらの組み合わせで実施されてもよい。コンピューティング装置５０２は、コンピュータ可読媒体に実装されるソフトウェア及び／又はハードウェアモジュールに対応する特定の命令及び／又は機能を実装するよう構成されても良い。この命令及び／又は機能は、アプリケーション起動のための技術並びに他の技術を実装するために、１又は複数の製品（例えば、１又は複数のコンピューティング装置５０２及び／又はプロセッサ５０４）により実行可能／動作可能であっても良い。このような技術は、本開示の例示的な手順を含むがこれに限定されない。したがって、コンピュータ可読媒体は、本開示の１又は複数の装置により実行されると、種々のアプリケーション起動技術を生じさせる命令を格納し又はその他の場合には提供するよう構成されても良い。
【００６５】
＜まとめ＞
アプリケーション起動技術が記載された。以上によると、オペレーティングシステム（ＯＳ）は、関連する契約を通じてサービス可能な種々の拡張ポイントを組み込み得る。増築可能な特徴は、ＯＳの統合機能として定められ、ＯＳにより集中的に制御される。しかしながら、増築可能な機能の特定の実装は、契約を通じてアプリケーションに降ろされ得る。機能の実装がアプリケーションコードにより処理される方法は、オブジェクト指向アプローチを用いて、中央アプリケーション起動コンポーネントを通じて管理及び調整され得る。
【００６６】
本発明の主題は構造的特徴及び／又は方法論的動作に特有の言葉で記載されたが、本発明の主題は、特許請求の範囲に定められる上述の特定の特徴又は動作に限定されないことが理解されるべきである。むしろ、上述の特定の特徴及び動作は、特許請求の範囲の実施の例示的携帯として開示されたものである。
【図１】
0005932981.tif 000002
【図２】
0005932981.tif 000003
【図３】
0005932981.tif 000004
【図４】
0005932981.tif 000005
【図５】
0005932981.tif 000006