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

Fxos for Embedded Systems (English version)
Fxos for Embedded Systems (English version)Fxos for Embedded Systems (English version)
Fxos for Embedded Systems (English version)Honma Masashi
 
Firefox OS for Embedded System
Firefox OS for Embedded SystemFirefox OS for Embedded System
Firefox OS for Embedded SystemHonma Masashi
 
HTML5 によるロボット制御
HTML5 によるロボット制御HTML5 によるロボット制御
HTML5 によるロボット制御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 TouchHonma Masashi
 
さわってみよう Firefox OS in 大阪
さわってみよう Firefox OS in 大阪さわってみよう Firefox OS in 大阪
さわってみよう Firefox OS in 大阪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 の作成
 

Recently uploaded

2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用KLab Inc. / Tech
 
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdfネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdfTakayuki Nakayama
 
Keywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdKeywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdkokinagano2
 
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperleger Tokyo Meetup
 
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイルLoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイルCRI Japan, Inc.
 
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。iPride Co., Ltd.
 
情報を表現するときのポイント
情報を表現するときのポイント情報を表現するときのポイント
情報を表現するときのポイントonozaty
 
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員Sadaomi Nishi
 
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアルLoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアルCRI Japan, Inc.
 

Recently uploaded (9)

2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
 
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdfネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
 
Keywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdKeywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltd
 
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
 
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイルLoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
 
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
 
情報を表現するときのポイント
情報を表現するときのポイント情報を表現するときのポイント
情報を表現するときのポイント
 
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
 
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアルLoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
 

Firefox OS 日本語 IME 開発状況