Upload
honma-masashi
View
4.375
Download
6
Embed Size (px)
Citation preview
Gecko 勉強会その2
Firefox OS 日本語 IME 開発状況
自己紹介
Twitter: @masap 職業: 組み込みプログラマ(主にWi-Fi)
3
日本語 IME を直し始める
4
きっかけなど
きっかけとかモチベーションとか 日本語入力に問題があると聞いて
基本Wi-Fiばっかりいじっているので
日本語入力とか気にしたこともなかった
IME開発経験なし 目的
Google日本語入力を使って日本語入力ができるかを調査
5
Keyboard API
Keyboard API Firefox OS 1.3から導入。このAPIを使ってIMEを作る。 https://wiki.mozilla.org/WebAPI/KeboardIME
主な Keyboard APIメソッド 用途
setComposition 変換中文字列を下線付きで表示
endComposition 変換中文字列を確定
setSelectionRange 選択範囲を表示
sendKey 英数字等変換せず出力
6
キーボード関連の変更
Firefox OS 1.3はキーボード周りの大きい修正が2つあった
Keyboard API (前述) Third Party Keyboard
サードパーティーのキーボードをWebアプリケーションとして追加できるフレームワーク
7
日本語はおいてけぼり
日本語はこれらの修正に取り残されている 日本語キーボードを有効にするだけで一苦労
ファイルをちょこっと変えて直そうとしてもcheckoutで元に戻すコードが入っている
「日本語を使わせない!」という強い意図を感じる...
有効にしてみたものの日本語入力が一切できなくなっている
既存バグについてはBugzillaに報告
8
キーボードが無い世界で
暫定キーボード 必要最低限の機能を持った
キーボードを用意する このキーボードでGoogle
日本語入力を使った変換が
できるようにする
9
Google CGI API for Japanese Input
10
Google 日本語入力
Google CGI API for Japanese Input Google日本語入力をWebから使用できる http://www.google.co.jp/ime/cgiapi.html
JSONPですぐ使える Firefoxブラウザでプロトタイプを作成して動作したので
Firefox OSで動かしてみる あれ?エラーが出る Certified/PrivilegedアプリはJSONPが使えない
11
TCPSocketを使う
JSONPの代替としてTCPSocketを使う ひらがなを変換できない
TCPSocketのbinaryType: 'string'だとunicodeが化ける binaryType: 'arraybuffer' にして自前 unicode 変換テーブルで解決
「さてんるいこ」の変換に成功
12
TCPSocketの初期接続が遅い(1/3)
TCP接続の開始に最初だけ5秒掛かる Wiresharkで見ると名前解決に5秒掛かっている ローカルのルータのIPアドレス宛にDNS Queryを送信 5秒経っても応答が無いので外部のDNSサーバへDNS
Queryを送信
TCPSocketだけでなくブラウザからの検索でも再現
KEON RTX3000 DNS Server
DNS Query
DNS Query
DNS Response
5秒
13
TCPSocketの初期接続が遅い(2/3)
なぜローカルのルータにDNS Queryを送信? ルータからのDHCP ACKに「俺はDNSサーバです」と入っているから
なぜDNS Responseを返せないのにDNSサーバを名乗るの?
予想:YAMAHA はネットボランチDNSという独自DNSサービスを持っているので自分をDNSサーバとする必要があったのでは
14
TCPSocketの初期接続が遅い(3/3)
他はどうしているの? Android 4.0.4で試したら再現せず。8.8.8.8をデフォルトで使ってたわ...
Ubuntu 13.04の場合は既知のDNSサーバ全てに一度にDNS Queryを投げているため問題にならない
対処方法は? ユーザーランドからはgethostbyname()を呼ぶぐらいしかできないのでカーネルをどうにかしないといけない
根深そうなので報告しといた。Bug 944377
15
日本語キーボードが壊れている件について
16
日本語キーボードが動かない(1/3)
Bugzillaに「日本語キーボード動かないんだけど」 と報告を上げる (Bug 933252)
その後MLに転載されたりしていろいろ返事が来る 「日本語キーボード動かない?そうだよ!だから disable にしてるんだ!」
(やはり意図的だったか...) 「日本語辞書削除しちゃたからそのせいじゃないかなあ。あ、君直す?直してくれるんだったらやり方教えるよ!」
(ヤバい!一生担当にされそうなのでスルーしよう!) 辞書の問題じゃないよ。入力自体ができないんだ。
とかやっているうちに直してくれる人が現れた。
17
日本語キーボードが動かない(2/3)
直ったと言っているので動作確認 おかしい... 治っているように見えない... 翌日試してみると動いた。 何で? ホームの検索エリア→OK
ブラウザの検索エリア→NG
というオチ。これも報告した
18
日本語キーボードが動かない(3/3)
やっぱり直ってない 今度は
ホームの検索エリア→NG
ブラウザの検索エリア→OK 「あかさ」と入力すると
「ああかあかさ」と表示される この状態のまま現在に至る
19
変換対象の文字列がわからない
変換対象がハイライトされない 右図のように色が付いて欲しい
以前は sendPendingSymbols という関数があって、「ここからここまでは青色」という指定ができた
setComposition にはそれが無いので色を変えて選択箇所を明示することができない
setCompositionとsetSelectionRangeは同時には使えない Bug 940986として報告したが返事がない setCompositionには引数を追加して、ここまでは何色といった指定を可能にすべき
20
簡単なパッチを送る (1/2)
簡単なパッチを送った (Bug 939776) 「大小」キーは濁点や半濁点にも使う
ので「小 ゛ ゜」にした
21
簡単なパッチを送る (2/2)
ツッコミが来た 「大小 ゛ ゜」にすべきでは?WNNとかはそう それだけは阻止したいので反論して回避した 「大」は冗長ですし。iPhone も「小 ゛ ゜」ですし
日本人開発者が居ない 議論は結局「まあ、ネイティブの人が言うんだからそうしましょう」ってことで収束した
つまりGaiaとFirefox OS UXチームには日本人が居ないorz
22
使えるようになった
下記手順で有効にする gaiaディレクトリで下記コマンド実行
$ GAIA_KEYBOARD_LAYOUTS=en,jp-kanji make reset-gaia
日本語キーボードを有効に Settings Keyboards→ Selecte keyboards Add more keyboards Japanese – Kanji にチェック
23
現状
言いたいことはたくさんあるものの 日本語入力が一切できない
という状況は改善できた
協力者募集 Bugzillaに報告したり
パッチを書いたり
手を動かせる協力者求む!
24
以上