IBus

IBus（アイバス、Intelligent Input Bus）はUnix系オペレーティングシステム (OS) におけるインプットメソッドフレームワークである。IBusのBusはバスのような構造を持つところから来ている。

目標
IBusの主要な目標は以下のようなものである。

 ユーザーフレンドリーでかつ十分な機能を持ったインプットメソッドのユーザインタフェースを提供する
 セキュリティの向上のために認証の評価を採用する
 変換エンジン開発者へ普遍的なインタフェースとライブラリを提供する
 様々な地域や利用者の要求に耐えうる

動機
Northeast Asia OSS Forumの第3ワークグループによるSpecification of IM engine Service Provider Interfaceのドラフトは、D-Busのようなバス (コンピュータ)の実装を伴うバス中心のインプットメソッド構造を推奨した。その仕様書によれば、SCIM-1.4はC++で開発されている点で開発にあまりに適さないと考えられる。それはアプリケーションバイナリインタフェース (ABI) の変遷による問題でよく引き起こされる。

そのため、IM-BUSやSCIM-2のような後継のプロジェクトがスタートした。しかしどちらのプロジェクトも休止してしまった。そのためレッドハットのHuang PengはIM-Busの考え方をCJK OSSフォーラムが推奨する機能の実装の代わりに、PythonやD-BusそしてgLibを用いて提供するためにIBusプロジェクトを創設した。それにも関わらず、IBusはすでにコミュニティの承認を得ており、FedoraやUbuntuのようなLinuxディストリビューションユーザーが追加しなくてもIBusが標準のレポジトリに含まれている。IBusはFedora 11から新しい標準インプットメソッドになり、Ubuntuでは9.10でSCIMから置き換えられた。

構造 
IBusはC言語とPythonで開発されている。これはSCIM 1.4.14以降でのC++のABI変更に伴う問題を防ぐためである。

IBusの大部分の機能はサービスを通して提供される。"サービス"の例は以下の通りである。
 Input method engine: 変換エンジン。IMEと省略することもできるが、MS IME(Input Method Editor)とは語源が異なる。
 Configuration: 設定。IBusや変換エンジンのような"サービス"の設定を扱う。
 Panel: パネル。言語バーや候補選択画面のユーザインタフェース。

IBusはibus-daemon、service、テキストエディタ、ウェブブラウザ、端末エミュレータのようなインプットメソッドクライアントと連携（通信）するためにD-Busを採用している。ibus-daemonマネージャーはサービスからの登録を受け取り、D-Busのメッセージを対応するサービスやインプットメソッドクライアントに送信することで、すべてのクライアント、サービス、クライアントを処理している。

IBusはXIMのプロトコル、GTK、Qtのインプットメソッドモジュールを実装している。

特徴
 変換エンジンのロード、アンロードが要求された時点で行える。
 X keyboard extensionが動作する
 設定変更が即座に反映される
 C言語とPythonによるバインディングが提供される

対応するインプットメソッドプラグインと変換エンジン 
 ibus-anthy: A plugin for Anthy, a Japanese IME.
 ibus-cangjie: An engine for the Cangjie input method.
 ibus-canna: Canna of the NEC company (now SourceForge). Only for distributions of Debian and openSUSE compatibles.
 ibus-chewing: An intelligent Chinese Phonetic IME for Zhuyin users. It is based on libChewing.
 ibus-hangul: A Korean IME.
 ibus-m17n: A m17n IME which allows input of many languages using the input methods from m17n-db. See more details in #ibus-m17n.
 ibus-mozc: A plugin to the Japanese IME "mozc" developed by Google.
 ibus-pinyin: An intelligent Chinese Phonetic IME for Hanyu pinyin users. Designed by IBus main author and has many advanced features such as English spell checking.
 ibus-skk: A Japanese SKK input engine for IBus.
 ibus-table: An IME that accommodates table-based IMs. See more details in #ibus-table.
 ibus-unikey: An IME for typing Vietnamese characters.

ibus-m17n
ibus-m17nはm17nデータベースよりインプットメソッドとそれに対応するアイコンを使う変換エンジン(IME)。ibus-tableが純粋なテーブル（表、辞書）をサポートするのに対し、m17nのインプットメソッドは入力モードに対応しており、そのラベルはIBus panel（言語バー）に表示される。m17n入力方法は周辺のテキストにも対応しているので、タイ語のような言語や純粋なピンイン入力が必要なインプットメソッドなどがibus-m17nを利用してサポートされている。

ibus-table
ibus-tableは用意されたテーブルを読み込むだけの単語を選択するための複雑なロジックを必要としないインプットメソッドで、Yu Wei Yuによって開発された 倉頡輸入法（Caangjie）や五筆字型輸入法（Wubi）のような中国語向けの多くのインプットメソッドはこの方法でサポートされている。

公式にリリースされているインプットメソッドテーブル:
 latex: Input special characters using latex syntax. Included in ibus-table package.
 compose: input special letter by compose letter and diacritical mark. Included in ibus-table package.
 Array30: Array30 Chinese IM tables.
 Cangjie: Cangjie 3 and 5 Chinese IM tables.
 Erbi: Er-bi Chinese IM table.
 Wubi: Wubi Chinese IM table.
 Yong: YongMa Chinese IM Table.
 ZhengMa: 鄭碼輸入法（ZhengMa） Chinese IM Table.

関連項目
 インプットメソッド
 Smart Common Input Method (SCIM)
 uim

脚注

外部リンク 
GitHubのプロジェクトページ
FedoraProjectのページ

日本語入力ソフト
インプットメソッド
オープンソースソフトウェア