【文献】
末安泰三,日本語入力がこれまでとは段違い 最強コンビ「SCIM」と「Anthy」の使い方,日経Linux,日本,日経BP社,2006年 5月 8日,第8巻、第5号,pp.43-47
【文献】
手嶋透,リッチクライアント WebとC/Sの良いとこ取り 操作性と管理性を両立,日経SYSTEMS,日本,日経BP社,2007年11月26日,第176号,pp.108-113
【文献】
下田洋志,機能の変更・追加ができる Firefoxの拡張機能を作ろう 第1回 拡張機能の正体を知る,日経Linux,日本,日経BP社,2006年 7月 8日,第8巻,第7号,pp.92-102
【文献】
中條達雄,プロに学ぶWebアプリ開発の“コツ”−Apache,PHP,MySQLを使いこなす,日経ソフトウエア,日本,日経BP社,2004年 2月24日,第7巻、第3号,pp.116-125
【文献】
加藤悦史,uim関連システムを使う,SoftwareDesign,日本,(株)技術評論社,2007年 3月18日,第197号,pp.50-57
(58)【調査した分野】(Int.Cl.,DB名)
前記プロセッサは、前記ウェブサーバ上で更新された前記ウェブドキュメントをダウンロードするようにさらに構成され、前記更新されたウェブドキュメントは前記アプリケーションにより利用可能であることを特徴とする請求項1に記載のコンピュータ装置。
前記組み込まれたコードは、URL(Uniform Resource Locator)プロトコルのハンドラを使用して実行されることを特徴とする請求項1に記載のコンピュータ装置。
前記プロセッサは、前記入力メソッドコンポーネントまたは前記アプリケーションと関連付けられた識別子を登録し、前記登録された識別子に基づいて前記データを前記アプリケーションにルートするようにさらに構成されたことを特徴とする請求項1に記載のコンピュータ装置。
スクリプト言語内に前記組み込まれたコードを記述するステップと、前記コードを前記ウェブページ内のマークアップ言語に組み込むステップとをさらに備えることを特徴とする請求項8に記載の方法。
後続の実行用に、前記組み込まれたコードを更新するステップをさらに備え、前記データは前記更新された組み込まれたコードに基づいて生成されることを特徴とする請求項8に記載の方法。
前記入力メソッドを登録するステップと、前記登録に基づいて前記データを前記アプリケーションにルートするステップとをさらに備えることを特注とする請求項8に記載の方法。
ユーザによる前記ウェブページとのインタラクトに応答して、前記入力メソッドと関連する前記アプリケーションに前記データを適用して、前記アプリケーションに付加的な機能を自動的に提供するステップをさらに備えることを特徴とする請求項8に記載の方法。
【発明を実施するための形態】
【0009】
開示されるアーキテクチャによって、マークアップ言語(例えば、HTML)のページが、入力メソッドがアタッチされたアプリケーションにコンテンツ(例えば、テキストストリング、オブジェクト、オーディオ、ビデオ等)を挿入し易くするのを可能にする。このように、プラグインの開発業者は、ウェブページの言語(例えば、HTML)を使用してユーザインタフェース(UI)の見た目および動きを任意に実装して、通常のHTMLページが行うことができるようなバックエンドデータソースとの通信を行って、そして適切な技術を使用してこれを達成することができる。ウェブページがウェブサーバに格納されて、オンザフライでクライアントにダウンロードされるので、インストールが最小限で済み、ユーザはウェブページの最新バージョンを簡単に自動的に取得することができる。
【0010】
仲介コンポーネントは、クライアント上で実装されて、ウェブページのマークアップ言語に組み込まれたコードの実行から得られるデータを受信する。付加的な仲介コンポーネントをクライアントシステムに付加することによって、クライアントアプリケーションに対応するクライアントシステム上でより多くのデータ型が対処され得る。
【0011】
次に図面の参照が行われるが、同様の参照数字は全体を通じて同様の要素を指すために使用される。以下の説明において、解説目的により、多くの特定の詳細が、その説明の完全な理解を与えるために示されている。しかしながら、そのような特定の詳細を用いなくても新規の実施形態が実践され得ることは明白であろう。他のインスタンスにおいて、その説明を容易にするために、周知の構造およびデバイスがブロックダイアグラム形式で示される。その意図するところは、特許請求される主題の精神および範囲内においてすべての修正、等価および代替を網羅することである。
【0012】
図1は、開示されるアーキテクチャに従ってコンピュータが実装されたコンテンツシステム100を示す。システム100は、ベースライン入力メソッドの機能性106をアプリケーション104に提供するためにアプリケーション104にアタッチされた入力メソッドコンポーネント102と、ウェブドキュメント112のデータ110を受信することによって、データ110によって提供される付加的な機能性114(例えば、入力メソッドの機能性)の付加をもたらす仲介コンポーネント108とを含み、付加的な機能性114は、ウェブドキュメント112に組み込まれたコード116の処理を経てアプリケーション104に間接的に提供される。
【0013】
ウェブドキュメント112は、実行される時にデータ110を作成する、組み込まれたコード116を含むウェブページになり得る。組み込まれたコード116は、適した任意のプログラミング言語(例えば、スクリプト言語)によって作り出され、HTMLのようなマークアップ言語に組み込まれ得る。ウェブドキュメント112をウェブサーバ上で格納して、組み込まれたコード116を処理するまたは処理させてデータ110を作成するクライアントのブラウザ118にダウンロードすることができるので、付加的な入力メソッドの機能性114になり得る。
【0014】
一般的に、ウェブドキュメント112は、ウェブドキュメント112とのユーザインタラクションに基づいてアプリケーション104に対する付加的な機能性114の(データ110のような)自動的な補充(supplementation)を容易にする。付加的な機能性114の生成物(例えば、テキスト、イメージ等)は、次に、アプリケーション104に提供される。仲介コンポーネント108を、URL(Uniform Resource Locator)プロトコルのハンドラ機構を使用して、ウェブドキュメント112から起動し得る。付加的な機能性114は、例えば、イメージ、オーディオ、および/またはビデオのようなテキストまたは複合オブジェクトのうちの少なくとも1つを含む。
【0015】
言い換えれば、コンピュータに実装されたコンテンツ100のシステムは、ベースライン入力メソッドの機能性106をアプリケーション104に提供するためにアプリケーション104と関連付けられた入力メソッドコンポーネント102と、入力メソッドコンポーネント102から通知を受信するために入力メソッドコンポーネント102と関連付けられた仲介コンポーネント108とを備え、仲介コンポーネント108は、ウェブページ内のコード116から作成されるデータ形式(例えば、ウェブドキュメント112)で付加的な機能性114をアプリケーション104に提供する。
【0016】
仲介コンポーネント108は、ウェブページ内のコードを処理するブラウザからデータ110を受信する。付加的な機能性114は、ブラウザ118がウェブページ内で仲介コンポーネント108を呼び出すコード116を実行する時に、データ110から作成される。仲介コンポーネント108は、入力メソッドコンポーネント102と関連付けられた識別子を受信する。仲介コンポーネント108は、その識別子を登録して、登録された識別子に基づいてデータ110をルーティングする。仲介コンポーネント108は、特定のデータ型のデータ110の利用を容易にする。さらに、仲介コンポーネント108は、文字、単語、句、またはアプリケーション104が言語アプリケーションである複合オブジェクトのうちの少なくとも1つの形式で、データ110がアプリケーション104へ入力するのを容易にする。
【0017】
図2は、ウェブドキュメント経由でコンポーネントとコンテンツ入力を容易にするエンティティとの間の通信のフロー
図200を示す。アプリケーション104は、アプリケーション104にアタッチされた入力メソッドコンポーネント102を用いて、クライアントコンピュータ上で実行するプログラムになり得る。仲介コンポーネント108は、クライアントコンピュータ上でインストールされて実行するネイティブコードになり得る。フロー
図200は、この例において、ウェブドキュメントが、プラグインの開発業者によって生成され得るHTMLページ202であることを示す。HTMLページ202は、ブラウザがコード116を実行する時に得られるデータが、入力メソッドコンポーネント102によってアプリケーション104に提供される付加的な入力メソッドの機能性を形成するような、例えば、
図1のスクリプト言語で書かれた組み込まれたコードを含む。他の技術を用いて、HTMLに組み込まれるプログラムコードを書き込み得ることにも留意されたい。
【0018】
プラグインの開発業者は、仲介コンポーネント108を開発して、ローカルクライアントコンピュータ上でユーザに仲介コンポーネント108をインストールさせることができる。仲介コンポーネント108は、あるイベントが入力メソッドコンポーネント102内で発生する時に、入力メソッドコンポーネント102から通知204を受信する。さらに、仲介コンポーネント108を、URLプロトコルのハンドラ206によってHTMLページ202から起動し得る。
【0019】
そのデータフローは、ウェブブラウザ内のウェブドキュメントから仲介コンポーネントへ、そして入力メソッドコンポーネントへ、そして最後にアプリケーションへと一方向に進み得る。仲介コンポーネントは、識別子(チケットまたはトークンとも呼ばれる)を使用して、どの入力メソッドコンポーネントのインスタンスがデータを送信すべきかを識別する。仲介コンポーネントは、事前に入力メソッドコンポーネントの識別子を知っている。その識別子は、入力メソッドコンポーネントから仲介コンポーネントにプッシュされ得る。
【0020】
一実施例において、アプリケーションがユーザインタラクションのフォーカスを取得する(またはアプリケーションウィンドウが最前面(foreground)に移動する)度に、そのアプリケーションに関連する入力メソッドコンポーネントは、自身の識別子(イベント通知とも呼ばれる)を仲介コンポーネントにプッシュする。任意のアプリケーションにアタッチされる各入力メソッドコンポーネントは、自身の識別子をいつでも仲介コンポーネントにプッシュすることができる。仲介コンポーネントは、最後に登録された識別子を呼び起こす。
【0021】
(入力メソッドコンポーネントから仲介コンポーネントにプッシュされるイベントと同期しない時は)いつでも、仲介コンポーネントは、ウェブドキュメントから呼び出され得る。呼び出されると、仲介コンポーネントは、最後に登録された識別子を使用して、関連する入力メソッドコンポーネントのインスタンスを見つける。
【0022】
ウェブドキュメントは、お気に入りのURLリストからの選択に応答するような、できる限りの方法で事前にウェブブラウザ内で開かれ、入力メソッドコンポーネントは、開かれた特定のウェブドキュメント等を用いてウェブブラウザを始動する。ひとたび開かれると、ウェブドキュメントは、すべての入力メソッドコンポーネントのインスタンスを供給することができる。従って、入力メソッドコンポーネントのインスタンスとウェブドキュメントとの比は、必ずしも1対1ではない。例えば、デスクトップ上で提示されるソフトウェアキーボードの単一のインスタンスは、望ましい任意のアプリケーションまたは複数のアプリケーションと共に働くのに用いられ得る。
【0023】
動作中、特定のイベントが発生すると、入力メソッドコンポーネント102は、通知204(識別子)を仲介コンポーネント108に送信する。仲介コンポーネント108は、このイベントをトリガとして用いてHTMLページ202を起動してもよいし、しなくてもよい。このイベントは、「チケット」情報を含む。チケット情報は、アプリケーション104のハンドル、入力メソッドコンポーネント102のCOM(Component Object Model)インタフェースポインタ、または仲介コンポーネント108が適切なアプリケーション(アプリケーション104)および/または入力メソッドを扱う(address)のに後で使用することができる他の機構となり得る。言い換えれば、クライアントコンピュータは、複数の異なる入力メソッドコンポーネントおよび特定の目的のために互換性のある仲介コンポーネントを用いることができる。本明細書の実施形態では、複数の仲介コンポーネントまたはクライアントアプリケーションごとに異なる最適なブローカ(broker)を用いた単一の入力メソッドコンポーネントのシナリオを説明する。
【0024】
HTMLページ202は、ウェブブラウザ内で開かれて、そのブラウザによってレンダリングされ得る。開発業者は、望ましい任意のHTMLページを作り出すことができる。登録されたURLプロトコルのハンドラ206は、適切なパラメータを用いてHTMLページ202から呼び出される。それに応答して、仲介コンポーネント108が始動し、HTMLページ202からパラメータを受信する。仲介コンポーネント108が、通知204と共に送信されるチケット情報を知っているので、仲介コンポーネント108は、次に、アプリケーション104および入力メソッドコンポーネント102に伝達して、通知206内で受信したチケットデータに基づいて、HTMLページ202のデータから得られる付加的な入力メソッドの機能性208を付加する。
【0025】
ひとたび仲介コンポーネント108がクライアントコンピュータ上でインストールされると、開発業者は、ウェブサーバに格納されたHTMLページ202に組み込まれたコードの変更または改良を行うことによって、つまり、クライアントコンピュータに適用される更新をせずに、入力メソッドコンポーネントの機能性を変更または改良することができる。このことは、付加的な機能性を自動的に更新および配置するのに便利で効率的なアーキテクチャを提供する。
【0026】
アプリケーション104に提供されるコンテンツは、テキスト形式のコンテンツ(textual content)に限定されないことに留意されたい。最も簡易なブローカを用いた最も簡易な形式において、そのコンテンツはテキストストリングになり得る。より複雑な実装において、仲介コンポーネント108を、仲介コンポーネント108がHTMLページ202から呼び出される時にメタデータを特定のアプリケーションに送信するように設計することができ、アプリケーション104は、そのメタデータの受信に応答して、複合オブジェクト(例えば、イメージ)を自身のアプリケーションに挿入することができる。本質的に、それは、アプリケーション104と仲介コンポーネント108との間の「契約(contract)」に基づいている。以前に示したように、複数の異なる仲介コンポーネントを特定の目的のために用いることができる。それによって、多くの異なるデータ型をユーザシステムに付加することができる。
【0027】
HTMLの使用およびウェブブラウジング技術は、すでにサーバ側で存在する。ウェブサーバ内のHTMLによるスクリプトを使用して、ユーザがウェブページを閲覧する(browse)と、そのHTMLページは、ウェブサーバからクライアントのブラウザにダウンロードされる。クライアントのブラウザは、組み込まれたスクリプトコードを実行してデータを作成する。従って、ユーザは、クライアントをインストールする必要がなく、ウェブサーバ内のHTMLページを単に開くだけである。仲介コンポーネントは、ネイティブコードとしてクライアント上でインストールされ得る。ウェブページのドキュメントからクライアントのブラウザに以前にダウンロードされたプログラムコードは、クライアントが、対応する更新されたウェブページのドキュメントをウェブサーバからダウンロードする度に自動的に更新され得る。
【0028】
仲介コンポーネントは、データ型を定義する。ひとたびデータ型が定義されてそれに関連するブローカがインストールされると、そのブローカは、典型的には、頻繁に更新される必要はないであろう。しかしながら、そのデータ型のデータは変わり得るし、そのデータ型用データの(ウェブページにコード化された)ジェネレータは、動的に変更し得る。従って、ジェネレータが、例えば、サーバ側に格納される時に、マークアップ言語(例えば、HTML)やスクリプト言語(例えば、ジャバスクリプト)を手段として説明されているので、データのジェネレータは、簡単に変更され得る。以前に示したように、マークアップ言語は、HTMLに制限されないが、ブラウザ内でレンダリング可能な適切な技術になり得る。
【0029】
活用し得るオペレーティングシステムの1つの機能は、URLプロトコルのハンドラである。この技術は、URLを実行可能ファイル(“exe”)にマップすることができる。例えば、URLは、“http:”、“mailto:”、または“ftp:”等から始まるフォーマットストリングを有することができる。オペレーティングシステムは、このストリングを渡し、このストリングのプレフィックスをチェックし、そして登録されたアプリケーション実行ファイル(executable)の制御に渡す機構を含むことができる。例えば、URLが“http:”からスタートする場合、オペレーティングシステムは、ブラウザ実行ファイルを始動するであろう。別の例において、URLストリングが“mailto:”から始まる場合、オペレーティングシステムは、メッセージングプログラム(例えば、電子メール)を始動する。
【0030】
オペレーティングシステムは、仲介コンポーネントがこの能力を拡張して、任意のプレフィックスストリングが登録されて任意の実行ファイルと関連付けられて定義され得るようにできる機能を含むこともできる。この機構は、望ましいプレフィックスストリングを仲介コンポーネントに登録するために用いられる。
【0031】
HTMLページにおいて、ユーザがプレフィックスを有するこのようなURLを始動すると、オペレーティングシステムは、登録されたブローカ実行ファイルを始動する。仲介コンポーネントが起動する時、仲介コンポーネントは、コマンドラインパラメータを使用してプレフィックスからスタートするURLストリングをすべて受信する。例えば、HTMLページが、<prefix>が“http”、“ftp”、“mailto”等になり得るいくつかの“<prefix>:xyz”を含む場合、仲介コンポーネントは、コマンドラインパラメータ内の“<prefix>:xyz”のストリングを受信する。各HTMLページが仲介コンポーネントのストリング“xyz”を渡したい場合、HTMLページは、“<prefix>:xyz”を含む。次に、仲介コンポーネントが始動して、仲介コンポーネントが既知の“<prefix>:”部を除去することによってストリング“xyz”を抽出することができるように、ストリング“<prefix>:xyz”を受信する。
【0032】
仲介コンポーネントがストリング“xyz”を受信すると、仲介コンポーネントおよびアプリケーションは、プロトコルを用いてそのストリングを送受信する。用いられ得る非常に基本的なプロトコルは、文字をあるウィンドウから別のウィンドウに送信するWM_CHAR(Windows(商標)のオペレーティングシステム)である。仲介コンポーネントがWM_CHARメッセージをアプリケーションに送信する場合(パラメータxを有するWM_CHAR、続いてパラメータyを有するWM_CHAR、続いてパラメータzを有するWM_CHARを送信する)、アプリケーションは、“x”に続いて“y”、それに続いて“z”のキーボード入力を受信する。従って、すべてのアプリケーションは、この受信メッセージを取り扱って、アプリケーションが取り扱うドキュメントに“xyz”を入力することができる。それは、基本的なブローカモデルである。従って、多くの異なる仲介コンポーネントが実装されて、必要に応じて、異なるプロトコルに登録され得る。
【0033】
より高度なブローカモデルにおいて、写真、ビデオ、イメージ、音等は、アプリケーションにプッシュされ得る。この場合、ユーザアプリケーションおよびブローカは、最適な動作のために事前定義されたプライベートプロトコルを用いることができる。より具体的な実装において、カスタムブローカ(custom broker)が、特定のクライアントアプリケーション用に開発され得る。
【0034】
クライアントマシン上には多くのアプリケーションがあり、各アプリケーションは、アタッチされた入力メソッドコンポーネントとともに動作するが、仲介コンポーネントは、単一のインスタンスである。入力メソッドコンポーネントは、仲介コンポーネントがどのアプリケーションにメッセージを送信するかという信号をその仲介コンポーネントに送る。ユーザが多くの実行可能なアプリケーションのうちの1つのキーを押すと、入力メソッドコンポーネントは、ユーザがインタラクトしていたアプリケーションを呼び起こして、オペレーティングシステムがそのアプリケーションを取り扱う仲介コンポーネントに送信する。その後、仲介コンポーネントは、ハンドルを使用してメッセージを送信する。これは、他の方法を用いてメッセージが送信されるアプリケーションを識別し得るという点において一例にすぎない。
【0035】
開示されるアーキテクチャは、例えば、通常適したキーボード上に提示されない文字を用いる言語(例えば、日本語、中国語、アラビア語、ラテン語等)に対する特殊な適用性を見出す。別の実装において、開示されるアーキテクチャは、キーボード経由では取得できない、入力デバイス(例えば、マウス、キーパッド等)によって容易になる単一の選択によって単語および/または句を挿入するのに用いられ得る。
【0036】
図3は、付加的な機能性をアプリケーションに付加するための第1のクライアント配置300を示す。例えば、第1のクライアント配置302において、第1の入力メソッドコンポーネント304は、第1の入力メソッドコンポーネント304によって提供されるベースライン入力メソッドの機能性を利用するために、第1のアプリケーション306に用いられる。いずれかの時点で、第1の入力メソッドコンポーネント304は、第1の仲介コンポーネント308への通知を経由して、識別子を第1の仲介コンポーネント308に登録する。登録が開始されると、第1のウェブページ310は、第1の仲介コンポーネント308を呼び出す。第1のウェブページ310は、プログラミング言語(例えば、ジャバスクリプト)内で作り出されて、HTMLのようなマークアップ言語に組み込まれる、組み込みコード312を含む。代替的には、他の適したウェブドキュメントの言語を用いることもできる。
【0037】
クライアントのブラウザは、多くの異なる目的のためにウェブページに格納するネットワークサーバ(図示せず)から第1のウェブページ310をダウンロードする。第1のウェブページ310は、クライアントのブラウザ内で開かれて、そのクライアントのブラウザは、組み込みコード312を実行する。組み込みデータ312の実行は、プロトコルハンドラ経由で第1の仲介コンポーネント308に渡されるデータを出力する。第1の仲介コンポーネント308は、次に、第1のアプリケーション306に挿入して使用する第1の付加的な入力メソッドの機能性310を付加するために、第1のアプリケーション306にそのデータをルートする。
【0038】
図4は、付加的な機能性をアプリケーションに付加するための第2のクライアント配置400を示す。ここでは、単一の仲介コンポーネント402は、クライアントマシン上の2つのアプリケーション用のデータ型および対応する2つの入力メソッドコンポーネントを支援する。第2の入力メソッドコンポーネント404は、第2のアプリケーション406と関連付けられ(例えば、アタッチされ)、第3の入力メソッドコンポーネント408は、第3のアプリケーション410と関連付けられる(例えば、アタッチされる)。第2の入力メソッドコンポーネント404および第3の入力メソッドコンポーネント408は、仲介コンポーネント402に登録する(通知を送信する)が、(例えば、ユーザインタラクションの最前面にある)アクティブなアプリケーションを示す登録を最後にする。
【0039】
2つのウェブページ412である、第2のウェブページ414と第3のウェブページ416とを示す。第2のウェブページ414が、クライアントブラウザによってダウンロードされて処理されると、クライアントブラウザは、仲介コンポーネント402を呼び出す組み込みコード418を実行する。クライアントブラウザによる組み込みコード418の実行は、仲介コンポーネント402に渡されるデータを作成し、仲介コンポーネント402は、最後に登録された入力メソッドコンポーネント(例えば、第2の入力メソッドコンポーネント404)に基づいて、付加的なアプリケーションの機能性としてのデータをルートする。例えば、第2のウェブページ414から渡されたデータは、付加的なアプリケーションの機能性422として第2のアプリケーション406に送信され得る。
【0040】
同様に、第3のウェブページ416が、クライアントブラウザによってダウンロードされて処理されると、クライアントブラウザは、仲介コンポーネント402を呼び出す組み込みコード420を実行する。クライアントブラウザによる組み込みコード420の実行は、仲介コンポーネント402に渡されるデータを作成し、仲介コンポーネント402は、最後に登録された入力メソッドコンポーネント(例えば、第3の入力メソッドコンポーネント408)に基づいて、付加的なアプリケーションの機能性としてのデータをルートする。例えば、第3のウェブページ416から渡されたデータは、付加的なアプリケーションの機能性424として第3のアプリケーション410に送信され得る。
【0041】
仲介コンポーネントが、単一の入力メソッドコンポーネント(例えば、第2の入力メソッドコンポーネント404)、次に、2つのクライアントアプリケーションに対する支援を提供するように開発され得ることは、対象のアーキテクチャの意図する範囲である。アプリケーション(406および410)および関連する入力メソッドコンポーネント(404および408)は、仲介コンポーネント402だけでなく、クライアントベースのアプリケーションでもある。ウェブページ(414および416)は、サーバベースであり、配置を更新するのに便利で効率的である。
【0042】
本明細書に含まれるのは、開示されるアーキテクチャの新規の態様を行うための例示的な方法論を代表する一連のフローチャートである。解釈を簡易にする目的で、本明細書に示す1または複数の方法論を、一連の動作として、例えば、フローチャートまたはフロー図の形式で説明しているが、いくつかの動作は異なる順序および/または本明細書で説明した他の動作と同時に起こり得るので、その方法論に従った動作の順序によって限定されないことを理解して認識されたい。例えば、方法論は、状態ダイアグラム等の一連の相関する状態またはイベントとして代替的に表し得ることを当業者は理解して認識するであろう。さらに、方法論で具体的に示された動作のすべてが、新規の実装に必要になり得るとは限らない。
【0043】
図5は、ブラウザ経由でコンテンツをアプリケーションに入力するコンテンツ方法を示す。500において、ベースライン入力メソッドの機能性がアプリケーションに提供される。502において、付加的なアプリケーションの機能性に関連する組み込まれたコードを含むウェブページにアクセスされる。504において、ウェブページ内の組み込まれたコードが実行されて、付加的なアプリケーションの機能性を取得する。506において、付加的なアプリケーションの機能性がアプリケーションに付加される。
【0044】
図6は、
図5の方法の付加的な態様を示す。600において、組み込まれたコードは、スクリプト言語で記述されて、ウェブページ内のマークアップ言語に組み込まれる。602において、ウェブページの組み込まれたコードが後続の実行用に更新されて、更新された組み込まれたコードに基づいて、更新された付加的なアプリケーションの機能性がアプリケーションに適用される。604において、ベースライン入力メソッドの機能性をブローカに提供する入力メソッドが登録されて、その登録に基づいたブローカ経由で付加的なアプリケーションの機能性がアプリケーションにルートされる。
【0045】
図7は、
図5の方法の付加的な態様を示す。700において、ウェブページとのインタラクトに応答して、付加的なアプリケーションの機能性がアプリケーションに自動的に付加される。702において、追跡情報(tracking information)を使用して、アプリケーションとのインタラクトが複数のアプリケーション内で追跡される。704において、追跡情報が、仲介コンポーネントへの通知内に送信される。706において、追跡情報に基づいて、付加的なアプリケーションの機能性が対応するアプリケーションに付加される。
【0046】
本出願で使用される用語「コンポーネント」および「システム」は、ハードウェア、ハードウェアとソフトウェアとの組み合わせ、ソフトウェア、または実行中のソフトウェアのいずれかのコンピュータに関連するエンティティを指すことを意図する。例えば、コンポーネントは、プロセッサ上で実行するプロセス、プロセッサ、ハードディスクドライブ、(光、半導体、および/または磁気ストレージ媒体の)複数のストレージデバイス、オブジェクト、実行ファイル、実行スレッド、プログラム、および/またはコンピュータになり得るが、これに限らない。実例として、サーバ上で実行するアプリケーションとそのサーバとの両方は、コンポーネントになり得る。1または複数のコンポーネントは、プロセスおよび/または実行スレッド内に常駐することができ、コンポーネントは、1つのコンピュータ上にローカライズされるおよび/または2または3以上のコンピュータ間で分散され得る。単語「例示的な」は、一例、インスタンス、または図示の役割を果たす意味で、本明細書で使用されてよい。本明細書で「例示的な」として説明される任意の態様または考案は、必ずしも好適なまたは他の態様または考案に優る利点と解釈されない。
【0047】
次に
図8を参照すると、開示されるアーキテクチャに従って、ブラウザ経由でコンテンツがアプリケーションに入力するのを容易にするコンピューティングシステム700のブロック図が示されている。そのさまざまな態様に付加的な文脈を提供するために、
図8および以下の考察は、さまざまな態様が実装され、適切なコンピューティングシステム800の簡潔な概要を提供することを意図する。上記の説明は、1または複数のコンピュータ上で実行することができるコンピュータ実行可能命令の一般的な文脈であるが、新規の実施形態も、他のプログラムモジュールとの組み合わせおよび/またはハードウェアとソフトウェアとの組み合わせとして実装され得ることを当業者は認識するであろう。
【0048】
さまざまな態様を実装するためのコンピューティングシステム800は、処理ユニット(複数可)804と、システムメモリ806と、システムバス808とを有するコンピュータ802を含む。処理ユニット(複数可)804は、単一プロセッサ、マルチプロセッサ、単一コアのユニットおよびマルチコアのユニットのなどの、さまざまな市販のプロセッサのいずれにもなり得る。さらに、新規の方法は、それぞれが1または複数の関連するデバイスに動作接続され得るミニコンピュータ、メインフレームコンピュータだけでなく、パーソナルコンピュータ(例えば、デスクトップ、ラップトップ等)、ハンドヘルドコンピューティングデバイス、マイクロプロセッサベースまたはプログラマブルな家電製品および同種のものも含む、他のコンピュータシステム構成に実践され得ることを当業者は認識するであろう。
【0049】
システムメモリ806は、揮発性(VOL)メモリ810(例えば、ランダムアクセスメモリ(RAM))と、不揮発性メモリ(NON−VOL)812(例えば、ROM、EPROM、EEPROM等)とを含むことができる。基本入出力システム(BIOS)を不揮発性メモリ812に格納することができ、スタートアップ時のような、コンピュータ802内のコンポーネント間でデータおよび信号の通信を容易にする基本ルーチンを含む。揮発性メモリ810は、データキャッシング用のスタティックRAMのような高速RAMを含むこともできる。
【0050】
システムバス808は、メモリサブシステム806と処理ユニット(複数可)804とをつなぐインタフェースを含む、システムコンポーネント用のインタフェースを提供するが、これに限らない。システムバス808は、各種市販のバスアーキテクチャのいずれかを使用して、メモリバス(メモリコントローラの有無を問わず)と、周辺バス(例えば、PCI、PCIe、AGP、LPC等)とにさらに相互接続することができるいくつかのタイプのバス構造のいずれにもされ得る。
【0051】
コンピュータ802は、ストレージサブシステム(複数可)814と、ストレージサブシステム(複数可)814をシステムバス808および他の望ましいコンピュータコンポーネントにインタフェースするためのストレージインタフェース(複数可)816とをさらに含む。ストレージサブシステム(複数可)814は、例えば、1または複数のハードディスクドライブ(HDD)、磁気フロッピーディスクドライブ(FDD)、および/または光ディスクストレージドライブ(例えば、CD−ROMドライブ、DVDドライブ)を含むことができる。ストレージインタフェース(複数可)816は、例えば、EIDE、ATA、SATA、およびIEEE1394のなどのインタフェース技術を含むことができる。
【0052】
1または複数のプログラムおよびデータは、メモリサブシステム806、リムーバブルメモリサブシステム818(例えば、フラッシュドライブ形態の技術因子)、および/またはオペレーティングシステム820、1または複数のアプリケーションプログラム822、他のプログラムモジュール824、およびプログラムデータ826を含む、ストレージサブシステム(複数可)814(例えば、光、磁気、半導体)に格納され得る。
【0053】
1または複数のアプリケーションプログラム822、他のプログラムモジュール824、およびプログラムデータ826は、
図1の入力メソッドコンポーネント102、アプリケーション104、ベースライン入力メソッドの機能性106、仲介コンポーネント108、付加的な機能性114、データ110、ブラウザ118、ウェブドキュメント112および組み込まれたコード116と、
図2のコンポーネントおよびエンティティと、
図4のコンポーネントおよびエンティティと、例えば、
図5から
図7の方法で説明した1または複数の動作とを含むことができる。
【0054】
一般的に、プログラムは、ルーチン、方法、データ構造、他のソフトウェアコンポーネント等を含み、それらは、特定のタスクを行うまたは特定の抽象データ型を実装する。オペレーティングシステム820、アプリケーション822、モジュール824、および/またはデータ826のすべてまたは一部を、例えば、揮発性メモリ810のようなメモリにキャッシュすることもできる。開示されるアーキテクチャは、(例えば、仮想マシンのような)さまざまな市販のオペレーティングシステムまたはオペレーティングシステムの組み合わせに実装され得ることを認識されたい。
【0055】
ストレージサブシステム(複数可)814およびメモリサブシステム(806および818)は、データ、データ構造、コンピュータ実行可能命令その他からなる揮発性および不揮発性ストレージ用のコンピュータ可読媒体の役割を果たす。コンピュータ可読媒体は、コンピュータ802によってアクセスされ得る利用可能な媒体のいずれにもすることができ、揮発性および不揮発性媒体、リムーバブルおよびノンリムーバブル媒体を含む。コンピュータ802に対して、そのような媒体は、適した任意のデジタルフォーマットでデータのストレージに対処する。開示されるアーキテクチャの新規の方法を行うコンピュータ実行可能命令を格納するために、ジップドライブ、磁気テープ、フラッシュメモリカード、カートリッジおよび同種のものといった他のタイプのコンピュータ可読媒体が用いられ得ることを当業者は認識されたい。
【0056】
ユーザは、キーボードおよびマウスのような外部のユーザ入力デバイス828を使用して、コンピュータ802、プログラム、およびデータとインタラクトすることができる。他の外部のユーザ入力デバイス828は、マイクロフォン、IR(赤外線)リモート制御、ジョイスティック、ゲームパッド、カメラ認識システム、スタイラスペン、タッチスクリーン、ジェスチャーシステム(例えば、目の動き、頭の動き等)および/または同種のものを含むことができる。例えば、コンピュータ802がポータブルコンピュータである場合、ユーザは、タッチパッド、マイクロフォン、キーボードといった内蔵ユーザ入力デバイス830を使用して、コンピュータ802、プログラム、およびデータとインタラクトすることができる。これらと他の入力デバイスは、システムバス808経由で入出力(I/O)デバイスインタフェース(複数可)832を通じて処理ユニット(複数可)804に接続されるが、パラレルポート、IEEE1394シリアルポート、ゲームポート、USBポート、IRインタフェース等といった他のインタフェースによって接続され得る。I/Oデバイスインタフェース(複数可)832はまた、プリンタ、オーディオデバイス、カメラデバイス、およびその他としてサウンドカードおよび/または内蔵オーディオ処理能力等の、出力周辺機器834の使用を容易にする。
【0057】
1または複数のグラフィックスインタフェース(複数可)836(広くグラフィックス処理ユニット(GPU)とも呼ばれる)は、コンピュータ802と、外部ディスプレイ(複数可)838(例えば、LCD、プラズマ)および/または内蔵ディスプレイ840(例えば、ポータブルコンピュータ)との間でグラフィックスおよびビデオ信号を提供する。グラフィックスインタフェース(複数可)836を、コンピュータシステムボードの一部として製造することもできる。
【0058】
コンピュータ802は、有線/無線通信サブシステム842経由で1または複数のネットワークおよび/または他のコンピュータへの論理接続を使用して、ネットワーク化環境(例えば、IP)において動作することができる。その他のコンピュータは、ワークステーション、サーバ、ルータ、パーソナルコンピュータ、マイクロプロセッサベースの娯楽家電製品、ピアデバイス、または他の共通ネットワークノードを含むことができ、典型的には、コンピュータ802に対して説明した要素の多くまたはすべてを含む。論理接続は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、ホットスポット等に対する有線/無線接続性を含むことができる。LANおよびWANネットワーキング環境は、事務所および会社では普通のことであり、イントラネットのような企業規模のコンピュータネットワークを容易にし、そのすべてがインターネットのようなグローバル通信ネットワークに接続できる。
【0059】
ネットワーク化環境において使用される時、コンピュータ802は、有線/無線通信サブシステム824(例えば、ネットワークインタフェースアダプタ、内蔵トランシーバサブシステム等)経由でネットワークに接続して、有線/無線ネットワーク、有線/無線プリンタ、有線/無線入力デバイス844等との通信を行う。コンピュータ802は、モデムを含むことができ、またはネットワーク上で通信を確立するための他の手段を有する。ネットワーク化環境において、コンピュータ802に対するプログラムおよびデータは、分散システムと関連付けられる時にリモートメモリ/ストレージデバイスに格納され得る。図示されたネットワーク接続は、例示的であり、コンピュータ間で通信リンクを確立する他の手段も使用され得ることが認識されるであろう。
【0060】
コンピュータ802は、例えば、プリンタ、スキャナ、デスクトップおよび/またはポータブルコンピュータ、パーソナルデジタルアシスタント(PDA)、通信衛星、無線で検出可能なタグと関連付けられた任意の設備または場所(例えば、キオスク、新聞売店、化粧室)、および電話器との無線通信(例えば、IEEE802.11無線変調技術)に動作配置された無線デバイスのような、IEEE802.xx標準ファミリー等の無線技術を使用して、有線/無線デバイスまたはエンティティとの通信を行うように動作する。これは、少なくともホットスポット用のWi−Fi(またはワイヤレスフィディリティー)、WiMax、およびBluetooth(商標)の無線技術を含む。従って、そのような通信は、従来のネットワークまたは少なくとも2つのデバイス間の単なるアドホック通信のように、事前定義された構造になり得る。Wi−Fiネットワークは、IEEE802.11x(a、b、g等)と呼ばれる無線技術を使用して、セキュアで信用できる、高速無線の接続性を提供する。Wi−Fiネットワークを使用して、コンピュータを相互に接続したり、インターネットおよび無線ネットワーク(IEEE802.3に関連する媒体および機能)に接続することができる。
【0061】
次に
図9を参照すると、ブラウザ経由でコンテンツがアプリケーションに入力するのを容易にするコンピューティング環境900のブロック図が示されている。環境900は、1または複数のクライアント902を含む。クライアント(複数可)902は、ハードウェアおよび/またはソフトウェア(例えば、スレッド、プロセス、コンピューティングデバイス)になり得る。クライアント(複数可)902は、例えば、クッキー(複数可)および/または関連する文脈情報を格納することができる。
【0062】
環境900は、1または複数のサーバ904も含む。サーバ(複数可)904を、ハードウェアおよび/またはソフトウェア(例えば、スレッド、プロセス、コンピューティングデバイス)にすることもできる。サーバ904は、スレッドを格納して、例えば、そのアーキテクチャを用いることによって変換を行うことができる。クライアント902とサーバ904との間の一つの実行可能な通信は、2または3以上のコンピュータプロセス間で伝送するのに適応するデータパケットの形式になり得る。データパケットは、例えば、クッキーおよび/または関連する文脈情報を含んでよい。環境900は、クライアント(複数可)902とサーバ(複数可)904との間の通信を容易にするのに用いることができる、通信フレームワーク906(例えば、インターネット等のグローバル通信ネットワーク)を含む。
【0063】
通信は、(光ファイバーを含む)有線および/または無線技術を経由して容易にされ得る。クライアント(複数可)902は、情報(例えば、クッキー(複数可)および/または関連する文脈情報)をローカルからクライアント(複数可)902に格納するのに用いられ得る、1または複数のクライアントデータストア908に動作接続される。同様に、サーバ(複数可)904は、情報をローカルからサーバ904に格納するのに用いられ得る、1または複数のサーバデータストア910に動作接続される。
【0064】
上述した内容は、開示されるアーキテクチャの例を含む。もちろん、コンポーネントおよび/または方法論の考えられるあらゆる組み合わせを説明するのは不可能であるが、当業者は、さらに多くの組み合わせおよび置き換えが実現可能であることを認識できる。それによって、新規のアーキテクチャは、添付の特許請求の精神および範囲内において、そのようなすべての代替、修正および変形を包含することを意図する。さらに、用語「含む」が詳細な説明または特許請求の範囲のいずれかで使用される限り、このような用語は、用語「備える」が特許請求の範囲において用いられる時に「備える」が移行語として解釈されるのと同様に包括的であることを意図する。