SlideShare a Scribd company logo
1 of 24
Download to read offline
Gecko勉強会 その2

Firefox OS 日本語 IME 開発状況
自己紹介


Twitter: @masap



職業: 組み込みプログラマ(主に Wi-Fi)
日本語 IME を直し始める

3
きっかけなど


きっかけとかモチベーションとか


日本語入力に問題があると聞いて






基本Wi-Fiばっかりいじっているので
日本語入力とか気にしたこともなかった

IME開発経験なし

目的


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

4
Keyboard API


Keyboard API





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

主な Keyboard API
メソッド

用途

setComposition

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

endComposition

変換中文字列を確定

setSelectionRange

選択範囲を表示

sendKey

英数字等変換せず出力

5
キーボード関連の変更


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

Keyboard API (前述)



Third Party Keyboard


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

6
日本語はおいてけぼり


日本語はこれらの修正に取り残されている



日本語キーボードを有効にするだけで一苦労






ファイルをちょこっと変えて直そうとしてもcheckoutで元に戻
すコードが入っている
「日本語を使わせない!」という強い意図を感じる...

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

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

7
キーボードが無い世界で


暫定キーボード


必要最低限の機能を持った
キーボードを用意する



このキーボードでGoogle
日本語入力を使った変換が
できるようにする

8
Google CGI API for Japanese Input

9
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
TCPSocketを使う


JSONPの代替としてTCPSocketを使う



ひらがなを変換できない





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

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

11
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
TCPSocketの初期接続が遅い(2/3)


なぜローカルのルータにDNS Queryを送信?




ルータからのDHCP ACKに「俺はDNSサーバです」と入ってい
るから

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

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

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

他はどうしているの?






Android 4.0.4で試したら再現せず。8.8.8.8をデフォルト
で使ってたわ...
Ubuntu 13.04の場合は既知のDNSサーバ全てに一度
にDNS Queryを投げているため問題にならない

対処方法は?




ユーザーランドからはgethostbyname()を呼ぶぐらいし
かできないのでカーネルをどうにかしないといけない
根深そうなので報告しといた。Bug 944377
14
日本語キーボードが壊れている件について

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

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

その後MLに転載されたりしていろいろ返事が来る









「日本語キーボード動かない?そうだよ!だから disable にして
るんだ!」
(やはり意図的だったか...)
「日本語辞書削除しちゃたからそのせいじゃないかなあ。あ、
君直す?直してくれるんだったらやり方教えるよ!」
(ヤバい!一生担当にされそうなのでスルーしよう!) 辞書の問
題じゃないよ。入力自体ができないんだ。

とかやっているうちに直してくれる人が現れた。
16
日本語キーボードが動かない(2/3)


直ったと言っているので動作確認





おかしい... 治っているように見えない...
翌日試してみると動いた。
何で?
ホームの検索エリア→OK
ブラウザの検索エリア→NG
というオチ。これも報告した

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

やっぱり直ってない






今度は
ホームの検索エリア→NG
ブラウザの検索エリア→OK
「あかさ」と入力すると
「ああかあかさ」と表示される
この状態のまま現在に至る

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

変換対象がハイライトされない


右図のように色が付いて欲しい









以前は sendPendingSymbols という関数があって、「ここか
らここまでは青色」という指定ができた
setComposition にはそれが無いので色を変えて選択箇所を
明示することができない
setCompositionとsetSelectionRangeは同時には使えない

Bug 940986として報告したが返事がない
setCompositionには引数を追加して、ここまでは何色
といった指定を可能にすべき
19
簡単なパッチを送る (1/2)


簡単なパッチを送った (Bug 939776)


「大小」キーは濁点や半濁点にも使う
ので「小 ゛ ゜」にした

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

ツッコミが来た






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

日本人開発者が居ない




議論は結局「まあ、ネイティブの人が言うんだからそうしましょ
う」ってことで収束した
つまりGaiaとFirefox OS UXチームには日本人が居ないorz

21
使えるようになった


下記手順で有効にする


gaiaディレクトリで下記コマンド実行
$ GAIA_KEYBOARD_LAYOUTS=en,jp-kanji make reset-gaia



日本語キーボードを有効に





Settings → Keyboards
Selecte keyboards
Add more keyboards
Japanese – Kanji にチェック

22
現状


言いたいことはたくさんあるものの


日本語入力が一切できない
という状況は改善できた



協力者募集


Bugzillaに報告したり
パッチを書いたり
手を動かせる協力者求む!

23
以上

24

More Related Content

More from Honma Masashi

Photo hack day Japan 2014 プレゼン資料
Photo hack day Japan 2014 プレゼン資料Photo hack day Japan 2014 プレゼン資料
Photo hack day Japan 2014 プレゼン資料
Honma Masashi
 
