Firefox OS 日本語 IME 開発状況

24
Gecko勉強会 その2 Firefox OS 日本語 IME 開発状況

Transcript of Firefox OS 日本語 IME 開発状況

Page 1: Firefox OS 日本語 IME 開発状況

Gecko 勉強会その2

Firefox OS 日本語 IME 開発状況

Page 2: Firefox OS 日本語 IME 開発状況

自己紹介

Twitter: @masap 職業: 組み込みプログラマ(主にWi-Fi)

Page 3: Firefox OS 日本語 IME 開発状況

3

日本語 IME を直し始める

Page 4: Firefox OS 日本語 IME 開発状況

4

きっかけなど

きっかけとかモチベーションとか 日本語入力に問題があると聞いて

基本Wi-Fiばっかりいじっているので

日本語入力とか気にしたこともなかった

IME開発経験なし 目的

Google日本語入力を使って日本語入力ができるかを調査

Page 5: Firefox OS 日本語 IME 開発状況

5

Keyboard API

Keyboard API Firefox OS 1.3から導入。このAPIを使ってIMEを作る。 https://wiki.mozilla.org/WebAPI/KeboardIME

主な Keyboard APIメソッド 用途

setComposition 変換中文字列を下線付きで表示

endComposition 変換中文字列を確定

setSelectionRange 選択範囲を表示

sendKey 英数字等変換せず出力

Page 6: Firefox OS 日本語 IME 開発状況

6

キーボード関連の変更

Firefox OS 1.3はキーボード周りの大きい修正が2つあった

Keyboard API (前述) Third Party Keyboard

サードパーティーのキーボードをWebアプリケーションとして追加できるフレームワーク

Page 7: Firefox OS 日本語 IME 開発状況

7

日本語はおいてけぼり

日本語はこれらの修正に取り残されている 日本語キーボードを有効にするだけで一苦労

ファイルをちょこっと変えて直そうとしてもcheckoutで元に戻すコードが入っている

「日本語を使わせない!」という強い意図を感じる...

有効にしてみたものの日本語入力が一切できなくなっている

既存バグについてはBugzillaに報告

Page 8: Firefox OS 日本語 IME 開発状況

8

キーボードが無い世界で

暫定キーボード 必要最低限の機能を持った

キーボードを用意する このキーボードでGoogle

日本語入力を使った変換が

できるようにする

Page 9: Firefox OS 日本語 IME 開発状況

9

Google CGI API for Japanese Input

Page 10: Firefox OS 日本語 IME 開発状況

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が使えない

Page 11: Firefox OS 日本語 IME 開発状況

11

TCPSocketを使う

JSONPの代替としてTCPSocketを使う ひらがなを変換できない

TCPSocketのbinaryType: 'string'だとunicodeが化ける binaryType: 'arraybuffer' にして自前 unicode 変換テーブルで解決

「さてんるいこ」の変換に成功

Page 12: Firefox OS 日本語 IME 開発状況

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秒

Page 13: Firefox OS 日本語 IME 開発状況

13

TCPSocketの初期接続が遅い(2/3)

なぜローカルのルータにDNS Queryを送信? ルータからのDHCP ACKに「俺はDNSサーバです」と入っているから

なぜDNS Responseを返せないのにDNSサーバを名乗るの?

予想:YAMAHA はネットボランチDNSという独自DNSサービスを持っているので自分をDNSサーバとする必要があったのでは

Page 14: Firefox OS 日本語 IME 開発状況

14

TCPSocketの初期接続が遅い(3/3)

他はどうしているの? Android 4.0.4で試したら再現せず。8.8.8.8をデフォルトで使ってたわ...

Ubuntu 13.04の場合は既知のDNSサーバ全てに一度にDNS Queryを投げているため問題にならない

対処方法は? ユーザーランドからはgethostbyname()を呼ぶぐらいしかできないのでカーネルをどうにかしないといけない

根深そうなので報告しといた。Bug 944377

Page 15: Firefox OS 日本語 IME 開発状況

15

日本語キーボードが壊れている件について

Page 16: Firefox OS 日本語 IME 開発状況

16

日本語キーボードが動かない(1/3)

Bugzillaに「日本語キーボード動かないんだけど」 と報告を上げる (Bug 933252)

その後MLに転載されたりしていろいろ返事が来る 「日本語キーボード動かない?そうだよ!だから disable にしてるんだ!」

(やはり意図的だったか...) 「日本語辞書削除しちゃたからそのせいじゃないかなあ。あ、君直す?直してくれるんだったらやり方教えるよ!」

(ヤバい!一生担当にされそうなのでスルーしよう!) 辞書の問題じゃないよ。入力自体ができないんだ。

とかやっているうちに直してくれる人が現れた。

Page 17: Firefox OS 日本語 IME 開発状況

17

日本語キーボードが動かない(2/3)

直ったと言っているので動作確認 おかしい... 治っているように見えない... 翌日試してみると動いた。 何で? ホームの検索エリア→OK

ブラウザの検索エリア→NG

というオチ。これも報告した

Page 18: Firefox OS 日本語 IME 開発状況

18

日本語キーボードが動かない(3/3)

やっぱり直ってない 今度は

ホームの検索エリア→NG

ブラウザの検索エリア→OK 「あかさ」と入力すると

「ああかあかさ」と表示される この状態のまま現在に至る

Page 19: Firefox OS 日本語 IME 開発状況

19

変換対象の文字列がわからない

変換対象がハイライトされない 右図のように色が付いて欲しい

以前は sendPendingSymbols という関数があって、「ここからここまでは青色」という指定ができた

setComposition にはそれが無いので色を変えて選択箇所を明示することができない

setCompositionとsetSelectionRangeは同時には使えない Bug 940986として報告したが返事がない setCompositionには引数を追加して、ここまでは何色といった指定を可能にすべき

Page 20: Firefox OS 日本語 IME 開発状況

20

簡単なパッチを送る (1/2)

簡単なパッチを送った (Bug 939776) 「大小」キーは濁点や半濁点にも使う

ので「小 ゛ ゜」にした

Page 21: Firefox OS 日本語 IME 開発状況

21

簡単なパッチを送る (2/2)

ツッコミが来た 「大小 ゛ ゜」にすべきでは?WNNとかはそう それだけは阻止したいので反論して回避した 「大」は冗長ですし。iPhone も「小 ゛ ゜」ですし

日本人開発者が居ない 議論は結局「まあ、ネイティブの人が言うんだからそうしましょう」ってことで収束した

つまりGaiaとFirefox OS UXチームには日本人が居ないorz

Page 22: Firefox OS 日本語 IME 開発状況

22

使えるようになった

下記手順で有効にする gaiaディレクトリで下記コマンド実行

$ GAIA_KEYBOARD_LAYOUTS=en,jp-kanji make reset-gaia

日本語キーボードを有効に Settings Keyboards→ Selecte keyboards Add more keyboards Japanese – Kanji にチェック

Page 23: Firefox OS 日本語 IME 開発状況

23

現状

言いたいことはたくさんあるものの 日本語入力が一切できない

という状況は改善できた

協力者募集 Bugzillaに報告したり

パッチを書いたり

手を動かせる協力者求む!

Page 24: Firefox OS 日本語 IME 開発状況

24

以上