|
IIIMF プロジェクト詳細 - IIIMF とは?
|
IIIMF は Internet/Intranet Input Method
Framework の略で、XIM を設計した Hideki Hiura 本人によって、
XIM 等を置き換える次世代の入力フレームワークとして再設計されたもの
である。
IIIMF が標榜するゴールは
マルチプラットフォーム, プラットフォーム非依存
多言語サポート、フル・ユニコード・サポートを、それぞれの言語のネイ
ティブ・ユーザーが求めるレベルで実現する。
ウィンドウ・システム非依存
複数の言語エンジンが同時に使用可能
複数のユーザーが同時に使用可能
分散された、軽量のクライアント+スケーラブルなサーバー構成
いろいろな意味での拡張性を持つ
低速な電話回線にモデムで接続しても使える高速・高効率なプロトコルを備える
言語エンジンの開発がしやすいプラグインAPI を備える
コンソール等を含む、あらゆるアプリケーションで簡単に多言語入力を
可能にする(XIM API に替わる)高水準のクライアント用APIを備える。
全体を理解しなくても開発を開始できる抽象化をする
|
IIIMSF - IIIM サーバーフレームワーク
|
IIIM サーバーフレームワークが、XIM サーバーと異なるのは、プラットフォー
ム非依存、ウィンドウシステム非依存、多言語対応、複数ユーザー対応と
いう点である。その特徴から、IIIM サーバは、UNIX系システム上では、
システム・デーモンとして、また MS-Windows 上ではサービスとして起動し、
同時に複数の言語で複数のユーザーに入力サービスを提供することが可能であ
る。
XIM サーバーは、単一ユーザー、単一言語しかサポートできないため、ユーザー
ごとに走らせなければいけないのと対照的である。
もちろん、自分だけの入力サーバーを走らせたければ、それぞれのユーザーが
自分だけに入力サービスを提供する個人 IIIM サーバーを同時に複数走らせる
ことも当然可能である。
現在、UNIX 系 OS とマイクロソフト ウィンドウズの上での動作が確認されて
いる。
IIIMSF は、標準の言語エンジン・インターフェースとして、LEIF という API
を用意している。すべての言語エンジンは、共有オブジェクトの形で動的に
サーバーに組み込まれる。XIM にはまともなフレームワークが無かったため、
自分のエンジンを書くには XIM サーバーそのものをゼロから作らなければな
らなかったが、IIIMSF ではその必要はない。入力システムの中核と言える、
言語エンジンのロジックを LEIF にあわせて共有オブジェクトとして作り、
エンジンのリポジトリ(通常 /usr/lib/im/leif/) に置くだけでよい。
XIM サーバーは X ウィンドウ・システムに依存したモノリシックな構造であっ
たが、IIIMF では、ウィンドウ・システムやプラットフォームに固有なパート
をサーバー本体から分離して、ウィンドウ・システムやプラットフォームに
固有なパートをクライアント側が処理する設計にした。
言い換えると、ウィンドウ・システムやプラットフォームごとに、クライアン
ト・フレームワークの実装が必要になるということで、このクライアント・
フレームワークを総称して、IIIMCF(IIIM Client Framework)
と呼ぶ。
IIIM クライアント・フレームワークとして現在以下のものが開発されている。
IIIMXCF - IIIM X Window System Client Framework
IIIMJCF - IIIM Java2 Client Framework
IIIMECF - IIIM Emacs Client Framework
IIIMGCF - IIIM GTK+ client Framework (aka iiimf-gtk immodule)
IIIMWCF - IIIM Windows Client Framework
IIIMQCF - IIIM Qt Client Framework
IIIMOCF - IIIM OpenOffice Client Framework
libiiimcf - IIIM generic C client Framework library
さらに特殊なコンポーネントとして、以下のものが開発されている。
Win32Bridge - Windows IME を IIIMSF のエンジンとして使う
Cascade Engine - カスケード接続をする仮想エンジン
IIIMSF は言語エンジン(入力エンジンや入力モジュールとも呼ばれる)を
プラグインするための API LEIF(Language
Engine InterFace の略)を提供している。
この LEIF インターフェース下で、複数の言語エンジンが同時にインストール
され実行可能である。現在、オープンソース・商用含め、多くの言語エンジンが
IIIMF 用に開発され提供されている。IIIMF では、巨大な入力システムのすべて
を理解しなくても、LEIF を使用することですぐに言語エンジンを開発
し始められる。LEIF はシンプルな構造を持つが、拡張性を重視してイベント
駆動型の API になっている。基本的には、一つイベントを受け取り、その
結果生じた(複数の)イベントを返す、というモデルになっている。