このブログを検索

Google日本語入力の研究

Windowsパソコンを買えばMS-IMEが標準だが、私は、それより優れたGoogle日本語入力というソフトを無料でダウンロードして使っている。

キー設定の選択

その設定法を書くに当たって、ちゃんとしたマニュアルを探したけど、Googleにも、その他ネット上でも見つける事は出来なかった。そこで、実際にGoogle日本語入力の設定をして見て、どのようになっているのかを調べた。

Google日本語入力をインストールしてタスクバーの中にあるIMEのアイコンを右クリックしてプロパティを選択し、キー設定の選択編集 をクリックすると 「モード」、「入力キー」、「コマンド」の3つをセットにする行のリストが出てくる。

この内、「モード」と「コマンド」はリストの中から選択し、「入力キー」は実際に使うキーを押す事で入力する。例えば、リスト中の「Ctrl Backspace」は実際にCtrlキーを押しながらBackspaceキーを押すことで入力される。そうやって編集する方法の他に、予め設定ファイルを作っておいて それをインポートすることでキー設定をカスタマイズする方法がある。

設定ファイルの作成は、まずデフォルトの設定をエクスポートすることから始める。デフォルトはMS-IME準拠、ATOK準拠、ことえり準拠、の3種類の中から選ぶ事が出来るが、私はMS-IME準拠の設定を元にした。Google日本語入力の前はMS-IMEを使っていたし、Windowsパソコンを使う日本人の殆どはMS-IMEを使っているはずで、それに慣れておくことも大事だ。因みに、ことえり はAppleのパソコンのIMEである。

設定ファイルのゴミ

MS-IMEの設定をエクスポートすると keymap.txt という名前のファイルが出来るけど、ファイル名はエクスポート前に変更する事も出来る。そのファイルとキー設定の編集画面を見較べると、1行目にタイトル行が入って、2行目以降はファイルの行と編集画面の行が一対一に対応していることが分かった。

一つの行の3つの要素はTabで仕切られている。このような形式のファイルは Tab Separated Values (TSV)呼ばれ表計算ソフトのデータ入出力形式の一つである。見やすいようにGoogleスプレッドシートに取り入れたものの一部を例として以下に示す。

statuskeycommand
CompositionBackspaceBackspace
CompositionCtrl aMoveCursorToBeginning
CompositionCtrl BackspaceBackspace
CompositionCtrl dMoveCursorRight
CompositionCtrl DownMoveCursorToEnd
CompositionCtrl eMoveCursorToBeginning
途中省略
PrecompositionMuhenkanInputModeSwitchKanaType
PrecompositionShift MuhenkanToggleAlphanumericMode
PrecompositionShift SpaceInsertAlternateSpace
PrecompositionSpaceInsertSpace
PredictionCtrl DeleteDeleteSelectedCandidate
SuggestionDownPredictAndConvert
SuggestionShift EnterCommitFirstSuggestion

編集画面ではこの Shift Enter の行が最後なのだが、MS-IMEの設定ファイルにはこの後に謎の設定が13行も続いている。色々調べたら、これはゴミのようだ。消去しても全く問題ない。

それは、設定ファイルの1行目(status key command)を消去し、5行目の Ctrl d の部分を hogehoge に書き換えてインポートし、再度エクスポートしてみて分かった。すると、
  • 編集画面の1行目は Backspace ではなく Ctrl a の行になっている。
  • hogehoge 行が無くなっている。
しかし、これのエクスポートしたファイルを確かめると、
  • 1行目には再度タイトル行が出現する。
  • 2行目は Ctrl aの行になる。
  • hogehoge の行は有効な設定の最後の行の次に出現し、その後にゴミの行が続く。
この実験結果からGoogle日本語入力の設定ファイルの動作は以下のようであると推察される。
  • インポート: 設定ファイルの1行目は破棄される。2行目以降は正しい設定行は設定に吸い込まれ、正しくない設定行は取り残される。
  • エクスポート: インポート時に取り残されたデータの先頭にタイトル行が追加され、それに続き現在の設定が追加されることでエクスポート用のファイルが生成される。

モードの選択肢

編集画面ではモードは日本語のリストの中から選択するが、設定ファイルでは英語になっている。その対応を調べて表にした。

No.モード名status
変換前入力中Composition
変換中Conversion
直接入力DirectInput
入力文字なしPrecomposition
サジェスト選択中Prediction
サジェスト表示中Suggestion

コマンドの選択肢

編集画面ではコマンドは日本語のリストの中から選択するが、設定ファイルでは英語になっている。その対応を調べて表にした。更に、各コマンドがMS-IME準拠の設定ファイルに於いて各モード毎に幾つ使われているのかを集計した結果を示す。そのコマンドが全てのモードで使われてない場合には右端の欄に「未」と表示した。(未になっている項目の内、20 28 29 30 32 56 は ATOK準拠とKotoeri準拠の場合も含めて使われていない。)

