Coder Social home page Coder Social logo

chokan's Introduction

Chokan

Chokanは、日本語入力の一方式です。名前としては、Kanzenをそのまま再現しているわけではないので、ちょっとだけ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だけ色々と課題が多いので、絶対確実な手元でのビルドとしています

  • Rust
  • Cargo
    • rustupでのインストールを推奨します
  • Task
    • 辞書の構築時に必要です

ビルド

ビルドについては以下のコマンドを実行するのみです。

$ cargo install --release

辞書の構築

chokanで利用する辞書は、主に速度のために、各ユーザーの環境上で構築する必要があります。

$ task make-dic

実行すると、 chokan-dic/dictionary.dat が作成されます。このファイルは、任意の場所に移動することが出来ます。

サーバーの実行

chokanはサーバー・クライアントシステムを採用しているため、サーバーの起動が必要です。

$ chokan-server -d <dictionary.datへのpath> -u <user設定の保存場所>

user設定を設定していない場合は、後述するUser設定が保存されません。

User設定の内容

chokanでは、ユーザー設定として以下の情報を保存します。

  • 確定した単語の頻度
  • ユーザーが保存した単語

これらは、 chokan-server が起動している間、一定時間が経過するたびに -u で指定したディレクトリに保存されます。保存するまでの時間は、 -t で秒単位で指定できます。各オプションのデフォルト値は、 --help で確認できます。

Emacsの設定

現状では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 にすることで、原綴り変換を起動できる

原綴り変換はまだ一部不完全であるため、ベータとしての提供です。

chokan's People

Contributors

derui avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.