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 メニューの 「単語を登録...」 から直接ユーザー辞書に登録できるようになった。入力中の読みがあれば自動で入る。

そのほか

自分で毎日使ってる IME なので、自分が困ったところから直っていく。ドッグフーディングは正義。

Published: 2026-07-23(Thu) 16:50