No.コマンド名command
1IMEを有効化IMEOn005000
2IMEを無効化IMEOff110100
3ひらがなに入力切替InputModeHiragana110100
4ひらがなに変換ConvertToHiragana220000
5ひらがなに表示切替DisplayAsHiragana000000
6ひらがなカタカナを切替SwitchKanaType110000
7カーソルを右に移動MoveCursorRight400000
8カーソルを右端に移動MoveCursorToEnd700000
9カーソルを左に移動MoveCursorLeft400000
10カーソルを左端に移動MoveCursorToBeginning500000
11キャンセルCancel390000
12キャンセル後 IMEを無効化CancelAndIMEOff000000
13プロパティを起動LaunchConfigDialog000000
14予測変換PredictAndConvert110001
15代替空白文字を入力InsertAlternateSpace000100
16全角カタカナに入力切替InputModeFullKatakana110100
17全角カタカナに変換ConvertToFullKatakana220000
18全角カタカナに表示切替DisplayAsFullKatakana000000
19全角空白を入力InsertFullSpace110100
20全角英数に入力切替InputModeFullAlphanumeric000000
21全角英数に変換ConvertToFullAlphanumeric330000
22全角英数に表示切替DisplayAsFullAlphanumeric000000
23再変換Reconvert001100
24前候補を選択ConvertPrev060000
25前候補ページを選択ConvertPrevPage020000
26半角に変換ConvertToHalfWidth220000
27半角に表示切替DisplayAsHalfWidth000000
28半角カタカナに入力切替InputModeHalfKatakana000000
29半角カタカナに変換ConvertToHalfKatakana000000
30半角カタカナに表示切替DisplayAsHalfKatakana000000
31半角空白を入力InsertHalfSpace110000
32半角英数に入力切替InputModeHalfAlphanumeric000000
33半角英数に変換ConvertToHalfAlphanumeric220000
34半角英数に表示切替DisplayAsHalfAlphanumeric000000
35単語登録を起動LaunchWordRegisterDialog000000
36右の文字を削除Delete200000
37変換Convert300000
38学習を使わずに変換ConvertWithoutHistory100000
39左の文字を削除Backspace400000
40文節を伸ばすSegmentWidthExpand020000
41文節を右に移動SegmentFocusRight020000
42文節を右端に移動SegmentFocusLast030000
43文節を左に移動SegmentFocusLeft020000
44文節を左端に移動SegmentFocusFirst030000
45文節を縮めるSegmentWidthShrink020000
46最初の予測候補を確定CommitFirstSuggestion000001
47最初の文節のみを確定CommitOnlyFirstSegment020000
48最後の学習をキャンセルRevert000100
49次のカナ文字種に入力切替InputModeSwitchKanaType000100
50次候補を選択ConvertNext040000
51次候補ページを選択ConvertNextPage020000
52確定Commit330000
53確定取り消しUndo000100
54空白を入力InsertSpace000100
55英数入力切り替えToggleAlphanumericMode110200
56辞書ツールを起動LaunchDictionaryTool000000
57選択候補を履歴から削除DeleteSelectedCandidate000010

この使われている個数が2以上の場合は、同じコマンドに異なるキーが割り当てられている事を示している。例えば、No.1 IMEOn は、状態「」即ち直接入力の時には5通りの方法があり、Eisu、F13、Hankaku/Zenkaku、Hiragana、Katakana、となっている。F13が定義されているとは思わなかった。

因みに、このコマンドの内、No.54 InsertSpace は、英数入力では半角空白、かな入力では全角空白、が入力され、No.15 InsertAlternateSpace は、逆に英数入力では全角空白、かな入力では半角空白、が入力される。

ローマ字変換テーブル

Google日本語入力のプロパティローマ字テーブル の 編集 をクリックすると 「入力」、「出力」、「次の入力」の3つをセットにする行のリストが出てくる。これを直接編集することも出来るが、キー設定と同様に設定ファイルのエクスポートとインポートにより、外部のエディターで編集することも出来る。

キー設定の選択とは異なり、ローマ字テーブルは1種類しか無い。これをエクスポートすると romantable.txt という名前のファイルが出来るけど、ファイル名はエクスポート前に変更可能。ファイル形式は keymap.txt と同様にTSVである。

ローマ字変換テーブルは、入力に対する出力だけでなく、次の入力という項目を設ける事で、「変換結果が表示されるが、しかしそれは未確定である」という状態を作って、複雑な動作をさせる事が出来る。

例えば、n y a と入力した場合に、「ん」→「にぃ」→「にゃ」と表示を変化させていくことが可能になる。その為のローマ字変換テーブルは以下の通り。

n
んyにぃ
にぃaにゃ

このテーブルの左の列は入力、真ん中の列は出力、右側の列は次の入力になる。この例では、「にゃ」で文字が確定する。

しかし、もっと複雑なテーブルになると文字が確定しないまま入力が増えていき、その間に確定する文字があってもそれ以前に未確定の文字は依然として未確定のままらしい。これは、期待通りの結果が得られなかった時に実験的な変換テーブルを作って確かめた。

その詳細は、[Google日本語入力の動作]という投稿に書いた。未確定のままの文字があったので、最後に入れた文字により複数の文字定義に該当する事と なり、期待していた文字定義とは異なる より長い文字定義 の方に変換されたのが原因だと分かった。

Google日本語変換のバグ

「Google日本語入力ローマ字テーブル設定」 に於いて、「初期値に戻す」 を選択して適用させても即座に適用されない。(カスタマイズしたファイルなら即座に適用される。) Windowsを再起動すると適用される。

面白い事に、初期値の状態でエクスポートしてあったファイルをインポートした場合でも即座に適用されず、Windowsの再起動が必要。

この初期値のファイルをエディットしてコメント行を追加しても結果は変わらないが、定義の一部を削除して実質的に変更した後のファイルは即座に適用された。