beanKeyは、azooKey Desktopの日本語入力体験を、NixOS上のFcitx5とmacOSで使うための日本語入力エンジンです。
Fcitx5とmacOSは共通のRustバックエンドを使う横並びのフロントエンドです。操作と使用感をほぼ互換にすることを目標とし、OS制約による一時的な差も将来の互換対象として扱います。
ニューラルかな漢字変換システムには、zenz-v3.2-small-ggufを使用します。
Note
現在は実験的な段階です。設定や内部データ形式は、今後予告なく変わる可能性があります。
- ローマ字、AZIK、かな入力、カスタム入力テーブル
- 通常変換、ライブ変換、文節単位の確定、再変換
- Zenzaiによる文脈を考慮した候補評価
- 日本語、英語、ギリシャ語の入力中予測
- 学習、ユーザー辞書、入力訂正
- LinuxではFcitx5標準UI、macOSではInputMethodKitと同梱Fcitx5テーマに合わせた候補パネル
- NixOS moduleとLinux/macOS共通のHome Manager moduleによる宣言的な導入と設定
azooKey DesktopのAI変換や設定GUIは実装しません。
beanKeyは、AzooKeyKanaKanjiConverterのかな漢字変換機能と、azooKey Desktopの日本語入力操作を参照しています。ただし、azooKey Desktopそのものを移植するものではありません。
次の機能は対象外です。
- Control+SによるAI置換候補や続きの提案
- 選択テキストへ指示を与えるAI変換
- OpenAI APIやApple Foundation Modelsとの通信
- macOS固有の設定画面
- azooKey Desktopの候補ウィンドウの再現
- Swift APIとのソース互換性またはABI互換性
macOSの候補パネルは候補・注釈・予測の表示に限定します。変換候補、内部trace、prompt、token、logitが固定原作と完全に一致するかの厳密な適合検証は、まだ行っていません。
候補の確定は、固定したazooKey Desktopと同様に両OSとも通常の文字列挿入として行います。括弧候補を確定しても、カーソルを括弧の内側へ自動では移動しません。
動作確認済みの環境は、x86_64-linux、NixOS 26.11、Fcitx5 5.1.21、X11です。
macOSのaarch64-darwinでは、Nix packageのビルド、Rustテスト、AppKit上のmarked text・候補選択・確定・通信失敗時の復旧、実daemonとの接続を確認しています。通常アプリでの入力操作は引き続き受入検証中です。
Wayland、aarch64-linux、Intel Mac、NixOS以外のLinuxディストリビューションでは、まだ実環境で確認していません。
推論には、flake.lockでnixpkgsのllama.cpp b10273を使用します。
NixOS・macOSともに、beanKey.inputs.nixpkgs.followsは指定しないでください。beanKey自身が固定したnixpkgsを使い、依存関係とCachixのビルド条件を維持します。
beankeyのCachixを利用すると、キャッシュにあるビルド済みパッケージを取得できます。
nix.settings = {
extra-substituters = [ "https://beankey.cachix.org" ];
extra-trusted-public-keys = [
"beankey.cachix.org-1:iE4tWJfPogk+oWopayLECdSsw+H1vqsVnMvmRPHSQ6k="
];
};nix.confを直接管理する場合は、/etc/nix/nix.confへ次を追記し、Nix daemonを再起動してください。
extra-substituters = https://beankey.cachix.org
extra-trusted-public-keys = beankey.cachix.org-1:iE4tWJfPogk+oWopayLECdSsw+H1vqsVnMvmRPHSQ6k=NixOS flakeへbeanKeyを追加し、NixOS moduleを読み込みます。
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
beanKey.url = "github:ph0ryn/beankey";
};
outputs =
{ beanKey, nixpkgs, ... }:
{
nixosConfigurations.my-host = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
beanKey.nixosModules.default
{
programs.beanKey.enable = true;
}
];
};
};
}Switch後にFcitx5を再起動し、Fcitx5の入力メソッド設定からbeanKeyを追加してください。
LinuxとmacOSでは、同じflake inputのbeanKey.homeModules.defaultをHome Managerへ読み込み、同じprograms.beanKeyで設定できます。
{
imports = [ beanKey.homeModules.default ];
programs.beanKey.enable = true;
}LinuxではFcitx5とbeanKeyアドオン、ユーザーごとの変換設定を導入します。NixOS moduleによる管理も引き続き利用できます。NixOS管理からHome Managerへ移す場合は、programs.beanKeyと既存のi18n.inputMethod設定をHome Manager側へ移し、NixOS側ではFcitx5を有効にしないでください。適用後はFcitx5を再起動し、入力メソッドにbeanKeyを追加します。
macOSではactivationが下記と同じインストーラーを実行します。入力ソースへの追加はシステム設定で行ってください。変換・学習設定は両OSで共通です。useBeanKeyThemeはLinux専用で、macOSは常に同梱テーマに合わせた表示を使用します。
Nixを導入した環境で、checkoutから実行します。
nix run .#macos-input-method~/Library/Input Methods/beanKey.appへ実体をコピーし、ローカル署名と入力ソースの登録を行います。Nix storeへのsymlinkではありません。システム設定の「キーボード → テキスト入力 → 編集 → 追加」で、日本語のbeanKeyを追加してください。登録だけでは入力ソースの有効化・選択は行いません。
コピーしたアプリが参照するdaemonとライブラリは、~/Library/Application Support/beanKey/packageのNix GC rootで保持します。アンインストールするときは、入力ソースからbeanKeyを外し、アプリとこの参照を削除してください。学習データは別のlearningディレクトリに残ります。
初回導入や更新後に入力ソースが反映されない場合は、ログアウトして再ログインしてください。更新済みbundleがあっても、起動中の旧プロセスは自動的に置き換わりません。
daemonは入力メソッドが必要時に起動します。初回のモデル読み込みが終わるまでは、キーを溜めずにアプリへ返します。起動診断ログは~/Library/Logs/beanKey/daemon.logにあります。
設定例
programs.beanKey = {
enable = true;
useBeanKeyTheme = true; # Linuxのみ。macOSではこの行を省略します。
conversion = {
inputStyle = "roman_to_kana";
typeBackslash = true;
typeHalfSpace = true;
punctuationStyle = "kuten_and_toten";
};
learning = {
mode = "input_and_output";
maxCount = 65536;
};
zenz = {
inferenceLimit = 4;
profile = "学生";
topic = "プログラミング";
preference = "カタカナ優先";
};
};詳細はconfiguration.mdを参照してください。
| キー | 動作 |
|---|---|
Space / ↓ |
変換を開始、または次の候補へ移動 |
Shift+Space / ↑ |
候補選択中に前の候補へ移動 |
Enter |
入力または選択中の範囲を確定 |
Escape |
候補選択を戻す。入力中は文字列を取り消す |
Tab |
表示中の予測を受け入れる |
1から9 |
表示中の候補を番号で選択 |
操作の詳しい一覧と状態ごとの動作は、usage.mdを参照してください。
MIT
beanKeyは、次の実装を設計と動作の基準として参照しています。
- AzooKeyKanaKanjiConverter: かな漢字変換とZenzai
- azooKey Desktop: 日本語入力の操作と表示
- fcitx5-mozc: Fcitx5連携とデーモン起動
- azooKey_dictionary_storage: デフォルト辞書
- azooKey_emoji_dictionary_storage: 絵文字辞書
- gpt2-small-japanese-char: tokenizer
- zenz-v3.2-small-gguf: Zenzaiモデル