やっつけ不定記

好きなときに好きなことをちゃっちゃと書いてます

けいおん端末で日本語入力やってみた

昨日作ったKEON日本語入力の仕組みを実際に導入してみました。
多少条件付きではありますが、今のところ動いてる模様です。


Firefox OS(FxOS)の日本語入力となると、よくある流れは
B2Gビルド->端末に焼き込み
ですが、いろいろ探ってみると、B2GビルドしなくてもGaiaをmakeしてできる
キーボードアプリを入れ直せばいけるそうな。
FxOSのアプリ自体がWeb技術のみで作られているからできることなんでしょうね。
文鎮化が怖くてビルド焼き込みに二の足を踏んでる私としては、実現できれば嬉しい限り。
というわけで、昨日からやってたことを書いてみます。
GaiaやKEONのバージョンは日々上がるので、あくまでも目安ということで。


やるにあたって、下記は非常に参考になりました。
ありがとうございます。
http://www.gcg.bz/labo_blog/?p=523
http://blog.sola-dolphin-1.net/archives/4389313.html
http://minashiro.net/computer/how-to-enable-japanese-ime-in-firefox-os/
http://blog.goo.ne.jp/sanktakato/e/006b4f10cb4513c31e5b2f8e06aa48df
http://lumitaglibro.blogspot.jp/2013/05/firefoxospeak.html
http://www.slideshare.net/cch-robo/zte-open-japanizationbuild
http://www.slideshare.net/honmamasashi1/gecko-20131219




【環境】
・KEON端末:Firefox OS Nightly(2014年2月13日にDL)
OSのバージョン:1.4.0.0-prerelease
プラットフォームのバージョン:30.0a1
開発者メニューを有効にしてリモートデバッグを有効にしておく。

システム周りをいじってるので、必要であればバックアップを取る、
もしくはGeeksPhoneのイメージから初期化するくらいの覚悟をすること。


・作業PC
XubuntuUbuntu 12.04 LTS 64bit)、メモリ:4GB
Android SDKとかFxOSビルド用の前提パッケージ事前導入済み


・KEONへの導入用PC
Windows7 64bit(たぶん上記Ubuntuでもいけると思う)
Android SDK導入済み(ただし、adbコマンドはKEONイメージ同梱のものを利用)




【やったこと】
(1)作業用ディレクトリの作成(~/fxosの下にB2Gを作った)
$ mkdir -p ~/fxos/B2G


(2)mercurialのインストール
$ sudo apt-get install mercurial


(3)Gaiaをクローン(2014年2月15日時点のmaster)
$ git clone git://github.com/mozilla-b2g/gaia.git
なかなか進まなかったので、GitHubサイトにあるZIP Downloadで代替。
容量にして240MBくらいでした。
キーボードアプリを作るだけなので(別にビルドするわけじゃないので)、
gitコマンドにこだわる必要はない。


(4)DLしたZIPファイルをB2G以下にgaiaとして展開する。
こんな感じ
~/fxos/B2G/gaia/(appsとかbinとか)


(5)Makeファイルの修正
$ cd ~/fxos/B2G/gaia
$ vi Makefile
下記に修正
GAIA_KEYBOARD_LAYOUTS?=en,pt-BR,es,de,fr,pl,zh-Hans-Pinyin

GAIA_KEYBOARD_LAYOUTS?=en,pt-BR,es,de,fr,pl,zh-Hans-Pinyin,jp-kanji


(6)日本語環境の組み込み
$ cd ~/fxos
$ hg clone http://hg.mozilla.org/gaia-l10n/ja gaia-l10n/ja
$ hg clone http://hg.mozilla.org/l10n-central/ja gecko-l10n/ja
$ hg clone http://hg.mozilla.org/build/compare-locales
$ export LOCALE_BASEDIR=$PWD/gaia-l10n
$ export L10NBASEDIR=$PWD/gecko-l10n
$ export MOZ_CHROME_MULTILOCALE="ja"
$ export PATH="$PATH:$PWD/compare-locales/scripts"
$ export PYTHONPATH="$PWD/compare-locales/lib"
$ vi ~/fxos/gaia/shared/resources/languages.json
solaさんのjsonファイルを参考に、こんな感じに変更。
{
"ar" : "العربية",
"en-US" : "English (US)",
"fr" : "Français",
"zh-TW" : "正體中文"
}





{
"ar" : "العربية",
"en-US" : "English (US)",
"fr" : "Français",
"zh-TW" : "正體中文",
"ja" : "日本語"
}


(7)日本語辞書の組み込み
http://sourceforge.jp/projects/naist-jdic/releases/
からnaist-jdic-0.4.3.tar.gzをDLする。
$ tar zxvf naist-jdic-0.4.3.tar.gz
$ mkdir -p ~/fxos/B2G/gaia/apps/keyboard/js/imes/jskanji/dict/ipadic/
$ cp naist-jdic-0.4.3/naist-jdic.dic ~/fxos/B2G/gaia/apps/keyboard/js/imes/jskanji/dict/ipadic/
$ cd ~/fxos/B2G/gaia/apps/keyboard/js/imes/jskanji/dict/
$ make
JSONに変換する処理が走る


(8)キーボードアプリの再構築(GaiaのMake)
$ cd ~/fxos/B2G
$ make -C gaia
初めてmakeしたときはxulrunner-sdkを落としにかかる。
gaiaの下にxulrunnner-sdk-26というディレクトリができていた。
$ cd ~/fxos/B2G/gaia/profile/webapps/keyboard.gaiamobile.org
$ ls
application.zip manifest.webapp
この2つのファイルがキーボードのアプリに該当する。
KEON導入用PCのKEONイメージのフォルダに保存しておく。


(9)KEONへの導入
コマンドプロンプトでKEONイメージのフォルダに移動。
>cd (KEONイメージのフォルダ)
>adb shell


・/systemのマウント状況を確認する。
# mount
/dev/block/mmcblk0p12 /system ext4 ro,relatime,user_xattr,barrier=0,data=ordered 0 0


・マウント状況を変更する
# mount -o rw,remount -t ext4 /dev/block/mmcblk0p12 /system


・マウント状況変更の確認
# mount
/dev/block/mmcblk0p12 /system ext4 rw,relatime,user_xattr,barrier=0,data=ordered 0 0
# exit


・KEONのB2G停止、キーボードアプリ入れ替え、B2G再起動
>adb shell stop b2g
この時点でKEONが停止する。
>adb push manifest.webapp /system/b2g/webapps/keyboard.gaiamobile.org/manifest.webapp
>adb push application.zip /system/b2g/webapps/keyboard.gaiamobile.org/application.zip
>adb shell start b2g
うまくいっていればKEONが再起動する。


(10)動作確認
キーボードの設定画面から「Japanese - kanji」を有効にし、
「入力予測」を無効にする。
入力予測はデフォルト有効になっているが、
このままだとキーのレスポンスが非常に悪かった。