mac-akaza v2026.723.0 をリリースした
自作の macOS 用日本語 IME である mac-akaza の新しいバージョンをリリースした。
https://github.com/akaza-im/mac-akaza/releases/tag/v2026.723.0
今回の目玉は 2 つ。「スリープ復帰後に日本語入力が死ぬ」という最悪バグの原因究明と、ATOK 風の別表記候補ダイアログ。
スリープ復帰後に変換できなくなるバグ、犯人は Secure Input だった
数週間ずっと追いかけていた、「スリープから復帰すると全アプリで日本語変換が効かなくなる」というバグがあった。プロセスは生きてる、エラーも出てない、なのにキーイベントだけが届かない。IME 開発で一番つらいタイプのやつ。
で、ライブで切り分けした結果、犯人は IME ではなく Secure Event Input の解放漏れ だった。どこかのアプリ(今回は ghostty)が Secure Keyboard Entry を有効にしたまま解放しないと、macOS はパスワード保護のためにキーイベントを IME に配送しなくなる。仕様です。IME 側からはどうしようもない。
どうしようもないんだけど、黙って死なれるのが一番困るので、Secure Input を検出したら入力メニューに 「⚠️ 「ghostty」が Secure Input を有効化中」 と犯人の名前を表示するようにした。さらに fcitx5-macos の実装を参考に、「パスワード欄に入力中だから正当」なのか「解放漏れ」なのかの判定も入れてある。
同じ症状で悩んでいる IME 開発者がいたら、まず ioreg -l -w0 | grep SecureInput を疑ってほしい。
でもこれ、結局うまくいってるかがよくわからんところではある。IMKit 自体がよくわからんところあってむずい。
0 キーで別表記候補ダイアログ
変換中に 0 キーを押すと、カタカナ/半角カタカナ/ひらがなの別表記候補がダイアログで出るようにした。ATOK のあの動作です。
カタカナ候補自体は前から候補リストに入ってたんだけど、下の方に埋もれてて辿り着くのが面倒だった。0 で一発で出るのは体験がだいぶ良い。
メニューから単語登録できるようにした
いちいち設定画面を開かなくても、IME メニューの 「単語を登録...」 から直接ユーザー辞書に登録できるようになった。入力中の読みがあれば自動で入る。
そのほか
- ユーザー辞書ダイアログでコピペが効かなかったのを修正
- akaza.log を起動時にローテーションするようにした
- クラッシュ修正とかログレベル調整とかこまごま
自分で毎日使ってる IME なので、自分が困ったところから直っていく。ドッグフーディングは正義。
Published: 2026-07-23(Thu) 16:50