theonehub.app

KEYBOARD — キーボードとターミナル入力

日本語入力(IME)は裏で何をしているのか — かなが漢字になるまで

日本語入力(IME)は裏で何をしているのか — かなが漢字になるまでのアイキャッチ

「きょうのてんき」が「今日の天気」になるまでに IME の中で起きていることを解説。辞書・連接コスト・予測変換の仕組みをやさしく紹介します。

この記事の目次

メモアプリで「きょうのてんき」と打ち、スペースを押す。画面には「今日の天気」が出て、指はもう次の文に移っています。ここで一度だけ立ち止まってみてください。「きょう」だけでも今日・京・教・凶と読め、「てんき」も天気・転機・転帰になりえます。どこで区切るかの選択まで含めると解釈は掛け算で増えていくのに、IME はなぜ一発で「今日の天気」を返せたのか。同じ IME を使っているのに、隣の席の人と候補の並びが違うのはなぜか。機種変更した直後だけ変換が鈍く感じるのはなぜか。答えはすべて、かな漢字変換を担う IME(Input Method Editor)の内側にあります。

以下では、IME がその一瞬でやっている仕事を、数式を使わずに順番にたどります。裏付けには、オープンソースの変換エンジン Mozc のソースコードと、Android・Google・Microsoft の公式ドキュメント、そして最初の日本語ワープロの記録を使います。仕組みを知ると、変換が上手くいかないときに何が起きているのかが分かるようになり、日々の入力の精度を自分で改善できるようになります。キーボード選びの見え方も変わるはずです。

先に全体の流れを言っておくと、IME の仕事は3段階です。打鍵をかなに組み立てる、かなの列を漢字かな交じり文の候補に変換する、ユーザーが選んだ結果を学習する。以下、この順に見ていきます。すべての IME が同じ探索方式や学習機能を持つわけではなく、変換の内部は主に Mozc を例に説明します。

IME はアプリとキーボードの間に立つ

まず、IME がどこに居るのかを押さえます。あなたがメモアプリに文字を打つとき、キーボードから来た「k」「y」「o」…という打鍵は、メモアプリに直接届いているわけではありません。まず IME が受け取ります。IME はそれをかなに組み立て、変換候補を作り、入力途中の文字列をアプリ側に反映し、確定した文字列を渡します。アプリも未確定の範囲を扱うため、最後にだけ文字を受け取るとは限りません。英語のように打った文字がそのまま文になる言語では、この中間層は自動修正や予測の補助役にすぎません。日本語では、この中間層こそが入力の本体です。

変換中に表示される下線付きの文字列——「きょうのてんき」と打っている途中のあの表示——は、IME とアプリが連携して扱う途中経過です。専門的には未確定文字列(composition)と呼ばれ、確定(commit)によって入力中の扱いを終えます。未確定の段階でもアプリ側の編集領域に文字が存在する実装があります。この区別は OS の設計にそのまま現れています。Android の IME 開発ドキュメントでは、IME はアプリへの通信チャネル(InputConnection)を通じてテキストを渡し、入力途中の文字列は setComposingText() で進行状況として表示し、確定した時点で commitText() によってアプリのテキスト欄に書き込む、と説明されています(Android Developers「入力方式の作成」)。アプリを切り替えたときに確定・保持・取消のどれになるかは、IME と受け手の実装に依存します。

この「間に立つ」構造は、プラットフォームによって形が違います。PC では、OS が IME を差し込むための仕組みを用意していて、どのアプリに対しても同じ IME が働きます。スマホでは、キーボードアプリそのものが IME を内蔵しているのが普通です。画面に表示されるキーの部分と、かな漢字変換のエンジン部分が、1つのアプリとして一体になっています。つまりスマホでキーボードアプリを選ぶことは、見た目や配列だけでなく、変換エンジンを選ぶことでもあるのです。

