読者です 読者をやめる 読者になる 読者になる

Google IMEで携帯入力 - 「次の入力」の秘密 -

キーボード配列

Google TechTalk2010のLTでさらりと語られていた、Google日本語入力(Google IME)のローマ字テーブルカスタマイズによる携帯入力について少々説明しようと思います。というか、僕もあんなことができるなんて知らなかったのでびっくりしました。設定内容をメモっていなかったので家に帰ってからあれこれ試行錯誤してみたので、その設定方法について紹介してみます。配列屋さんにはぜひ活用してもらいたい機能ですね。

はっきり言ってこいつはすごいです

まずは携帯入力(かなめくり入力)の動作例から。[1]キーの連続入力で、あ行のかなを入力できるように設定しています。画像からわかるように[1]をなんども押せば「あ→い→う→え→お→あ→い→…」という風にループします。

入力:1 1 1 1 1 1 1

一度表示されたひらがなが消えて別のひらがなが出てくるというのは、これまでの(MS-IMEATOKなどの)ローマ字定義の方法からは考えられないことなのですが、GoogleIMEでは「キー入力の組み合わせ→ひらがな」だけでなく「ひらがな+キー入力の組み合わせ→ひらがな」というマッピングも定義できるようにすることでこれが可能になっています。

そして、この秘密は


「次の入力」に隠されています。

「次の入力」欄はローマ字カスタマイズ機能が追加された開発版当初からあったものなのですが(参考:Google日本語入力に絶望したーーー!! - tomoemonの日記)、意味がわからなくてずっと触っていませんでした。

上図は初期設定の一部なのですが、あらためて見なおしてみると[tta]→「った」のような促音入力を実現するために使われていますので、この例を使って基本的な動きを確認してみようと思います。下の画像は[tta]を入力したときの動きです。

入力:t t a

ローマ字の設定で以下の通り登録されているとおり、[tt]まで打った時点で「っ」が出力された上で、次の入力に設定した「t」が表示されています。今後何度か出てきますが「出力される」と「次の入力として表示される」の二つは見た目上同じですが、意味的には全く違うので注意してください。

入力:tt
出力:っ
次の入力:t

この「次の入力」は通常の出力と同じように表示されているのですが、その名前の通り次の入力にも使われます。つまり、[tt]まで打った時点で次の入力[t]がセットされているので*1、さらに[a]を打つことで、[ta]のマッピングが適用されて「た」が出力されます。


さて、[tt]の設定では次の入力が[t]でしたが、次の入力にはひらがなも指定することができます*2。これを上手いこと組み合わせると以下のような携帯入力の設定になります。入力[1]から[お1]までが最初の例で紹介した携帯入力設定のすべてです。

[1]を入力すると「あ」が「次の入力として表示」されます。

入力:1
出力:(空)
次の入力:あ

もう一度、[1]を入力すると前回の入力として残っている[あ]と[1]を組み合わせた以下の設定が使われて、次の入力として「い」が表示されます。これを繰り返すことで、あ→い→う→…というループが実現できます。

入力:あ1
出力:(空)
次の入力:い

いずれかの時点でEnterキーを押せば、かなとして確定できますし、変換キーを押せば変換することもできます。これについては「出力された」文字と「次の入力として表示された」文字で同じ動きになります。ちょっとややこしいですが、これのおかげで携帯入力のような方式が実現できます。

また、先ほどから書いてきましたが「次の入力」として表示される文字と「出力」として表示される文字は一見同じなのですが、内部的にはまったく違う意味を持っています。出力された文字は従来のMS-IME等の設定と同じく、BackSpaceを押さない限り消えることはないのですが、次の入力として表示された文字は、さらに別の「入力」に使われた場合に消えます。
例えば、以下の設定の入力[2]から[か2]を試してみるとすぐにわかります。

この設定で[2]を何度も入力するとこうなります。

入力:2 2 2

入力として[か]がセットされることがないので、常に入力[2]の設定だけが使われて延々と「か」だけが出力されます。「出力」と「次の入力」の違いはわかっていただけたでしょうか。


というわけで、ここまでで「次の入力」についての紹介はおしまいです。とはいえ、この「次の入力」で何が出来るんだ?というと今のところ思いついていません。既存のローマ字カスタマイズ機能であっても、(親指シフトやその他同時押しを有する配列を除いた)多くの日本語入力配列を実現できるからです。
逆に言えば、既存の配列は既存のローマ字カスタマイズ機能のような最短一致によるローマ字(キー入力)のマッピングだけを使って定義されているものが多いので、この機に「次の入力」を活用した面白い配列が出てくることを期待しています。

余談

MS-IMEATOKではローマ字カスタマイズをたかだか数百個しか定義できない、しかも入力にはアルファベットのみ、出力にはひらがなのみといった制約が付いていますが、GoogleIMEではそれらすべての制約をとっぱらった上で、さらにこの「次の入力」機能!恐れ入谷の鬼子母神ですね。

追記

「次の入力」の使い道ではないですが、工藤さんのつぶやきを見てなるほどと思いました。ユーザ辞書に登録する代わりにローマ字カスタマイズテーブルに登録することで、変換いらずに自分の名前が出せるようにするとかそういう使い方もありますね。「@namae」→「自分の名前」とかすると良さそうな感じです。

あ、そうするとローマ字入力に対するAZIKのように、少しずつ自分の使いたい漢字を直接表示していくような段階的漢直が実現できるんじゃないかと思ったり。

*1:自動的にtを打ったことになっていると解釈しても良いと思います

*2:というかすべての入力欄に漢字含めたすべての文字を指定することができるので、ローマ字設定で漢直も実現できちゃいます