📡InputMethodKitの非公開機能
技術書典 4で入力メソッドを解説する本を頒布する。
書く過程で得た各種知見をradarした。 ほとんどがドキュメントが足りない、もしくは無いので助けてくれ、という内容である。WWDCに行った際、ラボで話をしようと思っている。
🙈非公開API
標準の入力メソッドだけが利用している機能がいくつかある。
設定画面(rdar://39295951, rdar://39296952)
システム環境設定内に入力メソッドの設定画面を埋め込む方法は非公開である。 また、標準の入力メソッドはキーボードレイアウトも表示しているが、これは外部の入力メソッドは利用できない。
TouchBar(rdar://39297768)
InputMethodがTouchBarを制御してるじゃん。どうなってんだ。 pic.twitter.com/mzDPRKG8TI
— mzp (@mzp) 2017年9月18日
macOS標準の日本語入力はTouchBarに候補を表示しているが、この機能は非公開である。わりと使いたいのでなんとかしてほしい。
いろいろ調べてTouchBarを使う方法はだいたい見つけたが、セキュリティまわりの制約があるらしく一部のアプリケーションでしか使えない。(Display candidates of input method on touchbar by using undocumented API by mzp · Pull Request #4 · mzp/EmojiIM)
Touchbarに変換候補を出すの、とうとう成功した pic.twitter.com/zXNjawZct5
— mzp (@mzp) 2017年9月30日
また、ATOKはTouchBar対応を謳っているが、これは付属の辞書アプリのようなものから利用しており、入力メソッドから使っているわけではない(Touch Barに対応 ATOKイミクル | ATOK 2017 for Mac | ジャストシステム)。このほうが便利だと考えているからか、上記の制限を回避するためなのかは分からない。
入力モードの統合 (rdar://39363334)
日本語入力は、ひらがな入力モード、カタカナ入力モード、英数入力モードといった複数の入力モードを使いわける。 そのためシステム環境設定に以下のように複数の入力モードが並ぶ。
これは不恰好だし、個別にオン・オフしたい需要はあまりない。 Yosemiteで日本語IMを消しAquaSKKに統一する - 理系学生日記のように不要なものを一切いれたくない人がいるのは知っているが、「あまり」ないということで許してほしい。
この事情は標準の日本語入力でも同様らしく、 TISUnifiedUIForInputMethodEnabling
という複数の入力モードをまとめてオン・オフする機能がある。 便利そうだし公開してほしい。
キーボード配列の分類(rdar://39330175)
入力メソッドはどのキーボード配列を使うかを指定する必要がある。 このとき指定したいのはColemakやDvorakといったキーボード配列であって、Unicode Hex Inputのような特殊なキーボードではない。 しかし、macOSのAPIでこれらは両方ともASCII-capableなキーボードとして分類されていて区別できない。
標準の日本語入力は非公開のAPIを用いて、この2つを区別しているのでそれを公開してほしい。
🤔用途が謎のAPI
カタカナキーの謎(rdar://39379605)
macOSの日本語入力には「かなキー」と「英数キー」で入力モードを切り替えられる。 これは、入力メソッドで入力モードとキーを対応づけることで実現できる。
入力モードを切り替えるキーには以下の3つを指定できる。
- ひらがなキー
- カタカナキー
- 英数キー
このうちカタカナキーの存在が謎である。現在のAppleキーボードにひらがなキーと英数キーはあるが、カナキーもしくはカタカナキーは存在しない。
古いAppleキーボードにカタカナキーはある。 ただこのキーボードは現代のmacでは利用できないと思うし、依然と謎は残る。

用途が謎のプロパティ(rdar://39380087)
入力モードには利用する文字体系(漢字、ひらがな、ラテン文字など)を指定できる。 が、macOSを利用していて文字体系からなにかを選んだ記憶がないので用途が分からない。
文字体系としてUnicodeを指定できるので、事実上無意味では?と思っている。
✨その他
素朴な要望。
- 入力メソッドもMacAppStoreで配布したい(rdar://39297503)
- Swiftバンディングをマシにしてほしい (rdar://39380486)
💖感想
- Radarは投稿者とApple内部からしか見れないので、Open Radarにも投稿しないといけない。面倒。
- Input Method Kit (IMKit) Apple Radars and Bug Reports · Issue #2 · pkamb/NumberInput_IMKit_Sample · GitHubという入力メソッドのバグまとめみたいなissueもある。 ボクも追加した。