間に立つということは、IME にはあなたの打鍵がすべて見えている、ということでもあります。どのアプリに向けた入力か、いまの入力欄がパスワード用か通常のテキスト用か、といった情報も OS から IME に伝わります。Android では、入力欄がフォーカスを受けて IME が起動するときに、入力タイプなどの属性を格納した EditorInfo オブジェクトが IME に渡され、その inputType にパスワード欄を示す TYPE_TEXT_VARIATION_PASSWORD が含まれます。同じドキュメントは IME の開発者に対して、パスワード欄では入力ビューと候補ビューの両方でパスワードを非表示にし、パスワードをデバイスに保存しないよう注意しています(前掲の Android Developers)。まともな IME がパスワード欄で学習や予測を止められるのは、この通知があるからです。この「すべて見えている」性質は後半のプライバシーの話につながるので、頭の隅に置いておいてください。

IMEは入力を組み立て、候補を出し、確定した文字を渡す
IMEは入力を組み立て、候補を出し、確定した文字を渡す
画像を選ぶと拡大できます。
  1. キー入力などを受け取り、かなの入力を組み立てます。
  2. 辞書や文脈を使って変換候補を作ります。
  3. 候補を選んで確定し、アプリの文章へ反映します。

前工程: 打鍵をかなに組み立てる

変換の前に、打鍵をかなにする工程があります。QWERTY でローマ字入力をしている場合、IME は「k」「y」「o」という打鍵の列を、ローマ字の対応表に従って「きょ」に組み立てます。「n」の後に子音が来たら「ん」とみなす、同じ子音が続いたら「っ」を挟む、といった日本語ローマ字表記の約束事も、この工程が処理しています。「kyo」と打ち終わるまで「きょ」に確定できないので、IME は打鍵を数打分だけ抱えて待つ、ということもやっています。ちなみに「shi」と「si」のどちらでも「し」になるように、対応表は複数の綴りを受け付ける形で作られています。自分の癖に合わない綴りが化ける場合、対応表の設定を持つ IME ならそこを調整できます。

フリック入力の場合、この工程はほぼ素通りです。12キーのフリックは1動作でかな1文字が決まる方式なので、IME には最初から「きょ」に相当するかなが届きます(フリックと QWERTY の比較で書いた操作数の違いは、この前工程の有無でもあります)。とはいえフリックにも小さな組み立てはあります。濁点キーは「直前のかなを濁音に置き換える」操作ですし、小文字化キーは「ゆ」を「ゅ」に差し替えます。未確定のかな列を後ろから編集する処理を、IME が受け持っているわけです。

どちらの方式でも、この工程を抜けた時点で IME の手元には「きょうのてんき」というかなの列があります。ここからが変換の本番です。

変換の中身: 最もありそうな並びを探す

「きょうのてんき」を漢字かな交じり文にする方法は、実は無数にあります。「今日の天気」「京の天気」「今日の転機」「凶の転帰」…。どこで区切るかの選択肢と、各区切りをどの単語とみなすかの選択肢を掛け合わせると、組み合わせは爆発します。IME の中核は、この膨大な候補の中から「最もありそうな並び」を一瞬で選び出す探索エンジンです。

材料は2つあります。1つ目は辞書です。単語ごとに、表記(天気)、読み(てんき)、品詞(名詞)、そして「その単語がどれくらい使われやすいか」を表すスコアが登録されています。2つ目は、単語同士のつながりやすさのスコアです。「今日の」の後には名詞が来やすい、「転機」は「人生の」のような文脈で使われやすい、といった傾向が、品詞や単語の組み合わせごとの数値として持たれています。この2つ目を連接コストと呼びます。

変換のとき、IME はかなの列に対して「ここからここまでを『今日』とみなす」「ここからは『の』」という切り出しの候補を辞書から全部拾い出し、それらを網の目のようにつないだ構造(ラティスと呼びます)を作ります。そして、単語自体のスコアと連接コストの合計が最も良くなる経路をこの網の中から探します。この「最良経路の探索」は、経路の数がいくら多くても効率よく解ける手順が確立されていて、Mozc の変換器のソースコードには、ラティス(Lattice)を組み立ててビタビ(Viterbi)探索を走らせる処理がその名前のまま実装されています(google/mozc の immutable_converter.cc)。だからこそ1文まるごとの変換が一瞬で返ってくるのです。

