# IMEのヒント

## 前後参照変換

すでに確定済みの文字があった場合においても、カーソル前後の文字を参照して、最適な変換を行うしくみです。 ATOKでは「カーソル位置前後の文章を参照して変換する」、MS-IMEでは「挿入時、前の内容を参照して変換をする」と呼ばれています。
この機能はIME(Input Method Editor)[*1]とアプリケーションと連携して実現するため、アプリケーション側の対応も必要です。また、当該機能は厳密にMicrosoftから仕様が開示されていないので、アプリケーション(Tera Term)の実装はアドホックなものとなり、IMEとの組み合わせによっては、正しく動作しない場合があります。
[*1] かつてはFEP(Front End Processor)と呼ばれていた。

夏にお茶を飲みながら、本を読む。

例として、上記の確定した文章があるとします。

(A)夏に(B)お茶を飲みながら、(C)本を読む。

前後参照変換機能が有効になっている場合、(A),(B),(C)の位置にカーソルがあり、「atui」と入力すると、IMEはそれぞれ下記のように適切な漢字に変換します。

暑い夏に熱いお茶を飲みながら、厚い本を読む。

Tera Termの実装としては、WM_IME_REQUESTメッセージでIMR_DOCUMENTFEEDパラメータを受信したら、現在のカーソルがある行のデータを返却することで、IMEの変換処理に貢献します。
データの返却方法は、ATOKとIMEで異なります。

夏に|お茶を飲みながら、本を読む。

ATOK2012の場合、|の位置にカーソルがあり、「a」と入力した時点で、メッセージが飛んできます。 このときTera Termは、「夏にお茶を飲みながら、本を読む。」というデータを返します。
MS-IME2002/2003の場合、「あつi」と入力した時点で、メッセージが飛んできます。 このときTera Termは、「夏にあつお茶を飲みながら、本を読む。」というデータを返します。