- ローマ字変換 — ローマ字入力からひらがな・カタカナへの変換
- 辞書変換 — IPADIC ベースの 232,000+ エントリ辞書(Trie 検索 + DP 分節)
- 活用形対応 — 動詞・形容詞の活用形を自動生成(食べた、走って、読んだ 等)
- 記号入力 — 矢印(やじるし→)、括弧ペア(かっこ→「」)等の記号辞書
- LLM リランキング — Qwen2.5-1.5B + ローカル HTTP サーバーによる文脈を考慮した候補順位付け(バックグラウンド実行)
- 文法スコアリング — 文法ルールによる候補フィルタリング
- ユーザ学習 — 選択履歴を学習し、候補順位を最適化
- 文節編集 — 文節の移動・伸縮・候補切替
- かな変換 — F6〜F10 によるひらがな / カタカナ / ローマ字変換(MS-IME 準拠)
- IBus / Fcitx5 対応 — IBus は zbus (D-Bus) による Pure Rust 実装、Fcitx5 は FFI 経由の C++ アドオン
3 段階のハイブリッド変換パイプライン:
キー入力 → ローマ字→かな変換 → 辞書分節 (DP)
↓
文法スコアリング → 候補リスト → ユーザ
↓ (バックグラウンド)
LLM リランキング (llama-server HTTP)
↓
候補順位更新(次回操作時に反映)
| コンポーネント | 役割 |
|---|---|
| ローマ字変換器 | ASCII → ひらがな / カタカナのステートマシン |
| 辞書エンジン | Trie ベースのかな→漢字検索 + DP 分節(232K エントリ) |
| 文法エンジン | 構造検証とスコアリング(9 ルール) |
| LLM エンジン | llama-server (HTTP) 経由の Qwen2.5-1.5B によるバックグラウンドリランキング |
| ユーザスコアラ | 選択履歴の対数スケール学習 |
| 変換エンジン | パイプライン統合と文節編集 |
| フレームワーク | 状態 | 実装方式 |
|---|---|---|
| IBus | 対応済み | Pure Rust(zbus による D-Bus 直接実装) |
| Fcitx5 | 対応済み | Rust エンジン (cdylib) + C++ アドオン (FFI) |
Bonolith/
src/
main.rs # エントリポイント(IBus D-Bus サービス)
lib.rs # ライブラリクレート(Fcitx5 用 cdylib エクスポート)
ffi.rs # C FFI レイヤ(Fcitx5 向けキー処理・UI 状態取得)
core/
romaji/ # ローマ字→かな変換ステートマシン
dictionary/ # Trie + DP 分節 + 組み込み辞書 (IPADIC)
grammar/ # 文法検証
llm/ # LLM リランキング (HTTP 経由で llama-server と通信)
user_scorer.rs # ユーザ選択履歴学習
engine/ # 変換パイプライン統合
ibus/ # IBus D-Bus 統合
engine_impl.rs # IBus エンジンインターフェース
factory.rs # IBus ファクトリインターフェース
keymap.rs # キー定数・ヘルパ
config.rs # トグルキー設定
bin/
generate_dict.rs # IPADIC → builtin_dict.rs ジェネレータ
generate_matrix.rs # IPADIC matrix.def → connection_cost.rs ジェネレータ
fcitx5/
bonolith_engine.cpp # Fcitx5 C++ アドオン
bonolith_engine.h # アドオンヘッダ
bonolith_ffi.h # Rust FFI ヘッダ
CMakeLists.txt # Fcitx5 ビルド設定
bonolith-addon.conf # アドオン記述ファイル
bonolith-im.conf # 入力メソッド記述ファイル
scripts/
bonolith-llm-server.service # llama-server 用 systemd ユーザーサービス
data/
bonolith.xml # IBus コンポーネント記述ファイル
- Rust(最新 stable)
- Linux + IBus または Fcitx5
- 辞書登録 / 編集ダイアログ(GTK3):
sudo apt install python3-gi gir1.2-gtk-3.0 xdotool- Wayland セッションでも
GDK_BACKEND=x11で XWayland 経由で起動するため、xdotool が動作する Xorg / XWayland が必要
- Wayland セッションでも
- LLM 用(オプション): llama-server + Qwen2.5-1.5B Q4 モデル(約 1.1GB)
辞書はリポジトリに同梱済みです。組み込み辞書 (
builtin_dict.rs) は生成済みのものがチェックインされているため、ビルドに IPADIC のインストールは不要です(辞書を自前で再生成する場合のみ必要 → 辞書の再生成)。
# リリースビルド — 組み込み辞書は同梱済みなので、これだけで完了
cargo build --releaseLLM リランキングを有効にするには、llama-server をセットアップします。 LLM サーバーが起動していなくても Bonolith は正常に動作します(辞書+文法+ユーザ学習のみで変換)。
かんたん導入: 下記 1〜2 を自動化したスクリプトがあります。
./scripts/install-llama-server.shで llama-server バイナリとモデル(Qwen2.5-1.5B)を取得します(--no-modelでバイナリのみ)。 手動でセットアップする場合は以下を参照してください。
llama.cpp リリースページ から Ubuntu x64 バイナリをダウンロード:
# ダウンロード・展開
cd /tmp
curl -LO https://github.com/ggml-org/llama.cpp/releases/latest/download/llama-<version>-bin-ubuntu-x64.tar.gz
mkdir llama-extract && cd llama-extract
tar xzf ../llama-*-bin-ubuntu-x64.tar.gz
# インストール
mkdir -p ~/.local/bin ~/.local/lib
cp llama-*/llama-server ~/.local/bin/
cp llama-*/lib*.so* ~/.local/lib/mkdir -p ~/.local/share/bonolith/models
cd ~/.local/share/bonolith/models
curl -LO https://huggingface.co/Qwen/Qwen2.5-1.5B-Instruct-GGUF/resolve/main/qwen2.5-1.5b-instruct-q4_k_m.ggufmkdir -p ~/.config/systemd/user/
cp scripts/bonolith-llm-server.service ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable --now bonolith-llm-server動作確認:
curl http://127.0.0.1:8080/health
# → {"status":"ok"}導入後はいつでも切り替えできます:
bonolith llm on # 有効化(systemd サービスを enable + start)
bonolith llm off # 無効化(stop + disable、辞書のみで動作)
bonolith llm status # 現状確認実行中の IBus / Fcitx5 セッションには即座に反映されないので、切り替え後は ibus-daemon -drx でリロードするか、再ログインしてください。
./scripts/install.sh --no-llm で 最初から LLM を無効にした状態でインストール することもできます(古い PC や LLM を使いたくないユーザ向け)。
# IBus デーモンを停止してバイナリをインストール
sudo pkill -f ibus-daemon
sleep 1
sudo rm -f /usr/bin/ibus-engine-bonolith
sudo cp target/release/bonolith /usr/bin/ibus-engine-bonolith
# IBus コンポーネント記述ファイルをインストール
sudo cp data/bonolith.xml /usr/share/ibus/component/bonolith.xml
# IBus を再起動
sleep 2 && ibus-daemon -drx# 開発パッケージ(Fcitx5Core/Utils/Config の cmake config・ヘッダー)
sudo apt install libfcitx5core-dev # Utils/Config dev も依存で入る
# Fcitx5 アドオンをビルド・インストール
cd fcitx5
mkdir -p build && cd build
make clean
cmake .. -DCMAKE_INSTALL_PREFIX=/usr
make
sudo make install && fcitx5 -r -dUbuntu 22.04 では言語パックが自動インストールされないため、手動でのインストールが必要です。 24.04 以降は OS インストール時に自動インストールされるため不要です。
設定 → 地域と言語 → インストールされている言語の管理 → 「はい」で言語パックをインストール
設定 → キーボード → 入力ソース → 「+」 → 日本語 → Japanese (Bonolith - Japanese AI Input) → 追加
Fcitx5 設定 → 入力メソッド → 「+」 → Bonolith を検索 → 追加
トップバー(ディストロによってはタスクバー / タスクトレイ)の入力メソッドアイコンをクリックし、Bonolith が表示されていれば登録完了です。PC の再起動が必要な場合があります。
| キー | 動作 |
|---|---|
| Ctrl+Shift+Space | IME ON/OFF(設定変更可) |
| Space | 漢字変換 |
| Enter | 確定 |
| Escape | キャンセル |
| ← / → | 文節フォーカス移動 |
| Shift+← / Shift+→ | 文節伸縮 |
| ↑ / ↓ / Space | 候補切替 |
| F6 | ひらがなに変換 |
| F7 | 全角カタカナに変換 |
| F8 | 半角カタカナに変換 |
| F9 | 全角英数に変換 |
| F10 | 半角英数に変換 |
IME フレームワークを Fcitx5 にしたまま、その自動起動を OFF にして Ubuntu を再起動すると、GNOME のデフォルトである IBus が起動し、入力ソース一覧から Bonolith が消えて再登録が必要になることがあります。これは GNOME の入力ソース管理(org.gnome.desktop.input-sources)が「現在アクティブな IME フレームワーク」前提で動くためで、Bonolith 側のバグではありません。im-config で選んだフレームワークと実際に自動起動するフレームワークを一致させておけば回避できます。
組み込み辞書 (builtin_dict.rs) と品詞接続コスト表 (connection_cost.rs) は生成済みのものがリポジトリに同梱されているため、通常のビルドでは再生成は不要です。辞書ソースを更新したい場合のみ実行します。
再生成には IPADIC の CSV ソースが必要です。apt の mecab-ipadic パッケージはコンパイル済み辞書(/var/lib/mecab/...)のため別物で、CSV は含まれません。IPADIC のソース配布(mecab-ipadic-2.7.0-*.tar.gz)から CSV を取得し、src/bin/generate_dict.rs の IPADIC_DIR(既定 /usr/share/mecab/dic/ipadic)に配置してください。
# 組み込み辞書を再生成(IPADIC CSV → builtin_dict.rs)
cargo run --bin generate-dict
# 品詞接続コスト表を再生成(IPADIC matrix.def から 11×11 集約)
cargo run --bin generate-matrix --release > src/core/dictionary/connection_cost.rscargo testMIT - Copyright (c) 2026 Yoshihiro NAKAHARA