ここから、実用上の大事な帰結がひとつ出ます。文節ごとに細かく確定するより、文単位で打ってから一括変換したほうが賢い、ということです。「きょうの」だけを変換するとき、IME は後ろに何が続くか知らないまま判断するしかありません。「きょうのてんきははれ」まで見えていれば、「天気」という語の存在が「今日」を選ぶ根拠になります。文脈が候補選択の手掛かりになる場合がある——フリック入力のコツで「文単位で変換」を勧めた理由がこれです。

変換キーを押したときに出る候補の一覧にも、この探索が使われています。1位の候補は最良経路そのものですが、IME は2番目、3番目に良い経路も同時に持っていて、候補欄にはそれが並びます。1位が外れでも、たいてい数個下に正解があるのはこのためです。また、文全体の候補と並んで、先頭の文節だけを変えた候補が出るのは、「間違っているのはたいてい一部だけ」という現実に合わせた出し方です。候補欄は、エンジンが検討した「ありそうな解釈」の上位を覗いている窓だと思うと、眺め方が変わります。

辞書はどう作られているか

探索の質は、材料である辞書の質で決まります。辞書と聞くと国語辞典のようなものを想像するかもしれませんが、IME の辞書はかなり性格が違います。国語辞典は語の意味を人間に説明するもの、IME の辞書は語の読みと表記とスコアを機械に与えるものです。意味は載っていません。代わりに、「この語はどれくらい使われやすいか」「どんな品詞で、前後にどんな語が来やすいか」という、探索に必要な数値が載っています。

このスコアは人手で1語ずつ付けるものではなく、大量の文章データから統計的に学ばれます。よく使われる語ほど選ばれやすいスコアが付き、実際の文章に現れる並びほど連接コストが低くなる。つまり IME の変換の「自然さ」は、学習に使われた文章の量と質を反映しています。新語や流行語に弱い IME と強い IME があるのは、辞書の更新頻度と収録方針の差です。

もうひとつ、辞書には収録の判断という設計が入っています。なんでも収録すればよいわけではありません。珍しい語を大量に入れると、よくある読みの変換でその珍しい語が誤って顔を出す機会も増えるからです。収録語彙とスコアのバランスを取る作業は、変換エンジンの品質そのもので、オープンソースの Mozc のようにエンジンと辞書データの構成が公開されているプロジェクトを見ると、この作りが具体的に分かります。

学習と辞書: IME が「自分用」になっていく

同じ IME を使っていても、候補の並びは人によって違ってきます。IME があなたの選択を学習しているからです。「きしゃ」で「記者」を選び続ければ「記者」が上に来ますし、変わった固有名詞を一度確定すれば、次からは候補に現れます。実装の詳細はエンジンごとに違いますが、大枠では「ユーザーが選んだ結果を履歴として持ち、その語や並びのスコアを底上げする」という仕組みです。使い込むほど一発で決まる率が上がっていくのは、この積み重ねです。

学習と混同されやすいものに、ユーザー辞書(単語登録)があります。こちらはユーザーが明示的に「この読みでこの表記」と登録するもので、学習のような揺らぎがなく、確実に候補に出したい語に向いています。人名・製品名・メールアドレスのような、エンジンの辞書に載っていない語は、学習に期待するより登録してしまうほうが早くて確実です。Microsoft IME であれば、設定の「学習と辞書」からユーザー辞書ツールを開くか、タスクバーの IME オプションのアイコンを右クリックして単語を追加できます(Microsoft 日本語 IME)。使い分けの目安は、「揺れてほしくない語は辞書、傾向で寄ってほしい語は学習」です。

学習は放っておいても進みますが、意図的に育てることもできます。乗り換え直後や機種変更直後の1週間は、変換候補を雑に選ばず、正しい候補をきちんと選んで確定する。誤字のまま確定して後から直す、という横着をしない。それだけで学習の質が変わり、立ち上がりが早くなります。何を学習するかは IME と設定によって異なります。誤入力を直す習慣は有用ですが、確定した内容がすべて保存されるとは限りません。

