メモ

調べたり思いついたりしたことをメモします

FirefoxOS開発用端末Flameの日本語ビルド

FirefoxOSの開発用端末Flameが2014.07に日本で発売されました。

出荷時はFirefoxOSのv1.3が入っていて、しかも非日本語版なので多くの人は自分なりの環境をビルドして焼くことでしょう。というかそういう使い方をするためのモノだと思います。

日本語ロケールを有効にした最新版ビルドの作り方はあちこちのサイトで紹介されつつありますが、やってみて失敗することも多いです。私はちょっとだけハマりました。

そこで私なりに作り方を整理しておこうと思います。

B2Gのビルド

最初にやることは、ごく標準的なB2Gのビルド環境の構築です。ざっと説明しますが分からなくなったらMDNを参考に勉強しましょう。

Firefox OS - Mozilla | MDN

事前準備として、MDN に書いてある通りビルドに必要な各種パッケージをインストールします。私はubuntu12.04を使っているので下記のようにしました。MDNには各環境別に必要なパッケージのインストール例が説明されているので自分の環境に合わせてセットアップしてください。

$ sudo apt-get install autoconf2.13 bison bzip2 ccache curl flex gawk gcc g++ g++-multilib git ia32-libs lib32ncurses5-dev lib32z1-dev libgl1-mesa-dev libx11-dev make libxml2-utils

あと、adb・fastboot が必要です。AndroidSDKを引っ張ってくるなどしてadbとfastbootを入手し、パスを通しておきましょう。

次にB2Gリポジトリを clone してきます。ここでは作業ディレクトリパスを /path/to/ と書いていますが環境に合わせて読み替えてください。

$ cd /path/to/
$ git clone git://github.com/mozilla-b2g/B2G.git

そのディレクトリへ移って config.sh を実行します。

$ cd B2G
$ ./config.sh flame

gaia や gecko など各種ソースがダウンロードされますので結構な時間が掛かります。気長に待ちましょう。 config.sh が終わったらビルドが出来る状態になっています。

エミュレータと違って実機をビルドするときは、ビルドの最初のフェーズで実機内に入っているファイルを adb pull で抜き出してくるようです。そのため Flame を USB でつないで adb が使える状態であることを確認しておきましょう。

$ adb devices
List of devices attached
f03641d1        device

adb devices でデバイスがアタッチされていることが見えればOKだと思います。ダメだった場合udevの設定をしましょう。FlameをUSBでつないだ状態で lsusb を使えば下のような出力が見えると思います。

$ lsusb
Bus 003 Device 003: ID 05c6:9025 Qualcomm, Inc.

ベンダIDが「05c6」ということなので、udev のルールに加えれば良いです。

$ sudo vi /etc/udev/rules.d/52-firefoxos.rules

下記の1行を書く

SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", MODE="0666", GROUP="plugdev"

これでudevサービスを再起動するなり、マシンを再起動するなりすれば adb で Flameにアクセスできるようになります。

ちなみに上記のudevの設定は 52-firefoxos.rules なんてファイルを勝手に作りましたが、多くの人はすでに 51-android.rules みたいなファイルがあるでしょうので、その中に行追加するだけでもOKです。

この状態でビルドできるようになったはずです。B2Gを clone したパス上で build.sh を動かします。

$ cd /path/to/B2G
$ ./build.sh

ビルドに失敗したらMDNを見ながら環境を見直ししてください。

無事にビルドが出来たら Flame に焼きます。

$ ./flash.sh

これで最新版の FirefoxOS が焼けたことになります。

日本語版のビルド

さて標準的なビルドが出来たら、今度は日本語版にチャレンジします。 下記に書く事はMDNの Building multilocale の部分とほとんど同じで日本語向けにしただけです。

gaia

/gaia/locales/ の直下には日本語用のディレクトリがありません。別途ダウンロードします。

$ cd /path/to/B2G/gaia/locales/
$ hg clone http://hg.mozilla.org/gaia-l10n/ja

こうすれば ja というディレクトリが出来上がります。

次に取ってきた ja ディレクトリを読み込むように設定します。languages_dev.json をコピって、新しいファイルを作り、それを編集することにします。

$ cd /path/to/B2G/gaia/locales/
$ cp languages_dev.json languages_ja.json
$ vi languages_ja.json

中身は英語と日本語以外をざっくり削除する程度です。下のようにします。

{
  "en-US"     : "English (US)",
  "ja"        : "日本語"
}

これで gaia で日本語を有効にするセットが出来ました。これらのセットをビルドに組み込むため、B2G直下に .userconfig を書きます。

$ cd /path/to/B2G
$ vi .userconfig

中身は下のようにします。

export LOCALE_BASEDIR=$PWD/gaia/locales
export LOCALES_FILE=$PWD/gaia/locales/languages_ja.json
export GAIA_DEFAULT_LOCALE=ja

gecko

B2G直下に移動して gecko 用のファイルを取ってきます。

$ cd /path/to/B2G
$ hg clone http://hg.mozilla.org/l10n-central/ja gecko-l10n/ja
$ hg clone http://hg.mozilla.org/build/compare-locales

設定のため再び .userconfig を編集します。今度は下の行を追加します。

export L10NBASEDIR=$PWD/gecko-l10n
export MOZ_CHROME_MULTILOCALE="ja"
export PATH="$PATH:$PWD/compare-locales/scripts"
export PYTHONPATH="$PWD/compare-locales/lib"

ここまでで日本語化ビルド用の設定は完成です。

日本語キーボード

表示が出来ても入力が出来なければいまいちなので日本語入力ができるようにします。

追記:ツリーの中に日本語辞書が取り込まれたようで、下記の打ち消し線部分は対応不要になりました。

まず作業ディレクトリに ipadic というディレクトリを作ります。

$ cd /path/to/B2G/gaia/apps/keyboard/js/imes/jskanji/dict
$ mkdir ipadic

この ipadic ディレクトリは時々名前が変わるみたいです。しばらく前は src という名前だった気がしますが今は ipadic のようです。 jskanjiの直下にあるREADMEを読みましょう。

次に任意のディレクトリに ipadic-2.7.0.tar.gz を展開します。 ipadic-2.7.0.tar.gzはここから取ってきます。

/24435/ipadic-2.7.0.tar.gzをダウンロード - IPAdic legacy - SourceForge.JP

取ってきた tar.gz を展開して中に入っている *.dic を全部、先ほど作ったディレクトリの中へコピーします。

$ tar xvzf ipadic-2.7.0.tar.gz
$ cd ipadic-2.7.0
$ cp *.dic /path/to/B2G/gaia/apps/keyboard/js/imes/jskanji/dict/ipadic/

この状態で dict ディレクトリ上にて make します。 しばらく掛かりますが dict、dict.utf8 というファイルが同フォルダ上に出来上がるはずです。

$ cd /path/to/B2G/gaia/apps/keyboard/js/imes/jskanji/dict
$ make

最後にこの日本語辞書を使うためのキーボード設定です。 再び.userconfig に設定を書きます。

export GAIA_KEYBOARD_LAYOUTS=en,jp-kanji

ビルド

いちど objdir-gecko、out を消してから再ビルドします。そうしないと L10NBASEDIR が設定されてないとのエラーになりました。

$ cd /path/to/B2G
$ rm -rf objdir-gecko
$ rm -rf out
$ ./build.sh

これで再ビルドが終わったら Flame に焼いて完了です。

$ ./flash.sh

日本語キーボードを有効にするには設定アプリからキーボードを選択してください。 あんまり優秀なキーボードではありません。。 Google日本語入力とか使いたい・・。