MS_IME - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki
Input Method Editor の略であり、Windows で文字入力を補助する
(ローマ字から平仮名 / 片仮名への変換、平仮名から漢字への変換などを行う)ソフトウェア。
Windows に限らない一般名称はインプット メソッドであるが、
Windows 以外の OS で使われるインプット メソッドについても IME と呼ばれることもある。
補足(開発者にとって IME が問題になる場面): 定義としては上記の通りだが、
本 Wiki の他ページで IME が繰り返し登場するのは、
アプリケーションの動作に影響するからである。整理しておく。
場面 内容 参照 入力できる文字の範囲 IME が変換候補に出せる文字集合 JIS2004関連 非 Unicode アプリで文字が消える IME → ウィンドウ プロシージャの経路で失われる アプリケーションのUnicode化 外字の入力 IME パッドから登録済みの外字を入力する Windowsの外字 入力モードの制御 氏名欄は全角かな、電話番号欄は半角英数、等 IME制御 変換確定前の文字 未確定文字列(コンポジション)の扱い 後述 「未確定文字列」が、Web / デスクトップ双方で事故を起こす。
【IME の入力の流れ】 キー入力 → 【未確定(コンポジション)状態】… 下線付きで表示される → 変換 → 【確定】… ここで初めて「入力された」 【よくある不具合】 ・未確定のまま Enter を押すと、 【確定のつもりが、フォームが送信される】★ ・キー イベントで入力チェックすると、 未確定の文字まで拾って誤判定する ・「1 文字入力するたびに検索」する実装で、 変換前のローマ字で検索が走るWeb での対処(
compositionstart/compositionend):let composing = false; input.addEventListener('compositionstart', () => composing = true); input.addEventListener('compositionend', () => { composing = false; search(); }); input.addEventListener('input', () => { if (!composing) search(); }); // Enter での誤送信を防ぐ input.addEventListener('keydown', e => { if (e.key === 'Enter' && e.isComposing) return; // ← 変換確定の Enter // ... });
e.isComposingは現在のブラウザで標準に使える。
日本語・中国語・韓国語の入力を扱うなら必須の知識である。
- Input Method Manager(IMM32)
https://learn.microsoft.com/ja-jp/windows/win32/intl/input-method-manager - Text Services Framework(TSF)
https://learn.microsoft.com/ja-jp/windows/win32/tsf/text-services-framework - Microsoft IME の設定
https://support.microsoft.com/ja-jp/windows/
Tags: 移行, Windows