逆に、学習が悪さをすることもあります。一度打った誤字を学習してしまい、以後その誤字が候補の上位に居座る、というのが典型です。対処の粒度は IME によって違います。Google 日本語入力(PC 版)のヘルプでは、学習した変換候補を個別に削除することはできず、[ツール]>[プロパティ]>[辞書]タブの[学習履歴のクリア]で全消去するか、[一般]タブの[シークレットモードを有効にする]で学習した候補を一時的に非表示にする、と案内されています(Google 日本語入力 よくある質問)。Microsoft IME では、予測候補ウィンドウで選択した候補を Ctrl + Delete で個別に削除でき(日付など一部の候補は削除できません)、学習そのものも設定の「学習と辞書」でオン・オフを切り替えられます(前掲の Microsoft 日本語 IME)。全消去は育てた学習も消すので、候補単位の削除や一時的な非表示で済むならそちらが先です。

予測変換: 打ち終わる前に当てにくる

ここまでは「打ち終わったかなを変換する」話でしたが、現代のスマホ IME の主戦場は、打鍵の途中で候補を出す予測変換です。「きょ」まで打った時点で「今日」「京都」「今日の天気」を並べる。読みの先頭一致で辞書と履歴を引き、あなたが過去によく使った語、直前の文脈、時には時刻のような手がかりまで使って、続きを先回りします。

予測が当たるほど打鍵数は減ります。長い定型の挨拶が2文字で出てくれば、十数打が2打になる。だからスマホ IME の体感速度は、打鍵の速さと同じくらい、辞書と予測の質で決まります。同じ端末・同じ配列でも、キーボードアプリを替えると入力が速くなったり遅くなったりするのは、この部分の性能差です。予測の材料の中で特に効くのはあなた自身の入力履歴で、昨日打った固有名詞が今日は2文字で出てくるのはそのためです。つまり予測変換は使い始めが一番弱く、使うほど当たるようになります。乗り換え直後のキーボードが物足りなく感じられる理由の一部は、性能ではなく履歴の空白です。

ただし予測には視線のコストがあります。候補欄を毎打鍵ごとに確認していると、打鍵より視線移動が律速になります。予測変換は「毎回読む」のではなく「数文字打ったら一瞥して、あれば拾う」というリズムで使うのが、仕組みに合った付き合い方です。

予測変換の延長で、変換は「文字を文字にする」以外の仕事もするようになっています。「きょう」と打つと今日の日付が候補に出る、「かっこ」で各種の括弧が並ぶ、読みから絵文字や顔文字を引ける、といった機能です(対応はエンジンによります)。これらは辞書の枠組みをそのまま使った拡張で、読みに対して日付や記号という「表記」を動的に生成して返しているだけです。仕組みを知っていると、こうした機能は「覚えれば使える隠し味」として拾えるようになります。日付の入力やよく使う記号をこれで済ませられると、モード切り替えの手数がまとまって減ります。

誤変換はなぜ起きるか、どう直すか

仕組みが分かると、誤変換の原因も分類できるようになります。誤変換は「IME がバカだから」起きるのではなく、探索の材料が足りないか、材料が汚れているかのどちらかで起きます。よく確認する項目を三つ挙げます。

  1. 辞書に語がない: 新しい固有名詞、社内用語、人名。エンジンは知らない語を出せません。対処はユーザー辞書への登録です
  2. 区切りを間違えた: 「ここではきものを」を「ここでは着物を」と「ここで履物を」のどちらに切るか。かな列だけからは決められない場合があり、エンジンはスコアの高いほうを選ぶだけです。対処は、確定前に文節の区切りを操作して直すか、語順や言い回しを少し変えて曖昧さを減らすことです
  3. 同音語の選択を間違えた: 「きかい」を機会・機械・奇怪のどれにするか。文脈で決まらないときは頻度と学習で選ばれるため、意図と違うことがあります。対処は正しい候補を選び直すこと。選び直しはそのまま学習になり、次回の候補順に効きます

実例をひとつ歩いてみます。「じどうしゃで工場を見学した」と打ちたいのに「自動、車で工場を…」のように切られてしまうケース。これは2番の区切りミスで、エンジンが「じどう+しゃ」という切り方に高いスコアを付けたことが原因です。確定前なら文節の区切りを伸ばして「じどうしゃ」を1語にすれば直ります。これが毎回起きるなら、「じどうしゃ」の学習が「自動」に汚染されている可能性が高いので、その候補の削除か、ユーザー辞書での明示的な登録が根治になります。原因の分類ができると、その場しのぎと根治を使い分けられるようになるわけです。

