Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Firefox OS 日本語 IME 開発状況

6,105 views

Published on

Published in: Technology
  • Be the first to comment

Firefox OS 日本語 IME 開発状況

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

×