(57)【特許請求の範囲】
【請求項１】
電子メールメッセージを解析し、解析された出力を生成するステップと、
前記電子メールメッセージの前記解析された出力内の拡張トリガを識別するステップの一部としてトリガ基準を使用するステップであって、該使用するステップは、前記電子メールメッセージへのアクティブなコンテンツのインラインでの挿入をトリガするために前記トリガ基準として１つまたは複数の正規表現を使用するステップを含む、ステップと、
前記電子メールメッセージに関連付けられたメッセージプロパティを使用して前記拡張トリガが真であるかを判定し、真である場合に、分離されたコード実行環境へ前記拡張に関連するソリューションパッケージを解凍するステップと、
前記電子メールメッセージのためのアクティブコンテンツ機能を提供するステップの一部として拡張のための対応する拡張トリガを識別するために前記１つまたは複数の正規表現を使用した後、分離されたコード実行環境を使用した拡張コードを実行するステップとであって、前記分離されたコード実行環境は、前記電子メールクライアントから分離されており、前記実行している拡張コードが表示された電子メールメッセージに前記アクティブコンテンツを埋め込むときに使用され、前記拡張コードの実行は、前記ソリューションパッケージにより表示された電子メールメッセージへ前記拡張に関連するコンテンツを自動的に挿入するために前記分離されたコード実行環境からのマークアップストリームを返すことを含む、ステップと、
により前記電子メールメッセージと対話するステップの一部として、電子メールクライアントに対し前記拡張を実施するステップと
を含む方法。
【請求項２】
適切な拡張トリガを識別することなしに前記拡張なしで電子メールを表示するステップをさらに含む、請求項１に記載の方法。
【請求項３】
対応する拡張コードおよび拡張のそれぞれに対するマニフェストを含む前記ソリューションパッケージを提供するステップをさらに含み、前記ソリューションパッケージはユーザのメールボックス内の非表示メッセージと共に保存されるスクリプトコードを含む、請求項１に記載の方法。
【請求項４】
１または複数のリモートおよびローカルのコンピュータストレージの一部分として前記ソリューションパッケージを保存するステップをさらに含む、請求項３に記載の方法。
【請求項５】
前記電子メールメッセージと共に前記ソリューションパッケージを使用するステップの一部として電子メールアプリケーションをローカルに実行するステップをさらに含む、請求項３に記載の方法。
【請求項６】
前記電子メールメッセージと共に前記ソリューションパッケージを使用するステップの一部としてウェブベースの電子メールアプリケーションを実行するステップをさらに含む、請求項３に記載の方法。
【請求項７】
1つまたは複数のマークアップ言語、スタイル・シート言語、スクリプト言語機能を用いて前記ソリューションパッケージを生成するステップをさらに含む、請求項１に記載の方法。
【請求項８】
前記電子メールメッセージの解析、本文タグの配置、前記本文タグに関連するガジェットスクリプトの挿入に部分的に基づいて拡張コードを実行するステップをさらに含む、請求項１に記載の方法。
【請求項９】
選択された電子メールメッセージのためにインラインコンテンツを提供するステップの一部として拡張性モデルを使用するステップをさらに含み、該使用するステップは、解析された電子メール部分における対応するガジェットトリガを識別するときに前記選択された電子メールメッセージの視覚可能な部分へ前記マークアップストリームを自動的に挿入するステップを含む、請求項１に記載の方法。
【請求項１０】
分離サンドボックスからのガジェットコードをアクティブ化するために前記ガジェットトリガとして少なくとも１つの正規表現を使用するステップをさらに含む、請求項９に記載の方法。
【請求項１１】
電子メールメッセージ表示の一部として異なる種類のコンテンツをインラインで挿入するステップの一部として１つまたは複数の拡張トリガに基づいて分離して拡張性コードを実行するステップをさらに含む、請求項１に記載の方法。
【請求項１２】
アクティブ化条件が満たされるか否かを判定するために電子メール通信を検査するステップと、
アクティブ化条件が満たされる場合に、スクリプトコードおよびマークアップ言語コンテンツを含む非表示メッセージから圧縮されたパッケージを解凍するステップと、
分離サンドボックス内に前記スクリプトコードをロードするステップと、
選択された電子メールメッセージと共に表示するためにマークアップ言語ストリームを返すステップと
をさらに含む請求項１に記載の方法。
【請求項１３】
プロセッサとメモリリソースと、
電子メールクライアントと、
前記電子メールクライアントに対し拡張された電子メール機能性を提供し、１つ又は複数のソリューションパッケージにより構成される1つ又は複数の利用可能なガジェットとであって、ガジェットは、
電子メールに関連付けられたメッセージプロパティを使用して１つ又は複数のアクティブ化トリガが真であるかを判定し、真である場合に、分離されたコード実行環境へソリューションパッケージを解凍すること、および
前記ソリューションパッケージにより選択された電子メールメッセージへ前記ガジェットと関連するコンテンツを自動的に挿入するために、前記分離されたコード実行環境を使用して前記ガジェットに関連する拡張コードを実行することであって、前記拡張コードを実行することは前記分離されたコード実行環境からのマークアップストリームを返すことを含む、実行すること、
により動作し、
前記分離されたコード実行環境は前記電子メールクライアントから分離しており、実行している前記拡張コードが前記選択された電子メールメッセージにおける前記アクティブコンテンツを埋め込むときに使用される、1つ又は複数の利用可能なガジェットと、
選択された電子メールメッセージを解析するため、および１つ又は複数のアクティブ化トリガを識別するために部分的に構成される解析エンジンであって、識別されたアクティブ化トリガはそれぞれトリガ基準として正規表現を備え、前記分離されたコード実行環境を用いて関連するガジェットコードの実行を引き起こす前記アクティブコンテンツのインラインでの挿入をトリガする、解析エンジンと、および
前記選択された電子メールメッセージおよびアクティブ化されたガジェットにより提供される関連した拡張機能性を表示するインタフェースと、を備えるシステム。
【請求項１４】
プロセッサにより実行可能な命令を含むコンピュータストレージであって、該命令は実行されると、
1つ又は複数のガジェットトリガを識別するために選択された電子メールメッセージを検査することであって、該検査することは、解析された部分を提供するために前記選択された電子メールメッセージのアイテムの部分を解析することと、少なくとも１つの解析された部分において前記１つ又は複数のガジェットトリガを識別するためにマニフェストを使用することを含み、該検査することはさらにトリガ基準として１つ又は複数の正規表現を用いて、前記選択された電子メールメッセージへのアクティブコンテンツのインラインでの挿入をトリガすることを含む、検査すること、および
前記電子メールメッセージに関連付けられたメッセージプロパティを使用して１つ又は複数のアクティブ化トリガが真であるかを判定し、真である場合に、前記ガジェットに関連するソリューションパッケージを分離された環境へ解凍すること、および
アクティブコンテンツの機能をインラインで前記選択された電子メールメッセージのアイテムへ提供することの一部として、対応するガジェットトリガを識別するときに、前記分離された環境からの前記拡張コードを実行することであって、前記分離された環境は前記電子メールクライアントから分離されており、実行している前記拡張コードが前記表示された電子メールメッセージに前記アクティブコンテンツを埋め込むときに使用され、前記拡張コードの実行は、前記ソリューションパッケージにより前記表示された電子メールメッセージへ前記ガジェットに関連するコンテンツを自動的に挿入するために前記分離された環境からマークアップストリームを返すことを含む、実行すること
により電子メールクライアントでガジェットを実行すること、
によって電子メールクライアントのための拡張可能な通信機能を提供する、コンピュータストレージ。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]通信ネットワーク（たとえば、インターネットプロトコル、携帯など）および関連するユーザデバイス／システムにおける進歩によって、豊かになり得る対話型アプリケーションのための仕組みが提供される。今日の進んだ通信インフラストラクチャによって、ユーザは、例としてデスクトップ、ポータブルコンピュータ、およびスマートフォンなどの多数の異なるタイプのデバイス／システムを使用して、ほとんどあらゆる場所から情報にアクセスして普及させることができる。無線機能およびモバイル機能は、現在、１つにはデバイスおよびサービスにアクセスするコストが妥当であるため、多数の状況において重要な役割を果たす。多種多様な媒体タイプを使用することにより、アドインコンポーネントは、多くの場合に、追加の対話型機能および機能性を提供するために使用される。アドインは、一般に内蔵されず、マシンの性能を損ない、ユーザエクスペリエンスを中断および遅延させ、複雑なインストールダイアログを含む場合があり、１つまたは複数のインストーラを必要とすることがある。残念なことに、アドインは、一般にインストールするのが厄介であり、場合によっては、関連するオブジェクトモデルおよびシステムリソースへの無制限アクセスを得るために使用されることがある。
【発明の概要】
【課題を解決するための手段】
【０００２】
[0002]この要約は、簡略化した形で概念の選択をもたらすために提供され、この概念については、以下に詳細な説明でさらに説明される。この要約は、特許請求の範囲に記載される主題の重要な特徴または本質的な特徴を識別することを意図するものではなく、また、特許請求の範囲に記載される主題の範囲を決定する際での助けとして意図するものでもない。
【０００３】
[0003]実施形態は、通信項目内のアクティブな対話機能性を提供するために部分的に使用される拡張性モデルを提供するが、これらの実施形態はそのように限定されるものではない。一実施形態では、コンピュータシステムは、コンテンツを電子メール通信に挿入するステップの一部として、分離されたコード実行環境を使用してガジェットコードをアクティブ化するように動作する１つまたは複数のアクティブ化トリガを識別するように構成された構成要素を含む。一実施形態の方法は、メールメッセージにコンテンツをインラインで自動的に挿入するステップの一部として、定義されたガジェットトリガおよび関連付けられたガジェット機能性を使用するための拡張性フレームワークを提供する。他の実施形態も含まれる。
【０００４】
[0004]上記および他の特徴および利点は、以下の詳細な説明を読むことおよび関連する図面を検討することから明らかになるであろう。前述の一般的な説明および以下の詳細な説明は共に、単なる例に過ぎず、特許請求の範囲に記載されている本発明を制限するものではないことを理解されたい。
【図面の簡単な説明】
【０００５】
【図１】[0005]例示的なコンピューティングシステムのブロック図である。
【図２】[0006]アプリケーション拡張またはガジェットの使用を制御するアクティブ化モデルを提供する例示的なプロセスを示す流れ図である。
【図３】[0007]図３Ａは、電子メール通信環境にインライン拡張性機能を提供するように構成された例示的なシステムの構成要素のブロック図である。図３Ｂは、電子メール通信環境にインライン拡張性機能を提供するように構成された例示的なシステムの構成要素のブロック図である。
【図４】[0008]電子メッセージング機能を提供するステップの一部として、１つまたは複数のガジェットを使用してインラインコンテンツを提供するために拡張性モデルを使用する例示的なプロセスを示す流れ図である。
【図５Ａ】[0009]拡張性機能を提供するために部分的に使用される例示的な電子メール・アプリケーション・インタフェースの態様を示す図である。
【図５Ｂ】拡張性機能を提供するために部分的に使用される例示的な電子メール・アプリケーション・インタフェースの態様を示す図である。
【図５Ｃ】拡張性機能を提供するために部分的に使用される例示的な電子メール・アプリケーション・インタフェースの態様を示す図である。
【図５Ｄ】拡張性機能を提供するために部分的に使用される例示的な電子メール・アプリケーション・インタフェースの態様を示す図である。
【図５Ｅ】拡張性機能を提供するために部分的に使用される例示的な電子メール・アプリケーション・インタフェースの態様を示す図である。
【図５Ｆ】拡張性機能を提供するために部分的に使用される例示的な電子メール・アプリケーション・インタフェースの態様を示す図である。
【図６】[0010]本明細書において説明する種々の実施形態の実装のための例示的なコンピューティング環境を示すブロック図である。
【発明を実施するための形態】
【０００６】
[0011]図１は、電子通信に拡張性機能を提供するように部分的に構成された例示的なコンピューティングシステム１００を示すブロック図であるが、そのように限定されるものではない。一実施形態のシステム１００は、コンピュータの処理構成要素／リソースと、記憶構成要素／リソースと、以下で説明する拡張された電子メールメッセージング機能を含む通信機能性および通信機能を提供する他の構成要素／リソースとを含む。一実施形態の解析エンジンは、選択された通信を解析し、１つまたは複数のアクティブ化トリガまたはガジェットトリガを識別するように構成することができ、このアクティブ化トリガまたはガジェットトリガは、識別されると、１つまたは複数の特定の通信拡張またはガジェットをトリガまたはアクティブ化する。
【０００７】
[0012]一実施形態の解析エンジンは、分離されたサンドボックス環境を使用してソリューションパッケージに関連付けられたスクリプト言語コードをアクティブ化するかどうか判断するために、１つまたは複数のガジェットトリガを含むソリューション・パッケージ・マニフェストを使用することができる。たとえば、解析エンジンは、電子通信項目表示の一部としてアクティブな対話型コンテンツを挿入するように動作する１つまたは複数の関連付けられたガジェットをアクティブ化するステップの一部として、特定の通信項目部分（たとえば、文字列、リンク、メタデータなど）の識別を可能にする１つまたは複数のトリガとしてソリューション・マニフェスト・ファイルに含まれる１つまたは複数の正規表現を使用することができる。
【０００８】
[0013]一実施形態では、この拡張性モデルは、マニフェストソリューション内の特定のトリガを満たす本文部分内の情報を識別するステップの一部として、選択された電子メールメッセージ（たとえば、クリックされたメッセージ）に関連する解析エンジンおよびソリューションマニフェストを使用して、選択された電子メールメッセージの本文部分（たとえば、プレーンテキスト、ハイパーテキストマークアップ言語（ＨＴＭＬ）、拡張マークアップ言語（ＸＭＬ）など）を解析する。一実施形態では、システム１００は、アクティブ化されると、ｗｅｂベースアプリケーションおよびインストールされたローカルアプリケーションを含む電子メールアプリケーションと共に使用されて、拡張されたインラインアクティブかつ／または対話型コンテンツ機能性をアプリケーションユーザに自動的に提供することができる、いくつかの利用可能な拡張またはガジェットを含む。
【０００９】
[0014]図１に示されるように、例示的なシステム１００は、たとえば電子メールアプリケーションまたはメッセージングアプリケーションなどの通信アプリケーション１０２と、解析エンジン１０４と、ＨＴＭＬ電子メール項目ＤＯＭなどの通信項目ドキュメント・オブジェクト・モデル（ＤＯＭ）１０６と、解析エンジン１０４に結合された１つまたは複数のアプリケーション・プログラミング・インタフェース（ＡＰＩ）１０８と、いくつかの利用可能な拡張および／またはガジェット１１０（１）、１１０（２）、１１０（３）、…、１１０（Ｎ）とを含み、ここでＮは整数である。解析エンジン１０４は、ソリューションパッケージを解凍して関連付けられた拡張機能性を通信項目に挿入するかどうか判断するステップの一部として、正規表現トリガ(ｒｅｇｕｌａｒ  ｅｘｐｒｅｓｓｉｏｎ  ｔｒｉｇｇｅｒ)を使用することができる。
【００１０】
[0015]たとえば、解析エンジン１０４は、着信電子メールメッセージおよび／または受信電子メールメッセージから１つまたは複数のガジェットアクティブ化トリガ(ｇａｄｇｅｔ  ａｃｔｉｖａｔｉｏｎ  ｔｒｉｇｇｅｒ)を識別するステップの一部としてＨＴＭＬ電子メール部分をレンダリングするように構成されたＨＴＭＬレンダリングエンジンとして構成されることができる。図示のように、一実施形態では、利用可能な各ガジェットは、対応するアクティブ化トリガ（たとえば、基準１１２（１）、１１２（２）、１１２（３）、…、１１２（Ｎ））を有する。利用可能なガジェットの数は、ユーザ制御および／または好み（ｐｒｅｆｅｒｅｎｃｅ）および／または利用可能性によって左右され得ることが理解されるであろう。一実施形態では、特定の拡張のためのアクティブ化基準またはアクティブ化条件は、マークアップ言語マニフェストファイルにおいて実施されるいくつかの正規表現トリガに基づくことができる。たとえば、正規表現は、単語、項（ｔｅｒｍ）、ならびに／または文字または他の項目の単純なパターンおよび／もしくは複雑なパターンなどの対象となる文字列を識別するとき、トリガとして使用されることができる。
【００１１】
[0016]特定の実施形態では、ガジェットおよび／または関連付けられた機能性は、ローカルにインストールされることもでき、世界的規模のメッセージング通信ネットワークなどのコンピュータネットワークを介してアクセスされることもできる。以下で説明されるように、ユーザは、選択された電子メールメッセージなどの通信項目と共に使用されるべき特定のガジェットを積極的に選択するステップの一部としてガジェット選択インタフェースを使用することができる（たとえば図５Ａを参照されたい）。たとえば、ガジェットは、ユーザがいったん特定のガジェットを選択するとアクティブ化され、それにより、１つまたは複数の解析操作に部分的に基づいて選択された通信項目に対する拡張された対話機能性を表面化させる（ｓｕｒｆａｃｅ）ことができる。上記で簡単に説明したように、例示的なシステム１００は、ローカルにインストールされた通信アプリケーション（たとえば、インストールされた電子メールアプリケーション）として、またはｗｅｂベースの通信アプリケーション（たとえば、ブラウザベースの電子メールアプリケーション）として構成されることができる。
【００１２】
[0017]一実施形態では、拡張またはガジェットは、デスクトップ、ラップトップ、タブレット、スマートフォン、ならびに通信および対話型アプリケーション機能性を提供するためのプロセッサおよびメモリリソースの使用を含む他のコンピューティングデバイスと共に使用するための電子メッセージングアプリケーションのフレームワーク内で、アクティブコンテンツの機能および機能性を提供するように構成されることができる。一実施形態では、利用可能な拡張機能またはガジェットは、ＨＴＭＬ機能、カスケード・スタイル・シート（ＣＳＳ）機能、および／またはスクリプト（たとえば、ＶＩＳＵＡＬ  ＢＡＳＩＣ、ＪＡＶＡＳＣＲＩＰＴ（登録商標）など）機能のうちの１つまたは複数を含む圧縮および／または暗号化されたファイル（たとえば、ｚｉｐファイル）として構成されることができる。
【００１３】
[0018]いったんアクティブ化されると、１つまたは複数の有効なガジェットは、他のコンピュータ構成要素（たとえば、サーバなど）と相互作用して、特定の拡張機能またはガジェット機能を取得および／または使用するように構成されることができる。たとえば、ユーザは、ブラウザベースの電子メールアプリケーションを使用して、選択された電子メールメッセージの本文の中にハイパーリンクを含むメッセージをダウンロードおよび選択することができる。この例示的な例の場合、解析エンジンが特定のハイパーリンクを識別すると、このハイパーリンクと関連付けられた有効なガジェットは、コンピュータネットワークに、またはローカルリソースに自動的に接触し、ハイパーリンクをアクティブな対話機能性に置き換えるかまたはハイパーリンクに隣接して拡張機能性を位置づけ、関連付けられたアクティブなコンテンツまたは機能性を、関連付けられた電子メールメッセージの本文にインラインで埋め込むことができる。たとえば、アクティブ化されたガジェットに関連付けられたスクリプトは、レンダリングされる電子メールの本文に自動的に挿入され、その場で実行することができる。
【００１４】
[0019]一実施形態によれば、１つまたは複数のアクティブ化拡張またはガジェットのアクティブ化および／または使用が、分離サンドボックス(ｉｓｏｌａｔｉｏｎ  ｓａｎｄｂｏｘ)または分離されたコード実行環境を使用したスクリプト言語または他の実行可能コードの実行を引き起こす。この分離サンドボックスは、特定のアクティブ化トリガにより電子メールメッセージの識別された部分をアクティブコンテンツに置き換えるステップの一部として、コードの実行時にたとえば信頼されていないコンテンツをサードパーティに要求する他の構成要素と対話するように構成されることができる。
【００１５】
[0020]通常は分離サンドボックスと完全に独立している信頼されていないコードは、特定のセキュリティポリシーまたは実行ポリシーを遵守するように変換されるか、あるいは、そうでなければ制御されることができる。たとえば、分離サンドボックスにおける制御には、プレビューすなわち制御されたコンテンツを表示するために使用されるウィンドウまたはペイン(領域、ｐａｎｅ)を見るステップの一部などの電子メッセージへのアクティブコンテンツおよび／または対話型コンテンツのインラインでの挿入を制御するステップを含む、ＨＴＭＬ、ＣＳＳ、およびスクリプトコードのうちの１つまたは複数の、メッセージングアプリケーションと共に実行するコードへの変換が含むことができる。上記で説明したように、基準１１２（１）〜基準１１２（Ｎ）のうちの１つまたは複数は、インライン挿入制御および拡張性機能の一部として別の実装またはツールを許可、拒否、または使用するかどうか制御するために使用されることができる。
【００１６】
[0021]図２は、電子通信アプリケーションを使用するステップの一部としてアプリケーション拡張またはガジェットの使用を制御するアクティブ化モデルを提供するステップの例示的なプロセス２００を示す流れ図であるが、そのように限定されるものではない。たとえば、このアクティブ化モデルは、１つまたは複数のアクティブ化トリガの識別に部分的に基づいて選択された電子メールメッセージにおけるアクティブコンテンツの挿入を制御するために電子メール・メッセージング・アプリケーションと共に使用されることができる。一実施形態では、プロセス２００は、追加の機能を電子メールアプリケーションに提供するステップの一部として、アクティブな対話型コンテンツのアクティブ化を制御するステップの一部として使用されることができる。たとえば、プロセス２００は、選択された電子メールメッセージの本文を有する対話型コンテンツをインラインで埋め込むステップの一部として、分離されたコードをアクティブ化するために使用されることができる。
【００１７】
[0022]プロセス２００は、２０２では、ユーザがたとえば電子メールメッセージのリスト内に表示されるたとえば電子メールメッセージなどの電子通信項目を選択したときに動作する。一実施形態では、１つまたは複数の拡張またはガジェットは、拡張された電子通信機能性を提供するステップの一部として、あらかじめコード化、パッケージ化、かつ／またはその場で使用されることができる。一実施形態では、特定のガジェットまたは拡張は、マニフェスト（たとえば、ＸＭＬマニフェスト）、マークアップ／コード定義（たとえば、ＨＴＭＬ／ＣＳＳ／ＪＡＶＡＳＣＲＩＰＴ定義）、および／または１つもしくは複数の埋め込みリソースもしくはｗｅｂリソース（たとえば、アイコン、ラベルなど）を含むソリューションパッケージとして構成されることができる。
【００１８】
[0023]一例として、プロセス２００は、２０２では、電子メールアプリケーションを起動した後で、および／またはスマートフォン、デスクトップ、もしくはラップトップのブラウザもしくはローカルにインストールされた電子メールアプリケーションを使用して１つもしくは複数のガジェット（例示的な利用可能なガジェットを示す図５Ａを参照されたい）を有効にし、受信された項目のリスト内の電子メールメッセージを選択した後で動作することができる。一代替実施形態では、プロセス２００は、２０２では、（たとえば、専用サーバを使用した）エンドユーザによる積極的な（ａｆｆｉｒｍａｔｉｖｅ）メッセージ対話（たとえば、項目のクリック、タップなど）の前に、電子メールメッセージを処理するように動作する。たとえば、プロセス２００は、電子メールメッセージがユーザの受信箱に運搬される前に動作することができる。
【００１９】
[0024]２０４では、プロセス２００は、選択された電子通信項目の１つまたは複数の部分を解析するように動作する。一実施形態では、プロセス２００は、２０４において、１つまたは複数の利用可能および／または有効な拡張またはガジェットに関連付けられた１つまたは複数のアクティブ化トリガを識別するステップの一部として、選択された電子メールメッセージ上で解析操作を行うように構成された統合解析エンジンを使用する。たとえば、プロセス２００は、２０４では、解析エンジンを使用して、メッセージ表示またはプレビュー機能の一部として１つまたは複数の定義されたガジェットアクティブ化トリガを識別してアクティブコンテンツをインラインで提供するために使用するとき、選択された電子メールの電子メールメッセージ本文のマークアップを解析することができる。
【００２０】
[0025]一実施形態では、プロセス２００は、２０４では、電子通信を有するアクティブな対話型コンテンツの埋め込みをトリガするステップの一部として、選択された電子通信項目を解析して種々のガジェットアクティブ化トリガを識別するように動作する。たとえば、プロセス２００は、２０４において、見るステップまたは他の操作の一部として分離サンドボックスからコードのアクティブ化をトリガする解析された通信部分を識別するために部分的に使用されるガジェットアクティブ化トリガを定義するソリューションマニフェスト（たとえば、正規表現、日付、時刻、リンク、ソース言語、送信元ドメイン、メッセージタイプなど）を使用することができる。一実施形態では、ソリューションマニフェストは、アクティブ化制御機能を提供するステップの一部として、ソリューションコードならびに／または１つもしくは複数の埋め込みリソースと共にパッケージ化され、圧縮および／または暗号化されることができる。
【００２１】
[0026]２０６では、トリガ基準が解析操作（複数可）に基づいて満たされる場合、プロセス２００は、電子通信項目の文脈にアクティブ化された拡張またはガジェットに関連付けられたソリューションコードをロードするように動作する。たとえば、たとえば定義された正規表現などの特定のガジェットアクティブ化トリガを満たすと、プロセス２００は、２０６において、プレビューアまたは他のメッセージ表示ウィンドウにアクティブコンテンツを表示するステップの一部として使用できる電子メールの文脈に、ソリューションＨＴＭＬおよびＪＡＶＡＳＣＲＩＰＴをロードするように動作することができる。
【００２２】
[0027]２０８では、プロセス２００は、関連付けられたソリューションパッケージによって定義される拡張機能性を含む今アクティブ化された電子通信項目を表示するように動作する。たとえば、プロセス２００は、２０８において、対応する正規表現定義により定義されたガジェットのアクティブ化に基づいて、アクティブ化され拡張されたＨＴＭＬ電子メールメッセージを表示するように動作することができる。基準が満たされない場合、プロセス２００は２１０に進み、電子通信は、いかなる拡張機能がそれに追加されることなく普通に表示される。たとえば、アクティブ化基準が１つまたは複数のＸＭＬマニフェストファイルにより満たされない場合、プロセス２００は、２１０では、修正されていないＨＴＭＬ本文部分を含む電子メールメッセージを表示するように動作することができる。図２の例示的な流れには、特定の数および順序の操作が記載されているが、所望の実装形態により他の数および／または順序が使用できることが理解されるであろう。
【００２３】
[0028]図３Ａから図３Ｂは、電子メール通信環境にインライン拡張性機能を提供するように構成された例示的なシステム３００の構成要素のブロック図を示す。図３Ａに示されるように、例示的なシステム３００は、ローカル電子メールアプリケーションおよび／もしくはｗｅｂベースの電子メールアプリケーションを含む電子メールクライアント３０２、たとえばＨＴＭＬレンダリングエンジンなどのレンダリングエンジンまたは解析エンジン３０４、電子メール項目ＤＯＭ３０６、ならびに／または分離サンドボックス３０８とを含む。この例示的なシステムのための分離サンドボックス３０８は別個の構成要素として示されているが、他の実施形態では、分離サンドボックス３０８は、電子メールクライアント機能性の一部として含めることができる。さらに、拡張コードは、特定の実装構成および／または好みにより分離サンドボックス３０８から動的にロードおよび／または除去されることができる。
【００２４】
[0029]上記で説明したように、拡張子がいったん呼び出されると、関連付けられた拡張コードは分離サンドボックス３０８から実行されることができる。この例では、拡張コードは、電子メール項目ＤＯＭ３０６から分離されているように例示的に示されている。一実施形態によれば、ＡＰＩ３０９は、分離サンドボックス３０８と電子メール項目ＤＯＭ３０６の間に結合され、それらの間の情報の流れを制御するゲートウェイとして機能する。例示的な通信リンク３１０、３１２、および３１４は、それぞれクラウドサービス３１６、世界的規模のコンピュータ／通信ネットワーク３１８、およびイントラネット３２０を含む種々のリソースから情報をプッシュおよび／またはプルする、分離された拡張コードの機能を示す。
【００２５】
[0030]図３Ｂは、電子メール項目にインライン拡張性機能を提供するステップの一部として使用される例示的なソリューションパッケージ３２２を示す。図３Ｂに示されるように、一実施形態のソリューションパッケージ３２２は、ソースコード３２４と、１つまたは複数の埋め込みリソース３２６と、マニフェスト３２８とを含む。一実施形態では、１つまたは複数のアクティブ化トリガは、マニフェスト３２８と共に含まれ、選択された電子メール項目のためのインライン拡張性をトリガするために使用されることができる。たとえば、１つまたは複数のアクティブ化トリガは、選択された電子メール項目へのアクティブコンテンツのインラインでの挿入をトリガするために使用される１つまたは複数の正規表現構造として具現化されるマニフェスト３２８に含まれることができる。一実施形態では、ソリューションパッケージの一部分は、１つまたは複数のリモートおよび／またはローカルの場所に保存されることができる。
【００２６】
[0031]レンダリングエンジン３０４は、ソリューションパッケージを解凍し、ソリューションパッケージによって定義された関連付けられた拡張機能性を選択された電子メール項目に自動的に埋め込むかどうか判断するステップの一部として、マニフェスト３２８内で定義される具現化された正規表現を使用することができる。たとえば、正規表現は、選択されたメールメッセージにＨＴＭＬベースのコンテンツをインラインで挿入するステップを含む、文脈情報をメールメッセージの閲覧ペインに直接追加するトリガとして使用されることができ、インラインコンテンツは、メッセージ検査ウィンドウまたはブラウザウィンドウの閲覧ペインを使用して表示されることができる。
【００２７】
[0032]一実施形態のシステム３００は、圧縮ファイル（たとえば、．ｚｉｐファイル）に含まれユーザのメールボックスの一部として保存される（たとえば、ユーザのメールボックス内の非表示のメッセージ）ＨＴＭＬ／ＣＳＳデータおよびＪＡＶＡＳＣＲＩＰＴコードを使用するメッセージングインタフェースにインライン拡張性機能を提供する。レンダリングエンジン３０４は、拡張性機能をアクティブ化するのに有効なアクティブ化コンテキストを認識するように動作する。このような一実施形態では、アクティブ化時、ＪＡＶＡＳＣＲＩＰＴコードは、選択された電子メールメッセージの場合は閲覧ペインに、またはメッセージの場合は関連付けられた表示ウィンドウに表示されるＨＴＭＬコードをインラインで生成するために、分離サンドボックス３０８で実行される。
【００２８】
[0033]一例として、レンダリングエンジン３０４は、選択されたメッセージに関連付けられたメッセージプロパティ（たとえば、件名、送信者、受信者、カテゴリ、返信、全員に返信、転送などのメッセージに関係する動詞など）を操作および使用して、アクティブ化トリガが真であるかどうか判断し、アクティブ化を要求することができる。真である場合、選択されたメッセージと対話するステップの一部として、ＨＴＭＬ／ＣＳＳコンテンツおよびＪＡＶＡＳＣＲＩＰＴコードが（たとえば、非表示のメッセージから）取り出され、解凍されることができ、かつ／またはＨＴＭＬコンテキストのコンテンツがインラインでレンダリングされる。したがって、アクティブ化モデルは、メッセージコンテンツへの制限されたアクセスのみを可能にし、ＪＡＶＡＳＣＲＩＰＴコードを分離して実行することを含む。
【００２９】
[0034]一実施形態では、ソリューションパッケージ３２２は、解凍されたＪＡＶＡＳＣＲＩＰＴコードおよびＨＴＭＬコンテンツを含み、次に、ＪＡＶＡＳＣＲＩＰＴコードが分離サンドボックス３０８にロードされる。ＪＡＶＡＳＣＲＩＰＴコードは、選択されたメッセージのための追加の名前−値ペアを取得して、選択されたメッセージを見るときにメッセージ閲覧ペインまたは他のビューアに表示するために、関連付けられた電子メールアプリケーションにマークアップストリーム（たとえば、ＨＴＭＬストリーム）を返すように、コード化されることができる。一実施形態では、拡張がいったんアクティブ化されると、ＪＡＶＡＳＣＲＩＰＴコードは、初期化され、指定のＯｂｊｅｃｔＣｏｎｔｅｘｔをＪＡＶＡＳＣＲＩＰＴ  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ（ＪＳＯＮ）の名前／値ペアとして決定することができ、ＪＡＶＡＳＣＲＩＰＴコードは分離して実行され、表示のためにＨＴＭＬを準備する。
【００３０】
[0035]図４は、電子メッセージング機能を提供するステップの一部として、１つまたは複数のガジェットを使用してインラインコンテンツを提供するために拡張性モデルを使用する例示的なプロセス４００を示す流れ図である。たとえば、選択されたガジェットは、１つまたは複数のガジェットトリガの識別に部分的に基づいて、選択された電子メールメッセージにアクティブコンテンツを挿入するために、電子メールアプリケーションと共に使用されることができる。一実施形態では、プロセス４００は、電子メールメッセージとの対話中のガジェットのアクティブ化を制御するステップの一部として使用されることができる。たとえば、プロセス４００は、選択された電子メールメッセージのコンテキスト内の対話型コンテンツを提供するステップの一部として、分離されたガジェットコードをアクティブ化するために使用されることができる。
【００３１】
[0036]プロセス４００は、４０２では、分離されたコード実行環境からガジェットコードを自動的に実行するかどうか判断するステップの一部として、選択された電子メールメッセージをスキャンするように動作する。たとえば、プロセス４００は、４０２において、ローカルおよび／またはリモートの解析機能性を使用して、選択された電子メールメッセージの解析される本文部分に含まれる正規表現トリガに対してスキャンすることができる。一例として、プロセス４００は、分離されたコード実行環境からガジェットコードのトリガアクティブ化ために部分的に使用される１つまたは複数の正規表現として、ガジェットアクティブ化トリガを定義するソリューションマニフェストを使用することができる。一実施形態では、ユーザは、スキャン操作により電子メールの本文内のトリガが識別され、関連付けられた選択された電子メールメッセージに拡張された埋め込みコンテンツ機能性を提供するように１つまたは複数の有効なガジェットがアクティブ化されるときにトリガできる、１つまたは複数のガジェットをあらかじめ選択するまたは有効にすることができる。
【００３２】
[0037]一実施形態では、各ガジェットトリガは、マニフェストファイル（たとえば、正規表現トリガを含むＸＭＬマニフェスト）内でコード化され、電子メールメッセージまたはメッセージをスキャンして特定の有効なガジェットトリガを識別するときに使用されることができる。一例として、各ガジェットは、マニフェスト（たとえば、ＸＭＬマニフェスト）、マークアップ／コード定義（たとえば、ＨＴＭＬ／ＣＳＳ／ＪＡＶＡＳＣＲＩＰＴ定義）、および／または１つまたは複数の埋め込みリソースを含むソリューションパッケージとして、開発および／またはコード化されることができる。ガジェットは、スマートフォン、デスクトップコンピュータ、ラップトップコンピュータなどの種々のコンピューティング／通信デバイスと共に動作するように構成された、専用電子メールアプリケーションを含む、メッセージングアプリケーションと共に使用されることができる。
【００３３】
[0038]４０４では、スキャン操作によりガジェットトリガが識別される場合、一実施形態のプロセス４００は、関連付けられたコンテンツを取得するように動作する。たとえば、プロセス４００は、件名、送信者、受信者、および／または他のメッセージプロパティの評価に基づきトリガ基準を使用し、特定のガジェットトリガを識別するとき、ガジェット実行コード（たとえば、ＨＴＭＬ／ＣＳＳおよびＪＡＶＡＳＣＲＩＰＴ）および／または１つもしくは複数の埋め込みリソースを含む圧縮ファイルを含む、ユーザの受信箱内の非表示の電子メールメッセージから、コンテンツおよび他の任意の関連情報を取得することができる。一実施形態では、非表示のメッセージは、電子メールメッセージビューまたはプレビューの一部としてアクティブコンテンツをインラインで提供するために使用されることができる。そうでない場合、ガジェットトリガが識別されない場合は、プロセス４００は４０６に進み、電子メールアプリケーションは、特定のガジェットによって提供される追加のインライン機能なしで閲覧ペインまたはメッセージインスペクタにメッセージコンテンツを表示するように動作する。
【００３４】
[0039]４０８では、１つまたは複数のガジェットトリガを識別した後で、プロセス４００は、関連付けられたＪＡＶＡＳＣＲＩＰＴを分離されたコード実行環境にロードするステップを含む、特定のトリガされたガジェットに関連付けられたコンテンツをアクティブ化するように動作する。４１０では、プロセス４００は、分離されたコード実行環境を使用して、解凍されたＪＡＶＡＳＣＲＩＰＴコードを分離して実行すること、および／または選択された電子メールメッセージから追加項目コンテキスト（たとえば、ＪＳＯＮ名前−値ペア）を取得することによって動作する。４１２では、プロセス４００は、ＪＡＶＡＳＣＲＩＰＴコードを実行するステップとして、分離されたコード実行環境からガジェットコードを実行することによって修正される変換されたＨＴＭＬを返す。４１４では、一実施形態のプロセス４００は、電子メールメッセージ本文をインラインで挿入されたアクティブ化されたガジェットに関連付けられたコンテンツを閲覧ペインまたはインスペクタウィンドウに表示するように動作する。図４の例示的な流れには、特定の数および順序の操作が記載されているが、所望の実装形態により他の数および／または順序が使用できることが理解されるであろう。
【００３５】
[0040]一例として、マニフェストファイルは、以下のスキーマ定義を使用して記述されることができる。
[0041]<?xml version=" 1.0" encoding="utf-8"?>
[0042]<xs:schema id="WebExtensionManifest" elementFormDefault="qualified" version- ' 1.0"
[0043]  targetNamespace="http://schemas.microsoft.com/ webextensions/1.0"
[0044]  xmlns="http://schemas.microsoft.com/ webextensions/1.0"
[0045]  xmlns:xs="http://www.w3.org/2001/XMLSchema">
[0046] <xs:complexType name="LocaleOverride">
[0047]  <xs:attribute name="Locale" type="xs:string" use="required">
[0048]   <xs:annotation>
[0049]    <xs:documentation>この上書きが目的とするロケールを指定する。 </xs : documentation>
[0050]   </xs:annotation>
[0051]  </xs:attribute>
[0052]  <xs: attribute name- ' Value" type="xs: string" use="required">
[0053]   <xs:annotation>
[0054]    <xs:documentation>指定のロケールで表される設定の値を指定する。
</xs:documentation>
[0055]   </xs:annotation>
[0056]  </xs:attribute>
[0057] </xs:complexType>
[0058] <xs:complexType name="LocaleAwareSetting">
[0059]  <xs:annotation>
[0060]   <xs:documentation>
[0061]    ロケールに対応した設定を定義する。これは、たとえば異なるロケールに対して指定可能である。
【００３６】
[0062]   </xs:documentation>
[0063]  </xs:annotation>
[0064]  <xs:sequence>
[0065]   <xs:element name- Override" type="LocaleOverride" minOccurs="0" maxOccurs="unbounded">
[0066]    <xs:annotation>
[0067]     <xs:documentation>複数の追加ロケールにおいて、この設定の値を指定する方法を提供する。
</xs:documentation>
[0068]    </xs:annotation>
[0069]   </xs:element>
[0070]  </xs:sequence>
[0071]  <xs:attribute name="Default Value" type="xs:string" use="required">
[0072]   <xs:annotation>
[0073]    <xs:documentation>この設定に対するデフォルト値を指定する。ＷｅｂＥｘｔｅｎｓｉｏｎのＤｅｆａｕｌｔＬｏｃａｌｅ要素で指定されるロケールで表される。</xs:documentation>
[0074]   </xs:annotation>
[0075]  </xs:attribute>
[0076] </xs:complexType>
[0077] <xs:simpleType name="HostAppName">
[0078]  <xs:annotation>
[0079]   <xs:documentation>
[0080]    利用可能なホストアプリケーションを定義する。
【００３７】
[0081]   </xs:documentation>
[0082]  </xs:annotation>
[0083]  <xs:restriction base="xs:string">
[0084]   <xs: enumeration value- ' AppNamel "/>
[0085]   <xs: enumeration value="AppName2"/>
[0086]   <xs: enumeration value- ' AppName3"/>
[0087]   <xs: enumeration value="AppName4"/>
[0088]  </xs:restriction>
[0089] </xs:simpleType>
[0090] <xs:complexType name="HostApp">
[0091]  <xs:annotation>
[0092]   <xs:documentation>
[0093]    Ｗｅｂ  Ｅｘｔｅｎｓｉｏｎが動作できるホストアプリケーションを定義する。
【００３８】
[0094]   </xs:documentation>
[0095]  </xs:annotation>
[0096]  <xs:attribute name- 'Name" type="HostAppName" use="required">
[0097]   <xs:annotation>
[0098]    <xs:documentation>ホストアプリケーションの名前を指定する。</xs :documentation>
[0099]   </xs:annotation>
[00100]  </xs:attribute>
[00101]  <xs:attribute name="MinVersion" type="xs:decimal" use="optional">
[00102]   <xs:annotation>
[00103]    <xs:documentation>Ｗｅｂ  Ｅｘｔｅｎｓｉｏｎが動作するのに必要なホストアプリケーションの最小バージョンを指定する。</xs:documentation>
[00104]   </xs:annotation>
[00105]  </xs:attribute>
[00106]  <xs:attribute name="MaxVersion" type="xs:decimal" use="optional">
[00107]   <xs:annotation>
[00108]    <xs:documentation>Ｗｅｂ  Ｅｘｔｅｎｓｉｏｎが動作するのに必要なホストアプリケーションの最大バージョンを指定する。</xs:documentation>
[00109]   </xs:annotation>
[00110]  </xs:attribute>
[00111] </xs:complexType>
[00112] <xs:complexType name="Rule" abstract="true"/>
[00113]  <xs:complexType name="ItemClassIs">
[00114]   <xs:annotation>
[00115]    <xs:documentation>
[00116]    項目が指定のクラスである場合に真であると評価する規則を定義する。
【００３９】
[00117]    </xs : documentation>
[00118]   </xs : annotation>
[00119]   <xs:complexContent>
[00120]    <xs:extension base="Rule">
[00121]     <xs:attribute name="ItemClass" type="xs:string" use="required">
[00122]      <xs:annotation>
[00123]       <xs:documentation>合致するべき項目クラスを指定する。</xs : documentation>
[00124]      </xs:annotation>
[00125]     </xs:attribute>
[00126]     <xs:attribute name="IncludeSubClasses" type="xs:boolean" use="optional">
[00127]      <xs:annotation>
[00128]       <xs:documentation>項目が指定のクラスのサブクラスである場合に規則が真と評価するべきかどうか指定する。デフォルトは偽である。 </xs:documentation>
[00129]      </xs:annotation>
[00130]     </xs:attribute>
[00131]    </xs:extension>
[00132]   </xs:complexContent>
[00133]  </xs:complexType>
[00134]  <xs:simpleType name="KnownEntityType">
[00135]   <xs:annotation>
[00136]    <xs:documentation>
[00137]     項目の件名および本文の中で認識できるエンティティ型を定義する。
【００４０】
[00138]    </xs:documentation>
[00139]   </xs:annotation>
[00140]   <xs:restriction base="xs:string">
[00141]    <xs: enumeration value="MeetingSuggestion"/>
[00142]    <xs: enumeration value="TaskSuggestion"/>
[00143]    <xs: enumeration value="Address"/>
[00144]    <!--必要に応じてリストを完成する-->
[00145]   </xs:restriction>
[00146]  </xs:simpleType>
[00147]  <xs:simpleType name="KnownEntityLocation">
[00148]   <xs:annotation>
[00149]    <xs:documentation>
[00150]     既知のエンティティを探す場所を定義する。
【００４１】
[00151]    </xs:documentation>
[00152]   </xs:annotation>
[00153]   <xs:restriction base="xs:string">
[00154]    <xs: enumeration value="FullItemBody"/>
[00155]    <xs: enumeration value="LatestResponseBody"/>
[00156]    <xs: enumeration value- ' Subject"/>
[00157]   </xs:restriction>
[00158]  </xs:simpleType>
[00159]  <xs:complexType name="ItemHasKnownEntity">
[00160]   <xs:annotation>
[00161]    <xs:documentation>
[00162]     項目が既知のエンティティを含む場合に真であると評価する規則を定義する。
【００４２】
[00163]    </xs:documentation>
[00164]   </xs:annotation>
[00165]   <xs:complexContent>
[00166]    <xs:extension base="Rule">
[00167]     <xs:attribute name="EntityType" type="KnownEntityType" use="required">
[00168]      <xs:annotation>
[00169]       <xs:documentation>規則が真と評価されるために見つけられなければならないエンティティの型を指定する。</xs:documentation>
[00170]      </xs:annotation>
[00171]     </xs:attribute>
[00172]     <xs:attribute name="Location" type="KnownEntityLocation" use="required">
[00173]      <xs:annotation>
[00174]       <xs:documentation>規則が真と評価されるためにエンティティが見つけられなければならない場所を指定する。</xs:documentation>
[00175]      </xs:annotation>
[00176]     </xs:attribute>
[00177]    </xs:extension>
[00178]   </xs:complexContent>
[00179]  </xs:complexType>
[00180]  <xs:simpleType name="PropertyName">
[00181]   <xs:annotation>
[00182]    <xs:documentation>
[00183]     ＰｒｏｐｅｔｙＣｏｎｔａｉｎｓ規則と共に使用できるプロパティ名を定義する。
【００４３】
[00184]    </xs:documentation>
[00185]   </xs:annotation>
[00186]   <xs:restriction base="xs:string">
[00187]    <xs: enumeration value- ' Subject"/>
[00188]    <xs: enumeration value="Body"/>
[00189]    <xs: enumeration value="SenderSMTPAddress"/>
[00190]    <!--必要に応じてリストを完成する-->
[00191]   </xs:restriction>
[00192]  </xs:simpleType>
[00193]  <xs:complexType name="ItemHasRegularExpressionMatch">
[00194]   <xs:annotation>
[00195]    <xs:documentation>
[00196]     指定の正規表現との合致が項目内で見られ得る場合に真であると評価する規則を定義する。
【００４４】
[00197]    </xs:documentation>
[00198]   </xs:annotation>
[00199]   <xs:complexContent>
[00200]    <xs:extension base="Rule">
[00201]     <xs:attribute name="RegExName" type="xs:string" use="required">
[00202]      <xs:annotation>
[00203]       <xs:documentation>正規表現が後でコードにより参照可能であるように、正規表現の名前を指定する。</xs:documentation>
[00204]      </xs:annotation>
[00205]     </xs:attribute>
[00206]     <xs: attribute name="RegExValue" type="xs: string" use="required">
[00207]      <xs:annotation>
[00208]       <xs:documentation>合致を見つけるべき実際の正規表現を指定する。</xs:documentation>
[00209]      </xs:annotation>
[00210]     </xs:attribute>
[00211]     <xs:attribute name="RegExFlags" type="xs: string" use="optional">
[00212]      <xs:annotation>
[00213]       <xs:documentation>正規表現に対する合致を探すときに適用するグローバルフラグを指定する。</xs:documentation>
[00214]      </xs:annotation>
[00215]     </xs:attribute>
[00216]     <xs:attribute name="PropertyName" type="PropertyName" use="required">
[00217]      <xs:annotation>
[00218]       <xs:documentation>合致を探すプロパティの名前を指定する。</xs:documentation>
[00219]      </xs:annotation>
[00220]     </xs:attribute>
[00221]    </xs:extension>
[00222]   </xs:complexContent>
[00223]  </xs:complexType>
[00224]  <xs:simpleType name="LogicalOperator">
[00225]   <xs:annotation>
[00226]    <xs:documentation>
[00227]     論理演算子を定義する。
【００４５】
[00228]    </xs:documentation>
[00229]   </xs:annotation>
[00230]   <xs:restriction base="xs:string">
[00231]    <xs: enumeration value- ' And"/>
[00232]    <xs: enumeration value="Or"/>
[00233]   </xs:restriction>
[00234]  </xs:simpleType>
[00235]  <xs:complexType name="RuleCollection">
[00236]   <xs:annotation>
[00237]    <xs:documentation>
[00238]     規則の集合と、規則の評価時に適用されるべき論理演算子を定義する。
【００４６】
[00239]    </xs:documentation>
[00240]   </xs:annotation>
[00241]   <xs:complexContent>
[00242]    <xs:extension base="Rule">
[00243]     <xs:sequence>
[00244]      <xs:element name- 'Rule" type="Rule" minOccurs=" 1 " maxOccurs="unbounded">
[00245]       <xs:annotation>
[00246]        <xs:documentation>この集合が含む規則のリストを指定する。</xs : documentation>
[00247]       </xs:annotation>
[00248]      </xs:element>
[00249]     </xs:sequence>
[00250]     <xs:attribute name="Mode" type="LogicalOperator" use="optional">
[00251]      <xs:annotation>
[00252]       <xs:documentation>この規則の集合の評価時に適用する論理演算子を指定する。</xs:documentation>
[00253]      </xs:annotation>
[00254]     </xs:attribute>
[00255]    </xs:extension>
[00256]   </xs:complexContent>
[00257]  </xs:complexType>
[00258]  <xs:simpleType name="FormFactor">
[00259]   <xs:annotation>
[00260]    <xs:documentation>
[00261]     サポートされるフォームファクタを定義する。
【００４７】
[00262]    </xs:documentation>
[00263]   </xs:annotation>
[00264]   <xs:restriction base="xs:string">
[00265]    <xs: enumeration value="Mobile"/>
[00266]    <xs: enumeration value="Tablet"/>
[00267]    <xs: enumeration value="Desktop"/>
[00268]   </xs:restriction>
[00269]   </xs:simpleType>
[00270]    <xs:complexType name="SourceLocation">
[00271]     <xs:annotation>
[00272]      <xs:documentation>
[00273]       所与の標的フォームファクタに対するソースファイルの場所を定義する。
【００４８】
[00274]      </xs:documentation>
[00275]     </xs:annotation>
[00276]     <xs:complexContent>
[00277]      <xs:extension base="LocaleAwareSetting">
[00278]       <xs:attribute name="FormFactor" type="FormFactor" use="optional">
[00279]        <xs:annotation>
[00280]         <xs:documentation>ＳｏｕｒｃｅＬｏｃａｔｉｏｎが適用されるフォームファクタを指定する。</xs:documentation>
[00281]        </xs:annotation>
[00282]       </xs:attribute>
[00283]       <xs:attribute name="DefaultWidth" type="xs:positiveInteger" use="optional">
[00284]        <xs:annotation>
[00285]         <xs:documentation>このＳｏｕｒｃｅＬｏｃａｔｉｏｎが使用されるときにＯｆｆｉｃｅ  Ｗｅｂ  Ｅｘｔｅｎｓｉｏｎに割り当てられるべき幅をピクセル単位で指定する。</xs:documentation>
[00286]        </xs:annotation>
[00287]       </xs:attribute>
[00288]       <xs:attribute name="DefaultH eight" type="xs:positiveInteger" use="optional">
[00289]       <xs:annotation>
[00290]        <xs:documentation>このＳｏｕｒｃｅＬｏｃａｔｉｏｎが使用されるときにＯｆｆｉｃｅ  Ｗｅｂ  Ｅｘｔｅｎｓｉｏｎに割り当てられるべき高さをピクセル単位で指定する。</xs:documentation>
[00291]       </xs:annotation>
[00292]      </xs:attribute>
[00293]     </xs:extension>
[00294]    </xs:complexContent>
[00295]   </xs:complexType>
[00296]   <xs:complexType name="ActivationContext">
[00297]    <xs:annotation>
[00298]     <xs:documentation>
[00299]      Ｗｅｂ  Ｅｘｔｅｎｓｉｏｎがどこに示されるべきか、およびＷｅｂ  Ｅｘｔｅｎｓｉｏｎが示されるべき条件を定義する。
【００４９】
[00300]     </xs:documentation>
[00301]    </xs:annotation>
[00302]    <xs:sequence>
[00303]     <xs:element name="HostApp" type="HostApp" minOccurs=" 1 " maxOccurs="unbounded">
[00304]      <xs:annotation>
[00305]       <xs:documentation>ＡｃｔｉｖａｔｉｏｎＣｏｎｔｅｘｔが適用されるホストアプリケーションのリストを指定する。</xs:documentation>
[00306]      </xs:annotation>
[00307]     </xs:element>
[00308]     <xs:element name="SourceLocation" type="SourceLocation" minOccurs- ' 1 " maxOccurs= "unbounded" >
[00309]     <xs:annotation>
[00310]      <xs:documentation>ＡｃｔｉｖａｔｉｏｎＣｏｎｔｅｘｔが使用されるときに使用するソースコードの場所のリストを指定する。</xs:documentation>
[00311]     </xs:annotation>
[00312]    </xs:element>
[00313]    <xs:element name="Rule" type="Rule" minOccurs="0" maxOccurs="unbounded">
[00314]     <xs:annotation>
[00315]      <xs:documentation>ＡｃｔｉｖａｔｉｏｎＣｏｎｔｅｘｔが使用されるときに評価されるべき規則を指定する。</xs:documentation>
[00316]     </xs:annotation>
[00317]    </xs:element>
[00318]   </xs:sequence>
[00319]  </xs:complexType>
[00320]  <xs:complexType name="WebExtension">
[00321]   <xs:annotation>
[00322]    <xs:documentation>
[00323]     Ｗｅｂ  Ｅｘｔｅｎｓｉｏｎを定義する。
【００５０】
[00324]    </xs:documentation>
[00325]   </xs:annotation>
[00326]   <xs:sequence>
[00327]    <xs:element name="ID" type="xs:string" minOccurs=" 1 " maxOccurs- ' 1 ">
[00328]     <xs:annotation>
[00329]      <xs:documentation>Ｗｅｂ  Ｅｘｔｅｎｓｉｏｎの一意のＩＤを指定する。</xs:documentation>
[00330]     </xs:annotation>
[00331]    </xs:element>
[00332]    <xs:element name="Version" type="xs:string" minOccurs=" 1 " maxOccurs=" 1 ">
[00333]     <xs:annotation>
[00334]      <xs:documentation>Ｗｅｂ  Ｅｘｔｅｎｓｉｏｎのバージョンを指定する</xs:documentation>
[00335]     </xs:annotation>
[00336]    </xs:element>
[00337]    <xs:element name="ProviderName" type="xs: string" minOccurs=" 1 " maxOccurs=" 1 ">
[00338]     <xs:annotation>
[00339]      <xs:documentation>Ｗｅｂ  Ｅｘｔｅｎｓｉｏｎを開発した個人または企業の名前を指定する。</xs:documentation>
[00340]     </xs:annotation>
[00341]    </xs:element>
[00342]    <xs:element name="DefaultLocale" type="xs:string" minOccurs- ' 1 " maxOccurs=" 1 ">
[00343]     <xs:annotation>
[00344]      <xs:documentation>このマニフェストで文字列がデフォルトで表現されるロケールを指定する。</xs:documentation>
[00345]     </xs:annotation>
[00346]    </xs:element>
[00347]    <xs:element name="FullName" type="LocaleAwareSetting" minOccurs=" 1 " maxOccurs=" 1 ">
[00348]     <xs:annotation>
[00349]      <xs:documentation>Ｗｅｂ  Ｅｘｔｅｎｓｉｏｎの完全な名前を指定する。完全な名前は、最大２５５文字とすることができる。</xs:documentation>
[00350]     </xs:annotation>
[00351]    </xs:element>
[00352]    <xs:element name- 'DisplayName" type="LocaleAwareSetting" minOccurs=" 1 " maxOccurs="l">
[00353]     <xs:annotation>
[00354]      <xs:documentation>ホストアプリケーションに表示される。Ｗｅｂ  Ｅｘｔｅｎｓｉｏｎの表示名を指定する。表示名は、最大３２文字とすることができる。</xs : documentation>
[00355]     </xs:annotation>
[00356]    </xs:element>
[00357]    <xs:element name- 'Description" type="LocaleAwareSetting" minOccurs=" 1 " maxOccurs="l">
[00358]     <xs:annotation>
[00359]      <xs:documentation>Ｗｅｂ  Ｅｘｔｅｎｓｉｏｎの説明を指定する説明は、最大２０００文字とすることができる。 </xs:documentation>
[00360]     </xs:annotation>
[00361]    </xs:element>
[00362]    <xs:element name="ProductSupportURL" type="LocaleAwareSetting" minOccurs="0" maxOccurs="l">
[00363]     <xs:annotation>
[00364]      <xs:documentation>Ｗｅｂ  Ｅｘｔｅｎｓｉｏｎの製品サポートページのＵＲＬを指定する。</xs:documentation>
[00365]     </xs:annotation>
[00366]    </xs:element>
[00367]    <xs:element name="PrivacyPolicyURL" type="LocaleAwareSetting" minOccurs="0" maxOccurs="l">
[00368]     <xs:annotation>
[00369]      <xs:documentation>Ｗｅｂ  ＥｘｔｅｎｓｉｏｎのプライバシーポリシーファイルのＵＲＬを指定する。</xs:documentation>
[00370]     </xs:annotation>
[00371]    </xs:element>
[00372]    <xs:element name="TermsOfUseURL" type="LocaleAwareSetting" minOccurs="0" maxOccurs="l">
[00373]     <xs:annotation>
[00374]      <xs:documentation>Ｗｅｂ  Ｅｘｔｅｎｓｉｏｎの利用規約ページのＵＲＬを指定する。</xs:documentation>
[00375]     </xs : annotation>
[00376]    </xs:element>
[00377]    <xs:element name="Thumbnail" type="xs: string" minOccurs="0" maxOccurs: ="!">
[00378]    </xs:element>
[00379]    <xs:element name="AllowSnapshot" type="xs:boolean" minOccurs="0" maxOccurs: ="!">
[00380]    </xs:element>
[00381]    <xs:element name="Services" type- ' Services" minOccurs="0" maxOccurs: ="!">
[00382]    </xs:element>
[00383]    <xs : element name=" ActivationContext" type=" ActivationContext" minOccurs= =" 1" maxOccurs= "unbounded" >
[00384]     <xs:annotation>
[00385]      <xs:documentation>Ｗｅｂ  Ｅｘｔｅｎｓｉｏｎがどこに示されるか、およびＷｅｂ  Ｅｘｔｅｎｓｉｏｎが示される条件を指定する。</xs:documentation>
[00386]     </xs : annotation>
[00387]    </xs:element>
[00388]   </xs:sequence>
[00389]  </xs:complexType>
[00390]  <xs:element name="WebExtension" type="WebExtension"/>
[00391] </xs:schema>
[00392]   別の例として、ガジェットまたはインライン拡張のマニフェストファイルは、以下のスキーマ定義を使用して記述されることができる。:
[00393]<?xml version- ' 1.0" encoding="utf-8"?>
[00394] <xs:schema targetNamespace=https://schemas.microsoft.com/.../ manifest.xsd
[00395]  elementFormDefault- ' qualified"
[00396]  xmlns="http://tempuri.org/XMLSchema.xsd"
[00397]  xmlns :mstns="http ://tempuri.org/XMLSchema.xsd"
[00398]  xmlns :xs="http ://www.w3.org/2001/XMLSchema"
[00399] ><xs:complexType name="Lab">
[00400]  <xs:sequence>
[00401]   <xs:element name- Title" type="xs:string" ><!--これは、プレーンテキストで記述した、ソリューションのタイトルである。このタイトルは、ユーザーに表示される。--></xs:element>
[00402]   <xs:element name- 'Location" type="xs:anyURI"><!--これは、ソースコードの場所に対するＵＲＬ／ＵＲＩである--></xs:element>
[00403]   <xs:element name="GUID" type="xs:string"><!--これは、ソリューションを識別する一意のＧＵＩＤである--></xs:element>
[00404]   <xs:element name- 'Version" type="xs:string"><!--Tこれは、バージョン番号である。ＭＭ．ｍｍの書式で記述すること--></xs:element>
[00405]   <xs:element name=" Author" type="xs:string"><!--作成者名--></xs:element>
[00406]   <xs:element name="Description" type="xs: string" ><!--プレーンテキストによる説明。この説明は、ユーザーに表示される。--></xs:element>
[00407]   <xs:element name- 'icon" type="xs:anyURI"><!-これは、ユーザーに表示される、使用されるべきアイコンに対するＵＲＬ／ＵＲＩである。これは、．ｊｐｇ形式の画像を指すべきである--></xs:element>
[00408]   <xs:element name- 'criteria" type="xs:string" maxoccurs="unbounded"><!--この項目は、ソリューションをロードするための基準を含む。これは、正規表現の形であるべきである。複数のトリガ基準を記述することができる。--></xs:element>
[00409]   <xs:element name="Prereq" type="xs:anyURI" maxoccurs="unbounded"><!--これは、ソリューションの一部としてロードされるべき不可欠なライブラリに対するＵＲＩである--></xs:element>
[00410]  </xs:sequence>
[00411] </xs:complexType>
[00412]</xs:schema>
[00413]   別の例として、化粧箱（ｆａｎｃｙ  ｂｏｘ）ガジェット（図５Ｆを参照されたい）のマニフェストファイルは、以下のように構成されることができる。:
[00414]<?xml version=" 1.0"?>
[00415]<Lab xmlns="https://schemas.microsoft.com/office/.../*_manifest">
[00416]<Title>Gallery View</Title>
[00417]<Prereq>http ://code .j query .com j query-1.4.2.min.js</Prereq>
[00418]<Prereq>http://example.org/*jquery.easing-1.3.pack.js</Prereq>
[00419]<Prereq>http ://example .org/*-jquery. fancybox-1.3.1.js</Prereq>
[00420]<Prereq>http://example.org/*http://example.org/*-jquery.mousewheel-3.0.2.pack.js</Prereq>
[00421]<Location http://example.org/*jancybox.js</Location>
[00422]<Guid>{466DF5A9-BDD2-48F8-A345-A10C5DAC8DE0}</Guid>
[00423]<Version>1.0.0.3</Version>
[00424]<Author>John Doe </Author>
[00425]<Description>FancyBox Schtuff</Description>
[00426]<Icon>http://www.example.com/ cdrom/msaggallery.jpg</Icon>
[00427]<NoCache>false</NoCache>
[00428]</Lab>
[00429]   化粧箱の拡張機能またはガジェットの場合、実行可能なスクリプト言語コードは、以下の例によって示されるように構成されることができる。:
[00430]$(document).ready(function() {
[00431]$("head").append("<link rel=\"stylesheet\" type=\"text/css\" href=\" http^/example.org/^VfancyboxWjquery.fancybox-l .3.1.css\" />");
[00432]$("a[href*=.jpg]").each(function(i){
[00433]$(this).attr("class","picture");
[00434]});
[00435]$("a[href*=.png]").each(function(i){
[00436]$(this).attr("class","picture");
[00437]});
[00438]$("a[href*=.jpeg]").each(function(i) {
[00439]$(this).attr("class","picture");
[00440]});
[00441]$("a[href*=.gif]").each(function(i) {
[00442]$(this).attr("class","picture");
[00443]});
[00444]$("img").wrap("<a href="+$("img").attr("src")+" id=\"picture_inline\" />");
[00445]$("img").attr("style","border-style: none");
[00446]$("a").fancybox({'width': *80%*, 'height': '80%*, 'autoScale*: true,'transitionIn':'elastic','transitionOut': 'elastic','type':'iframe'});
[00447]$(" .picture").each(function(i) {
[00448]$("body").append("<div id=\"gallery\" style=\"position: fixed; bottom:0;width: 100%;height:40%; border-top: lpx solid #BBB;\" />");
[00449]$("#gallery").append("<a href="+$(this).attr("hre ')+" class=\"picture\" rel=\"gallery\"><img src="+$(this).attr("hre ')+" class=\"thumb\" style=\"border: lpx solid #BBB;padding: 2px;margin: lOpx 30px lOpx 0;vertical-align: top;\"></a>");
[00450]});
[00451]$("body").append("<div id=\"gallery\" style=\"position: fixed; bottom:0;width: 100%;height:40%; border-top: lpx solid #BBB;\" />");
[00452]// $("#gallery").append("<a href="+path+" class=\"picture\" rel=\"gallery\"><img src="+path+" class=\"thumb\" style=\"border: lpx solid
#BBB;padding: 2px;margin: lOpx 30px lOpx 0;vertical-align: top;\"></a>");
[00453]// };
[00454]// }
[00455]$(" .thumb").each(function(i) {
[00456]$(this).css("width",$("#gallery").width()/$(".thumb").size()-50);
[00457]$(this).css("height",$("#gallery").height());
[00458]});
[00459]$(" .picture"). fancybox({ 'titlePosition' : Over','transitionIn' : 'elastic',
[00460] 'transitionOut' : 'elastic'});
[00461]$("a[rel=gallery]").fancybox({
[00462] 'transitionln' : 'elastic',
[00463] 'transitionOut' : 'elastic',
[00464] 'titlePosition' : Over',
[00465] 'titleFormat' : function(title, currentArray, currentlndex, currentOpts) {
[00466]  return '<span id="fancybox-title-over">Image ' + (currentlndex + 1) + ' / ' + currentArray.length + (title. length ? ' &nbsp; ' + title : ") + '</span>';
[00467] }
[00468]
[00469]});
[00470]$("#picture_inline").fancybox({ 'titlePosition' : Over','transitionIn' : 'elastic',
[00471] 'transitionOut' : 'elastic'});
[00472]});
[00473]   別の例として、出荷追跡ガジェットのマニフェストファイルは、以下のように構成されることができる。:
[00474]<Lab>
[00475]<Title>Shipment Tracking v2</Title>
[00476]<Location http://example.org/*-Scripts xs tracking.js</Location>
[00477]<Guid>{D833FF8F-8C95-461B-A3B2-4FC3DC25E7D9}</Guid>
[00478]<Version>2.0.0.5</Version>
[00479]<Author>Jane Doe</Author>
[00480]<NoCache>false</NoCache>
[00481]<Description>ＰａｃｋａｇｅＴｒａｃｋｒによって提供される詳細な荷物追跡情報。</Description>
[00482]<ICON> http://example.org \images\Shipment-Tracking.gif</ICON>
[00483]<Lab>
[00484]   出荷追跡の拡張機能またはガジェットの場合、実行可能なスクリプト言語コードは、以下の例によって示されるように構成されることができる。:
[00485]  // Shipment tracking gadget
[00486]  // Carrier Name 1 : ^b(1Z ?[0-9A-Z]{3} ?[0-9A-Z]{3} ?[0-9A-Z]{2} ?[0-9A-Z]{4} ?[0-9A-Z]{3} ?[0-9A-Z]|[\dT]\d\d\d ?\d\d\d\d ?\d\d\d)\b/i
[00487]  // Carrier Name 2: ^b((96\d\d\d\d\d ?\d\d\d\d|96\d\d) ?\d\d\d\d ?d\d\d\d( ?\d\d\d)?)\b/i
[00488]  // Carrier Name N : ^b(91\d\d ?\d\d\d\d ?\d\d\d\d ?\d\d\d\d ?\d\d\d\d ?\d\d|91\d\d ?\d\d\d\d ?\d\d\d\d ?\d\d\d\d ?\d\d\d\d)\b/i
[00489]function highlightTrackingLinks()
[00490]{
[00491] this. carriers = new Array();
[00492] this.carriers[0] = new getCarrier("Carrier Name 1");
[00493] this.carriers[0].expression = ^b(lZ ?[0-9A-Z]{3} ?[0-9A-Z]{3} ?[0-9A-Z]{2} ?[0-9A-Z]{4} ?[0-9A-Z]{3 } ?[0-9A-Z]|[\dT]\d\d\d ?\d\d\d\d ?\d\d\d)\b/i
[00494] this.carriers[l] = new getCarrier("Carrier Name N");
[00495] this.carriers[l].expression = ^b(\d\d\d\d ?\d\d\d\d ?\d\d\d\d ?\d\d\d\d ?\d\d\d\d ?\d\d\d\d ?\d\d\d\d ?\d\d)\b/i
[00496] this.carriers[2] = new getCarrier("Carrier Name 2");
[00497] this.carriers[2].expression = ^b([0-9]{15})\b/i
[00498] this.foundTrackingNumbers = new Array();
[00499] this.go = function()
[00500] {
[00501]  var trackingNumberlndex = 0;
[00502]  // Look for carrier matches
[00503]  for(var c=0; c < this. carriers. length; C++)
[00504]  {
[00505]   var carrier = this.carriers[c];
[00506]   var matches = document.body.innerText.match(carrier.expression);
[00507]   if (matches)
[00508]   {
[00509]    for(var i=0; i < matches. length; i++)
[00510]    {
[00511]     var foundNumber = matches[i];
[00512]     if (carrier.unloadOverride)
[00513]      enableOnBeforeUnloadPrompt = true;
[00514]     if (!this.duplicateTrackingNumber(carrier.carrierName, foundNumber))
[00515]      this.foundTrackingNumbers[trackingNumberIndex++] = new getTrackingNumber(carrier.carrierName, foundNumber);
[00516]    }
[00517]   }
[00518]  }
[00519]  if (this. foundTrackingNumbers. length > 0)
[00520]   this.insertTrackingHtml();
[00521] }
[00522] this.duplicateTrackingNumber = function(carrier, foundNumber)
[00523] {
[00524]  for(var i=0; i< this. foundTrackingNumbers. length; i++)
[00525]  {
[00526]   if (carrier == this. foundTrackingNumbers[i]. carrier && foundNumber == this. foundTrackingNumbers[i].number)
[00527]    return true;
[00528]  }
[00529]  return false;
[00530] }
[00531] this.insertTrackingHtml = function () {
[00532]  var body = document.getElementsByTagName("body")[0];
[00533]  for (var i = 0; i < this. foundTrackingNumbers. length; i++) {
[00534]   var trackingNumber = this.foundTrackingNumbers[i];
[00535]   var trackingFrame = document.createElement("iframe");
[00536]   with (trackingFrame) {
[00537]    id = "trackingElement" + i;
[00538]    width = "300";
[00539]    height = "400";
[00540]   scrolling = "yes";
[00541]    border = "4"
[00542]    src = trackingNumber.linkUrl();
[00543]    style.cssText = "float: right";
[00544]    name = "trackingElement" + i;
[00545]   }
[00546]   body.insertBefore(trackingFrame, body.childNodes(0));
[00547]  }
[00548] }
[00549]}
[00550]function getTrackingNumber(carrier, number)
[00551]{
[00552] this. carrier = carrier;
[00553] this.number = number;
[00554] this.linkUrl = function()
[00555] {
[00556] //http://www.example.com/m/track?n=lZ5R89391302318793&c= Carrier Name 1
[00557]  if (carrier == " Carrier Name 1 ")
[00558]   //return "http://example.orgprocessInputRequest?sort_by=status&error_carried=true&tracknums_di splayed=l&TypeOflnquiryNumber=T&loc=en-us&InquiryNumberl=" + this.number + "&AgreeToTermsAndConditions=yes";
[00559]   return "http://www. example. com/m/track?n=" + this.number +"&c= Carrier Name 1#content";
[00560]  else if (carrier == " Carrier Name N")
[00561]   //return "http:// Carrier Name N.com//InterLabelInquiry.do?origTrackNum=" + this.number;
[00562]   return "http://www. example. com/m/track?n=" + this.number + "&c= Carrier Name N#content";
[00563]  else
[00564]   return "http://wwwexample.com/m/track?n: + this.number + "#content";
[00565] }
[00566]}
[00567]function getCarrier(carrier)
[00568]{
[00569] this.carrierName = carrier;
[00570] this.unloadOverride = false;
[00571]}
[00572]var enableOnBeforeUnloadPrompt = false;
[00573]function trackingEngineUnloadHandler()
[00574]{
[00575] if (enableOnBeforeUnloadPrompt)
[00576]  return "Select cancel to continue reading this e-mail message";
[00577]}
[00578]function trackingEngineLoadHandler()
[00579]{
[00580] var trackingEngine = new highlightTrackingLinks();
[00581] trackingEngine.go();
[00582]}
[00583]window.attachEvent("onload", trackingEngineLoadHandler);
[00584]window.attachEvent("onbeforeunload", trackingEngineUnloadHandler);
[00585]他の例も利用可能かつ構成可能である。
【００５１】
[00586]図５Ａから５Ｆは、電子メールアプリケーションに関連付けられた拡張性機能を提供するために部分的に使用される例示的な電子メール・アプリケーション・インタフェースの態様を示す図である。たとえば、インタフェース５００は、選択された電子メールを表示するｗｅｂベースの電子メールアプリケーションまたはローカルにインストールされた電子メールアプリケーションの一部として使用されることができる。図５Ａに示されるように、例示的なインタフェース５００は、いくつかの利用可能なガジェット５０２〜５１４と、ユーザが１つまたは複数の特定のガジェットを有効にするために選択できる選択ボックス５１６とを含む。ユーザが各ガジェットの上にポインタを置く（ｈｏｖｅｒ）とき、選択ボックスは、対応するガジェットを前面に出す（ｓｕｒｆａｃｅ）ように構成されることができる。有効なガジェットは、上記で詳細に説明したように、特定のアクティブ化トリガにより選択された電子メール項目を自動的に前面に出すことができる。
【００５２】
[00587]図５Ｂは例示的な電子メールアプリケーションインタフェース５００を示し、電子メールアプリケーションインタフェース５００は、リンク５１７と、リンク５１７の識別によってトリガされる関連付けられたガジェットのアクティブ化により電子メールメッセージに自動的に挿入された後でリンク５１７に関連付けられる自動的に埋め込まれたコンテンツ５１８とを含む。
【００５３】
[00588]図５Ｃは例示的な電子メールアプリケーションインタフェース５００を示し、電子メールアプリケーションインタフェース５００は、リンク５２０と、リンク５２０の識別によってトリガされる関連付けられたガジェットのアクティブ化により電子メールメッセージに自動的に挿入された後でリンク５２０に関連付けられる自動的に埋め込まれたビデオ５２２とを含む。
【００５４】
[00589]図５Ｄは例示的な電子メールアプリケーションインタフェース５００を示し、電子メールアプリケーションインタフェース５００は、リンク５２６と、リンク５２６の識別によってトリガされる関連付けられたガジェットのアクティブ化により電子メールメッセージに自動的に挿入された後でリンク５２６に関連付けられる自動的に埋め込まれたビデオ５２８とを含む。例示的な電子メールアプリケーションインタフェース５００は、別のリンクによってトリガされた別の埋め込まれたビデオ５２４も表示している。
【００５５】
[00590]図５Ｅは例示的な電子メールアプリケーションインタフェース５００を示し、電子メールアプリケーションインタフェース５００は、１つもしくは複数の追跡番号の識別または他の荷物輸送基準によってトリガされる関連付けられたガジェットのアクティブ化により電子メールメッセージに自動的に挿入された、自動的に埋め込まれるアクティブな荷物追跡コンテンツ５３０とを含む。
【００５６】
[00591]図５Ｆは例示的な電子メールアプリケーションインタフェース５００を示し、電子メールアプリケーションインタフェース５００は、リンク５３２および自動的に埋め込まれる関連付けられた写真５３４と、リンク５３６および自動的に埋め込まれる関連付けられた写真５３８と、リンク５４０および自動的に埋め込まれる関連付けられた写真５４２とを含み、これらの写真５３４、５３８、および５４２はそれぞれ、リンク５３２、５３６、および５４０の識別によってトリガされる関連付けられたガジェットのアクティブ化により電子メールメッセージに自動的に挿入されている。図５Ｆに示されるように、トリガされたガジェットはまた、機能の豊富なフォトビューア５４４を使用しての挿入された写真との対話を可能にする。
【００５７】
[00592]拡張性機能はプロセッサ駆動型（ｐｒｏｃｅｓｓｏｒ−ｄｒｉｖｅｎ）コンピュータ環境の一部として実施できることが理解されるであろう。また、本明細書では特定の実施形態が説明されているが、他の実施形態も利用可能であり、説明される実施形態は、特許請求の範囲を限定するために使用されるべきではない。適切なプログラミング手段としては、たとえば処理ユニットとコンピュータメモリに結合された算術論理演算回路とからなるシステムを含むコンピュータシステムまたはデバイスに方法のステップを実行するように指示するための任意の手段があり、このシステムはコンピュータメモリに記憶する機能を有し、このコンピュータメモリは、データおよびプログラム命令を記憶するように構成された電子回路を含む。例示的なコンピュータプログラム製品は、任意の適切なデータ処理システムと共に使用することが可能である。特定の数およびタイプの構成要素が上記で説明されているが、種々の実施形態によれば、他の数および／またはタイプおよび／または構成も含まれ得ることが理解されるであろう。したがって、構成要素の機能性は、所望の実装形態により、さらに分割し、および／または他の構成要素の機能性と組み合わせることができる。
【００５８】
[00593]本明細書で使用されるコンピュータ可読媒体という用語は、コンピュータの記憶媒体を含むことができる。コンピュータの記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュールなどの情報を記憶するための任意の方法または技術で実施される、揮発性の媒体、不揮発性の媒体、リムーバブルメディア、およびノンリムーバブルメディアを含むことができる。システムメモリ、リムーバブルストレージ、およびノンリムーバブルストレージはいずれも、コンピュータの記憶媒体の例（すなわち、メモリストレージ）である。コンピュータの記憶媒体には、ＲＡＭ、ＲＯＭ、電気的消去可能読み出し専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または情報を記憶するために使用でき、デバイスコンピューティングによってアクセス可能な他の任意の媒体を含んでよいが、これらに限定されない。あらゆるこのようなコンピュータ記憶媒体は、デバイスまたはシステムの一部とすることができる。限定としてではなく、例を挙げると、通信媒体には、有線ネットワークまたは直接有線接続などの有線媒体と、音響、ＲＦ、赤外線、および他の無線媒体などの無線媒体とを含めることができる。
【００５９】
[00594]本明細書において説明される実施形態および例は限定を意図するものではなく、他の実施形態も利用可能である。さらに、上記で説明された構成要素は、ネットワーク接続環境、分散環境、および／またはコンピュータが実施される他の環境の一部として実施されることができる。構成要素は、有線ネットワーク、無線ネットワーク、および／または通信ネットワークの組み合わせを介して通信することができる。ネットワーク構成要素および／または構成要素間の結合は、ネットワークおよび対応するネットワーク構成要素のタイプ、数、および／または組み合わせのいずれかを含むことができ、ワイド・エリア・ネットワーク（ＷＡＮ）、ローカル・エリア・ネットワーク（ＬＡＮ）、メトロポリタン・エリア・ネットワーク（ＭＡＮ）、固有ネットワーク、バックエンドネットワークなどを含むが、これらに限定されない。
【００６０】
[00595]クライアント・コンピューティング・デバイス／システムおよびサーバは、任意のタイプおよび／または組み合わせのプロセッサベースのデバイスまたはシステムとすることができる。さらに、サーバの機能性は、多数のコンポーネントを含み、他のサーバを含むことができる。単数形で記載されるコンピューティング環境の構成要素は、このような構成要素の複数のインスタンスを含むことができる。特定の実施形態はソフトウェア実装形態を含むが、これらの実施形態はそのように限定されず、ハードウェア、またはハードウェア／ソフトウェア混合ソリューションを包含する。
【００６１】
[00596]構成要素、モジュール、システム、デバイス、クラウド、ネットワーク、および他の専門用語などの、説明において使用される用語は、一般に、ハードウェア、ソフトウェア、ファームウェア、および／または他の項目を含む、コンピュータ関連の操作環境を説明する。構成要素は、プロセッサ、実行可能ファイル、および／またはスクリプトコードを使用するプロセスを使用することができる。例示的な構成要素としては、アプリケーション、このアプリケーション上で動作するサーバ、および／または通信項目を受信するためにサーバに結合された電子通信クライアントがある。コンピュータリソースには、デジタル・シグナル・プロセッサ、マイクロプロセッサ、マルチコアプロセッサなどの、プロセッサおよびメモリリソースや、磁気デバイス、光デバイス、および／または他の記憶装置、スマートメモリ、フラッシュメモリなどのメモリ構成要素を含むことができる。通信構成要素は、たとえばインターネットなどの１つまたは複数の通信ネットワークを使用して電子通信項目を送信、受信、および／またはレンダリングするステップの一部として、コンピュータ可読情報を伝達するために使用されることができる。他の実施形態および構成も含まれ、利用可能である。
例示的な動作環境
[00597]次に図６を参照すると、以下の説明は、本発明の実施形態が実施され得る適切なコンピューティング環境の簡潔で一般的な説明を提供することを意図する。本発明は、パーソナルコンピュータ上のオペレーティングシステム上で動作するプログラムモジュールと共に実行するプログラムモジュールの一般的な文脈において説明されているが、本発明は他のタイプのコンピュータシステムおよびプログラムモジュールと組み合わせて実施されることもできることが、当業者には理解されよう。
【００６２】
[00598]一般に、プログラムモジュールには、特定のタスクを実行するまたは特定の抽象データ型を実施する、ルーチン、プログラム、コンポーネント、データ構造、および他のタイプの構造がある。さらに、本発明は、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースの家庭用電化製品またはプログラム可能な家庭用電化製品、ミニコンピュータ、メインフレームコンピュータなどを含む、他のコンピュータシステム構成と共に実施できることが当業者には理解されよう。本発明はまた、通信ネットワークを介して接続されたリモート処理デバイスによってタスクが実施される分散コンピューティング環境において実施されることができる。分散コンピューティング環境では、プログラムモジュールは、ローカルとリモートの両方のメモリ記憶装置に配置されることができる。
【００６３】
[00599]次に図６を参照して、本発明の実施形態の例示的な動作環境について説明する。図６に示されるように、コンピュータ２は、１つまたは複数のアプリケーションプログラムを実行することが可能な、汎用サーバ、デスクトップ、ラップトップ、ハンドヘルド、または他のタイプのコンピュータを含む。コンピュータ２は、少なくとも１つの中央処理装置８（「ＣＰＵ」）と、ランダム・アクセス・メモリ１８（「ＲＡＭ」）と読み出し専用メモリ（「ＲＯＭ」）２０とを含むシステムメモリ１２と、このメモリをＣＰＵ８に結合するシステムバス１０とを含む。起動中などにコンピュータ内部の要素間で情報を転送するする助けとなる基本ルーチンを含む基本的な入出力システムは、ＲＯＭ２０に記憶される。コンピュータ２は、大容量記憶装置１４をさらに含み、大容量記憶装置１４は、オペレーティングシステム２４、アプリケーションプログラム、および他のプログラムモジュール／リソース２６を記憶することを目的とする。
【００６４】
[00600]大容量記憶装置１４は、バス１０に接続された大容量記憶域コントローラ（図示せず）によってＣＰＵ８に接続される。大容量記憶装置１４およびその関連するコンピュータ可読媒体は、コンピュータ２の非揮発性記憶域となる。本明細書中に含まれるコンピュータ可読媒体の説明は、ハードディスクまたはＣＤ−ＲＯＭドライブなどの大容量記憶装置を指すが、コンピュータ可読媒体はコンピュータ２によりアクセスまたは利用できる任意の利用可能な媒体であってよいことは、当業者には理解されよう。
【００６５】
[00601]限定としてではなく、例を挙げると、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータの記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータなどの情報を記憶するための任意の方法または技術で実施される、揮発性の媒体、不揮発性の媒体、リムーバブルメディア、およびノンリムーバブルメディアを含む。コンピュータの記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他のソリッドステートメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（「ＤＶＤ」）、または他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または所望の情報を記憶するために使用でき、コンピュータ２によってアクセス可能な他の任意の媒体を含んでよいが、これらに限定されない。
【００６６】
[00602]本発明の種々の実施形態によれば、コンピュータ２は、たとえばローカルネットワーク、インターネットなどのネットワーク４によるリモートコンピュータへの論理接続を使用してネットワーク接続された環境において作動することができる。コンピュータ２は、バス１０に接続されたネットワーク・インタフェース・ユニット１６によってネットワーク４に接続することができる。ネットワーク・インタフェース・ユニット１６は他のタイプのネットワークおよびリモート・コンピューティング・システムに接続するために利用されることもできることを理解されたい。コンピュータ２は、キーボード、マウスなど（図示せず）を含むいくつかの他のデバイスからの入力を受信および処理するための入出力制御装置２２も含むことができる。同様に、入出力制御装置２２は、表示画面、プリンタ、または他のタイプの出力デバイスに出力を提供することができる。
【００６７】
[00603]上記で簡単に言及したように、Ｒｅｄｍｏｎｄ、ＷａｓｈｉｎｇｔｏｎのＭＩＣＲＯＳＯＦＴ  ＣＯＲＰＯＲＡＴＩＯＮのＷＩＮＤＯＷＳ（登録商標）オペレーティングシステムなどの、ネットワーク接続されたパーソナルコンピュータの動作を制御するのに適したオペレーティングシステム２４を含めて、いくつかのプログラムモジュールおよびデータファイルは、コンピュータ２の大容量記憶装置１４およびＲＡＭ１８に記憶されることができる。大容量記憶装置１４およびＲＡＭ１８は、１つまたは複数のプログラムモジュールを記憶することもできる。具体的には、大容量記憶装置１４およびＲＡＭ１８は、ワード・プロセッシング・アプリケーションおよび／またはプログラムモジュール、スプレッドシートアプリケーションおよび／またはプログラムモジュール、描画アプリケーションおよび／またはプログラムモジュール、電子メールアプリケーションおよび／またはプログラムモジュール、ならびに他のアプリケーションおよび／またはプログラムモジュールなどの、アプリケーションプログラムを記憶することができる。
【００６８】
[00604]本発明の種々の実施形態は、（１）コンピュータで実施される一連の行為（ａｃｔ）もしくはコンピューティングシステム上で動作する一連のプログラムモジュールとして、および／または（２）コンピューティングシステム内で相互接続された機械の論理回路もしくは回路モジュールとして、実装できることを理解されたい。この実装形態は、本発明を実施するコンピューティングシステムの性能要件に左右される選択の問題である。したがって、関連アルゴリズムを含む論理演算は、操作、構造的デバイス、行為、またはモジュールと、さまざまに呼ばれることがある。これらの操作、構造的デバイス、行為、およびモジュールは、本明細書中に記載される特許請求の範囲に記載される趣旨および範囲本発明から逸脱することなく、ソフトウェア、ファームウェア、専用デジタル論理、およびこれらの任意の組み合わせにおいて実施できることは、当業者には理解されよう。
【００６９】
[00605]種々の例示的な実施形態に関連して本発明を説明してきたが、以下の特許請求の範囲内で本発明に多数の修正を加え得ることは当業者には理解されよう。したがって、本発明の範囲は、いかなる形であれ上記の説明によって限定されるのではなく、以下の特許請求の範囲をすべて参照して決定されることが意図されるものである。
【図１】
0006043342.tif 000002
【図２】
0006043342.tif 000003
【図３】
0006043342.tif 000004
【図４】
0006043342.tif 000005
【図５Ａ】
0006043342.tif 000006
【図５Ｂ】
0006043342.tif 000007
【図５Ｃ】
0006043342.tif 000008
【図５Ｄ】
0006043342.tif 000009
【図５Ｅ】
0006043342.tif 000010
【図５Ｆ】
0006043342.tif 000011
【図６】
0006043342.tif 000012