Google日本語入力のオープンソース版MozcのAndroid版の最新版Ver.2.17をビルド(Ubuntu 14.04 + Docker) 現在努力中

Google日本語入力のオープンソース版MozcのAndroid版をビルドして、いろいろといじろうかなと思っています。

mozc-for-android

かしこいMozc、そうではないOpenWnn系

3年前まではオープンソースのAndroidのIMEとしては、OpenWnn系のものが多かったですが、変換に問題がありました。Mozcの変換エンジンは、Google日本語入力のエンジンに、Webから収集する部分をなくしたそうです(不正にSEO対策されないようにとのことです)。

本家の説明

まずは、Googleの開発者さんが書いた説明書。

https://github.com/google/mozc/blob/master/doc/build_mozc_in_docker.md

githubって、日本人向けの日本語関連のソフトウェアに日本人が書き込むし読むのに、英語で書かれていることが多いですね。以前、linux用のIMEのibus-anthyにソースコード改変の要望を出した時も、英語で書くことになりました。

※それなりに理由があるのはわかります。

以前のバージョンの情報は豊富なのに最新版の情報はない?

Mozc for Androidのビルドで検索すると、Ubuntu 12.04にAndroid SDKなどを入れて…というブログがいくつかヒットしますしかヒットしませんでした。これは、Mozc for Androidの以前のバージョン(Ver.1.13)のものです。

しかし、Google日本語入力のバージョンアップに合わせて、Mozcもバージョンアップして、Ubuntu 14.04 + Dockerの組み合わせ でビルドするようになりました。

※後で、なぜ最新版の情報が少ないのかがわかりました。

Mozc for Androidのビルド環境の構築

Ubuntu 14.04 64bit版のインストール

最新のUbuntuではありませんので、Windows 7がやっと動くくらいのPCで十分です。Dockerを入れるので64bit版である必要があります。こちらからISOイメージを入手してDVDから起動するのが最も基本的なインストール方法ですが、VMwareやVirtualBoxのような仮想マシンにインストールするのが、いろいろと簡単です。

「どちらかというと」以下のパソコンはlinuxのインストールに向いていませんので仮想マシンを使うことを考えたほうがいいと思います。

  • 新しいパソコン
    ドライバーがない場合や自動で入らない場合があります。
  • ノートパソコン
    部品を壊したら交換が困難です。無線アダプターなどのハードウェアが新しい場合にドライバーのインストールに苦労することがあります。
  • 重要なデータが入っているパソコン
    Dual bootする場合などは、慣れていないとWindowsを復旧できない人が多いようです - よくわからずにパーティションをいじったりしているとWindowsのパーティションを削除していたというようなこともありえます。 上記の場合やlinuxのインストールに慣れていない方は、Dual bootなんて考えずに、以下の選択肢がいいかもしれません。

仮想マシン

仮想マシンとは、元のOS上でソフトウェアによってパソコンを仮想的にエミュレーションして、その中にOSをインストールして使えるようにしたもののことです。VMWareやVirtualBoxが知られています。

Macユーザーの間ではMacの中の仮想マシンにWindowsを入れて使うことがよくやられています(難易度が高くライセンス的な問題がありますが、技術的には逆も可能です)。

仮想環境だと、ハードウェアを壊すことはないし、今の環境を壊すことがないので安心です。

なお、仮想マシンでグラフィックなOSを入れる場合は、メモリーが4MB以上あるといいでしょう。

 

Dockerインストール

Ubuntu 14.04の後は、Dockerを入れます。

Dockerは、ここで解説されているようにオープンソースのコンテナー管理ソフトウェアです(ようするに器です…笑)。Dockerは、仮想マシンではなくエミュレーションをするのではなく、あくまで独立した環境を作る器のようなもので、カーネルはUbuntu 14.04のカーネルを使うようです。

Ctrl + Alt + Tで端末を出して、

DockerのInstallation on Ubuntu(英文)

https://docs.docker.com/engine/installation/linux/ubuntulinux/

の手順に従います。ただし、apt-getなどのコマンドの前には「sudo 」を付加します。下にその過程を日本語で書きます。

sudo apt-get update

sudo apt-get install apt-transport-https ca-certificates

sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

sudo gedit /etc/apt/sources.list.d/docker.list

でエディタを起動して、

deb https://apt.dockerproject.org/repo ubuntu-trusty main

を書き込んで、保存、閉じる。

sudo apt-get update

sudo apt-get purge lxc-docker

purgeというのは除去するという意味ですので、ここで、lxc-docker is not installedと出てもたいじょうぶです(出ます)。

sudo apt-cache policy docker-engine

linux-image-extraカーネルパッケージを入れます。

sudo apt-get update

sudo apt-get install linux-image-generic-lts-trusty

sudo apt-get install linux-image-extra-$(uname -r)

linux-image-extraカーネルパッケージを入れます。

sudo apt-get update

sudo apt-get install linux-image-generic-lts-trusty

sudo apt-get install linux-image-extra-$(uname -r)

推奨されているapparmorも入れます。

apt-get install apparmor

カーネルパッケージを入れたので、ここでいったん再起動しましょう。コマンドを使うなら、

sudo shutdown –r now または

