Advertisement

Firefox OS 日本語 IME 開発状況

Dec. 19, 2013
Advertisement

More Related Content

Advertisement

Firefox OS 日本語 IME 開発状況

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