Firefox OS を使って HTML5 でハードウェアを動かしてみよう
Firefox OS を使って HTML5 でハードウェアを動かしてみようFirefox OS を使って HTML5 でハードウェアを動かしてみよう
Firefox OS を使って HTML5 でハードウェアを動かしてみよう
Honma Masashi
 
Designers hack 011 ウォシュレットのリモコンから UI を極力無くすには
Designers hack 011 ウォシュレットのリモコンから UI を極力無くすにはDesigners hack 011 ウォシュレットのリモコンから UI を極力無くすには
Designers hack 011 ウォシュレットのリモコンから UI を極力無くすには
Honma Masashi
 
次世代プラットフォームでのHTML5アプリ開発 Firefox OS/Ubuntu Touch
次世代プラットフォームでのHTML5アプリ開発 Firefox OS/Ubuntu Touch次世代プラットフォームでのHTML5アプリ開発 Firefox OS/Ubuntu Touch
次世代プラットフォームでのHTML5アプリ開発 Firefox OS/Ubuntu Touch
Honma Masashi
 
Firefox OS 2012 年まとめ
Firefox OS 2012 年まとめFirefox OS 2012 年まとめ
Firefox OS 2012 年まとめ
Honma Masashi
 
さわってみよう Firefox OS in 福岡
さわってみよう Firefox OS in 福岡さわってみよう Firefox OS in 福岡
さわってみよう Firefox OS in 福岡
Honma Masashi
 
Firefox OS の Wi-Fi 機能改善
Firefox OS の Wi-Fi 機能改善Firefox OS の Wi-Fi 機能改善
Firefox OS の Wi-Fi 機能改善
Honma Masashi
 
デザイナー目線で Firefox OS を変えよう
デザイナー目線で Firefox OS を変えようデザイナー目線で Firefox OS を変えよう
デザイナー目線で Firefox OS を変えよう
Honma Masashi
 
Firefox OS カスタム ROM の作成
Firefox OS カスタム ROM の作成Firefox OS カスタム ROM の作成
Firefox OS カスタム ROM の作成
Honma Masashi
 

More from Honma Masashi (14)

ROS.js の紹介
ROS.js の紹介ROS.js の紹介
ROS.js の紹介
 
Fxos for Embedded Systems (English version)
Fxos for Embedded Systems (English version)Fxos for Embedded Systems (English version)
Fxos for Embedded Systems (English version)
 
Firefox OS for Embedded System
Firefox OS for Embedded SystemFirefox OS for Embedded System
Firefox OS for Embedded System
 
HTML5 によるロボット制御
HTML5 によるロボット制御HTML5 によるロボット制御
HTML5 によるロボット制御
 
Photo hack day Japan 2014 プレゼン資料
Photo hack day Japan 2014 プレゼン資料Photo hack day Japan 2014 プレゼン資料
Photo hack day Japan 2014 プレゼン資料
 
Firefox OS を使って HTML5 でハードウェアを動かしてみよう
Firefox OS を使って HTML5 でハードウェアを動かしてみようFirefox OS を使って HTML5 でハードウェアを動かしてみよう
Firefox OS を使って HTML5 でハードウェアを動かしてみよう
 
Designers hack 011 ウォシュレットのリモコンから UI を極力無くすには
Designers hack 011 ウォシュレットのリモコンから UI を極力無くすにはDesigners hack 011 ウォシュレットのリモコンから UI を極力無くすには
Designers hack 011 ウォシュレットのリモコンから UI を極力無くすには
 
次世代プラットフォームでのHTML5アプリ開発 Firefox OS/Ubuntu Touch
次世代プラットフォームでのHTML5アプリ開発 Firefox OS/Ubuntu Touch次世代プラットフォームでのHTML5アプリ開発 Firefox OS/Ubuntu Touch
次世代プラットフォームでのHTML5アプリ開発 Firefox OS/Ubuntu Touch
 
さわってみよう Firefox OS in 大阪
さわってみよう Firefox OS in 大阪さわってみよう Firefox OS in 大阪
さわってみよう Firefox OS in 大阪
 
Firefox OS 2012 年まとめ
Firefox OS 2012 年まとめFirefox OS 2012 年まとめ
Firefox OS 2012 年まとめ
 
さわってみよう Firefox OS in 福岡
さわってみよう Firefox OS in 福岡さわってみよう Firefox OS in 福岡
さわってみよう Firefox OS in 福岡
 
Firefox OS の Wi-Fi 機能改善
Firefox OS の Wi-Fi 機能改善Firefox OS の Wi-Fi 機能改善
Firefox OS の Wi-Fi 機能改善
 
デザイナー目線で Firefox OS を変えよう
デザイナー目線で Firefox OS を変えようデザイナー目線で Firefox OS を変えよう
デザイナー目線で Firefox OS を変えよう
 
Firefox OS カスタム ROM の作成
Firefox OS カスタム ROM の作成Firefox OS カスタム ROM の作成
Firefox OS カスタム ROM の作成
 

Firefox OS 日本語 IME 開発状況