sudo reboot

これでようやくDockerをインストールできます。

sudo apt-get install docker.engine

バージョンを調べてみます。

docker –version

Docker version 1.10.3, build 7c8fca2 のようにバージョンを調べられます。
dockerデーモンを開始します。

sudo service docker start

正しくインストールされたか確認します。

sudo docker run hello-world

で、Dockerを正しくインストールできたか確認できるまで、がんばります。

This message shows that your installation appears to be working correctly.

というメッセージが出ます。

curlも下の手順で必要なので、入れておきましょう。

sudo apt-get install curl

 

やっと説明書の手順(dockerのビルド・実行)

 

mkdir ubuntu14.04 && cd ubuntu14.04

curl -O https://raw.githubusercontent.com/google/mozc/master/docker/ubuntu14.04/Dockerfile

(これでDockerfileが作られます)

sudo docker build --rm -t $USER/mozc_ubuntu14.04 .

(これには1時間くらいかかります)

sudo docker run --interactive --tty --rm $USER/mozc_ubuntu14.04

(これでDockerを実行します プロンプトが、mozc-builder@…のように変わります 再起動後は毎回必要です。)

Mozc for Androidのビルド

srcディレクトリにcdして、

python build_mozc.py gyp --target_platform=Android

python build_mozc.py build -c Debug android/android.gyp:apk
(もちろん、時間がかかります)

これで署名が不要なDebug版が作成されます。「gclientを使ってGYPをダウンロードしなさい」というようなメッセージが出た場合は、上の「sudo docker run…」のコマンドを打ち忘れている可能性があるかと思います。

apkをビルドできたかな?

find . –name *.apk

でMozcForAndroid-debug.apdがヒットするかと思います。

これをDocker環境から通常の環境(ホスト)にコピーします。ホストにて(dockerの外)、

sudo docker ps

でコンテナIDを調べ(dockerの端末のプロンプトに表示されていますが)、「e88e0d83ba17」であるとすると、

sudo docker cp e88e0d83ba17:/home/mozc_builder/work/mozc/src/android/bin/MozcForAndroid-debug.apk .

というようにコピーします。これを実機などでテストしてみます。

仮想環境のVirtual Boxを使っている場合は、元のOS(例、Windows)の方に出します。方法はこちらが参考になると思います

ビルド環境を作れたなら、ソースコードをいじってテストした後、まずは、野良アプリとして公開してみましょう。

※野良アプリとは、Playストアなど経由ではなく入手するアプリのことです。Androidでは、設定|セキュリティ で野良アプリのインストールを可能にすることができます。

署名の方法

apkファイルが生成され、署名をして、実機にインストールしてみました。

しかし、入力画面は一瞬表示されるのにすぐ閉じてしまい、設定画面も最初の画面が出てくるものの、進もうとするとすぐ閉じてしまいます。

Androidタブレットでも同様でした。

このために情報が少ないのか…

ソースをいじっても動作させるのは難しそう…

(追記)開発者の方に教えてもらいました

しばらく放置していましたが、ふと思い立ち、githubにて、開発者の方に相談させていただきました。お仕事中にすいません…

python build_mozc.py gyp --target_platform=Android
python build_mozc.py build -c Release android/android.gyp:apk
(上と比べて署名版になっています)

keytool -genkey -v -keystore ~/.android/debug.keystore -alias mozc_key -keyalg RSA -keysize 2048 -validity 10000

cp android/bin/MozcForAndroid-release-unsigned.apk MozcForAndroid-release-signed-unaligned.apk

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ~/.android/debug.keystore /home/mozc_builder/work/mozc/src/android/bin/MozcForAndroid-release-unsigned.apk mozc_key

../../android-sdk-linux/build-tools/22.0.0/zipalign -v 4 MozcForAndroid-release-signed-unaligned.apk MozcForAndroid-release-signed.apk

ここまでうまく行き、MozcForAndroid-release-signed.apkが作成されました。

実機で試してみましたが、うまく実行してくれません。

どうやら私の署名の方法が悪かったようです。おそらく途中で入力するパスワードなどが原因だとは思います。android とすればいいという情報もありました。どなたかコメントにて何を入力した方がいいのか教えてください。お願いします。

コメントをぜひ!

この情報が役に立ったとか、自分はこのようにしたとか、コメントを書いてくれると助かります。

また、Vagrant用の環境をどなたかが公開していただけると、みなさん導入しやすくなると思います。これもぜひ!


下の画像は、旧バージョンのMozc for Androidの画像です。

 

mozc-for-android2

(参考画像:こちらのサイトより ― Ver.1.??では、ビルド直後はキーがのっぺらぼうです Ver.2.17ではきちんと表示されます)

とりあえず、今回は終わり。

関連記事

コメント

Secret

カテゴリ
プロフィール

ぽち

Author:ぽち
ようこそ!脱サラして好きなことをのんびりとやっています。
このブログが役に立ったという方やご意見や質問・要望がある方はコメントを書いてくれるとうれしいです!

最新記事
最新コメント
最新トラックバック
メールフォーム

名前:
メール:
件名:
本文:

月別アーカイブ
検索フォーム
RSSリンクの表示
リンク
QRコード
QR