📈入力メソッドの魅力とつらさ
NGK2017Bで発表した。Misoca Advent Calendar 2017 - Qiitaの5日目でもある。
スライド
原稿
イントロ
今日は漢字入力がつらいという話をする。
このなかに入力メソッド、IME、FEPなどと呼ばれるソフトウェアを日常的に使っているひとはいますか? MS-IMEとかATOKとかGoogle日本語入力などが該当する。
おそらく、ほぼ全員が使っていると思う。
入力メソッドの特殊性
日常的に使っているが、入力メソッドはとても特殊なソフトウェアである。
- すべてのキー入力を受け取る。 パスワード入力欄を含めてすべてのキー入力を取得できる。
- アプリケーションと協調して変換候補ウインドウなどを表示はするが、メインウインドウのような固有のウインドウは持たない
- (日本では)ほぼ全員の人が使っている
世界の入力方法
日本語以外の入力には入力メソッドをあまり使わない。例えば、英語の入力に入力メソッドが不要である。
英語以外にもロシア語用にキリル文字が入力できるキーボードもある。キリル文字とは ( ゚д゚) の口のことである。
ハングルの入力
韓国語でも入力メソッドが用いられているが、これも日本語入力とは異なる。
韓国語の表記に使われるハングルは、複数の字母の組み合わせで文字を構成している。 例えば아というハングルは、ㅇとㅏという2つの記号の組み合わせで構成されている。 このそれぞれの記号を文字の元になっているもの、字母と呼ぶ。
それぞれがDキーとKキーに対応しているので、DKと打つことで아が入力できる。
そのため日本語入力の際に使う「変換候補の表示」という動作はない。
漢字入力の特殊性
- 発音記号を入力する
- 候補を表示して、そこから入力する文字も選択する
という二段階の変換が必要な文字体系は漢字だけである。正確に言うと、macOSに標準でインストールされている入力メソッドでは、漢字入力だけが変換候補を表示してる。
ので、これは漢字を持つ日本語と中国語の入力で使われている機能である。
入力メソッドを持たない文字体系
一方ではUnicodeには196種類もの大量の文字体系が含まれている。そしてそれには入力方法を持たない文字もいくつかある。
例えば絵文字。
例えば楔形文字。
例えばヒエログリフ。
入力メソッドの魅力
これらの入力メソッドを作るのはとても魅力的だと思う。使うのは古代エジプトの神官だと思う。
InputMethodKit
macOSの入力メソッド作るためのライブラリはInputMethodKitという名前である。 Appleのライブラリは末尾にkitと付く。
これを使えばヒエログリフ入力メソッドを作れる。作るべきである。
資料不足
InputMethodKitの資料はあまりない。Qiitaで検索してもでてこない。
Appleのドキュメントも「No overview available」と書いてある。無である。 そのためヘッダファイルのコメントや公式サイトから消えたミラーのWebArchiveなどが参考になる。
利用者不足
ドキュメントが少ないのと関連するが使っている人もほとんどいない。 みんな使ってほしい。
動作しないメソッド
一部のメソッドがうまく動作しない。
変換候補を選択するためのメソッドをディスアセンブルしたものを示す。 アセンブリを読むの大変だがよく読むと、スタックにpushしたあとpopしているだけである。無である。
「なぜ???」と思いながらバグレポをしたら「既知のバグ(duplicated)」と返ってきた。直してほしい。
まとめ
まとめると以下のようになる。
- 漢字入力は実は特殊
- でもいろんな使い道がありそうだしInputMethodKitみんな使ったほうがよい
- つらい
その他
https://github.com/mzp/EmojiIM でいろいろやっている。見てね。