文節の区切りを直すキー操作

「文節の区切りを操作する」と書きましたが、実際に押すキーは IME のキー設定で決まっています。オープンソースの Mozc はキーと動作の対応表を公開しているので、Microsoft IME 互換のキー設定ファイル(ms-ime.tsv)から、かな入力中(Composition)と変換中(Conversion)の主な行を抜き出します(google/mozc の ms-ime.tsv、原文はタブ区切り)。

status       key          command
Composition  Space        Convert
Composition  Enter        Commit
Conversion   Shift Right  SegmentWidthExpand
Conversion   Shift Left   SegmentWidthShrink
Conversion   Right        SegmentFocusRight
Conversion   Left         SegmentFocusLeft
Conversion   Space        ConvertNext
Conversion   Up           ConvertPrev
Conversion   Enter        Commit

かなを打っている状態でスペースを押すと変換(Convert)に入り、変換中は Shift+→ で注目している文節を伸ばし(SegmentWidthExpand)、Shift+← で縮め(SegmentWidthShrink)、→ / ← で注目する文節を移り、スペースで次の候補、Enter で確定です。先ほどの「じどう+しゃ」なら、変換直後に Shift+→ で「じどうしゃ」まで文節を伸ばしてからスペースを押せば直ります。IME や設定によって割り当てられるキーは変わりますが、「文節を伸縮させる」「文節を移る」「候補を送る」という動作の種類は共通です。

Windows の Microsoft IME について、公式ページに載っているキーのうち誤変換の後始末に関わるものは次のとおりです(前掲の Microsoft 日本語 IME)。

Space        1回目: 入力内容を変換 / 2回目: 変換候補ウィンドウを開く
変換キー      再変換
Ctrl + Del   選択した候補を予測候補ウィンドウから削除
F7           入力文字列を全角カタカナに変換
F10          入力文字列を半角英数字に変換

変換キーで再変換に戻れること、邪魔な予測候補は Ctrl + Del でその場で消せることの2つを覚えておくと、次の心得を実行に移しやすくなります。

どの場合も、共通する心得は「同じ誤変換に2回遭ったら、手を打つ」です。二回だけで原因は断定できませんが、繰り返す例を記録するきっかけになります。登録するか、学習させるか、言い回しを変えるか。誤変換は使い手が減らせるものだと知っているだけで、IME との付き合いはだいぶ楽になります。

どこで動いているかがプライバシーに直結する

ここまで説明した辞書・探索・学習・予測は、すべて端末の中だけで完結させることができます。実際、そういう設計の IME があります。Google 日本語入力(PC 版)のヘルプは「入力した文字や文章が Google に送信されることはありません」と明記し、使用統計情報の送信をオンにした場合でも送られるのは OS 情報や打鍵数などの統計情報とクラッシュレポートであって、入力された単語や文章は送られないとしています(前掲の Google 日本語入力 よくある質問)。一方で、入力内容をクラウドへ送り、サーバー側の大きな辞書や計算資源で変換・予測を行う設計の IME もあります。Microsoft IME の「提案サービスを使用する」は、有効にすると書いた内容が暗号化されて Microsoft に送信され、Bing からテキスト候補を取得する機能だと公式ページに書かれています(前掲の Microsoft 日本語 IME)。クラウド型は新語や固有名詞に強くなれる一方、あなたが打った内容が外部に送られることを意味します。

IME は、パスワードも、検索語も、送信せずに消したメッセージの下書きも通る場所です。だから「変換がどこで行われているか」は、機能の話であると同時にプライバシーの話です。この観点での確認方法(権限の見方、機内モードでのテストなど)はキーボードとプライバシーの記事にまとめました。

学習データの置き場所も同じ文脈にあります。この記事で説明した学習履歴は、あなたの語彙と言い回しの記録そのものです。端末内に閉じている設計なら話は単純ですが、複数端末での同期のためにアカウントへ保存する設計もあります。たとえば Google 日本語入力の同期機能は、設定とユーザー辞書を Google のサーバーに記録して他のパソコンでも使えるようにするもので、利用には Google アカウントが必要です(前掲の Google 日本語入力 よくある質問)。同期の対象が設定だけなのか、ユーザー辞書までか、学習履歴まで含むのかは IME ごとに違うので、有効にする前に確認する価値があります。同期は便利さと引き換えに、入力傾向の記録が端末の外にも存在することを意味します。どちらを選ぶかは使い手の判断ですが、選んでいる自覚があるかどうかは大きな違いです。

