多言語入力プラットフォーム SCIMについて

多言語入力プラットフォーム
SCIMについて
2005年9月23日
SEA & FSIJ合同フォーラム
足永拓郎
本日の話題
•
•
•
•
•
•
•
•
•
自己紹介
背景
SCIM概観
日本語IMEngineの現状
デモ
SCIMの構造
IMEngineの作り方
SCIMの今後
まとめ
自己紹介
• 元機械屋
– 自称Bolt & Nut Guy: 切ったり貼ったりは得意
– 小難しい理論は苦手
• 現オープンソースプログラマ
• 作っている物 / 関わっている物
–
–
–
–
–
GImageView: 画像ビューア
風博士: GeckoベースWEBブラウザ
sylpheed-gtk2: Gtk+2版Sylpheedの実験的実装 (終了)
imime: Windows版Gtk+2用の多言語入力モジュール
SCIM用日本語入力モジュール
OSS IMフレームワークを取り巻く現状
• 中国内でのIMの乱立
– フレームワーク統一化の必要性
• IMフレームワークの自由競争時代 - 3つの要因
– Gtk+ / Qt の2強時代の到来
– Gtk+2のimmodule機構
• XIM互換性が不要に
• 特定の実装に縛られない構造
• Qtへの影響 (おそらくSCIMへも)
– IIIMFの立ち遅れ
• 実用的OSS IMの不在
• 複数の実装
– IIIMF、SCIM、uim、etc…
• 複雑なネスト関係
– scim-uim、uim-scim、uim-iiimf、scim-openvanilla-uim、etc…
• 採用実績は2極化
– 商用プロダクトはIIIMFを好む傾向
– OSSプロダクトはSCIMを好む傾向
IMサポートレイヤの分断
• GUIツールキットレベルでのIM抽象化
– IMフレームワークの自由競争が可能となったとい
う点においては、利点でもある
• IMフレームワークの乱立
• IMフレームワーク間を繋ぐブリッジの存在
– SCIM
• ツールキット層を抽象化したマルチプラット
フォーム型アプリケーションの存在
– Mozilla
– OpenOffice.org
OSSのIMサポート概観
主に4つのパスが存在
アプリケーション
例: Emacs
GUIツールキット (Gtk+, Qt...)
例: mlterm
例: gtkimuim
例:gtkimprime
IMフレームワーク (uim, scim, IIIMF...)
各種インプットメソッド、変換エンジン
レイヤ分断:OpenOffice.org 2.0 with scim-uimの場合
VCL (Visual Class Library)
SAL (System Abstraction Layer)
UNIX
Xlib
Windows
hoge-system
VCL plugin
Qt/KDE
Gtk+/GNOME
uim
SCIM
hoge-im
Gtk+ immodule
scim-chinese
scim-uim
scim-hoge
SCIM IMEngine
uim-anthy
uim-prime
uim-hoge
uim バックエンド
SCIMとは
• http://www.scim-im.org/
• Smart Common Input Method platform
• XIM(X Input Method)を置き換える、新たな
多言語入力フレームワーク
• Microsoft WindowsのIMM(Input Method
Manager)に相当
• 特定の実装への依存を回避する、徹底したプ
ラグイン機構
• プラグイン機構により対応言語を拡充可能
• マルチプラットフォーム化を指向
主な言語モジュール(IMEngine)
• 中国語入力モジュール
– scim-pinyin、scim-fcitx、scim-ccinput:
– scim-chewing:
• 日本語入力モジュール
– SCIM IMEngineプロジェクトにて開発中
– 詳細は後ほど
• ハングル入力モジュール
– scim-hangle
• その他の言語
– scim-m17n-lib
– scim-tables
• 他のIMフレームワークへのブリッジ
– scim-uim
– scim-kmfl
– scim-openvanilla
簡体字中国語
繁体字中国語
SKIMとは
• SCIMのKDE親和性を向上させるパッケージ
• コアはSCIMを利用(SCIMにリンク)
• 以下のモジュールのセット
– KConfigモジュール
– KDEベースのPanelプログラム
– KDEベースの設定用GUIプログラム
• KDEのセッション管理に組み込まれる
– ~/.xsession等で手動起動する必要無し
SCIMを標準で採用する
ディストリビューション
• Fedora Core
– Fedora Core5よりCore入り
– デフォルトのIMフレームワークになるかどうかは不明
•
•
•
•
SUSE Linux
Mandriva Linux
KNOPPIX日本語版
その他いくつかのローカルディストリビューシ
ョン
パッケージが存在する
ディストリビューション
• Debian GNU/Linux
• Ubuntu
– 標準IMフレームワークとしてプッシュ中
•
•
•
•
•
Gentoo Linux
FreeBSD
Vine Linux
Momonga Linux
etc etc…
なぜSCIMが選ばれるのか?
• (比較的)実用性が高く、Microsoft Windowsと操作
感が似た日本語・中国語・ハングル用IMEngineが
存在
• m17n-libによる多言語化
• (比較的)見栄えの良いGUI
• (比較的)設定が容易
• (比較的)安定性が高い
• IMEngnineの開発コストが低い
– 反面、FrontEndの開発は真面目にやると大変
• ユーザ・OSSディストリビュータにとって必要な物が
ひと揃い揃っている
SCIMの欠点
• 他と比較すると、本質的問題の数は少ない
• ただし、一つ一つの問題は根が深い
• 開発言語としてC++を採用
– ABIが壊れやすい
• 最近の不具合報告のほとんどがこの問題
• gccの影響を受けやすい・ユーザーの目につきやすい
• 商用IMの互換性維持が困難
– 開発者がやや絞られる
• 実質的に開発者が一人
– 良くも悪くも James Su さんが全てを握っている
– 現在のところはうまく機能している
• 柔軟過ぎる
– 構成がやや複雑
• 実装上の細かい不具合
– 時間が解決
SCIM IMEngineプロジェクト
• http://scim-imengine.sourceforge.jp/
• 2004年11月に発足
• 日本語専用の IMEngine / Helper を開発するプロ
ジェクト
• SCIM本家とは関係のない、勝手プロジェクト
–
–
–
–
意外と混同されがち
Bootstrap時のフットワークの軽さを重視
IMEngineがpluggableである利点
SCIM本体に問題があれば、バグフィックス等も行う
• アクティブな開発者は3~4人前後
– 各々が好きなIMを勝手に開発
SCIM IMEngineプロジェクトのプロダクト
•
•
•
•
•
•
•
•
scim-anthy:
scim-skk:
scim-prime:
scim-canna:
scim-wnn:
ほのかたん:
scim-tomoe:
scim-sinhala:
Anthyを利用した日本語IMEngine
SKKライクな日本語IMEngine
PRIMEを利用した日本語IMEngine
Cannaを利用したIMEngine
FreeWnn、Wnn6~Wnn8
罰ゲームですか? (TOT > TAMさん
手書き入力パッドHelper
シンハラ語IMEngine
scim-anthy
• 日本語連文節かな漢字変換エンジンAnthyのSCIM用モジュ
ール
• 他のOSS IMよりはリッチなGUI
– 比較的豊富な設定項目
– 辞書管理はkasumiに依存
• 既存の商用IMに似た挙動
– 各種IM風キーバインド
– F6~F10によるカタカナ/ローマ字直接変換
• 大文字・小文字の入れ替え
– Shift + Spaceでの別幅空白入力
– テンキー入力時の半角/全角制御
• JISかな配列・NICOLA配列をサポート
– 細かな問題あり
• ほのかたん由来の逐次変換機能
• 単漢字検索機能が欠如
scim-skk
• SKKの基本機能は実装済み
• uim-skk、ddskkと比較すると、機能は少ない
らしい
• SKKユーザーでは無いので詳細不明
• 優先度の高い機能はどれか、教えて下さい
• その他アイデア等があれば、教えて下さい
scim-prime
• 予測入力システムPRIMEのSCIM用モジュー
ル
• 日本語予測/英語予測
• インライン予測
• 用例の色分け表示
• PRIMEプロセスは1プロセス/1ユーザ
– SCIMがper user daemonであるため
• 足永のまわりでは1番人気
scim-canna
• 現在はCannaの高レベルAPIのみをサポート
• 高レベルAPIの制限による、機能制限
– 候補を縦に表示する事ができない
(ただし、隠しAPIを利用することにより対応可能)
– GUIでのキー設定が困難
• scim-cannaには3つの存在意義
– SCIMのCannaプロトコルサポート
– .cannaファイルのリサイクル
– 単漢字検索
• Cannaプロトコルの応用例
– えせCannaの利用
– IME Proxyによる、Windows(Cygwin)上でのIMEの利用
scim-wnn & ほのかたん
•
元は scim-wnn
– 複数変換エンジンへの対応を期に名称変更
•
•
現在は実験的IM の色が強い
独自のプラグイン機構による複数変換エンジンへの対応
– Wnn、Anthy、Canna、PRIME、SKKに対応
– 複数変換エンジンの同時使用
– 予測と通常変換で別々のエンジンを使用可能
•
独自のプラグイン機構による様々な入力方式への対応
– 現在はローマ字入力、かな入力、T-Codeのみ
•
•
•
•
独自の設定用UI自動生成機構
その他、謎な機能が盛り沢山
名称は変更したが、scim-wnn とほのかたんの共存は今のところ不可
日本人は「ほのかたん」と呼称すべし
– Honoka、scim-honoka 等は不可
– 名前の由来は聞いてはいけません
scim-tomoe
• SCIM用手書き入力パッド
• 2005年8月末に最初のリリースをしたばかり
– 現在は最低限の機能に留まる
– 今のところ日本語専用
• Tomoeライブラリを手書き文字認識エンジンとして
使用
• そこそこの認識精度
• インクリメンタル検索
• 基本的なソフトウェアキーを装備
– Enter、Space、Back Space
• 辞書は現在のところ第一水準漢字まで
リリースは毎月29日
• 肉の日
• 日本語IMEngineのどれは一つは必ず肉の日
にリリースされる...はず
• 14日にリリースされることも
– 石の日
– 肉を食べすぎると石ができます
– 肉の日から丁度半月
• ネタだがネタだけにあらず
– リリースエンジニアリングが楽になる
– みんなで肉を食いながら楽しくリリース
デモ
SCIMの基本構造
•
•
コアはシンプルなC++クラスライブラリ
徹底したオブジェクト指向/プラグイン構造による柔軟な構成
–
–
–
–
–
–
プラグインの組合せによって柔軟な対応が可能
FrontEndモジュール:
各種GUIツールキットとのキー入力の橋渡し
IMEngineモジュール:
言語モジュール
Configモジュール:
設定保存機構の抽象化
Helperモジュール:
補助ツール (設定ツール/入力パッド等)
IMEngine設定用GUIインターフェースモジュール:
• マルチプラットフォーム化のため、IMEngineからは分離
• 個々のIMEngine毎に各種GUIツールキット向けの実装が必要
• 現在はGtk+用 / KDE用の2種
•
2つの粒度
– ローダブルモジュール
– プロセス
•
Per user daemon / Unix Domain Socketによる通信が基本
– ただし接続方法はアプリケーション & デーモンの組み方次第
– 実際は scim-launcher デーモンを核とする
SCIMの基本構造: 各プロセスの役割
• scim-launcher
– メインとなるデーモン
– 名前は同じでも単なるブリッジであることも: XIMブリッジ
• scim-panel-gtk、skim
– パネル、プリエディットウィンドウ、候補ウィンドウ、システムトレイを
提供するデーモン
• scim-helper-manager
– Helperを一元管理するデーモン
• scim-helper-launcher
– Helperモジュールを読み込み、Helperを起動
– 読み込むモジュールによって様々な姿に変化
– 設定ウィンドウ、記号入力パッド、手書き入力パッド、...
SCIMの基本構造: 4つのプロトコル
• SocketFrontEnd - SocketIMEngine
– メインデーモンとアプリケーションとの通信
– 主にキーイベントと結果文字列の送受信
• SocketFrontEnd - SocketConfig
– メインデーモンとアプリケーションとの通信
– 設定値の同期
• Panel - FrontEnd
– GUIツールバープロセスとメインデーモンとの通信
– パネル側がサーバ
• Panel - Helper
– GUIツールバーとHelperとの通信
– Helper – FrontEnd及びHelper - IMEngine通信の仲介
SCIMの典型的な構成例
(キーイベントの流れ)
ユーザー入力(出発点)
Gtk+2アプリ
Qtアプリ
仮想
キーイベント
Socket
IMEngine
X Window System
アプリ
Helper
(入力パッド)
仮想キーイベント
Anthy
IMEngine
(終着点)
Socket
FrontEnd
scim-launcher 1
(メインデーモン)
Socket
IMEngine
XIMプロトコル
X11
FrontEnd
scim-launcher 2
(XIMブリッジ)
SCIMの特殊な構成例
(キーイベントの流れ)
ユーザー入力
(出発点)
Anthy
IMEngine
(終着点)
Gtk+2アプリ
• アプリケーション内で直接IMEngineに接続
• 以下のような環境変数をセット
– GTK_IM_SCIM_IMENGINE_MODULES=anthy
– QT_IM_SCIM_IMENGINE_MODULES=anthy
• IMEngineのデバッグに便利
FrontEndモジュール
• キー入力元アプリケーションとの通信を抽象化する
モジュール
• デーモンのメインループをドライブ
• 現在は2種存在
– X11フロントエンド (XIMプロトコル)
– Socketフロントエンド (独自プロトコル)
• 通常は2つのデーモンが立ち上がる
– Socket モジュール を FrontEnd とする scim-launcher
– X11 モジュールを FrontEnd とする scim-launcher
• 他プラットフォームへの移植が比較的容易
– 新たなモジュールを作成すれば良い
アプリケーション側の実装
• XIMを介さない通信を行うためには、アプリケーション側の実
装も必要
• 現在は主に2種存在: 現代的なUNIXアプリケーションは網羅
– Gtk+2モジュール
– Qt用モジュール
– mlterm、uimにも実装あり
• 通常は SocketIMEngine で キーイベントを scim-launcher
デーモンへフォワード
• IMとのプロセス内直接接続も可能
– 環境変数 GTK_IM_SCIM_IMENGINE_MODULES 等
– FrontEndを介さず、直接IMEngineを読み込みキーイベントを送付
• 仮想キーイベントの発行も担当
– ソフトウェアキーボードの実現
– システムネイティブ (X Window System) のイベントではないため、
稀に動作しないキーイベントもある
IMEngineモジュール
• キー入力を実際に制御するモジュール
– キー入力を各国語の文字に変換
– Canna等の変換エンジンとの通信
– GUIツールキット非依存
• 設定用UIは別モジュールとして提供
• 個々のGUIツールキットに対するモジュールが必要
• SocketIMEngine
– 特殊なIMEngine: SocketFrontEndへのブリッジ
• 4つの出力文字列
–
–
–
–
プリエディット文字列
候補文字列群 (LookupTable)
AUX文字列: サーバ接続エラー等をユーザーに通知
確定文字列
• フォーカス移動時の処理も担当
• Helperとの高度な連携も可能
SCIMの典型的な構成例
(設定値変更通知の流れ)
Gtk2アプリ
Qtアプリ
scim-helper 1
(設定ツール)
scim-helper 2
(入力パッド等)
Scoket
Config
Socket
Config
Socket
Config
Socket
Config
Socket
FrontEnd
scim-launcher 2
(XIMブリッジ)
scim-launcher 1
(メインデーモン)
Socket
Config
scim-panel-gtk
Simple
Config
設定ファイル
SCIMの特殊な構成例
(設定値変更通知の流れ with KConfig)
Gtk2アプリ
Qtアプリ
scim-helper 1
(設定ツール)
scim-helper 2
(入力パッド等)
Socket
Config
Scoket
Config
Socket
Config
Socket
Config
Socket
FrontEnd
Socket
Config
scim-launcher 2
(XIMブリッジ)
scim-launcher 1
(メインデーモン)
scim-panel-gtk
KConfig
Config
KDE
設定ファイル
KDEアプリ
Configモジュール
• SCIMの設定保存機構
• ストレージはモジュールにより抽象化
– SimpleConfig (SCIMに同梱)
• 独自のファイル形式 (/etc/scim/* 及び ~/.scim/*)
– SocketConfig (SCIMに同梱)
• ソケット通信による設定値の同期
– GConfConfig
• GNOMEの設定機構であるGConfを利用
• 現在は「意味がない」として廃止されている
– KConfigConfig (SKIMに同梱)
• KDEの設定機構であるKConfigを利用
– モジュールを開発すればWindowsのレジストリ等にも対応可能
• プロセス内への変更通知は独自のシグナル/スロット機構
• コマンドライン用操作ツールが付属
– scim-config-agent
– get ・ set ・ del ・ reloadが可能
SCIMの典型的な構成例
(GUI関連イベントの流れ)
仮想キーボード
押下
マウスによる候補選択
ツールバーボタン押下
XIMブリッジ
X11
FrontEnd
パネル
HelperAgent
PanelAgent
Socket
IMEngine
scim-helper
(入力パッド)
PanelClient
Gtk+2アプリ
Qtアプリ
Socket
IMEngine
Socket
FrontEnd
Anthy
IMEngine
メインデーモン
Panelプロセス
• ツールバー、プリエディットウィンドウ、候補ウィンドウ、システム
トレイを提供するデーモン
• 現在は scim-panel-gtk と skim の2種
• 依存性分離のため、scim-launcher とは別プロセス
• IMEngineやHelperからの制御はProperty経由で
• Helper(入力パッド等)と メインデモーンとの通信を仲介
• Helper と IMEngine の通信を仲介
– プロトコルは双方を繋ぐ開発者が定義
• 独自Panelへの差し替えも可能
– PanelAgentクラスを利用
Helperモジュール
• 設定用ウィンドウ、手書き入力パッド等の補助ツール
を提供するモジュール
• Helperプロセスのメインループをドライブ
• 実装者の好みのツールキットを利用可能
• 以下の処理が可能
–
–
–
–
–
仮想キーイベントの発行
文字列のコミット
ツールバーへのボタン追加
設定再読み込み指令の発行
IMEngine との高度な連携
IMEngineの開発 (1)
• 前提知識
–
–
–
–
C++
オブジェクト指向
Autotools
gettext
• scim.h を include
• モジュールインターフェースを実装
– 初期化と終了、Factoryの生成
• 2つの抽象クラスを実装
– IMEngineFactoryBase
– IMEngineInstanceBase
• 内部文字コードはUNICODEで正規化
IMEngineの開発 (2)
• IMEngineInstance生成までの流れ
– Factoryの生成
– FactoryでのIM情報の提供
– FactoryでのIMEngineインスタンス生成
• IMEngineFactoryBaseの以下の関数を実装
–
–
–
–
–
get_name (): IM名 (Anthy、PRIME等)
get_uuid ():
uuid は uuidgenコマンドで生成
get_icon_file ()
get_authors (), get_credit, get_help ()
create_instance (): IMEngineInstanceを生成
IMEngineの開発 (3)
IMEngineInstanceの実装
• 基本はキーイベントハンドル用関数
– process_key_event
– キーイベントの詳細は scim_event.h
– 以下の関数で出力文字列を制御
• commit_string
• update_preedit_string
• update_preedit_caret
– reset でプリエディット文字列をクリア
• フォーカス制御
– focus_in (), focust_out ()
– 挙動はIMEngineの実装者次第
• 詳細は scim_imengine.h
IMEngineの開発 (4)
必要に応じて使用するクラス
• scim::Attribute クラス
– 文字列の装飾を制御
– プリエディット文字列、AUX文字列、候補文字列に適用可能
• scim::CommonLookupTable クラス
– 候補ウィンドウの制御
• scim::Property クラス
– 主にパネルの制御
• scim::IConvert クラス
– 文字コード変換
– String → WideString: 内部エンコード(UCS-4)への変換
– WideString → String: 指定エンコードへの変換
脱線 - surrounding textの是非
• IMEngineからカーソル周辺文字列を取得するAPI
• タイ語等のサポートに必要とされている
– タイ語は一文字が子音記号・母音記号・声調記号の3つの記号の組み合わせ
によって構成される
– 一回のキー入力に対して一個の記号が入力される
– キー入力毎に逐次コミットし、後置で文字を置き換える実装
• 実際はプリエディットでも対応可能
– コミット後の修正はユーザーが手動削除
– 日本語の濁点・半濁点も同様の扱い
• カーソル周辺文字列の取得は
– フロントエンド側にAPIが存在するとは限らない
– APIが存在しても、バギーな場合もある
• その様な現状で、無理にsurrounding textを使用する必要があるの
か?という議論がある
• 日本語の再変換に利用可能?
– 取得できる情報が足りないため、現在は非実用的
– 選択範囲の情報が、SCIMによる抽象化の結果として欠如している
SCIMの今後: Jamesさんの計画
• 大枠の機能はほぼ実装済み
• 設定用UI及びHelper用のGUIフレームワーク
– 一本のコードで全てのGUIツールキットへ対応
– 柔軟性と開発効率の両立が課題
• モジュールのオンデマンドローディング
(起動の高速化)
• マルチユーザー
• C言語インターフェース (?)
– 最新の開発計画では挙げられていない
•
•
•
•
コンソール用フロントエンド
IIIMFとの接続 (scim-iiimf? iiimf-scim?)
仮想キーボード、各種情報表示用Helper
他プラットフォームへの移植
– Windows
– Mac OS X
SCIMの今後: 足永の妄想
• Emacs用フロントエンド
• GNOMEインテグレーションの強化
– GNOMEパネルへの収容(KDEでは実現済み)
– 基本GUIパーツのクラスライブラリ化
• GNOME用パネルプログラムとの共用
• 独自パネルプログラム開発の効率化
– GNOMEのセッション管理に収容
• ハードウェアキーコードのハンドリング
– 厳密なかな入力の実現に必要
• システム非依存なタイマー
– NICOLA配列での厳密な同時押し判定に必要
– AUX文字列(エラー表示等)の表示時間制御
• 選択範囲を取得するAPI
– 再変換機能に必要
scim-anthyの今後
• 基本的な機能は実装済み
• インライン単語登録
• インライン単漢字検索機能はTomoeライブラ
リで実装
• GUIでの単漢字検索はscim-tomoeに集約
• 細かな機能整理・バグフィックス
• 2006年4月頃に1.0リリース予定
scim-skkの今後
• 基本的な機能は実装済み
• タブキーによる補完
• 辞書管理の拡張
– 複数辞書への対応
– 他の形式の辞書への対応
– 辞書サーバとの通信
•
•
•
•
接頭辞、接尾辞変換
送り仮名の厳密マッチ/優先マッチ
日付出力
AZIK対応
scim-primeの今後
•
•
•
•
•
•
基本的な機能は実装済み
パイプ通信の例外処理強化
パイプ通信の汎化/他のIMへの利用
コード整理
2005年内に1.0をリリース予定
以降はPRIMEの修正と連動した実験的機能
の実装
• 例: scim-tomoeとの連携
scim-cannaの今後
• 基本的な機能は実装済み
• 低レベルAPIへの対応
– 現代的GUIの実装
– 設定で互換モード/リッチモードの切り替え
– 得るものはそれほど大きくない
→ 対応しない可能性も
• scim-anthyその他とのプリエディット制御の
共通化?
scim-wnn & ほのかたんの今後
• 基本的な機能は実装済み
• 全ては開発者のTAMさん次第
– 手書き入力との連携?
– ひょっとして音声入力との連携?
– 何者にも予測不可能
• scim-wnnとほのかたんの共存
scim-tomoeの今後
• 国際化
• Tomoe 及び scim-tomoe を汎用的な単漢字データベース
& 検索エンジンとして進化させる
• 当面、最も開発リソースが投入されるべきモジュール
– 現代的OSS入力メソッドにおいて決定的に欠落している機能
– 現在エンドユーザーから最も要求の多い機能
• 手書きデータの収集が課題
– 第2水準、第3水準、第4水準漢字
– 精度を上げるためには複数のデータが必要
– nnmnd: 手書きデータをインターネットで収集するシステム
http://www.sikigami.com/~fuku/nnmnd/
– Ajaxを使った手書き文字認識
http://chasen.org/~taku/software/ajax/hwr/
IMフレームワークに対する私見
• 多様な価値観に対する包容力が決め手
–
–
–
–
各種自然言語・プログラミング言語への対応
オープンソース・クローズドソース双方への配慮
投入可能な開発リソースに見合った開発スタイル
GUI環境、非GUI環境双方への十分な配慮
• プリエディット制御は別ライブラリ化
– IM HUBとの分離
• 開発責任の分離/明確化
• API/ABI安定性の問題
– SCIM と uim or m17n-lib の関係が一つの解答
• デスクトップインテグレーションの重要性
– コアは徹底的に依存性を排除した上で、逆に末端機能は徹底
的なデスクトップ環境への依存が必要
– ユーザーインターフェースの統一感
– モジュール間通信の統一感
– プログラミングインターフェースの統一感
SCIMを育てる意義
• 実質的な日中韓の協力体制確立
• 商用IM / OSS IM同居の可能性
– 現状では困難
– しかし、IIIMF、uimでは更に困難
• IMフレームワーク自由競争時代の顕在化
– どのようなフレームワークも、メンテナンスを怠れば置き換
えられる可能性あり
– OSS日本語入力メソッド開発の重要性
• 既に普及している
– にもかかわらず日本人が開発に参加していない
まとめ
• 基本機能は実装済み – 成熟期間への移行段階
• SCIMは柔軟であり、またデスクトップとの統一感も
高い
• IMEngineの開発コストは低いが、FrontEndの開発
は大変
• 単漢字検索機能の実装が急務
• 開発者は常に募集中
• 日中韓の実務レベルでの協力体制の確立が必要
– SCIMにはこだわらないが、SCIMが最も現実的