組み込み環境向け日本語入力環境の開発
組み込み環境向け日本語入力環境の開発
吉田 悠一
太田 一樹
自己紹介
東京大学理科一類所属
現在二年生
4月から理学部情報科学科に進学(2年間の専門課程)
プログラミング歴は3ー4年
吉田君とはOSSの開発を通して知り合う
開発成果報告
概略
入力フレームワークuimとは?
プログラミング言語Schemeとは?
SymbianOSへの移植
uimとは?
入力環境フレームワーク (後述)
平成15年度未踏ソフトウェア創造事業「Free Softwareにおける日本語入力環境の改善」 で支援されて開発された
元々はUNIX環境向けのソフトウェア
オープンソースソフトウェア (ソースコードは全て公開)
BSD Lisenceで配布されており、商用利用も可能
uimの役割
変換エンジンはひらがなを入れて漢字を返すだけ
GUIからのキーイベントを処理
ひらがな列を生成 (t, a, k, a, t, a => たかた)
それを変換エンジンに投げる
変換結果をGUIに返す
uimの役割: 全体図
uimの役割
uimの役割
uimの役割
uimの役割
uimの役割
uimの役割
uimの役割
uimの役割
uimの長所
オープンソースソフトウェア
ライブラリとして実装されている (システム非依存性の考慮)
多言語に対応しており、日本語以外の入力方式にも対応
Schemeと呼ばれるLisp系言語でサクサク開発出来る
オープンソースソフトウェア (ソースコードは全て公開)
BSD lisenceで配布されており、商用利用も可能
uimの短所
ライブラリとして実装されている (uimでのクラッシュがアプリケーション全体へのクラッシュに繋がる)
1 context/1 process
Schemeプログラミング言語の処理系をまるごと内包している
Scheme処理系の出来が全体のパフォーマンスを大きく左右
Schemeの例
(+ 1 2) => 3
((lambda (x) (x + x)) 5) => 10
(define x 5) (set! x 10) x => 10
(map (lambda (x) (+ x 5)) '(1, 2, 3)) => (6, 7, 8)
メインの処理はSchemeで書かれている (10000行)
C言語は約6000行(その内4000行がScheme処理系)
Scheme処理系を刷新
一から書き直す
言語仕様に完全準拠
ライブラリも必要なモノが有れば随時実装(文字列処理等)
フットプリント, 処理速度, メモリ効率, 移植性を考慮
簡易なUnitTestingフレームワークを作成し、全ての関数についてテストケースを書くことで動作を保証
「組み込み環境で一番重要なのは実は信頼性」 by 田村さん
携帯への移植
Anthy, uim共に内部構造が洗練された
実際に販売されている携帯電話への移植を進める
Docomoが販売しているビジネス携帯FOMA M1000へ移植
Docomo M1000のスペック
OS: Symbian OS
CPU: TI 「OMAP 1510」 ARM Core (168MHz) + DSP
GUI: UIQ
SymbianOSへの移植
DocomoからSDKが公開されている
エミュレーターが...
C言語互換API
組み込み機器ならではの制約
グローバル変数が使えない (data, bss segmentが無い)
限られたスタック容量
デモだ!
デモビデオ
携帯で撮影したので画質が悪い上に小さいですが...レスポンスが良い所を見て頂きたいです
デモ展示します。実際に打ってみて下さい。
終わり?
懺悔の時間
T-Engine編
Linux m32r編
SymbianOS編
懺悔の時間: T-Engine編
すいません、移植する時間がありませんでした...
懺悔の時間: Linux m32r編
コマンドラインからの動作確認はしたが、USBキーボードが動作せず...
なんでUSBコントローラーのデバイスドライバのコードをいじってるんやろ...
(注: X + Gtkが動く環境で有れば動きます)
懺悔の時間: SymbianOS編
FEP未対応。情報が少なすぎて困っています、SymbianOSに詳しい方がいらっしゃったら是非情報を提供して下さいm(_ _)m
懺悔の時間: SymbianOS編
FEP未対応。情報が少なすぎて困っています、SymbianOSに詳しい方がいらっしゃったら是非情報を提供して下さいm(_ _)m
おしまい
御静聴有難う御座いました。