端末内で動くオープンソースの変換エンジンとしては Mozc が代表格で、Google 日本語入力の技術的な兄弟にあたります。この記事で説明した辞書と連接コストによる探索は、まさに Mozc が実装している方式です。The KeyBoard の日本語変換も Mozc を端末内で動かす構成で、入力内容をネットワークに出さずに実用的な変換精度を実現しています。仕組みを端末内に置けることは、技術的に証明済みだということです。

背景: かな漢字変換という難問の歴史

最後に少しだけ歴史の話をします。日本語は同音異義語が多く、単語の切れ目を空白で書かない言語です。「かな列を漢字かな交じり文にする」という問題は、計算機にとって最初から難問でした。情報処理学会のコンピュータ博物館によれば、初の日本語ワードプロセッサである東芝の JW-10 は 1978年9月に発表され、1979年2月に出荷が始まりました。搭載されたかな漢字変換は「文節指定入力」で、「かんじを かんたんに にゅうりょくする」のように利用者が文章の読みを文節ごとに区切って入力する方式でした。開発で最大の課題は同音異義語の選択で、最終的に文章の前後関係と使用頻度などを利用する方式が採られ、辞書は使用者別に頻度管理を行い、利用者が単語を登録することもできたと記録されています(情報処理学会 コンピュータ博物館「JW-10」)。前後関係(連接)と使用頻度(単語のスコア)、それに学習とユーザー辞書。この記事で説明した骨格は、最初の製品の時点でもう姿を見せていたことになります。

その後、辞書と文法規則を人手で作り込む方式から、大量の文章データから単語の使われやすさとつながりやすさを数値として学ぶ統計的な方式へと主流が移り、文まるごとの変換が当たり前になりました。この転換のポイントは、「正しい日本語の規則を書き尽くす」ことを諦めて、「実際に書かれた日本語に似せる」ことに舵を切った点です。言語の規則は例外だらけで書き切れませんが、大量の実例から傾向を学ぶことはできる。この発想の転換が、変換精度を実用の水準まで引き上げました。

近年は、この統計的な仕組みの上に、より大きな機械学習モデルを組み合わせる実装も現れています。文脈の理解が深くなる方向への進化ですが、モデルが大きくなるほど端末内で動かす難易度も上がるため、「賢さ」と「端末内で完結すること」の間の設計判断は、これからも IME ごとの個性であり続けるはずです。いま誰もが「なんとなく打てば正しく変換される」と感じられるのは、こうした数十年の蓄積の上に乗っているからです。1日に何万回も通る道具の下に、これだけの技術が敷かれている。そう思うと、IME 選びに少し真剣になる気がしてきませんか。

よくある質問

同じアプリを使っているのに、家族と候補の並びが違うのはなぜですか

学習履歴が違うからです。IME はユーザーの確定履歴で候補のスコアを調整するので、使い込むほど並びは個人化していきます。同じ端末を共有している場合は、互いの学習が混ざって精度が下がることもあります。逆に言えば、候補の並びはあなたの入力の記録を映しているということでもあり、他人に画面を見せながら入力するときに思わぬ語が候補に出る、という形で表に出ることもあります。気になる語は、候補単位の削除や一時的な非表示に対応した IME ならそこで、対応していなければ学習履歴のクリアで消しておけます。

変換が最近おかしい気がします。リセットすべきですか

まず、特定の候補だけが邪魔なのか、全体的に精度が落ちたのかを切り分けてください。前者なら、その候補を学習履歴から個別に削除する(Microsoft IME の予測候補なら Ctrl + Delete)のが低コストです。後者で、誤字の学習が積もっている自覚があるなら、学習の全リセット(Google 日本語入力なら[学習履歴のクリア])が効きます。ユーザー辞書は学習とは別の仕組みですが、念のため書き出してから実行すると安全です。

