(57)【特許請求の範囲】
【請求項１】
コンピュータによって実行される方法であって、
インプットメソッドエディタ（ＩＭＥ）のユーザインタフェースへのユーザ入力として１つ以上の入力文字列を受け取る段階と、
スクリプトエンジンに前記入力文字列を提供する段階と、
スクリプトリポジトリに電子的に保存される複数のスクリプトの中からスクリプトを選択する段階と、
１つ以上の候補を生成するために、前記スクリプトエンジンを使用して前記スクリプトを通じて前記入力文字列を処理する段階と、
前記１つ以上の候補をＩＭＥエンジンに提供する段階と
を含み、
前記スクリプトを選択する前記段階が、
前記入力文字列を１つ以上のトリガ文字列と比較する段階と、
前記入力文字列が前記１つ以上のトリガ文字列の内の１つに適合することを判定する段階と、
前記１つ以上のトリガ文字列の内の前記適合する１つに基づいて前記スクリプトを選択する段階とを含む
ことを特徴とするコンピュータによって実行される方法。
【請求項２】
前記スクリプトエンジンが、サンドボックス処理の中で実行される
ことを特徴とする請求項１に記載のコンピュータによって実行される方法。
【請求項３】
前記ＩＭＥエンジンが、プロセス間通信を使用して、前記スクリプトエンジンと通信する
ことを特徴とする請求項２に記載のコンピュータによって実行される方法。
【請求項４】
前記サンドボックス処理の中でＩＰＣサーバを実行する段階を更に含み、前記ＩＰＣサーバが、前記ＩＭＥエンジンと前記スクリプトエンジンとの間の通信を可能にする
ことを特徴とする請求項３に記載のコンピュータによって実行される方法。
【請求項５】
前記サンドボックス処理が、前記スクリプトエンジンの機能性を制限する
ことを特徴とする請求項２から請求項４のいずれか一項に記載のコンピュータによって実行される方法。
【請求項６】
前記入力文字列は、前記スクリプト、及び前記スクリプトによって処理されるべき入力を特定する入力系列を含む
ことを特徴とする請求項１から請求項５のいずれか一項に記載のコンピュータによって実行される方法。
【請求項７】
拡張モードにおける前記ＩＭＥの動作を指示する入力を受け取る段階と、
前記入力を受け取ることに応答して、前記拡張モードで前記ＩＭＥを動作させる段階と、
前記拡張モードにおいて動作している場合に、全てのユーザ入力を前記スクリプトエンジンに提供する段階と
を更に含むことを特徴とする請求項１から請求項５のいずれか一項に記載のコンピュータによって実行される方法。
【請求項８】
前記スクリプトを通じて前記入力文字列を処理する段階が、
ウェブ基盤のサービスとのネットワーク接続を確立する段階と、
前記入力文字列の少なくとも一部を前記ウェブ基盤のサービスに提供する段階と、
前記ウェブ基盤のサービスから、前記入力文字列の前記少なくとも一部に基づいて生成された応答を受け取る段階とを含み、
前記１つ以上の候補が、前記応答を含む
ことを特徴とする請求項１から請求項７のいずれか一項に記載のコンピュータによって実行される方法。
【請求項９】
前記ウェブ基盤のサービスが、地図サービス、検索サービス、及び翻訳サービスの内の少なくとも１つを含む
ことを特徴とする請求項８に記載のコンピュータによって実行される方法。
【請求項１０】
候補の第１のセットを含む第１の候補リストを生成する段階と、
前記スクリプトエンジンを用いて生成された前記１つ以上の候補を包含する候補の第２のセットを含む第２の候補リストを生成する段階と、
第３の候補リストを生成するために、前記候補の第１のセットの少なくとも一部及び前記候補の第２のセットの少なくとも一部を結合する段階と、
ユーザ装置に前記第３の候補リストを表示する段階と
を更に含むことを特徴とする請求項１から請求項９のいずれか一項に記載のコンピュータによって実行される方法。
【請求項１１】
前記ＩＭＥエンジンが、前記ユーザインタフェース上で表示するように前記１つ以上の候補を処理する
ことを特徴とする請求項１から請求項１０のいずれか一項に記載のコンピュータによって実行される方法。
【請求項１２】
前記１つ以上の候補の内の１つの選択を指示する第２のユーザ入力を受け取る段階と、
前記１つ以上の候補の内の前記１つをユーザ装置上で実行されるアプリケーションに入力する段階と
を更に含むことを特徴とする請求項１から請求項１１のいずれか一項に記載のコンピュータによって実行される方法。
【請求項１３】
前記アプリケーションが、ワードプロセッシングアプリケーション、文書編集アプリケーション、表計算ソフトアプリケーション、電子メールアプリケーション、プレゼンテーションアプリケーション、及びウェブブラウザの内の１つを含む
ことを特徴とする請求項１２に記載のコンピュータによって実行される方法。
【請求項１４】
前記スクリプトリポジトリに電子的に保存される各スクリプトが、複数の承認されたルーチンの中から選択された１つ以上のルーチンを含む
ことを特徴とする請求項１から請求項１３のいずれか一項に記載のコンピュータによって実行される方法。
【請求項１５】
前記スクリプトのスクリプト言語を特定する段階を更に含み、前記スクリプトエンジンが、前記スクリプトを通じて前記入力文字列を処理するための前記スクリプト言語に対応するランタイムエンジンを提供する
ことを特徴とする請求項１から請求項１４のいずれか一項に記載のコンピュータによって実行される方法。
【請求項１６】
前記入力文字列が、第１の言語で提供される
ことを特徴とする請求項１から請求項１５のいずれか一項に記載のコンピュータによって実行される方法。
【請求項１７】
前記１つ以上の候補が、前記第１の言語で提供される
ことを特徴とする請求項１６に記載のコンピュータによって実行される方法。
【請求項１８】
前記１つ以上の候補が、第２の言語で提供される
ことを特徴とする請求項１６に記載のコンピュータによって実行される方法。
【請求項１９】
前記１つ以上の候補が、前記第１の言語と第２の言語の組み合わせで提供される
ことを特徴とする請求項１６に記載のコンピュータによって実行される方法。
【請求項２０】
前記１つ以上の候補が、１つ以上の記号を含む
ことを特徴とする請求項１６から請求項１９のいずれか一項に記載のコンピュータによって実行される方法。
【請求項２１】
入力を受け取る段階と、
前記入力に応答して、前記スクリプトを含むと共に、中央レジストリに電子的に保存される利用可能なスクリプトのリストを生成する段階と、
前記スクリプトの選択を指示する第２の入力を受け取る段階と、
前記第２の入力に応答して、前記中央レジストリから前記スクリプトを読み出す段階と、
前記スクリプトを前記スクリプトリポジトリに保存する段階と
を更に含むことを特徴とする請求項１から請求項２０のいずれか一項に記載のコンピュータによって実行される方法。
【請求項２２】
コンピュータによって実行される方法であって、
インプットメソッドエディタ（ＩＭＥ）のユーザインタフェースへのユーザ入力として１つ以上の入力文字列を受け取る段階と、
スクリプトエンジンに前記入力文字列を提供する段階と、
スクリプトリポジトリに電子的に保存される複数のスクリプトの中からスクリプトを選択する段階と、
前記スクリプトにおいて提供された指示に基づいて、ウェブ基盤のサービスとのネットワーク接続を確立する段階と、
前記入力文字列の少なくとも一部を前記ウェブ基盤のサービスに提供する段階と、
前記ウェブ基盤のサービスから応答を受け取る段階と、
ユーザに前記応答を表示するために、ＩＭＥエンジンに前記応答を提供する段階と
を含み、
前記スクリプトを選択する前記段階が、
前記入力文字列を１つ以上のトリガ文字列と比較する段階と、
前記入力文字列が前記１つ以上のトリガ文字列の内の１つに適合することを判定する段階と、
前記１つ以上のトリガ文字列の内の前記適合する１つに基づいて前記スクリプトを選択する段階とを含む
ことを特徴とするコンピュータによって実行される方法。
【請求項２３】
前記ウェブ基盤のサービスが、地図サービス、検索サービス、及び翻訳サービスの内の少なくとも１つを含む
ことを特徴とする請求項２２に記載のコンピュータによって実行される方法。
【請求項２４】
前記入力文字列の前記少なくとも一部が前記地図サービスに提供され、前記応答が、前記地図サービスによって生成されると共に、ユーザが選択可能なハイパーリンクを含む
ことを特徴とする請求項２３に記載のコンピュータによって実行される方法。
【請求項２５】
前記入力文字列の前記少なくとも一部が検索語として前記検索サービスに提供され、前記応答が、前記検索サービスによって生成されると共に、前記検索語に基づいて前記検索サービスによって生成された１つ以上の検索結果を含む
ことを特徴とする請求項２３に記載のコンピュータによって実行される方法。
【請求項２６】
前記入力文字列の前記少なくとも一部が、前記翻訳サービスに提供されると共に、第１の言語で提供され、前記応答が、前記翻訳サービスによって生成されると共に、第２の言語で提供される
ことを特徴とする請求項２３に記載のコンピュータによって実行される方法。
【請求項２７】
表示装置と、
１つ以上のスクリプトを電子的に保存するためのスクリプトリポジトリを含むコンピュータ読み取り可能な記録媒体と、
インプットメソッドエディタ（ＩＭＥ）を実行し、前記ＩＭＥへのユーザ入力として１つ以上の入力文字列を受け取り、スクリプトエンジンに前記入力文字列を提供し、前記スクリプトリポジトリから前記スクリプトを選択し、１つ以上の候補を生成するために、前記スクリプトエンジンを使用して前記スクリプトを通じて前記入力文字列を処理し、前記表示装置に表示されるべき前記１つ以上の候補を提供する１つ以上のプロセッサと
を備え、
前記１つ以上のプロセッサが、前記入力文字列を１つ以上のトリガ文字列と比較し、前記入力文字列が前記１つ以上のトリガ文字列の内の１つに適合することを判定し、前記１つ以上のトリガ文字列の内の前記適合する１つに基づいて前記スクリプトを選択する
ことを特徴とするシステム。
【請求項２８】
前記スクリプトエンジンがサンドボックス処理の中で実行される
ことを特徴とする請求項２７に記載のシステム。
【請求項２９】
ＩＭＥエンジンが、プロセス間通信を使用して、前記スクリプトエンジンと通信する
ことを特徴とする請求項２８に記載のシステム。
【請求項３０】
前記１つ以上のプロセッサが前記サンドボックス処理の中でＩＰＣサーバを実行し、前記ＩＰＣサーバが、前記ＩＭＥエンジンと前記スクリプトエンジンとの間の通信を可能にする
ことを特徴とする請求項２９に記載のシステム。
【請求項３１】
前記サンドボックス処理が、前記スクリプトエンジンの機能性を制限する
ことを特徴とする請求項２８から請求項３０のいずれか一項に記載のシステム。
【請求項３２】
前記入力文字列は、前記スクリプト、及び前記スクリプトによって処理されるべき入力を特定する入力系列を含む
ことを特徴とする請求項２７から請求項３１のいずれか一項に記載のシステム。
【請求項３３】
前記１つ以上のプロセッサが、拡張モードにおける前記ＩＭＥの動作を指示する入力を受け取り、前記入力を受け取ることに応答して、前記拡張モードで前記ＩＭＥを動作させ、前記拡張モードにおいて動作している場合に、全てのユーザ入力を前記スクリプトエンジンに提供する
ことを特徴とする請求項２７から請求項３１のいずれか一項に記載のシステム。
【請求項３４】
前記１つ以上のプロセッサが、
ウェブ基盤のサービスとのネットワーク接続を確立し、
前記入力文字列の少なくとも一部を前記ウェブ基盤のサービスに提供すると共に、
前記ウェブ基盤のサービスから、前記入力文字列の前記少なくとも一部に基づいて生成された応答を受け取る
ことによって、前記スクリプトを通じて前記入力文字列を処理し、
前記１つ以上の候補が、前記応答を含む
ことを特徴とする請求項２７から請求項３３のいずれか一項に記載のシステム。
【請求項３５】
前記ウェブ基盤のサービスが、地図サービス、検索サービス、及び翻訳サービスの内の少なくとも１つを含む
ことを特徴とする請求項３４に記載のシステム。
【請求項３６】
前記１つ以上のプロセッサが、候補の第１のセットを含む第１の候補リストを生成し、前記スクリプトエンジンを用いて生成された前記１つ以上の候補を包含する候補の第２のセットを含む第２の候補リストを生成し、第３の候補リストを生成するために、前記候補の第１のセットの少なくとも一部及び前記候補の第２のセットの少なくとも一部を結合し、ユーザ装置に前記第３の候補リストを表示する
ことを特徴とする請求項２７から請求項３５のいずれか一項に記載のシステム。
【請求項３７】
前記ＩＭＥエンジンが、前記ユーザインタフェース上で表示するように前記１つ以上の候補を処理する
ことを特徴とする請求項２７から請求項３６のいずれか一項に記載のシステム。
【請求項３８】
前記１つ以上のプロセッサが、前記１つ以上の候補の内の１つの選択を指示する第２のユーザ入力を受け取り、前記１つ以上の候補の内の前記１つをユーザ装置上で実行されるアプリケーションに入力する
ことを特徴とする請求項２７から請求項３７のいずれか一項に記載のシステム。
【請求項３９】
前記アプリケーションが、ワードプロセッシングアプリケーション、文書編集アプリケーション、表計算ソフトアプリケーション、電子メールアプリケーション、プレゼンテーションアプリケーション、及びウェブブラウザの内の１つを含む
ことを特徴とする請求項３８に記載のシステム。
【請求項４０】
前記スクリプトリポジトリに電子的に保存される各スクリプトが、複数の承認されたルーチンの中から選択された１つ以上のルーチンを含む
ことを特徴とする請求項２７から請求項３９のいずれか一項に記載のシステム。
【請求項４１】
前記１つ以上のプロセッサが、前記スクリプトのスクリプト言語を特定し、前記スクリプトエンジンが、前記スクリプトを通じて前記入力文字列を処理するための前記スクリプト言語に対応するランタイムエンジンを提供する
ことを特徴とする請求項２７から請求項４０のいずれか一項に記載のシステム。
【請求項４２】
前記入力文字列が、第１の言語で提供される
ことを特徴とする請求項２７から請求項４１のいずれか一項に記載のシステム。
【請求項４３】
前記１つ以上の候補が、前記第１の言語で提供される
ことを特徴とする請求項４２に記載のシステム。
【請求項４４】
前記１つ以上の候補が、第２の言語で提供される
ことを特徴とする請求項４２に記載のシステム。
【請求項４５】
前記１つ以上の候補が、前記第１の言語と第２の言語の組み合わせで提供される
ことを特徴とする請求項４２に記載のシステム。
【請求項４６】
前記１つ以上の候補が、１つ以上の記号を含む
ことを特徴とする請求項４２から請求項４５のいずれか一項に記載のシステム。
【請求項４７】
前記１つ以上のプロセッサが、入力を受け取り、前記入力に応答して、前記スクリプトを含むと共に、中央レジストリに電子的に保存される利用可能なスクリプトのリストを生成し、前記スクリプトの選択を指示する第２の入力を受け取り、前記第２の入力に応答して、前記中央レジストリから前記スクリプトを読み出し、前記スクリプトを前記スクリプトリポジトリに保存する
ことを特徴とする請求項２７から請求項４６のいずれか一項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この開示は、入力方式（input methods：インプットメソッド）に関係する。
【背景技術】
【０００２】
１つまたは２つの文字がおおよそ１つの単語または意味に対応する表語文字のスクリプト（logographic script）を使用する言語は、コンピュータのキーボードまたはモバイル機器のキーパッドのような標準入力装置上のキーより更に多くの文字を有している。例えば、中国語は、基本のピンイン文字（Pinyin character）と５つの音調（tone：トーン）によって定義された数万の文字を含む。これらの多対１の組み合わせ（association）のマッピング（mapping：対応付け）は、入力装置上で発見されなかった文字及び記号の入力を容易にする入力方式によって実施され得る。従って、欧米流（Western-style）のキーボードまたはモバイル機器が、漢字を入力するために使用されることができる。同様に、入力方式が、日本語、韓国語、及び他の言語のような表語文字を含む多くの他の言語を入力するのに欧米流のキーボードを使用するために、使用されることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
インプットメソッドエディタ（input method editor：ＩＭＥ）は、入力方式を実現するために使用され得る。例として中国語を使用すると、ユーザは、１つ以上の漢字の候補を提供するためにＩＭＥによって処理される、１つ以上のピンイン文字または照会（query：クエリー）を入力することができる。１つのシナリオは、照会対候補のマッピング（mapping：対応付け）関数：“f(query)=candidates（ｆ（照会）＝候補）”を含み、ここで、照会は一連のＡＳＣＩＩ（アスキー）キーを含み、そして候補は中国語の文字列もしくは非中国語の文字列のリストを含む。他の入力対出力のマッピングはＡＳＣＩＩの照会を中国語の候補または非中国語の候補に対応付けるが、そのようなマッピングは機能性において制限される。
【課題を解決するための手段】
【０００４】
この明細書は、インプットメソッドエディタ、及び、特にインプットメソッドエディタのための拡張フレームワークに関する技術を説明する。
【０００５】
概して、この明細書で説明された主題の１つの革新的な特徴は、インプットメソッドエディタ（ＩＭＥ）のユーザインタフェースへのユーザ入力を受け取る段階と、スクリプトエンジンに前記ユーザ入力を提供する段階と、スクリプトリポジトリに電子的に保存される複数のスクリプトの中からスクリプトを選択する段階と、１つ以上の候補を生成するために、前記スクリプトエンジンを使用して前記スクリプトを通じて前記ユーザ入力を処理する段階と、前記１つ以上の候補をＩＭＥエンジンに提供する段階との動作を含む方法において具体化され得る。
【０００６】
いくらかの特徴において、前記動作は、サンドボックス処理を例示化する段階を更に含み、前記スクリプトエンジンは、前記サンドボックス処理の中で実行される。
【０００７】
いくらかの特徴において、前記ＩＭＥエンジンは、プロセス間通信を使用して、前記スクリプトエンジンと通信する。
【０００８】
いくらかの特徴において、前記動作は、前記サンドボックス処理の中でＩＰＣサーバを実行する段階を更に含み、前記ＩＰＣサーバは、前記ＩＭＥエンジンと前記スクリプトエンジンとの間の通信を可能にする。
【０００９】
いくらかの特徴において、前記サンドボックス処理は、前記スクリプトエンジンの機能性を制限する。
【００１０】
いくらかの特徴において、前記ユーザ入力は、前記スクリプト、及び前記スクリプトによって処理されるべき入力を特定する入力系列を含む。
【００１１】
いくらかの特徴において、前記動作は、前記ユーザ入力を１つ以上のトリガ文字列と比較する段階と、前記ユーザ入力が前記１つ以上のトリガ文字列の内の１つに適合することを判定する段階と、前記１つ以上のトリガ文字列の内の１つに基づいて前記スクリプトを選択する段階とを更に含む。
【００１２】
いくらかの特徴において、前記動作は、拡張モードにおける前記ＩＭＥの動作を指示する入力を受け取る段階と、前記入力を受け取ることに応答して、前記拡張モードで前記ＩＭＥを動作させる段階と、前記拡張モードにおいて動作している場合に、全てのユーザ入力を前記スクリプトエンジンに提供する段階とを更に含む。
【００１３】
いくらかの特徴において、前記スクリプトを通じて前記ユーザ入力を処理する段階は、ウェブ基盤のサービスとのネットワーク接続を確立する段階と、前記ユーザ入力の少なくとも一部を前記ウェブ基盤のサービスに提供する段階と、前記ウェブ基盤のサービスから、前記ユーザ入力の前記少なくとも一部に基づいて生成された応答を受け取る段階との動作を含み、前記１つ以上の候補は、前記応答を含む。いくらかの特徴において、前記ウェブ基盤のサービスは、地図サービス、検索サービス、及び翻訳サービスの内の少なくとも１つを含む。
【００１４】
いくらかの特徴において、前記動作は、候補の第１のセットを含む第１の候補リストを生成する段階と、前記スクリプトエンジンを用いて生成された前記１つ以上の候補を包含する候補の第２のセットを含む第２の候補リストを生成する段階と、第３の候補リストを生成するために、前記候補の第１のセットの少なくとも一部及び前記候補の第２のセットの少なくとも一部を結合する段階と、ユーザ装置に前記第３の候補リストを表示する段階とを更に含む。
【００１５】
いくらかの特徴において、前記ＩＭＥエンジンは、前記ユーザインタフェース上で表示するように前記１つ以上の候補を処理する。
【００１６】
いくらかの特徴において、前記動作は、前記１つ以上の候補の内の１つの選択を指示する第２のユーザ入力を受け取る段階と、前記１つ以上の候補の内の前記１つをユーザ装置上で実行されるアプリケーションに入力する段階とを更に含む。いくらかの特徴において、前記アプリケーションは、ワードプロセッシングアプリケーション、文書編集アプリケーション、表計算ソフトアプリケーション、電子メールアプリケーション、プレゼンテーションアプリケーション、及びウェブブラウザの内の１つを含む。
【００１７】
いくらかの特徴において、前記スクリプトリポジトリに電子的に保存される各スクリプトは、複数の承認されたルーチンの中から選択された１つ以上のルーチンを含む。
【００１８】
いくらかの特徴において、前記動作は、前記スクリプトのスクリプト言語を特定する段階を更に含み、前記スクリプトエンジンは、前記スクリプトを通じて前記ユーザ入力を処理するための前記スクリプト言語に対応するランタイムを例示化する。
【００１９】
いくらかの特徴において、前記ユーザ入力は、第１の言語で提供される。いくらかの特徴において、前記１つ以上の候補は、前記第１の言語で提供される。いくらかの特徴において、前記１つ以上の候補は、第２の言語で提供される。いくらかの特徴において、前記１つ以上の候補は、前記第１の言語と第２の言語の組み合わせで提供される。いくらかの特徴において、前記１つ以上の候補は、１つ以上の記号を含む。
【００２０】
いくらかの特徴において、前記動作は、入力を受け取る段階と、前記入力に応答して、前記スクリプトを含むと共に、中央レジストリに電子的に保存される利用可能なスクリプトのリストを生成する段階と、前記スクリプトの選択を指示する第２の入力を受け取る段階と、前記第２の入力に応答して、前記中央レジストリから前記スクリプトを読み出す段階と、前記スクリプトを前記スクリプトリポジトリに保存する段階とを更に含む。
【００２１】
この明細書で説明された主題の別の革新的特徴は、ＩＭＥのユーザインタフェースへのユーザ入力を受け取る段階と、スクリプトエンジンに前記ユーザ入力を提供する段階と、スクリプトリポジトリに電子的に保存される複数のスクリプトの中からスクリプトを選択する段階と、前記スクリプトにおいて提供された指示に基づいて、ウェブ基盤のサービスとのネットワーク接続を確立する段階と、前記ユーザ入力の少なくとも一部を前記ウェブ基盤のサービスに提供する段階と、前記ウェブ基盤のサービスから応答を受け取る段階と、ユーザに前記応答を表示するために、ＩＭＥエンジンに前記応答を提供する段階との動作を含む方法において具体化され得る。
【００２２】
いくらかの特徴において、前記ウェブ基盤のサービスは、地図サービス、検索サービス、及び翻訳サービスの内の少なくとも１つを含む。いくらかの特徴において、前記ユーザ入力の前記少なくとも一部は前記地図サービスに提供され、前記応答は、前記地図サービスによって生成されると共に、ユーザが選択可能なハイパーリンクを含む。いくらかの特徴において、前記ユーザ入力の前記少なくとも一部は検索語として前記検索サービスに提供され、前記応答は、前記検索サービスによって生成されると共に、前記検索語に基づいて前記検索サービスによって生成された１つ以上の検索結果を含む。いくらかの特徴において、前記ユーザ入力の前記少なくとも一部は、前記翻訳サービスに提供されると共に、第１の言語で提供され、前記応答は、前記翻訳サービスによって生成されると共に、第２の言語で提供される。
【００２３】
概して、この明細書で説明された主題の別の特徴は、ＩＭＥシステムへのユーザ入力に基づいて１つ以上の候補を生成するために、前記ＩＭＥシステムによって実行可能なスクリプトファイルを受け取る段階と、前記スクリプトファイルを、複数のスクリプトを含む中央レジストリに電子的に保存する段階と、前記ＩＭＥシステムを包含するユーザ装置に対するダウンロード及びインストールに利用可能な前記複数のスクリプトを公開する段階との動作を含む方法において具体化され得る。
【００２４】
いくらかの特徴において、前記複数のスクリプトの各スクリプトは、複数の承認されたルーチンの中から選択された１つ以上のルーチンを含む。
【００２５】
いくらかの特徴において、前記複数のスクリプトの前記スクリプトは、“ジャバスクリプト（Java（登録商標）Script）”、“ルア（Lua）”、及び“ブイビースクリプト（VBScript：ＶＢスクリプト）”の内の１つで書かれている。
【００２６】
いくらかの特徴において、前記複数のスクリプトの内の少なくとも１つのスクリプトは、前記１つ以上の候補を表示するための指示を提供する関連するメタデータを含む。いくらかの特徴において、前記指示は、候補リストに前記１つ以上の候補を表示するための番号順を提供することを含む。他の特徴において、前記指示は、候補リストに前記１つ以上の候補を表示するための文字順を提供することを含む。
【００２７】
この明細書で説明された主題の１つ以上の実施の詳細は、添付図面及び下記の記述において説明される。他の特性、特徴、及び主題の利点は、記述、図面、及び請求項から明白になるであろう。更に、上述の特徴を含む、この明細書で説明された主題の特徴は、１つ以上の組み合わせにおいて結合され得る。
【図面の簡単な説明】
【００２８】
【図１】ここで説明されるシステム及び方法を実施するために利用され得る一例のシステムの構成図である。
【図２】一例のインプットメソッドエディタ（ＩＭＥ）の構成図である。
【図３】一例のＩＭＥ拡張フレームワークの構成図である。
【図４】ＩＭＥの命令拡張モードに関する一例の処理を例証するフローチャートである。
【図５】ＩＭＥの実施に関する一例の処理を例証するフローチャートである。
【図６Ａ】命令拡張モードに対応する一例の拡張を例証する図である。
【図６Ｂ】図６Ａの拡張に基づく出力例を例証する図である。
【発明を実施するための形態】
【００２９】
様々な図面における同様の参照符号は、同等の要素を示す。
【００３０】
§ 1.0 概説
この明細書は、インプットメソッドエディタ（ＩＭＥ）のための拡張フレームワークに関係する技術を説明する。一例の実施が英語及び中国語との関連で説明されることになるが、本開示は、容易に他の非表語文字言語（non-logographic language）（例えばドイツ語、フランス語、イタリア語、スペイン語、ポルトガル語、スウェーデン語を含む）、及び表語文字言語（logographic language）（例えば日本語、韓国語、及び／またはインド語派言語（Indic languages）を含む）に適用できる。
【００３１】
図１は、ここで説明されるシステム及び方法を実施するために利用され得る一例のシステム１００の構成図である。システム１００は、例えば、パーソナルコンピュータ装置のようなコンピュータ装置、または携帯電話、移動体通信装置、携帯情報機器（ＰＤＡ）のような他の電子機器等を備え得る。システム１００は、制御演算装置１０２、第１のデータストア１０４、第２のデータストア１０６、入力装置１０８、出力装置１１０、及びネットワークインタフェース１１２を備える。例えば、データバス及びマザーボードを含むバスシステム１１４は、コンポーネント１０２、１０４、１０６、１０８、１１０、及び１１２の間のデータ通信を確立して、制御するために使用され得る。他のシステムアーキテクチャが、同様に使用され得る。
【００３２】
制御演算装置１０２は、例えば、１つ以上のマイクロプロセッサを備えることができる。第１のデータストア１０４は、例えば、ダイナミックランダムアクセスメモリまたは他のタイプのコンピュータ読み取り可能な媒体メモリ装置のような、ランダムアクセスメモリ記憶装置を備えることができる。第２のデータストア１０６は、例えば、１つ以上のハードドライブ、フラッシュメモリ、及び／または読取専用メモリ、または他のタイプのコンピュータ読み取り可能な媒体メモリ装置を備えることができる。
【００３３】
一例の入力装置１０８は、キーボード、マウス、スタイラス等を備えることができ、そして一例の出力装置１１０は、表示装置、オーディオ装置等を備えることができる。ネットワークインタフェース１１２は、例えば、ネットワーク１１６へ、及びネットワーク１１６から、データを通信するように動作可能な有線ネットワーク装置または無線ネットワーク装置を備えることができる。ネットワーク１１６は、１つ以上のローカルエリアネットワーク（ＬＡＮ）、及び／または、インターネットのような広域ネットワーク（ＷＡＮ）を含むことができる。
【００３４】
いくらかの実施において、システム１００は、データストア１０６のようなデータストアが提供するＩＭＥコード１０１を備えることができる。ＩＭＥコード１０１は、実行によって制御演算装置１０２にＩＭＥ機能を実行させる指示を含むことができる。ＩＭＥコード１０１は、スクリプト指示のような解釈された指示（interpreted instruction）、例えばウェブブラウザ環境において実行され得るジャバスクリプトまたはＥＣＭＡスクリプト指示を含むことができる。例えばスタンドアロンアプリケーション（standalone application）、アプレット（applet）、プラグインモジュール（plug-in module）等の他の実装が同様に使用され得る。
【００３５】
ＩＭＥコード１０１の実行は、ＩＭＥインスタンス１０３を生成するか、もしくは開始する。ＩＭＥインスタンス１０３は、装置１００における１つ以上の入力方式の処理を容易にし、その時間の間、システム１００は、例えばハンジ（Hanzi）文字のような入力文字または記号に関する合成入力（composition input）を受け取ることができる。例えば、ユーザは、ハンジ（Hanzi）文字の識別のための合成入力を入力するために、１つ以上の入力装置１０８（例えば欧米流のキーボードのようなキーボード、手書き文字認識エンジンによって使用されるスタイラス等）を使用することができる。ある例において、ハンジ（Hanzi）文字は、１を超える合成入力から構成されることができる。
【００３６】
第１のデータストア１０４及び／または第２のデータストア１０６は、合成入力と文字との組み合わせ（association）を保存することができる。入力によって表された１つ以上の候補選択物（candidate selection）を特定するために、ユーザ入力に基づいて、インプットメソッドエディタインスタンス１０３は、第１のデータストア１０４及び／または第２のデータストア１０６内の情報を使用することができる。いくらかの実施において、１を超える候補選択物が特定されるならば、候補選択物が出力装置１１０上に表示される。入力装置１０８を使用して、ユーザは、そのユーザが入力することを望むハンジ（Hanzi）文字を、候補選択物の中から選択し得る。
【００３７】
いくらかの実施において、システム１００上のＩＭＥインスタンス１０３は、ピンイン（Pinyin）の合成入力を受け取り、その合成入力をハンジ（Hanzi）文字に変換することができる。ＩＭＥインスタンス１０３は、例えば、ハンジ（Hanzi）文字を表すために、キー入力（keystroke：キーストローク）から受け取られたピンイン（Pinyin）の音節または文字の合成物を使用することができる。各ピンイン（Pinyin）音節は、例えば、欧米流のキーボードにおける１つ以上のキー入力に対応し得る。ピンイン（Pinyin）ＩＭＥを使用して、ユーザは、ハンジ（Hanzi）文字の音を表す１つ以上のピンイン（Pinyin）音節を含む合成入力を使用することによって、ハンジ（Hanzi）文字を入力することができる。しかしながら、他の言語のための入力方式が、同様に容易にされ得る。
【００３８】
いくらかの実施において、システム１００に対するアクセスを有する遠隔計算システム１１８が、更に、表語文字のスクリプトを編集するために使用され得る。例えば、システム１００は、ネットワーク１１６を介して表語文字のスクリプトの編集能力を提供するサーバであり得る。１つの例において、ユーザは、遠隔計算システム１０６、例えばクライアントコンピュータを用いて、データストア１０４及び／またはデータストア１０６に保存された表語文字のスクリプトを編集することができる。システム１００は、例えば、文字を選択すると共に、ネットワークインタフェース１１２を介してユーザからの合成入力を受け取ることができる。制御演算装置１０２は、例えば、選択された文字に隣接する１つ以上の文字を特定すると共に、受け取られた合成入力及び隣接する文字に基づいて、１つ以上の候補選択物を特定することができる。システム１００は、もとの遠隔計算システムへ、候補選択物を含むデータ通信を送信することができる。
【００３９】
いくらかの実施において、ＩＭＥインスタンス１０３は、１つ以上の合成入力及び言語コンテキスト１０５に基づいて、候補選択物を特定することができる。例えば英語コンテキスト１０５ａ、中国語コンテキスト１０５ｂ、韓国語コンテキスト１０５ｃ等、言語コンテキスト１０５は、例えば、インプットメソッドエディタインスタンス１０３によってサポートされた異なる言語を定義することができる。例えば、ＩＭＥインスタンス１０３は、合成入力を英語のアルファベットに対応付けるために、英語コンテキスト１０５ａを合成入力に適用することができる。同様に、ＩＭＥインスタンス１０３は、合成入力をピンイン（Pinyin）入力等に対応付けるために、中国語コンテキスト１０５ｂを合成入力に適用することができる。
【００４０】
合成入力と言語コンテキスト１０５に基づいて、ＩＭＥインスタンス１０３は、ユーザによる選択のための１つ以上の候補選択物を特定することができる。いくらかの実施において、言語コンテキスト１０５は、例えば英語からの候補選択物（例えば単語を定義する文字）が、漢字（Chinese character）、例えばハンジ（Hanzi）文字と同時に表示され得るインターリーブ表示モード（an interleaved display mode）のように、異なる言語によって定義された候補選択物を自動的に提供するために利用され得る。いくらかの実施において、言語コンテキスト１０５は、例えば英語のみからの候補選択物（例えば単語を定義する文字）が、第１の文字セットとして表示され得ると共に、中国語からの候補選択物、例えばハンジ（Hanzi）文字のみが、第２の文字セットとして表示され得るトグル表示モード（toggled display mode）のように、１つの言語によって定義された候補選択物を自動的に提供するために利用され得る。
【００４１】
図２は、一例のＩＭＥシステム１２０の構成図である。ＩＭＥシステム１２０は、例えば、インプットメソッドエディタコード１０１、及び関連するデータストア１０４及び１０６を用いて実施され得る。ＩＭＥシステム１２０は、ＩＭＥエンジン１２２、文字データストア１２４、合成入力データストア１２６、言語モデルデータストア１２８、及び拡張フレームワーク２００を備える。他のストレージアーキテクチャ（storage architecture）が、同様に使用され得る。文字データストア１２４は、１つ以上の言語モデルにおいて使用される表語文字のスクリプトの文字、そしてローマ字ベースまたは欧米流アルファベット、例えば英語、ドイツ語、スペイン語等の文字及び単語を含む。いくらかの実施において、文字データストア１２４は、更に、文字の間の関係に関する情報を含む。例えば、文字データストア１２４は、文字に隣接する文字に応じて文字に割り当てられたスコアまたは確率値を含むことができる。他の文脈上の関係データが、同様に使用され得る。下記において更に詳細に論じられるように、拡張フレームワーク２００は、任意の照会（query）対候補（candidate）のマッピングをサポートするために、ＩＭＥエンジン１２２と相互に作用する。
【００４２】
合成入力データストア１２６は、合成入力と文字データストア１２４に保存された文字との組み合わせを含む。いくらかの実施において、合成入力データストア１２６は、文字データストア１２４内の文字のそれぞれを、インプットメソッドエディタエンジン１２２によって使用される合成入力に関連付けることができる。例えば、ＩＭＥエンジン１２２は、文字データストア１２４内の１つ以上の文字を、合成入力データストア１２６内の１つ以上の合成入力に関連付けるために、及び／または文字データストア１２４内の１つ以上の文字を、合成入力データストア１２６内の１つ以上の合成入力と同一であると見なすために、文字データストア１２４及び合成入力データストア１２６内の情報を使用することができる。
【００４３】
言語モデルデータストア１２８は、例えば英語モデル、中国語モデル等、１つ以上の言語モデルを定義することができる。例えば、各言語モデルは、合成入力のセットを入力する際のユーザの有望な意図を判定するために使用され得る、言語特有の文法、語句セット（phrase set）、動詞（verbal）等の特定の規則セットを定義することができる。各言語モデルは、更に、特定のユーザのユーザ履歴、例えば特定のユーザによって使用される単語及び語句（phrase）の辞書を含むことができる。
【００４４】
いくらかの実施において、ＩＭＥエンジン１２２は、言語コンテキスト１０５、例えば英語コンテキスト１０５ａ、中国語コンテキスト１０５ｂ、韓国語コンテキスト１０５ｃ等に従って合成入力を解釈することができる。合成入力が言語コンテキスト１０５に従って解釈される場合に、言語コンテキスト値１０７が判定され得る。言語コンテキスト値１０７及び合成入力に基づいて、ユーザに対して選択のために、候補選択物が特定されて、提示され得る。
【００４５】
例えば、いくつかの合成入力、例えばキー入力が、インプットメソッドエディタエンジン１２２によって受け取られ得る。それらのキー入力は、中国語コンテキスト１０５ｂにおける一連のピンイン（Pinyin）入力を定義し得ると共に、英語コンテキスト１０５ａにおける一連の文字を定義し得る。その結果、１つ以上の英語の候補選択物、例えば単語と、１つ以上の中国語の候補選択物、例えばハンジ（Hanzi）文字が、選択のためにユーザに提示され得る。
【００４６】
いくらかの実施において、英語のコンテキスト値１０７ａが、合成入力を英単語の接頭辞（prefix）と比較し、そして比較に基づいて英語のコンテキスト値を設定することによって判定され得る。例えば、合成入力“o-p-p-o”は、単語“opportunity（機会）”における文字列に適合する。英語のコンテキスト値１０７ａは、例えば、比較で特定された接頭辞の適合に比例して設定されることができ、例えば、コンテキスト値は、合成入力“o-p”に関しては低くなり得るが、しかし、合成入力“o-p-p-o-r-t-u”に関しては非常に高くなり得る。
【００４７】
言語コンテキスト値１０７は、同様に、他の処理によって判定され得る。例えば、中国語のコンテキスト値１０７ｂは、中国語モデルに対して漢字を評価し、そして評価に基づいて中国語のコンテキスト値１０７ｂを設定することによって判定され得る。例えば、中国語モデルは、中国語の文法モデルを含むことができる。一例の中国語の文法モデルは、連続動詞構文（serial verb construction）モデル、完了相（perfective）及び未完了相（imperfective）モデル、及び他の文法モデルを含むことができる。
【００４８】
合成入力、例えばキー入力に基づいて、一連のピンイン（Pinyin）入力が特定され得る。ピンイン（Pinyin）合成入力は、同様に、ハンジ（Hanzi）文字を特定するために利用され得る。中国語の文法モデルは、ユーザが中国語の文脈において入力しようとする可能性（likelihood：尤度）を判定するために、ハンジ（Hanzi）文字に適用され得る。例えば、全て動詞であるハンジ（Hanzi）文字に帰着する合成入力文字列は、非常に低く得点を付けられることになるが、しかし、動詞と目的語を伴う結果に帰着する合成入力文字列は、より高い得点を付けられることになる。別の例として、“私は花をとても好む”と読める漢字文字列に帰着する合成入力は、より高い中国語のコンテキスト値１０７ｂを受け取り、“ベッド、牛、テレビ”と読める漢字文字列に帰着する合成入力文字列は、非常に低い中国語のコンテキスト値１０７ｂを受け取るであろう。
【００４９】
他の処理が、言語コンテキスト値１０７を判定するために使用され得る。例えば、特定の言語のあまり使われない単語のコンテキスト値は、より低く評価され、一方、ユーザプロファイルによって定義されたような、たびたび使用される単語及び語句は、より高く評価され得る、等。
【００５０】
§ 2.0 拡張フレームワーク
ＩＭＥは、一般的に“f(query)=candidate(s)（ｆ（照会）＝候補）”として提供され得る照会対候補のマッピング（mapping：対応付け）関数を提供し、ここで、“query（照会）”は、一連のＡＳＣＩＩ（アスキー）のキー（key）である。例として中国語を使用すると、結果として生じる候補は、中国語の文字列もしくは非中国語の文字列のリストを含む。例えば、
【数１】
0005921527.tif 000002
は、ピンイン（Pinyin）ＩＭＥの基本入力（base input）モードであるピンイン（Pinyin）対中国語のマッピングを示す。
【００５１】
ＡＳＣＩＩ（アスキー）の照会を１つ以上の候補（例えば中国語の候補もしくは非中国語の候補）に対応付けることができる他のマッピングが存在する。１つの例として、ＩＭＥは、部分的な単語入力に基づく単語候補のリストを提供するために、英語の自動完了モード（auto-complete mode）で機能することができる。例えば、
【数２】
0005921527.tif 000003
である。別の例として、ＩＭＥは、中国語の数字入力モードで機能することができる。例えば、
【数３】
0005921527.tif 000004
である。
【００５２】
本開示のＩＭＥ拡張フレームワークは、ＩＭＥが、異なるユーザの要求及び／または好みを実現させるために、任意の照会対候補のマッピングをサポートすることを可能にする（“拡張モード”として参照される）命令拡張モードを提供することによって、ＩＭＥの機能を拡張する。ＩＭＥ拡張フレームワークは、内在するマッピング関数（mapping function）のハードコーディング（hard-coding）を必要とせずに、これを達成する。一般的に、ＩＭＥ拡張フレームワークは、スクリプトエンジン、サンドボックス処理、スクリプトリポジトリ、プロセス間通信（ＩＰＣ）メカニズム、公のアプリケーションプログラムインタフェース（ＡＰＩ）、及びコンソールツール（console tool）を含む。スクリプトエンジンは、スクリプトリポジトリに保存された１つ以上のスクリプトを実行し、そして結果を返すように、スクリプト言語インタープリタのランタイムを主催（host）する。サンドボックス処理は、安全な環境においてスクリプトエンジンを実行する。ＩＰＣメカニズムは、ＩＭＥエンジンとサンドボックス処理との間の通信を可能にする。公のＡＰＩ（public API）によって、第三者（third-party：サードパーティ）開発者は統一された方法においてＩＭＥ拡張を書くことが可能になり、そしてコンソールツールによって、開発者は作成された拡張スクリプトを検査及び証明することが可能になる。
【００５３】
図３は、一例のＩＭＥ拡張フレームワーク２００の構成図である。ＩＭＥ拡張フレームワーク２００は、ＩＭＥが命令拡張モードにおいて動作している場合に実施されると共に、サンドボックス処理２０２、及びスクリプトリポジトリ２０４を含む。サンドボックス処理２０２は、ＩＰＣサーバ２０６、及びスクリプトエンジン２０８を実行する。ＩＭＥ拡張フレームワーク２００は、ユーザ入力に基づいてスクリプトベースの照会対候補のマッピングを提供するために、ＩＭＥエンジン１２２と通信する。具体的には、ユーザは、１つ以上のアプリケーション２２０と情報をやりとりすることができる。各アプリケーション２２０は、ユーザ入力を受け取り、そしてユーザ入力に基づいて生成された１つ以上の候補を表示するためのユーザインタフェース２２２を備える。限定しない例として、各アプリケーション２２０は、ワードプロセッシングアプリケーション、文書編集アプリケーション、表計算ソフトアプリケーション、電子メールアプリケーション、プレゼンテーションアプリケーション、及び／またはウェブブラウザを含むことができる。
【００５４】
ＩＭＥ拡張フレームワーク２００によって提供される照会対候補のマッピングは、簡単なテーブル索引（table look-up）によって実施され得る１対１のマッピングを含むことができる。ＩＭＥ拡張フレームワーク２００によって提供されるマッピングは、更に、実施されたスクリプト言語に基づく更に複雑な照会対候補のマッピングを含むことができる。例えば、スクリプトベースの拡張は、下記のように、水平のレイアウトから垂直のレイアウトへユーザテキスト入力を変換するために提供され得る。
【数４】
0005921527.tif 000005
【００５５】
更に、ＩＭＥ拡張フレームワーク２００は、ネットワーク（例えば図１のネットワーク１１６）を通して遠隔資源に接続することによって、遠隔資源へのアクセスを可能にする。例えば、拡張スクリプトを実行することにより、オンラインサービスプロバイダ（例えばグーグル（Google））によって提供されたサービスに接続することができる。この方法において、拡張スクリプト関数は、更に有益な入力機能を実施するために、サービスプロバイダのサービスにアクセスすることができる。入力機能の例は、（例えばユーザが選択可能なハイパーリンクとして提供する）詳細なアドレス文字列（address string）に関してグーグルマップ（Google Maps）に照会すること、ＩＭＥユーザをグーグル検索（Google search）に誘導すること、グーグル提案結果（Google suggested result）を読み出すこと、グーグル翻訳（Google Translate）を使用してユーザ入力を他の言語及び／または記号に変換することを含むことができる。下記において更に詳細に論じられるように、Ｃ＋＋のプログラミングを行い（C++ coding）、そしてコンパイルすること（compiling）に相反して、ＩＭＥ拡張フレームワーク２００によって、更に、第三者開発者は、スクリプトプログラミングを使用して、カスタマイズされた照会対候補のマッピングロジック（customized query-to-candidate(s) mapping logic：マッピング論理）を書くことが可能になる。
【００５６】
拡張スクリプトは、第三者によって生成されて検査され得る。機能拡張スクリプト（functioning extension script）は、ＩＭＥユーザに利用可能になるように、登録されて公開され得る。例えば、ＩＭＥを通して、ユーザは、利用可能なリスト（すなわち公開された拡張スクリプト）を要求することができる。例えば、ＩＭＥは、公開された拡張スクリプトを保存する中央レジストリに、ネットワークを介して（例えば、図１の中央レジストリ２３０に、ネットワーク１１６を介して）接続することができる。ユーザは、１つ以上の拡張スクリプトを選択することができると共に、拡張モードにおいてＩＭＥを操作している場合に、選択された拡張スクリプトは、呼び出されるべきユーザのローカル装置にダウンロードされてインストールされる。拡張スクリプトは、システム１００のデジタルメモリ内に提供され得るスクリプトリポジトリ２０４に保存されることができる。スクリプトリポジトリによって、スクリプトエンジン２０８は、局所的に対応するスクリプトをロードして実行することが可能になる。ユーザによってインストールされた全てのスクリプトは、スクリプトリポジトリ２０４に保存される。いくらかの実施において、（例えば第三者開発者によって維持される）１つ以上のスクリプトホストウェブサイト（script host web site）は、それぞれ、ユーザ装置から遠く離れた遠隔スクリプトリポジトリとして機能する。ユーザ装置は、１つ以上のスクリプトホストウェブサイトにアクセスすることができると共に、特定のサイトから入手可能な、利用可能なスクリプトのリストを提供されることができ、そして選択されたスクリプトをスクリプトリポジトリ２０４にダウンロードすることができる。
【００５７】
拡張モードにおいて動作している場合に、ＩＭＥ拡張フレームワーク２００は、インストールされた命令拡張を検索して実行し、そしてユーザに対して表示するように、１つ以上の結果をＩＭＥエンジンに提供する。その結果は、表語文字の文字（logographic character）、非表語文字の文字（non-logographic character）、数字、数式、ハイパーテキストリンク、アイコン、顔文字（emoticon）、及び／または記号から構成されることができる。限定しない例として、記号は、数学的記号（例えば、
【数５】
0005921527.tif 000006
等）、星座の記号（zodiac symbol）（例えば、
【数６】
0005921527.tif 000007
等）、または他のタイプの記号（例えば、
【数７】
0005921527.tif 000008
等）を含むことができる。拡張モードは、（“ｉ−ｅｘｔモード”として参照される）命令拡張モード、トリガ拡張モード（trigger extension mode）、及びハンドラ拡張モード（handler extension mode）を含む。命令拡張モードでは、ユーザが特定の文字列（character sequence）を入力する場合に、拡張関数が呼ばれる。一例の文字列は、下記で更に詳細に論じられる“i＋命令＋引数”を含み得る。トリガ拡張モードでは、入力系列、またはＩＭＥによって生成された候補の内の１つが、事前に登録されたトリガ文字列（trigger string）またはトリガパターン（trigger pattern）に適合する場合に、拡張関数が呼ばれる。すなわち、ＩＭＥは、入力系列に基づいて１つ以上の候補を生成すると共に、入力系列と１つ以上の候補の両方が、事前に登録されたトリガパターンとの適合を判定するために精査される。ハンドラ拡張モードでは、ユーザ入力の全てが拡張関数に向けられると共に、ＩＭＥによって表示されるべき全ての候補が拡張関数によって生成される。このモードでは、ＩＭＥの動作は、呼ばれた拡張スクリプトによって制御される。従って、ユーザは、ハンドラ拡張モードに入ると共に、全てのユーザ入力を拡張スクリプトに送るように、ＩＭＥに明確に指示する（例えば、拡張を登録したホットキーをクリックする）。
【００５８】
第三者開発者は、複数文字の命令名称（multi-character command name）、入力関数名（entry function name）、及び簡単な説明（short description）を提供することによって、命令拡張モードにおいて使用するための拡張スクリプトを登録することができる。トリガ拡張モードにおいて使用するために、第三者開発者は、入力関数名、簡単な説明、
ユーザ入力に適合させる０〜Ｎのトリガ文字列／パターン、１つ以上のＩＭＥが生成した候補に適合させる０〜Ｍのトリガ文字列／パターンを提供することによって、拡張スクリプトを登録することができる。ハンドラ拡張モードにおいて使用するために、第三者開発者は、拡張によって処理された入力モードの名前、入力関数名、簡単な説明、及びユーザがハンドラ拡張モードを活性化することを可能にするための、あつらえのホットキーまたはメニュー項目を提供することによって、拡張スクリプトを登録することができる。この情報は、ＩＭＥユーザによるダウンロード及びインストールのために中央リポジトリに保存される。
【００５９】
拡張モード（すなわち、命令拡張モード、トリガ拡張モード、及びハンドラ拡張モードの内の１つ）におけるＩＭＥの動作が、下記で更に詳細に論じられる。
【００６０】
§ 2.1 スクリプトエンジン
スクリプトエンジンは、スクリプトランタイム環境（script runtime environment）を初期化し、ランタイムの中に内蔵式のルーチン（built-in routine）を登録し、スクリプトリポジトリからスクリプトを読み込み、そしてＩＭＥコアエンジンの要求ごとにマッピング関数を評価する。複数のスクリプト言語（例えば“ジャバスクリプト”、“ルア（Lua）”、または“ＶＢスクリプト（VBScript）”）が、同時に（in parallel：並行して）サポートされ得る。例えば、スクリプトエンジンは、読み込まれたスクリプトのファイル拡張子（例えば、“.js”、“.lua”、または“.vb”）に基づいて、対応するスクリプト言語ランタイム（script language runtime）を選択すると共に、ランタイムにおける関数を評価することができる。
【００６１】
いくらかの実施において、スクリプト言語は、直接埋め込まれ得ると共に、ＭＳウィンドウズ（登録商標）スクリプトエンジンは、“IActiveScript”インタフェースを介して使用され得る。そのような実施において、追加のインストーラの大きさが必要とされず、２つのスクリプト言語（例えば、ジャバスクリプト及びＶＢスクリプト）は、追加の労力なしでサポートされ得ると共に、事前にインストールされた（pre-installed）“ActiveX”制御が利用され得る。いくらかの実施において、内蔵された（embedded）“ルア（Lua）”ランタイムエンジンが提供され得る。“ルア（Lua）”ランタイムメモリの必要量は、非常に小さい（例えば、わずか５０ＫＢの追加のインストーラメモリが必要とされる）。更に、“ルア（Lua）”ランタイムは、調整（trim）及び／またはカスタマイズ（customize）することが容易であると共に、ホワイトリストルア機能（white-list Lua feature）及び内蔵式のルーチン（built-in routine）にとってセキュリティリスク（security risk：保安上の危険）を回避することが容易になる。例えば、いくらかの実施において、内蔵式のジャバスクリプトエンジンが実施され得る。ジャバスクリプトは、ウェブ開発者の間で評判の良いスクリプト言語であり、ジャバスクリプトコードを実行する場合、ウィンドウズ（登録商標）スクリプトエンジンより速く、そして調整され得るか、またはカスタマイズされ得る。
【００６２】
内蔵式の“ルア（Lua）”ランタイムエンジンを含む実施において、“ルア（Lua）”ランタイムエンジンは、次の、字句解析プログラム及び構文解析プログラム（lexer and parser）、仮想マシン（virtual machine）、メモリ管理及び記憶再生システム（memory management and garbage collection）、事前にコンパイル済みのチャンクダンプ／非ダンプ（pre-compiled chunk dump/undump）、ルア（Lua）ＡＰＩ、デバッグサポート（debug support）、及び内蔵式のルーチン（built-in routine）のモジュールの内の１つ以上を含むことができる。内蔵式のルーチン（built-in routine）のモジュールは、基本ライブラリ（base library）、コルーチンルーチン（co-routine routine）、モジュール／パッケージルーチン、文字列ライブラリ（string library）、数学ライブラリ（math library）、オペレーティングシステムライブラリ、テーブルライブラリ、入出力ライブラリ、及び／または、デバッグライブラリを含むことができる。これらのモジュールは、バイナリサイズ（binary size）を最小限にするように、または安全上の配慮のために、ホワイトリスト機能（white-list feature）及び内蔵式のルーチンに、カスタマイズ及び調整され得る。“ルア（Lua）”ランタイムをカスタマイズする１つの目的は、第三者開発者によって使用され得る言語機能及び内蔵式のルーチンを制限することである。文字列ルーチン、数学ルーチン、テーブルルーチン、及びＩＭＥ特有のルーチン（IME-specific routine）のようなＩＭＥ関連のルーチン（IME-relevant routine）のみによって、第三者開発者は、下記で詳細に論じられるように、サンドボックス処理の保護なしでさえも、ユーザのローカルなシステムに直接影響を与えることはできない。
【００６３】
一般的に、ＩＭＥ拡張フレームワークは、言語非依存（language independent）である。従って、ＩＭＥ拡張フレームワークは、あらゆるスクリプト言語をサポートすることができると共に、ここで論じられたスクリプト言語に限定されない。
【００６４】
§ 2.2 サンドボックス処理
サンドボックス処理は、その中でプログラムが動く規制環境であり、そして、概して、規制環境の中で実行するために、スクリプトエンジンのような処理を可能にするライブラリによって手助けされる。サンドボックス処理される場合、スクリプトエンジンは制限された機能性を有する。いくらかの実施において、スクリプトエンジンは、ＣＰＵサイクル及びメモリにだけアクセスすることができる。そのような実施において、例えば、サンドボックス処理されたスクリプトエンジンは、ディスクに書くことができないか、または、それ自身の窓を表示することができない。スクリプト実行をサンドボックス処理に限定することによって、第三者のスクリプトは、アプリケーションから必然的に分離され得る。
【００６５】
スクリプトエンジンの許容されている機能性は、明白な方針によって調整される。コード実行が、秘密であるコンピュータ情報またはアクセス情報に、持続的な変更を行うことができないように、サンドボックス処理は、特定のオペレーティングシステムによって提供される安全性にてこ入れする。サンドボックス処理が提供するアーキテクチャ及び正確な保証は、オペレーティングシステムによって決まる。例えば、ウィンドウズ（登録商標）において、コードは、システムコールを行わずに、Ｉ／Ｏの構成を実施することができない。大部分のシステムコールにおいて、ウィンドウズ（登録商標）は、安全性の検査を実行する。サンドボックス処理が保証するのは、サーバ処理が対応する方針において定義されたように機能するのを禁止されている特定の動作に関しては、安全性の検査が失敗するということである。
【００６６】
いくらかの実施において、サンドボックス処理は、それに限定されないが、トークン、オブジェクト、及び／または整合性レベル（integrity level）を含むことができるオペレーティングシステムメカニズムによって提供される保護を当てにする。これらの一例のメカニズムは、オペレーティングシステム、その構成、及びユーザデータを保護する際に非常に効果的である。実際の制限は、方針によって構成され、それは、スクリプトエンジンの制限値及び許容値を定義するために呼ばれ得る、プログラマチックインタフェース（programmatic interface：プログラム的インタフェース）になる。いくらかの実施において、制限を制御する一例のメカニズムは、メイントークン、偽装トークン（impersonate token）、及びジョブトークン（job token）を含む。いくらかの実施は、更に、完全性のレベル（例えば、ウィンドウズ（登録商標）ビスタオペレーティングシステムを含む実施）を含む。
【００６７】
別の例として、グーグル（Google）によって提供されたクロームオペレーティングシステム（Chrome operating system）は、サンドボックス処理（例えば、スクリプトエンジン）の創造を提供する。クロームオペレーティングシステムは、トークン制限（token restriction）、ジョブオブジェクト（job object）、及びＡＰＩインターセプション（API interception）を使用して、サンドボックス処理の特権を制限すると共に、サンドボックス処理と仲介処理（broker process）（例えばＩＭＥエンジン）との間の通信を提供するために、ＩＰＣとしての単純な共有メモリを使用する。例えば、ＩＭＥエンジンは、サンドボックス処理を開始すると共に初期化するために使用され得る自動起動ＩＭＥデーモン処理（auto-start IME daemon process）を提供する。本開示のＩＭＥ拡張フレームワークのために、更に簡単なサンドボックス処理が実行され得る（例えば、ＡＰＩインターセプションを使用せずにスクリプトエンジンの特権を制限するために、トークン制限及びジョブオブジェクトを使用するサンドボックス処理）。更に、サンドボックス処理それ自体は、ＩＰＣにおいてサーバの役割を果たすことができる。
【００６８】
上述のように、トークン制限、ジョブオブジェクト、そしてＡＰＩインターセプションが、サンドボックス処理の特権を制限するために実行され得る。トークン制限に関して、そのセキュリティ識別子（security identifier：ＳＩＤ）のいくらかまたは全てを除去されるトークン（例えば、アクセストークン）によって、サンドボックス処理において、処理（例えば、スクリプトエンジン）が始まる。あらゆるＳＩＤなしでは、安全なオブジェクトへのアクセスが、オペレーティングシステムのセキュリティマネージャ（security manager）によって拒否されることになる。ジョブオブジェクトに関して、処理（例えば、スクリプトエンジン）は、処理の能力を制限するために使用されるジョブオブジェクトにおいて実行され得る。具体的には、処理が、トークンを変更すること、メッセージをジョブの有効範囲の外に送信すること、及び／または、新しいデスクトップを作成することを防止するために、制限がジョブオブジェクトに設けられる。ＡＰＩインターセプションが、セキュリティ保護可能でないリソース（non-securable resource）に対するサンドボックス処理のアクセスを制御するために、及び低水準のＡＰＩコール（API call）を遮断して（intercept）実行しない（fail）ために使用され得る。
【００６９】
ＩＭＥエンジンの自動起動デーモン処理（auto-start daemon process）が、サンドボックス処理を開始すると共に初期化するために使用され得る。これを達成するために、デーモン処理は、制限されたトークンを生成し、ジョブオブジェクトを生成してその能力を制限し、制限されたトークンによってサンドボックス処理を発生させ、サンドボックス処理をジョブオブジェクトに割り当て、及び／または、新しい処理のメインスレッドのトークンを、より多くの権利を有する偽装トークン（impersonation token）に変更する。ＩＭＥエンジンは、拡張スクリプトを読み込むことができると共に、更に多くの権利を有する偽装トークンによって、スクリプトエンジン及びＩＰＣサーバを初期化することができる。
【００７０】
§ 2.3 ＩＭＥとサンドボックス処理との間の通信
いくらかの実施において、上述のように、ＩＭＥエンジンとサンドボックス処理との間の通信は、ＩＰＣを用いて確立され得る。ＩＰＣは、１つ以上の処理における複数のスレッドの間のデータの交換のための一連の技術を提供する。ＩＰＣ方法の技術は、遠隔手続呼び出し（remote procedure call：ＲＰＣ）を含むことができる。ＲＰＣは、サブルーチンまたは手続きが、呼び出しているプログラムアプリケーションのアドレス空間と異なる別のアドレス空間において実行することを可能にする。
【００７１】
いくらかの実施において、ＩＭＥエンジンは、単純な共用メモリＩＰＣを使用して、サンドボックス処理に包まれているスクリプトエンジンと通信する。例えば、メッセージ送信及びメッセージ受信を処理するために、通知メカニズムが、オペレーティングシステムイベントに基づいて実施され得る。これを達成するために、ＩＰＣは、（例えば、クロームサンドボックスブローカーターゲットＩＰＣ（Chrome sandbox broker-target IPC）より単純な）単純なＩＰＣとして提供され得る。例えば、同様にサンドボックス処理に包まれているＩＰＣサーバは、複数のタスクをサポートする必要がない。ＩＰＣインタフェースは、ＩＭＥエンジンとサンドボックス処理との間で情報を転送する場合に、プロトコルバッファをデータフォーマットとして使用することができる。
【００７２】
いくらかの実施において、ＩＰＣは、“Ｃ＋＋”のテンプレート及びプロトコルバッファを使用して、任意の要求タイプ及び応答タイプをサポートする。例えば、一例のＩＰＣ要求及びＩＰＣ応答は、下記を含むことができる。
【００７３】
【数８】
0005921527.tif 000009
【００７４】
§ 2.4 公の（Public：パブリック）ＡＰＩ
上述のように、公のＡＰＩによって、第三者開発者は、統一された方法においてＩＭＥ拡張を書くことが可能になる。例えば、“ルア（Lua）”スクリプト言語で書かれた拡張スクリプトは、１つ以上の照会対候補のマッピング関数（query-to-candidate(s) mapping function）を含む。一例のマッピング関数は、下記を含む。
【００７５】
【数９】
0005921527.tif 000010
【００７６】
マッピング（mapping：対応付け）関数は、拡張命令として登録され得る。具体的には、登録機能によって、開発者は、命令拡張、トリガ拡張、またはハンドラ拡張として提供され得る拡張を登録することが可能になり、それぞれここで更に詳細に論じられる。
【００７７】
命令拡張の名前は、拡張モードにある場合に、命令文字列入力に適合させるために使用される複数の文字列（multi-character string）（例えば２文字の文字列）として提供され得る。拡張モードを用いて入力される引数（argument）は、関数呼び出し（例えば、“ルア（Lua）”関数呼び出し）の引数文字列（argument string）として中に渡される。関数が引数を全く必要としないならば、その引数は、ＩＭＥエンジンによって無視される。すなわち、たとえユーザが命令の後で引数を明白に入力するとしても、その関数が引数を必要としないならば、その関数は引数を無視することになる。あるスクリプト言語（例えば“ルア（Lua）”または“ジャバスクリプト”）において、関数は、引数なし（has-no-argument）として定義され得るが、しかし、その呼び出し側は無視されることになる引数をまだ中に渡すことができる。もしユーザ入力が拡張モードにおいて提供されないならば、空の文字列が関数の中に渡されることになる。複製の拡張命令名は、スクリプトエンジンによって認められていない。例えば、もし第１のスクリプトが対応する登録された拡張命令名を有しており、そして開発者が同じ命令名を使用する第２のスクリプトを登録しようと試みるならば、その関数は、“ｆａｌｓｅ（偽）”を戻すことになる。拡張関数の戻り値は、１つのオブジェクト（例えば文字列または数字）であり得るか、または２つ以上のオブジェクト（例えば文字列または数字）を含むテーブルであり得る。ＩＭＥエンジンは、ＩＭＥフロントエンドによって表示される候補として各オブジェクトの文字列表現を使用する。
【００７８】
§ 2.5 開発者ツール
上述のように、本開示のＩＭＥ拡張フレームワークは、第３者開発者がＩＭＥと共に使用する拡張スクリプトを作成して登録することを可能にする開発者ツール（developer tool）を提供する。開発者ツールは、ホワイトリスト化された（white-listed）（すなわち認可された（approved））ルーチンを含む。使用できるルーチンを制限することによって、たとえサンドボックス処理の保護がなくても、第３者開発者は、ユーザのローカルシステムに直接影響を与えることを抑制される。“ルア（Lua）”ベースの拡張スクリプトの一例のケースにおいて、ホワイトリスト化されたルーチンは、基本ルーチン（例えば“assert”、“error”、“ipairs”、“loadstring”、“next”、“pairs”、“select”、“tonumber”、“tostring”、“type”、“unpack”）、文字列ルーチン（例えば、“string. byte”、“string. char”、“string. find”、“string. format”、“string. gmatch”、“string. gsub”、“string. len”、“string. lower”、“string. match”、“string. rep”、“string. reverse”、“string. sub”、“string. upper”）、日付け時刻ルーチン（例えば、“os. date”、“os.time”、“os.difftime”）、数学（math：計算）ルーチン（例えば、“math.abs”、“math.acos”、“math.asin”、“math.atan”、“math. ceil”、“math. cosh”、“math. cosh”、“math. cos”、“math.deg”、“math.exp”、“math.floor”、“math.fmod”、“math.frexp”、“math.log”、“math.ldexp”、“math.loglO”、“math.max”、“math.min”、“math.modf”、“math. pi”、“math.pow”、“math.rad”、“math. random”、“math.randomseed”、“math.sinh”、“math.sin”、“math.sqrt”、“math.tanh”）、及び、テーブル／リスト操作ルーチン（例えば、“table. concat”、“table. insert”、“table. maxn”、“table. remove”、“table. sort”）を含むことができる。
【００７９】
ホワイトリスト化されたルーチンの他に、言語ＩＭＥモジュールが、追加の機能性を有効にするために提供され得る。“ルア（Lua）”スクリプト言語の一例のケースにおいて、“ルア（Lua）”ＩＭＥモジュールが、ＩＭＥ関連の機能または他のヘルパー機能（helper function）を提供するために、スクリプトエンジンにおいて実行される。上述の複数の登録機能は、開発者がＩＭＥ拡張フレームワークによって拡張を登録するために、“ルア（Lua）”ＩＭＥモジュールによって提供される。更に、“ルア（Lua）”ＩＭＥモジュールは、ヘルパールーチン（helper routine）（例えば、“me.parse mapping”、“ime.join string”）を提供する。ヘルパールーチンは、開発者がＩＭＥ拡張を容易に実施するのに役立つ。例えば、多くの拡張スクリプトのコードは、（例えば、文字列リテラル（string literal）をマッピングに分割（split：分配）するために）いくらかの共通のロジックを共有する。ヘルパールーチンは、ゼロから拡張を書くことの努力を省く（save）ことができる。
【００８０】
追加のルーチンが、“Ｃ／Ｃ＋＋”においてルーチンを実装し、“ルア（Lua）”ランタイムにそのようなルーチンを登録するか、及び／または、“ルア（Lua）”そのものでルーチンを実装し、そして初期スクリプトとしてスクリプトを読み込む（load）ことによって、“ルア（Lua）”ランタイムに提供され得る。“ルア（Lua）”ランタイムに“Ｃ／Ｃ＋＋”関数を登録するための一例のコードは、下記を含む。
【００８１】
【数１０】
0005921527.tif 000011
【００８２】
“ルア（Lua）”それ自身に“ルア（Lua）”ＩＭＥモジュールルーチンを実装するための一例のコードは、ＩＭＥモジュールが国際的な（global）環境に既に存在する、と仮定すると、下記を含む。
【００８３】
【数１１】
0005921527.tif 000012
【００８４】
“Ｃ＋＋”において、下記の一例のコードが、“ルア（Lua）”そのもので実装されたルーチンを読み込むために使用され得る。
【００８５】
【数１２】
0005921527.tif 000013
【００８６】
一般的に、そしていくらかのスクリプト言語（例えば、“ルア（Lua）”）に関して、事前に定義される内蔵式（built-in）ルーチンは、言語のインタープリタ（interpreter）が実行される言語で実装され得るか、またはスクリプト言語そのものにおいて実装され得る。これを単純化するために、“ルア（Lua）”言語のインタープリタは“Ｃ＋＋”において実装される、第１のルーチンは“Ｃ＋＋”において実装される、そして、第２のルーチンは、“ルア（Lua）”において実装されると仮定すると、“ルア（Lua）”インタープリタが読み込まれる場合に、第１のルーチンは固有の（native）機械コードであり、“ルア（Lua）”インタープリタと共に読み込まれる。第２のルーチンは“ルア（Lua）”にあると共に、従って、共通の“ルア（Lua）”スクリプトが読み込まれるとそれは読み込まれるが、しかし“ルア（Lua）”によって＊内蔵式ルーチン＊として示される。そのスクリプトが第１のルーチン、そして第２のルーチンを呼び出すとき、“ルア（Lua）”インタープリタは、第１のルーチンが既に固有の（native）機械コードにコンパイルされているので、更なる操作なしで、第１のルーチンを実行する。しかしながら、第２のルーチンに関して、“ルア（Lua）”インタープリタは、まず第２のルーチンを翻訳処理（interpret）し、次に、それが通常のスクリプトを実行するのと同様に、第２のルーチンを実行しなければならない。
【００８７】
§ 2.6 接続ルーチン
上述のように、本開示のＩＭＥ拡張フレームワークは、更に有益な入力機能を実施するために、１つ以上のオンラインサービスプロバイダによって提供されたサービスへのアクセスを可能にする。具体的には、拡張スクリプトがオンラインデータをオンラインサービスプロバイダからフェッチする（fetch）ことを可能にするために、ハイパーテキストトランスファープロトコル（hypertext transfer protocol：ＨＴＴＰ）接続ルーチンを含む接続ルーチンが、スクリプトエンジンにおいて実行されたＩＭＥモジュールによって提供され得る。いくらかの実例のＡＰＩ（example API）は、翻訳サービスを提供する“ime.google_translate（text, from language, to language, callback）”、及び検索サービスを提供する“ime.google_search（query, parameters, callback）”を含むことができる。
【００８８】
結果を返すのに時間が必要とされ得るので、接続ルーチンは非同期である。拡張スクリプトは、データ転送が完結するときに結果を受け取るために、それ自身のコールバック関数（callback function）を定義する。コールバック関数は、ＡＰＩを使用して候補を示すように、ＩＭＥエンジンに命令する。一例のＡＰＩ（example API）は、検索サービスの結果を表示する“ime.show_result(query id, candidates)”を含むことができる。ＩＭＥエンジン及びＩＭＥフロントエンドは非同期動作を承知しており、待機アイコン（例えば、砂時計）が処理の間に表示され得る。
【００８９】
§ 3.0 一般的操作
ＩＭＥは、伝統的な照会対候補のマッピングを使用してユーザ入力を処理するために、基本ＩＭＥモードにおいて機能し得る。ＩＭＥは、同様に、ＩＭＥ拡張フレームワークを使用してユーザ入力を処理するために、拡張モードにおいて機能し得る。すなわち、ＩＭＥは、特定された拡張スクリプトを使用してユーザ入力を処理するために、命令拡張モード、トリガ拡張モード、及びハンドラ拡張モードの内の１つにおいて機能し得る。
【００９０】
図４は、ＩＭＥの命令拡張モードに関する一例の処理（４００）を例証するフローチャートである。図４において、限定しない一例として、中国語が参照される。一例の処理（４００）は、例えば、ＩＭＥエンジン１２２及び拡張フレームワーク２００を使用してシステム１００によって実行され得る。ユーザ入力は、ＩＭＥエンジン１２２で受け取られると共に、複数の入力パターンの内の１つにおいて提供され得る。１つの入力パターンが、引数（例えば、“[0-9]+”）が続いている入力文字（例えば、“i”）として提供され得る。従って、結合された入力パターンは、照会対候補のマッピングを提供するために、ＩＭＥ（４０２）の基本入力モードを開始する（４０２）“i[0-9]+”として提供され得る。具体的には、ユーザに対して表示するための１つ以上の候補を提供するために、現存するｉ−様式（mode）ロジックが引数に適用される（４０４）。いくらかの実施において、現存するｉ−様式（mode）ロジックは、関連する候補を決定するために、引数をテーブルへの入力として使用する単純なテーブル検索を使用することができる。１つ以上の候補が、１つ以上のフロントエンドコンポーネント（例えば、出力装置１１０）を介して、ユーザに表示される（４０６）。
【００９１】
別の入力パターンが、複数の文字のスクリプト名（例えば、[a-z][a-z]）と、スクリプトによって処理されるべき引数（例えば、“+”）があとに続く入力文字（例えば、“i”）として提供され得る。従って、結合された入力パターンは、ＩＭＥ拡張フレームワーク２００によって処理されるスクリプトに基づいて照会対候補のマッピングを提供するためにＩＭＥの命令拡張モード（“i-ext mode”）を開始する（４０８）“i[a-z][a-z].+”として提供され得る。具体的には、ユーザ入力によって指定されたスクリプトが、引数（“arg”）を評価し、１つ以上の候補を決定するか、または生成するために実行される（４１０）。いくらかの実施において、スクリプトは、関連する候補を決定するために、スクリプトにおいて定義された、引数をテーブルへの入力として使用する単純なテーブル検索を使用することができる。他の実施において、スクリプトは、関連する候補を生成するために、引数を数学的に処理することができる。いくらかの実施において、上述のように、スクリプトは、関連する候補を生成するために、（例えば、サービスプロバイダによって提供される）ネットワーク化された資源にアクセスすることができる。いくらかの実施において、他の機能性、及び／または、機能性の組み合わせが、候補を生成するために提供され得る。１つ以上の候補が、１つ以上のフロントエンドコンポーネント（例えば、出力装置１１０）を介してユーザに表示する（４０６）ためにＩＭＥエンジン１２２に提供される。
【００９２】
１つ以上のトリガ拡張が、ＩＭＥに登録され得る。各トリガ拡張は、ＩＭＥエンジン１２２で識別されたときにトリガ拡張モードを開始するトリガ文字列またはパターンを含む。具体的には、ＩＭＥへのユーザ入力が登録されたトリガ文字列と比較され得る。もしユーザ入力がトリガ文字列に適合するならば、ユーザ入力は、特定されたスクリプトを使用して入力を処理するために、ＩＭＥ拡張フレームワーク２００に提供される。いくらかの実施において、ユーザ入力は、候補の第１のセットを生成するために、ＩＭＥエンジン１２２を使用して（すなわち、基本入力モードにおいて）処理され得ると共に、もしユーザ入力が更にトリガ文字列に適合するならば、ユーザ入力は、候補の第２のセットを生成するために、ＩＭＥエンジン１２２を使用して（すなわち、トリガ拡張モードにおいて）処理され得る。候補の第２のセットは、ＩＭＥ拡張フレームワーク２００によってＩＭＥエンジン１２２に提供され得ると共に、候補の第１のセット及び候補の第２のセットは、ユーザに対して表示するためにＩＭＥエンジン１２２によって結合され得る。
【００９３】
いくらかの実施において、トリガ拡張モードは、１つ以上の候補に基づいて開始され得る。具体的には、ＩＭＥへのユーザ入力が登録されたトリガ文字列と比較され得る。もしユーザ入力がトリガ文字列に適合しないならば、ユーザ入力は、ＩＭＥエンジン１２２によって候補の第１のセットを生成するために処理される。生成された候補は、登録されたトリガ文字列とそれぞれ比較され得る。もし候補がトリガ文字列に適合するならば、その候補は、候補の第２のセットを生成するために、ＩＭＥ拡張フレームワーク２００を使用して（すなわち、トリガ拡張モードにおいて）処理される。候補の第２のセットは、ＩＭＥ拡張フレームワーク２００によってＩＭＥエンジン１２２に提供され得ると共に、候補の第１のセット及び候補の第２のセットは、ユーザに対して表示するためにＩＭＥエンジン１２２によって結合され得る。
【００９４】
ＩＭＥは、全てのユーザ入力が処理のためにＩＭＥ拡張フレームワーク２００に提供されるハンドラ拡張モードに設定され得る。具体的には、ハンドラは、ＩＭＥエンジン１２２に登録され得ると共に、ユーザが基本入力モードとハンドラ拡張モードとの間で切り換えることを可能にする。一例として、そのようなハンドラは、ユーザに対して表示される選択可能なメニュー項目及び／またはホットキーを含むことができる。もしそのユーザがメニュー項目及び／またはホットキーを選択するならば、ハンドラ拡張モードが開始されると共に、全てのユーザ入力がＩＭＥ拡張フレームワークに向けられる。もしユーザがメニュー項目及び／またはホットキーの選択を解除する（de-select）ならば、ハンドラ拡張モードは中断されると共に、ユーザ入力はここで論じられたように処理され得る。
【００９５】
§ 3.1 実例処理
図５は、ＩＭＥの実施に関する一例の処理５００を例証するフローチャートである。処理５００は、図１のシステム１００において、及び／または、図２のＩＭＥシステム１２０に実装され得る。処理５００は、特定の拡張モードが指定されたかどうかを判定する（５０２）。例えば、ユーザは、全てのユーザ入力を処理のためにＩＭＥ拡張フレームワークに提供するために、（例えば、メニュー項目及び／またはホットキーを選択することによって）ＩＭＥがハンドラ拡張モードで動作することを指示する入力をシステム１００に提供することができる。もし拡張モードが指定されるならば、ＩＭＥシステム１２０は、ハンドラ拡張モードにおいて動作すると共に、ユーザ入力が受け取られる（５０４）。
【００９６】
ユーザ入力は、ＩＭＥ拡張フレームワークに入力として提供される（５０８）。ＩＭＥ拡張フレームワークは、ユーザ入力を処理すると共に１つ以上の候補をＩＭＥエンジンに返すように、スクリプトを実行することによってユーザ入力を処理する（５１０）。そのような場合に、ＩＭＥ拡張フレームワークは、ハンドラ拡張モードによって指定されたスクリプトを実行する。処理５００は、１つ以上の候補に基づいて候補リストを生成する（５１２）。その処理は、候補の内のいずれかがトリガ文字列に適合するかどうかを判定する（５１４）。例えば、ＩＭＥエンジンは、各々の候補を１つ以上の登録されたトリガ文字列と比較し得る。
【００９７】
もし拡張モードが指定されていないならば（５０２）、ユーザ入力が受け取られる（５０６）と共に、処理５００は、命令拡張モードが開始されるべきであるかどうかを判定する（５１６）。例えば、ＩＭＥエンジンは、命令拡張モードが開始されるべきであるかどうかを判定するために、ユーザ入力を評価し得る。もし命令拡張モードが開始されるべきであるならば、ユーザ入力がＩＭＥ拡張フレームワークに入力として提供される（５０８）と共に、処理は上述のように継続する。そのような場合において、ＩＭＥ拡張フレームワークは、ユーザ入力によって指定されたスクリプトを実行する。
【００９８】
もしユーザ入力が命令拡張モードが開始されるべきであることを指示しないならば、処理５００は、ユーザ入力がトリガ文字列に適合するかどうかを判定する（５１８）。例えば、ＩＭＥエンジンは、ユーザ入力を１つ以上の登録されたトリガ文字列と比較し得る。もしユーザ入力がトリガ文字列に適合するならば、ユーザ入力がＩＭＥ拡張フレームワークに入力として提供される（５０８）と共に、処理は上述のように継続する。そのような場合において、ＩＭＥ拡張フレームワークは、トリガ文字列によって指定されたスクリプトを実行する。もしユーザ入力がトリガ文字列に適合しないならば、処理５００は、ユーザ入力に基づいて候補リストを生成する（５２０）。具体的には、ＩＭＥシステムは、ＩＭＥエンジンを使用して照会対候補のマッピングを提供するために、基本入力モードにおいて動作する。
【００９９】
処理５００は、候補リストの内のいずれかの候補がトリガ文字列に適合するかどうかを判定する（５１４）。例えば、ＩＭＥエンジンは、候補リストの各候補を１つ以上の登録されたトリガ文字列と比較し得る。もし候補リストの候補がトリガ文字列に適合しないならば、処理５００は、候補リストを表示して（５２２）、処理は終了する。例えば、ＩＭＥエンジンは、候補リストを表示するように出力装置に命令し得る。
【０１００】
もし候補リストの候補がトリガ文字列に適合するならば、その候補は、ＩＭＥ拡張フレームワークへの入力として提供されると共に、ＩＭＥ拡張フレームワークは、その候補を処理すると共に１つ以上の拡張候補をＩＭＥエンジンに返すように、スクリプトを実行することによって、候補を処理する（５２４）。処理５００は、候補リスト及び１つ以上の拡張候補に基づいて、修正された候補リストを生成する（５２６）。例えば、ＩＭＥエンジンは、１つ以上の拡張候補を受け取ることができると共に、（例えば、（５１２）または（５２０）で提供された）オリジナルの候補リストを、１つ以上の拡張候補を含むように修正することができる。処理５００は、修正された候補リストを表示して（５２８）、処理は終了する。例えば、ＩＭＥエンジンは、修正された候補リストを表示するように出力装置に命令し得る。
【０１０１】
§ 4.0 実例拡張
実例拡張、及び結果として生じる候補が下記で提供される。拡張、及び結果として生じる候補は、（例えば、キーボード上の）機能的なキー（functional key）、または同等の入力（例えば、タッチスクリーン、またはスタイラス入力）を用いて操作（navigate）され得る。機能的キーは、角括弧（［...］）を用いて表示されると共に、実例の機能的キーは、
ユーザ入力を提示するための［エンター（ENTER）］キー、
現在の候補を提示するための［スペース（SPACE）］キー、
ユーザ入力の最後の文字を削除するための［バックスペース（BACKSPACE）］キー、
ユーザ入力の現在の文字を削除するための［デリート（DEL）］キー、
それぞれ、前の候補ページ／次の候補ページに移動するための［ページダウン（PGDN）］／［ページアップ（PGUP）］キー、
候補リストの中で移動するための［↑（アップ）］／［↓（ダウン）］キー、
照会（query：クエリ）を編集するキャレット（caret：入力位置ポインタ）を移動させるための［←（左）］／［→（右）］キー、
現在の入力をキャンセルするための［エスケープ（ESC）］キー、
を含む。
【０１０２】
一般的に、ユーザは、［エンター（ENTER）］キーを押下する（press）ことによって、または同等の入力によってＩＭＥに投入される（committed）ユーザ入力を提供する。ユーザ入力は、その場合に、（例えば、基本入力モードにおいて）ＩＭＥエンジン１２２によって、（例えば、命令拡張モードまたはトリガ拡張モードにおいて）ＩＭＥエンジン１２２及びＩＭＥフレームワーク２００によって、または（例えば、ハンドラ拡張モードにおいて）ＩＭＥ拡張フレームワーク２００によって、処理される。１つ以上の候補が判定されると共に、候補リストがＩＭＥエンジン１２２を使用してユーザに表示される。候補の数に応じて、候補リストは、一度にユーザに表示される単一の候補リストのページを有する１ページより多いページを含むことができる。下記で例証されたように、各候補はそれらに関連付けられた連続する文字または連続する番号を有しており、それらの候補は文字順または番号順で提供され得る。ユーザは、所望の候補を選択するために、［ページダウン（PGDN）］／［ページアップ（PGUP）］キー、及び／または［↑（アップ）］／［↓（ダウン）］キーを使用して、または同等の入力を使用して、候補リスト及び／またはページを操作することができる。そのユーザは、［スペース（SPACE）］キーを使用して、または同等の入力を使用して、選択された候補を投入する（commit）ことができる。一度投入されると、その候補は、ＩＭＥによってホストアプリケーション（例えば、図２のアプリケーション２２０）に入力される。例えば、もしホストアプリケーションがワードプロセッシングアプリケーションであるならば、投入された候補は、文書に提供され得る。別の例として、もしホストアプリケーションがインターネットブラウザであるならば、投入された候補は、ブラウザのあらゆる入力フィールド（例えば、表示されたダイアログボックス（dialog box）、アドレスバー（address bar））に入力されることができる。
【０１０３】
§ 4.1 命令拡張モードの例
いくらかの実施において、ユーザは、ユーザによって選択され得る候補スクリプト（すなわち、ユーザの装置にダウンロードされてインストールされたそれらのスクリプト）のリストを生成するＩＭＥに対して単純なユーザ入力（例えば、単一文字“i”）を提供することができる。一例として、そして中国語を例言語として用いると、ユーザ入力“i”は、利用可能な命令拡張スクリプトの下記のリストを生成し得る。
【数１３】
0005921527.tif 000014
先導する“i”は、命令拡張モード（すなわち、“ｉ−ｅｘｔ”モード）を開始し、そして、候補のリストとして、利用可能な“ｉ−ｅｘｔ”スクリプト（例えば、下記で更に詳細に論じられるjs、rq、hh）を示す。ユーザは、機能的キーまたは同等の入力を使用して、命令をブラウズ（browse：閲覧）することができ、［スペース（SPACE）］キーまたは同等の入力を使用して候補スクリプトを選択することができる。例えば、ユーザ入力“i［ページダウン（PGDN）］”は、例えば下記のような、表示されるべき“ｉ−ｅｘｔ”命令候補リストの次のページをもたらす。
【数１４】
0005921527.tif 000015
別の例として、ユーザ入力“i［ページアップ（PGUP）］”は、表示されるべき“ｉ−ｅｘｔ”命令候補リストの前のページをもたらす。
【０１０４】
いくらかの実施において、ユーザは、ＩＭＥに対して更に複雑なユーザ入力（例えば、１つ以上のキー入力（keystroke：キーストローク）があとに続く単一の文字“i”、または他の同等の入力）を提供することができる。例えば、ユーザ入力“i［スペース（SPACE）］”は、下記の例入力候補を提供するように、“js”命令拡張（"js" command extension）の実行をもたらす。
【数１５】
0005921527.tif 000016
具体的には、“i”に続く［スペース（SPACE）］キーは、利用可能なスクリプトのリストにリストアップされた最初のスクリプトである“ｉ−ｅｘｔ”モード“js”を開始する。これは、ユーザ入力として“ijs”を提供するユーザによって同様に達成され得る。
【０１０５】
別の例入力は、“i[j]［スペース（SPACE）］”を含むことができる。この入力は、下記の例入力候補を提供するように、“rq”命令拡張の実行をもたらす。
【数１６】
0005921527.tif 000017
具体的には、“[j]”はカーソルを２番目のスクリプト候補（例えば、“rq”）に移動すると共に、［スペース（SPACE）］は、実行のためにそのスクリプト候補を選択する。これは、ユーザ入力として“irq”を提供するユーザによって、同様に達成され得る。数字“1.”、“2.”、及び“3.”は、候補と関連付けられた連続番号である。キー[1]、[2]、または[3]は、入力候補リストから所望の入力候補を投入するために使用され得る。現在強調表示された候補を投入するために、代りに［スペース（SPACE）］が使用され得る。他の実施において、ユーザ入力は、直接的に“２０１０年１０月１０日”を投入することをもたらすために、“irq2”として提供され得る。
【０１０６】
この場合、元のユーザ入力は、スクリプト“rq”に起因する候補リストの候補番号２が投入されるべきであるということを直接的に示す。これは、特にユーザが既に表示されたであろう候補を知っている場合に、入力候補を投入する更に迅速で効率的な方法を提供する。
【０１０７】
その利用者は、所望のスクリプト、及びスクリプトによって処理されるべき所望の候補を特定するものを含む、更に複合的な入力を行うことができる。例えば、ユーザ入力“ijs3+2*sin(10)”は、“ｉ−ｅｘｔ”モードを開始し、“js”を所望のスクリプトとして特定し、“3+2*sin(10)”をスクリプトによって処理されるべき引数として特定する。従って、その引数は、スクリプトによって処理されて、下記の出力例を生成して表示する。
【数１７】
0005921527.tif 000018
この場合、単に１つの結果が返されると共に、候補の連続番号は提供されない。事前に指定された次のキー入力（keystroke：キーストローク）（例えば、［スペース（SPACE）］）が入力されると、表示された結果が投入されて、アプリケーションに対する入力として提供される。
【０１０８】
別の例入力は、下記の例入力候補リストをもたらす“inhl587”を含むことができる。
【数１８】
0005921527.tif 000019
従って、数値引数（例えば、[0-9]+）を必要とするマッピング関数のために、選択されたスクリプトは、スクリプトエンジンに、表示された入力候補リストに関して、そして、候補選択もしくは投入キー（committing key）として、連続文字（sequence letter）（例えば、a、b、c、．．．）を使用するように指示する。この情報は、スクリプト関数のメタデータによって提供され得る。
【０１０９】
図６Ａは、命令拡張モードに対応する一例の拡張を例証すると共に、図６Ｂは、図６Ａの拡張に基づく出力例を例証する。図６Ａのコード６００において、“function Compute”は、開発者によって実装されたスクリプト関数である。開発者は、命令拡張を登録するために、“ime.register command”を呼び出す。ユーザによって命令拡張がインストールされたあとで、ユーザは、演算式“[xxxx]”を評価して結果が表示されるためにタイプされ得る“ijs[xxxx]”を入力することができる。図６Ｂの例において、ユーザ入力は、“380.22*(sin(7.2)+cos(8))”を含む演算式を有する下記の入力を含むと共に、
【数１９】
0005921527.tif 000020
そのスクリプトは、図６Ａのスクリプトに基づいて生成される下記の例候補リスト６０２をもたらす。
【数２０】
0005921527.tif 000021
いくらかの実施において、拡張は、ここで更なる詳細が論じられる、開発者が“ime.register”トリガを呼び出すトリガ拡張として登録され得る。
【０１１０】
§ 4.2 トリガ拡張モード
上述のように、トリガ拡張モードは、ユーザ入力及び／または候補が、事前に登録されたトリガ文字列に適合する場合に開始される。中国語と英語を例言語として使用すると、中国の単語“shijian”は、“time（時間）”として英語に変換され得る。ユーザは、“shijian”を、ＩＭＥエンジンによって生成された下記の例候補リストをもたらすピンインＩＭＥ（Pinyin IME）に入力することができる。
【数２１】
0005921527.tif 000022
【０１１１】
しかしながら、もし、“shijian”が事前に登録されたトリガ文字列であるならば、ＩＭＥエンジンは、ユーザ入力を、１つ以上の追加の候補を提供するために、対応するスクリプトを処理するＩＭＥ拡張フレームワークに提供する。例えば、対応するスクリプトは、候補として現在の時間（例えば、１２：００（１２時））を返すことができる。ＩＭＥ拡張フレームワークによって生成された１つ以上の候補は、下記の例候補リストを提供するために候補を結合するＩＭＥエンジンに提供される。
【数２２】
0005921527.tif 000023
上述の候補リストにおいて、拡張候補（すなわち、ＩＭＥ拡張フレームワークによって提供された候補）は、第１の候補リストのページの最後の位置に挿入される。
【０１１２】
いくらかの実施において、トリガ拡張モードは、ＩＭＥエンジンによって生成された候補に基づいて開始され得る。例えば、ユーザ入力“shijian”は、通常は上述のようにＩＭＥエンジンによって生成された下記の例候補リストをもたらすであろう。
【数２３】
0005921527.tif 000024
しかしながら、候補が事前に登録されたトリガ文字列に適合するということを、ＩＭＥエンジンが認識するならば、ＩＭＥエンジンは、１つ以上の追加の候補を生成するために、その候補をＩＭＥ拡張フレームワークに提供し得る。一例として、
【数２４】
0005921527.tif 000025
（すなわち、上述の例候補リストの第１の候補）が、事前に登録されたトリガ文字列として提供されることができる。従って、ＩＭＥエンジンは、拡張候補（例えば、１２：００）を生成するために、指定されたスクリプトに基づいて
【数２５】
0005921527.tif 000026
を処理するＩＭＥ拡張フレームワークに、
【数２６】
0005921527.tif 000027
を提供する。拡張候補は、ユーザに対する表示のために、最終の候補リストもしくは修正された候補リストを生成するＩＭＥエンジンに提供される。修正された例候補リストは、下記を含むことができる。
【数２７】
0005921527.tif 000028
従って、もしトリガ拡張モードがＩＭＥエンジンの特定の候補に基づいて開始されるならば、拡張候補がトリガになる候補（triggering candidate）の隣へ挿入される。
【０１１３】
いくらかの実施において、トリガ拡張モードは、前方一致検索（prefix match）、及び／または、後方一致検索（suffix match）を使用して、ユーザ入力によって開始され得る。トリガ拡張を登録する場合に、ワイルドカード（例えば、“!”もしくは“*”）が、前方一致検索（prefix match）、及び／または、後方一致検索（suffix match）を定義するために使用され得る。限定しない例として、トリガ拡張“bm*”が、ユーザ入力のトリガ文字列として登録され得る。“bm”で始まるあらゆるユーザ入力は、ＩＭＥエンジンによって、トリガ文字列に適合するとして認識されることになる。一例のユーザ入力は、“bmabcd”を含むことができる。ユーザ入力に応答して、ＩＭＥエンジンは、候補の第１のセットを含む候補リストを生成し得る。ＩＭＥエンジンによって生成された例候補リストは、下記を含むことができる。
【数２８】
0005921527.tif 000029
しかしながら、“bm*”がトリガ文字列として登録されているので、ＩＭＥ拡張フレームワークは、同様に、候補の第２のセットを含む拡張候補リストを生成するために、ユーザ入力を処理する。ＩＭＥ拡張フレームワークによって生成された例候補リストは、下記を含むことができる。
【数２９】
0005921527.tif 000030
従って、単一の候補が、候補の第２のセットにおいて提供される。ＩＭＥ拡張フレームワークの拡張候補リストが、修正された候補リストを提供するために候補リストを結合するＩＭＥエンジンに提供され得る。一例の修正された候補リストは、下記を含むことができる。
【数３０】
0005921527.tif 000031
【０１１４】
この明細書で説明された開示及び機能的動作の全ての実装は、デジタル電子回路構成か、もしくは、この明細書おいて開示された構成及びそれらの構成上の等価物を含むコンピュータソフトウェア、ファームウェア、またはハードウェアか、もしくは、それらの内の１つ以上の組み合わせにおいて実施され得る。本開示の実装は、１つ以上のコンピュータプログラム製品、すなわち、データ処理装置による実行のための、もしくはデータ処理装置の動作を制御するための、コンピュータ読み取り可能な媒体上に符号化して記録されたコンピュータプログラム命令の１つ以上のモジュールとして実施され得る。コンピュータ読み取り可能な媒体は、機械可読記憶装置、機械可読記憶回路基板、メモリ装置、機械可読伝搬信号を生じさせる組成物（composition of matter）、または、それらの内の１つ以上の組み合わせであり得る。用語“データ処理装置”は、プログラム可能なプロセッサ、コンピュータ、もしくはマルチプロセッサまたはマルチコンピュータを一例として含む、データを処理するための全ての装置、機器、及び機械を包含する。装置は、ハードウェアに加えて、問題のコンピュータプログラムのための実行環境を作成するコード、例えばプロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらの内の１つ以上の組み合わせを構成するコードを備えることができる。伝搬信号は、人工的に生成された信号、例えば機械で生成された電気信号、光学信号、もしくは電磁気信号であると共に、それは、情報を、適当な受信機装置に対する伝送用に符号化するように生成される。
【０１１５】
コンピュータプログラム（同様にプログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとして知られている）は、コンパイルされた言語または解釈された言語（interpreted language）を含むあらゆる形式のプログラミング言語で書かれ得ると共に、それは、独立型プログラム、もしくは、モジュール、コンポーネント、サブルーチン、またはコンピュータ環境における使用に適当な他のユニットを含むあらゆる形式で配置され得る。コンピュータプログラムは、ファイルシステムにおけるファイルに必ずしも対応するとは限らない。プログラムは、他のプログラムまたはデータを保持するファイル（例えば、マークアップ言語文書に格納される１つ以上のスクリプト）の一部分に格納され得るか、問題のプログラム専用の単一のファイルに格納され得るか、または複数の組織的なファイル（例えば、１つ以上のモジュール、サブプログラム、またはコードの一部分を格納するファイル）に格納され得る。コンピュータプログラムは、１つのサイトに設置されるか、もしくは複数のサイトに横断して分散されると共に通信ネットワークによって相互に接続される、１つのコンピュータまたは複数のコンピュータ上で実行されるように配置され得る。
【０１１６】
この明細書で説明された処理及び論理フローは、入力データに基づいて動作すると共に出力を生成することによって機能を遂行するように１つ以上のコンピュータプログラムを実行する、１つ以上のプログラム可能なプロセッサによって遂行され得る。処理及び論理フローは、同様に、専用論理回路構成、例えばＦＰＧＡ（フィールドプログラマブルゲートアレイ）またはＡＳＩＣ（特定用途向け集積回路）によって遂行され得ると共に、装置は、同様に、そのような専用論理回路構成、例えばＦＰＧＡまたはＡＳＩＣとして実施され得る。
【０１１７】
コンピュータプログラムの実行に適当なプロセッサは、一例として、一般的なマイクロプロセッサと特殊用途のマイクロプロセッサの両方、及びあらゆる種類のデジタルコンピュータのあらゆる１つ以上のプロセッサを含む。一般的に、プロセッサは、読み取り専用メモリ、またはランダムアクセスメモリ、またはその両方から、命令及びデータを受け取ることになる。コンピュータの必須要素は、命令を遂行するためのプロセッサと、命令及びデータを格納するための１つ以上のメモリ装置である。一般的に、コンピュータは、更に、例えば光磁気ディスク（magnetic optical discまたはmagneto optical disk）、もしくは光ディスクのような、データを格納するための１つ以上の大容量記憶装置からデータを受信するか、またはそのような１つ以上の大容量記憶装置にデータを送信するか、またはその両方であるように、そのような１つ以上の大容量記憶装置を含むことになるか、もしくはそのような１つ以上の大容量記憶装置に対して動作可能に連結されることになる。しかしながら、コンピュータは、そのような装置を有している必要がない。更に、コンピュータは、別の装置、例えば２〜３例を挙げると、携帯電話、携帯情報機器（ＰＤＡ）、携帯型オーディオプレーヤ、全地球的測位システム（ＧＰＳ）受信機に埋め込まれ得る。コンピュータプログラム命令及びデータを格納することに適当なコンピュータ読み取り可能な媒体は、全ての形式の不揮発性のメモリ、媒体、及びメモリ装置を含み、それらは、一例として、例えばＥＰＲＯＭ、ＥＥＰＲＯＭ、及びフラッシュメモリ装置のような半導体メモリ装置、例えば内部ハードディスクまたは交換可能ディスクのような磁気ディスク、光磁気ディスク、そしてＣＤ−ＲＯＭディスク及びＤＶＤ−ＲＯＭディスクを含んでいる。プロセッサ及びメモリは、専用論理回路構成によって補完され得るか、専用論理回路構成に併合され得る。
【０１１８】
ユーザとの対話を提供するために、本開示の実装は、ユーザに対して情報を表示するための表示装置、例えばＣＲＴ（ブラウン管）モニタまたはＬＣＤ（液晶表示装置）モニタと、それによってユーザが入力をコンピュータに提供できるキーボード及びポインティングデバイス、例えばマウスまたはトラックボールを有するコンピュータ上で実施され得る。他の種類の装置が、同様に、ユーザとの対話を提供するために使用され得ると共に、また例えば、ユーザに提供されるフィードバックは、あらゆる形式の感覚フィードバック、例えば視覚フィードバック、聴覚フィードバック、または触覚フィードバックであることができ、そして、ユーザからの入力は、音響入力、音声入力、または触覚入力を含むあらゆる形式で受信され得る。
【０１１９】
本開示の実装は、計算システムにおいて実施され得ると共に、例えば、計算システムは、例えばデータサーバのようなバックエンドコンポーネントを備えるか、もしくは、計算システムは、例えばアプリケーションサーバのようなミドルウェアコンポーネントを備えるか、もしくは、計算システムは、それを通してユーザが本開示の実装と情報のやり取りをすることができる、例えばグラフィカルユーザインタフェースまたはウェブブラウザを有するクライアントコンピュータのようなフロントエンドコンポーネントを備えるか、もしくは、計算システムは、１つ以上のそのようなバックエンドコンポーネント、ミドルウェアコンポーネント、またはフロントエンドコンポーネントのあらゆる組み合わせを備える。システムのコンポーネントは、デジタルデータ通信のあらゆる形式または媒体、例えば通信ネットワークによって、相互に接続され得る。通信ネットワークの例は、ローカルエリアネットワーク（ＬＡＮ）、及び広域ネットワーク（ＷＡＮ）、例えばインターネットを含む。
【０１２０】
計算システムは、クライアント及びサーバを備えることができる。クライアント及びサーバは、一般的に、相互から遠く離れており、そして通常は通信ネットワークによって情報のやり取りをする。クライアントとサーバの関係は、それぞれのコンピュータ上で動作すると共に、相互にクライアントとサーバの関係を有するコンピュータプログラムのおかげで発生する。
【０１２１】
この明細書は、多くの詳述（specific）を含む一方、これらは、本開示及び請求項に記載されたものの範囲の限定として解釈されるべきでなく、むしろ本開示の特定の実施に特有の特徴の説明であるとして解釈されるべきである。この明細書で説明される個別の実装の文脈におけるいくつかの特徴は、同様に、単一の実装の組み合わせにおいて実施され得る。逆に、単一の実装の文脈で説明される様々な特徴は、同様に、複数の実装において別々に実施され得るか、またはあらゆる適当な副次的な組み合わせにおいて実施され得る。更に、特徴が、いくつかの組み合わせにおける動作として上記において説明され得ると共に、そういうものとして初めに主張されるが、場合によっては、主張された組み合わせが提供する１つ以上の特徴を、組み合わせから削除することができると共に、主張された組み合わせは、副次的な組み合わせまたは副次的な組み合わせの変化したものを対象にし得る。
【０１２２】
同様に、動作が図面において特定の順序で描写される一方、これは、望ましい結果を達成するために、そのような動作が示された特定の順序、または順次的な順序で実行されること、あるいは、全ての例証された動作が実行されること、を必要とするとして理解されるべきでない。いくつかの状況において、マルチタスク処理及び並列処理が有利であり得る。更に、上述の実装における様々なシステムコンポーネントの分離は、全ての実装においてそのような分離を必要とするとして理解されるべきでないと共に、説明されたプログラムコンポーネント及びシステムは、一般的に、１つのソフトウェア製品に一緒に統合されるか、もしくは複数のソフトウェア製品に実装され得ると理解されるべきである。
【０１２３】
本開示の多くの実装が説明された。それにもかかわらず、様々な修正が本開示の精神及び範囲からはずれずに実行され得るということが理解されることになる。従って、他の実装は、添付された請求項の範囲内にある。
【符号の説明】
【０１２４】
１００    システム
１０１    ＩＭＥコード
１０２    制御演算装置
１０３    ＩＭＥインスタンス
１０４    第１のデータストア
１０５    言語コンテキスト
１０５ａ    英語コンテキスト
１０５ｂ    中国語コンテキスト
１０５ｃ    韓国語コンテキスト
１０６    第２のデータストア
１０７    言語コンテキスト値
１０７ａ    英語のコンテキスト値
１０７ｂ    中国語のコンテキスト値
１０７ｃ    韓国語のコンテキスト値
１０８    入力装置
１１０    出力装置
１１２    ネットワークインタフェース
１１４    バスシステム
１１６    ネットワーク
１１８    遠隔計算システム
１２０    ＩＭＥシステム
１２２    ＩＭＥエンジン
１２４    文字データストア
１２６    合成入力データストア
１２８    言語モデルデータストア
２００    ＩＭＥ拡張フレームワーク
２０２    サンドボックス処理
２０４    スクリプトリポジトリ
２０６    ＩＰＣサーバ
２０８    スクリプトエンジン
２２０    アプリケーション
２２２    ユーザインタフェース
２３０    中央レジストリ
【図１】
0005921527.tif 000032
【図２】
0005921527.tif 000033
【図３】
0005921527.tif 000034
【図４】
0005921527.tif 000035
【図５】
0005921527.tif 000036
【図６Ａ】
0005921527.tif 000037
【図６Ｂ】
0005921527.tif 000038