Chokanは、日本語入力の一方式です。名前としては、Kanzenをそのまま再現しているわけではないので、ちょっとだけKanzen、ということで命名しました。
https://www.nue.org/nue/tao/kanzen/wdj.html
SKKの開発において、参考にしたとされるかな漢字変換システムです。Kanzen自体の特徴としては、SKKとは異なっていて、 第一文節までを自動的に変換する 、ということが特徴となっています。
- ほぼオリジナルのKanzenを元にした変換処理
- SKKの方針も参考にした、より現実的なキーバインド
- 現代のEmacsでは受け入れ難いキーバインドについては別に割り当てています
- 現代的なスタックで再構築
- Client/Serverシステム
- フロントエンドはEmacsネイティブですが、WebSocketが利用できれば、原理上はどんなフロントエンドからでも使えます
- 辞書はSKKを利用して自動生成が可能
現時点では、chokanはローカルでビルドすることを前提としています。ビルドするにあたって、以下のツールキットが必要です。
Windows/Linux向けであれば、事前にビルドしたものを配布することもできますが、macOSだけ色々と課題が多いので、絶対確実な手元でのビルドとしています
ビルドについては以下のコマンドを実行するのみです。
$ cargo install --release
chokanで利用する辞書は、主に速度のために、各ユーザーの環境上で構築する必要があります。
$ task make-dic
実行すると、 chokan-dic/dictionary.dat
が作成されます。このファイルは、任意の場所に移動することが出来ます。
chokanはサーバー・クライアントシステムを採用しているため、サーバーの起動が必要です。
$ chokan-server -d <dictionary.datへのpath> -u <user設定の保存場所>
user設定を設定していない場合は、後述するUser設定が保存されません。
chokanでは、ユーザー設定として以下の情報を保存します。
- 確定した単語の頻度
- ユーザーが保存した単語
これらは、 chokan-server
が起動している間、一定時間が経過するたびに -u
で指定したディレクトリに保存されます。保存するまでの時間は、 -t
で秒単位で指定できます。各オプションのデフォルト値は、 --help
で確認できます。
現状ではmelpaなどに登録していないため、straight.elなど、GitHubからのインストールをサポートしているpackage managerを推奨します。
(leaf chokan
:straight (chokan :type git :host github :repo "derui/chokan")
:config
(leaf chokan-websocket
:require t
:config
(chokan-websocket-setup))
;; input methodとして登録しているため、toggle-input-methodなどから起動できます
(setq default-input-method 'japanese-chokan))
chokanは次のようなキーバインドとなっています。基本的には、オリジナルを尊重する形としていますが、一部現代の事情にあわせ、オリジナルと異なるバインディングとなっています。
C-j
- 変換を起動し、反転部があれば確定します。改行は入力されません
- asciiモードであれば、ひらがなモードが起動します
C-l
- asciiモードを起動します
- オリジナルのKanzenでは
C-c
でしたが、これは現代のEmacsでは多用されるものなので、SKKにおけるキーバインドを参考にして、recenterのバインドを利用するかたちとしています。
C-n
- 反転部がある場合、その中で次の候補を表示します
- オリジナルではここが
C-h
ですが、現代のEmacs事情からすると、これがBackspaceとして利用されるのが一般的であるため、バインディングを変更しています - 作者が打鍵していても、変換しているときに次の行に遷移することは少ない印象なので、たぶん問題ないと思われます
C-p
- 反転部がある場合、その中で前の候補を表示します
- オリジナルではここが
C-g
ですが、全体のキャンセルをする役割もあるこのキーバインドを潰すのは、一貫性が失われてしまいそうだったので、バインディングを変更しています。 - 他の日本語入力で一般的なこのバインドでも問題なさそうと判断しています
オリジナルで実装されている、各種変換のうちの一部しか実装されていません。
- [X] 通常の変換
- [X] 単漢字変換
- [X] 固有名詞優先変換
- [X] 原綴り変換(Beta)
- [ ] JISコード変換
オリジナルの原綴り変換では、先頭に #
を入力することで実施していました。しかし、かな入力と組合わせる中で、原綴りをかな入力でどう入力するか?という点が課題になりました。
そのため、原綴り変換では、次のように動作を変更しています。
- 大文字始まりであることは変らない
- 先頭に
#
は不要 - 変換起動のキーとして、
Space
にすることで、原綴り変換を起動できる
原綴り変換はまだ一部不完全であるため、ベータとしての提供です。