変換キーを押さなくても勝手に変換される IME がありますが、あれは何ですか

入力を確定せずに、打っている端から自動で変換候補を表示・更新していく方式で、ライブ変換などと呼ばれます。仕組みとしては、この記事で説明した文単位の探索を打鍵のたびに走らせ続けているものです。文脈が増えるたびに変換結果が組み変わるので、慣れると変換キーを押す回数が大きく減ります。エンジンの探索が高速だからこそ成立する機能で、途中経過の変換が目まぐるしく変わるのが気になる人と、確定操作から解放されて快適になる人に分かれます。試してから判断するのがよい機能です。

クラウド変換はオンにすべきですか

何と引き換えに何を得るかの問題です。得るものは新語・固有名詞への強さ、引き換えにするのは入力内容の外部送信です。Microsoft IME の提案サービスのように、公式ページに送信先と用途が明記されている機能なら、その記述を読んでから判断できます。私的な文章や仕事の文書を打つ端末では、端末内で完結する構成を選ぶ判断に合理性があります。オンにする場合も、パスワード欄などで送信が止まる設計になっているかは確認する価値があります。なお、端末内の変換でも新語の弱さはユーザー辞書で相当に補えます。自分がよく使う新語や固有名詞は登録して候補として使える場合があり、「クラウドでなければ実用にならない」というものではありません。

次の一歩

今日ためせることを3つ挙げます。

  1. 次の1時間、文節ごとの確定をやめて、1文まるごと打ってから変換してみる。一発で決まる率を体感する
  2. 変換中に Shift+→ / Shift+← を押して、文節の伸縮を指に覚えさせる。区切りミスをその場で直せるようになると、確定してから消して打ち直す回数が減る
  3. 機内モードにして日本語変換が動くか試す。ただし、動くことはその場でオフライン変換できた証拠であり、通常時に通信しない証明ではない

3つ目の結果が意外だった人は、キーボードとプライバシーの記事に進んでください。オープンソースの実装として中身まで追いたくなった人には、Mozc の解説記事が入り口になります。IME は日々の入力で使う道具です。その仕組みと動作場所を知っておくことは、速さのためにも、安心のためにも効きます。

「文字が出た」と「確定した」を見分ける練習

IME の説明を操作と結び付けるには、送信しない練習用の入力欄で、未確定の表示と確定後の表示を比べてみます。かなを入力し、候補を選び、確定するまでをゆっくり進めます。下線や候補欄などの表示方法は環境によって違うため、自分の画面で状態の手掛かりを探してください。

次に、確定前の文字を直す操作と、確定後の文字を直す操作を分けて試します。前者では変換候補や文節の操作が関わり、後者では入力先アプリのカーソル移動や選択も関わります。同じ削除キーでも、何を編集中かによって結果が違うことを確認する練習です。

状態見る場所確かめること
読みを入力している本文と候補欄どの範囲が未確定か
候補を選んでいる選択中の文節意図した語を選べているか
確定した後入力先の本文残った文字が正しいか
送信・実行の直前入力欄全体内容を送ってよい状態か

送信ボタンを持つアプリで試す場合は、実際の宛先へ送らない下書きを使います。Enter が確定と送信のどちらに働くかを、推測だけで試さないようにします。

問題の報告には、確定前後の違いを含める

日本語入力の不具合は、完成した文字列だけでは再現できない場合があります。同じ文字列でも、途中で変換候補を選んだのか、貼り付けたのか、物理キーボードから入れたのかで経路が異なるためです。

報告には、入力方法、入れた読み、選んだ候補、押したキー、確定後の表示を順に書きます。「きょう」と入力し、候補を選んだ後、確定で末尾の文字が重複した、といった形なら、どの段階を調べるかが明確になります。端末、IME、入力先アプリも添えます。

ただし、再現のために秘密情報を含む元の文章を丸ごと残す必要はありません。架空の短文に置き換えて同じ問題が起きるかを確かめると、原因に関係する操作だけを説明できます。候補の順位だけの問題なのか、文字が消える・重複する問題なのかを分けることが、適切な問い合わせ先を選ぶ手掛かりになります。

参考リンク