Fcitx / Fcitx5

Linux/Unix向けの入力メソッドフレームワーク(IMF)。2002年、Yukingにより「Free Chinese Input Tool of X」として中国語専用の入力ツールとして開発が始まった(SCIMとほぼ同時期)。その後4.x系で汎用的なIMFへと発展し、Fcitx5はゼロから再設計された後継バージョンで、軽量なコア+アドオンによる拡張という構成、低レイテンシ、Wayland対応強化、Luaスクリプティングなどが特徴。

GNOME環境ではIBusほど統合が滑らかでない(Snapパッケージや一部アプリとの相性で追加設定が必要になることがある)一方、KDEユーザーや中華圏ユーザーの間で広く使われている。

アドオンアーキテクチャ: .soベースのプラグイン機構

Fcitx5の中核機能(フロントエンド・入力エンジン・UI・サポートモジュール)はすべてアドオンとして実装され、実行時に動的ロードされる.so(共有ライブラリ)として提供される。

構成要素

  • AddonManager — 全アドオンのライフサイクルを管理する中央オーケストレーター。メタデータ検出、依存関係解決、動的ライブラリのロード、インスタンス化を担当する。
  • AddonFactoryFCITX_ADDON_FACTORY_V2マクロで実装されるファクトリパターン。各.sofcitx_addon_factory_instanceというextern "C"関数をエクスポートしており、SharedLibraryLoaderがこのシンボルを解決してcreate()を呼び出す。
  • AddonInstance — 実際の機能を持つプラグインオブジェクト。アドオンの具体的な動作(入力エンジンのロジックなど)を実装する。

ロード手順

  1. addon.confで指定されたLibrary名から.soファイルを特定
  2. StandardPath経由でXDG準拠のディレクトリ(lib/fcitx5配下など)を検索
  3. dlopenでライブラリをメモリにロード
  4. fcitx_addon_factory_instanceシンボルをdlsymで解決
  5. factoryインスタンスのcreate()を呼び出し、AddonInstanceを取得

低レベルにはdlopen/dlsymをラップしたLibraryクラスが使われている。依存関係チェックでは「コアバージョン互換性」と「必須アドオンの存在確認」が行われ、オプション依存はonDemandフラグにより遅延ロードできる。

addon.confとCategory

各アドオンはINI形式のaddon.confでメタデータ(Name, Category, Library, Dependencies, Enabledなど)を宣言する。設定の優先度は「コマンドライン > グローバル設定 > addon.confのデフォルト」の順。

Categoryによってアドオンの役割が分かれる:

Category 役割
Frontend アプリケーションとの通信プロトコル X11(XIM)、Wayland、DBusインターフェース
InputMethod 入力エンジン ピンイン、手書き認識などの変換エンジン
UI ビジュアルインターフェース classicui、kimpanelなど
Module プラットフォーム機能 XCB、Wayland、DBusモジュールなど

InputMethodManagerはこれらのアドオンをスキャンして利用可能な入力方式を構築する。この設計により、変換エンジン(Pinyin、Anthony、Mozcなど)やUIを.so単位で差し替え・追加でき、コア本体を軽量に保ったまま言語やデスクトップ環境ごとの拡張性を確保している。

入力メソッドフレームワークの中での位置づけ

SCIMとほぼ同時期に生まれ、中国語入力に特化した出自を持つIMF。Fcitx5でアーキテクチャを刷新し、KDE/中華圏を中心にIBusと並ぶ主要な選択肢になっている。

出典

#linux #ime

作成日時: 2026-08-15 22:18 / 更新日時: 2026-08-15 22:18