« ^ »

Input Methodを巡る

所要時間: 約 5分

私は、普段の作業にmacOSを使用している。これまでInput Methodは標準のものを使用していたが、些細な挙動が気になり始めてしまい、使い勝手に対して違和感をずっと感じていた。だから今回はInput Methodを巡って、自分にとって何がどうなっている事が良いのかということを探ることにした。

Input Methodの切り替え

日本語の文章を書いていると、文章の中に半角の英数や記号を入力する必要性が出てくる。例えば金額を示す時には数字を使うし、英語や外国語が元になっている単語を用いる時にもアルファベットを使用することだろう。グーグルやツイッターのようなサービス名はGoolgeやTwitterと表記する。他にもGNU1やNginx2やSCSI3のように発音が難しく、もはや片仮名表記ができないものもある。これらを文章として記述する時も片仮名で表記すると、もはやそれを認識してもらえない可能性がある。そのため、日本語の文章は常に平仮名、片仮名、漢字やその他の全角記号の他に、半角英数や半角の記号が混ざる。

半角英数や半角の記号と、全角である平仮名、片仮名、漢字ではその入力方法が異なる。この入力方法の事はInput Methodと呼び4、文章の記述時にはInput Methodを切り替えながら、作文していくことになる。だいたいのOSには標準のInput Methodがインストールされていて、特にその存在を意識することなく使用できるようになっている。ただ標準のInput Methodの挙動に不満を持つこともある。変換して欲しいところで変換されなかったり、現在のInput Methodが半角英数なのか全角の日本語入力なのか判断できなかったりする。些細な事ではあるが、使用頻度が高い機能であるだけに些細な違和感であっても解消すると生産性を向上できるものだろう。そもそもInput Methodは様々な実装があり、それぞれの使用感は異なる。今回は複数のInput Methodを試し、どのInput Methodと長く付き合っていくかを考えることにする。

様々なInput Methodの選択肢

もちろんここに記載しなかったが、人気のあるInput Methodはいくつもある。それらが劣っている訳ではなく、私が選択肢として取り入れなかっただけなので、そちらが気になる場合はWikipediaのInput Methodのページからいろいろなものを見ることができる。

macOS標準の日本語入力

以前は「ことえり」というInput Methodが使用されていた。「ことえり」は精度があまりよくなくて、変換に不満を抱く人も一定数いた。

最近のmacOSに標準でインストールされている日本語入力は精度も悪くなくそこまで不満にならない。ただしアプリケーション全画面表示を使用していると現在の入力モードを確認しづらく、誤った入力方式で入力を始めてしまうといったことも多い。特にEmacsを使用していると M-x をタイプしてミニバッファにコマンドを入力し実行することも多いが、その際日本語入力の状態で入力を始めてしまい、深い悲しみに襲われたりもする。

Google日本語入力

得に使用感として問題はなかったのだが、唯一問題があったポイントはIMの切り替え時の挙動だった。USキーボードを使っているのでInput Methodの切り替えがトグルでしか切り替えられない。そのためどちらのモードで入力しているのかがわからず、期待していない入力モードで入力してしまうタイプミスがかなり発生した。これは標準のInput Methodでも同じことが言える。

結局この挙動が解消できないためSKK系のInput Methodへと乘り変える事になった。

DDSKK - Daredevil SKK

SKKの後継。SKKでは形態素解析しない。そのため単語の区切や送り仮名の位置を自分で指定する必要がある。Emacs上で動作するInput Methodであるため、Emacsではないアプリケーション上で動作させることはできない。独特の入力方法の為、慣れるまでにかなり時間が必要になりそうだが、逆に慣れると他のInput Methodが使用できなくなる。

http://openlab.ring.gr.jp/skk/ddskk-ja.html

DDSKK

変換モード

DDSKKには変換モードがある。これは、今入力している文字列を、何の用途で扱うかを切り替える。

変換モード記号skk-henkan-mode の値
確定入力なしnil
変換対象決定on
変換中active
変換モードと表示と値

確定入力は、入力している文字をバッファにそのまま挿入する。変換対象決定は先頭の文字をシフトを押しながら入力した場合に移行する。入力している文字列を変換対象として扱う。そのため、入力している文字は平仮名で表示される。変換中は、変換対象決定状態でスペースを入力した時に移行する。この時に変換結果の候補を元に、入力文字が切り替わっていく。変換結果の候補は skk-henkan-list によって保持される。

変換処理

skk-henkan-key に変換で使用する平仮名の文字列を保持する。その後 skk-search-ja-dic などの辞書検索関数により辞書が検索し、変換候補を返す。変換時に使用可能な変換関数は skk-search-prog-list で保持されている。 skk-henkan-1 などで辞書を検索し、変換結果の候補は skk-henkan-list に保持する。

AquaSKK

DDSKKはEmacs用のInput Methodと記述したが、それをmacOS上で動作できるようにしたInput MethodがAquaSKKだ。AquaSKKはSKKの様々な資産を利用できるように実装されているため、Emacs上ではDDSKK、その他のアプリケーションではAquaSKKを使用することで操作上の違和感を小さくできる。

脚注


1

読みを片仮名で表記すると「(グ)ニュー」となり、「(グ)」は限りなく発音しない。というか難しすぎでは。GNUの読み方については音声付きで公式の解説がある(https://www.gnu.org/gnu/pronunciation.en.html)。

2

読みを片仮名で表記すると「エンジンエックス」となる。

3

読みを片仮名で表記すると「スカジー」となる。

4

WindowsではIME(Input Method Editor)と呼ばれる。