Titanium.X

Top KitchenWork TitAnIDE TitaNative Ti SDK Archives

@d_o_locker(ろっかぁ)



Mozc Custom for Android

2014/01/16 Mozc r185 Ver.1.13.1651.102 対応       Mozc ソースと Android SDK は、最新版ではなく対応確認バージョンを取得するよう修正 2013/09/12 Mozc r171 Ver.1.11.1522.102 対応 2013/08/18 英字・数字入力で開き直すと全角入力に初期設定されることがある不具合に対応 2013/08/04 ファンクションキーのフリックに機能を追加 2013/07/18 カスタムレイアウト QWERTY808 QWERTY608 QWERTY408 追加 2013/07/17 Mozc r163 Ver.1.11.1502.102 対応 2013/07/11 カスタム入力スタイル ニコフリック・ベルフリック追加 2013/07/03 Chrome パスワード入力不具合修正 (Chrome for Android Ver.28 以降は修正不要) 2013/07/01 初版公開 Mozc とは、Google 日本語入力 のオープンソース版である日本語文字入力システム(IME)です。 Mozc は Windows、Mac、Linux、Chromium OS、Android, に対応しているようですが、 このサイトでは、Android 版の Mozc for Android だけを取り扱います。 ここでは、Mozc for Android に下記のカスタマイズを行う方法を紹介しています。
・ライセンスの問題からか OSS 版では削除されている、キートップの文字画像の復元 ・記号・数字まで1画面で配置、上フリックでShift入力になるようQWERTY配列を拡張 ・ニコタッチ・ポケベル打ちと Godan の入力方法を取り入れて入力スタイルを拡張 ・ケータイ配列英字入力・Godan 配列で数字・記号のフリック入力を追加・修正 ・ファンクションキーフリックに設定呼出・入力モード・レイアウト切替などを追加 ・全角チルダが正常入力可能(標準では全角チルダと称して波ダッシュが入力される)
ご自身でも Mozc をカスタマイズしてみたいという開発者向けの技術紹介が主目的ですので、 一般の方向けの、アプリのバイナリ(.apk ファイル)配布、公式ストアでの公開などは行っていません。 VirtualBoxVagrant を使って、Mozc ビルド用の仮想環境を自動的に構築し、 標準の Mozc と、このサイトでカスタマイズした Mozc を自動的にビルドできる状態で配布しています。 無保証・無サポート・自己責任に同意の上、ご自身でビルドして文字入力アプリとして利用することは自由です。 バイナリ配布の文字入力アプリでは、個人情報の不正送信の有無について、確認することが困難です。 公開されているソースをご自身でビルドする方法は、知識のある方ならご自身で、そうでない方でも 知識のある方に依頼することで、悪意あるコードを含まないことを確認できる配布方法だと考えています。
カスタム配列:QWERTY513 / QWERTY514
カスタム配列:QWERTY512 / QWERTY416
カスタム配列:QWERTY410 / QWERTY313
このサイト Titanium.X では、スマホアプリを JavaScript で開発できる Titanium Mobile SDK を主に扱っています。 Mozc for Android そのものは、Java、C++、Python(ソース生成・加工)で開発されていて、 Ti を使った開発とは異なりますが、このサイトで公開している
TitAnIDE Build Android 端末で Android アプリを開発できるウェブサイト(開発中) TitAnIDE App Android 端末で Android アプリを開発できる Android アプリ
で、ソフトキーボードでも JavaScript や XML を快適に編集することをそもそもの目的として、 数字や記号まで日本語フルキーボードに近い配列で入力できるように Mozc を拡張したもので、 このサイトでの Ti 開発環境改善の一環ということで、このサイト内で紹介することにしました。

ライセンスと配布方法

カスタマイズ箇所以外は標準の Mozc のライセンス に従ってください。 このサイトでのカスタマイズ箇所、及びカスタマイズ用スクリプト本体も、2013年6月末現在の 標準の Mozc に合わせて、3条項BSDライセンスとしておきます。 フォントのライセンスについては文字画像埋め込みの章で後述しますが、 このサイトの配布物そのものは、スクリプトと設定ファイルであり、フォントに由来していません。 利用者が文字画像を埋め込んで配布する場合、使用するフォントのライセンスに従ってください。 文字入力アプリは、セキュリティと強く関連することもあり、このサイトではバイナリ配布は行っていません。 標準の Mozc のソースをカスタマイズするスクリプトを公開しているので、ご自身で適用、ビルドしてください。 原則として、ご自身でも Mozc をカスタマイズしたい開発者向けの公開で、一般の方の利用は想定していません。 技術の紹介目的のため、文字入力アプリとして利用する上でのサポートは、不具合修正も含めて一切行いません。 無保証・無サポート・自己責任に同意の上、ご自身でビルドして文字入力アプリとして利用することは自由です。 このサイトのカスタマイズ版をビルドした方が、バイナリ配布、ストア公開することについては、 カスタマイズ内容に手を加えているか、このサイトのカスタマイズそのままの内容かを問わず、 アプリID(Android PackageName)を変更していて、前述のライセンスの条件に従っているならば自由です。 アプリIDを変更せず、標準の Mozc と同じ org.mozc.android.inputmethod.japanese のまま、もしくは このサイトの配布時初期値 mozc.android.yourname.yourappname のままでのバイナリ配布はご遠慮ください。

開発環境

2013年6月末現在、 Mozc for Android のビルド は Linux 上で行う必要があり、Ubuntu 12.04 だけでテストされているようで、 標準的な開発環境である Eclipse ADT や Android Studio だけでのビルド手順も公開されていないようなので、 Windows や Mac をお使いの方は、仮想環境に Ubuntu 12.04 を入れるなどしてビルドする必要があります。 このサイトでは、VirtualBoxVagrant を使って、Mozc ビルド用の仮想環境を自動的に構築し、 標準の Mozc と、このサイトでカスタマイズした Mozc を自動的にビルドできる状態で配布しています。 このサイトからダウンロードするのは全てテキストファイルのスクリプトと設定ファイルで、その後の 自動構築の際のバイナリダウンロードはそれぞれの開発元のサイトから行うので、知識のある方なら、 このサイト主導で悪意あるコードを仕込む余地がないことを確認できる配布方法だと考えています。 開発環境の自動構築は使わずに、ご自身で Ubuntu の仮想環境ないし実環境を用意して、 Mozc 公式サイトの手順有志による日本語訳)に従い、標準の Mozc をビルドできる状態まで整えた上で、 このサイトのカスタマイズ用スクリプトをご自身で配置、実行するか、実行せずに、読んで参考にすることもできます。

ダウンロードと準備

開発環境の自動構築と自動ビルドの大まかな実行手順は下記の通りです。
・VirtualBox と Vagrant をダウンロードし、インストール ・このサイトのカスタマイズ用スクリプトと設定ファイルをワークフォルダに配置 ・コマンドプロンプトかターミナルから vagrant up[Enter] と入力し、実行
これだけで、自動的に Ubuntu 12.04 の仮想環境がダウンロード、設定され、 開発に必要なパッケージや Android SDK がダウンロード、インストール、更新され、 標準の Mozc のソースがダウンロードされ、標準状態の Mozc がビルドされ、 ソースにこのサイトのカスタマイズが適用され、カスタマイズされた Mozc がビルドされ、 ワークフォルダの中に、標準版とカスタマイズ版、2つの .apk ファイルがコピーされます。 筆者の環境では、10GB 前後のディスク容量と、30分から2時間程度の実行時間が必要でした。 特にディスク容量は、使い切るとデータ損失などトラブルの原因となりますので、 実行前の空き領域が 10GB 以下の状態では実行しないようにしてください。 https://www.virtualbox.org/wiki/Downloads から VirtualBox をダウンロードし、インストールしてください。 http://downloads.vagrantup.com/ から Vagrant をダウンロードし、インストールしてください。 このサイトから カスタマイズ用スクリプト をダウンロードし、 Mozc ビルドのためのワークフォルダとして使いたいパスに展開してください。 例えば Windows で、ワークフォルダを C:\vagrant\mozc\ とする場合、手作業で C:\vagrant\ を作成し、 その中に mozc_custom.zip を配置して、右クリックして すべて展開 を選択してください。
展開先フォルダ名を、元のファイル名の mozc_custom から mozc に変更してください。
展開後は下記の状態になります。
C:\vagrant\ 手作業で作成(パスは任意) mozc_custom.zip このサイトからダウンロードして配置 mozc\ 共有ワーク Dir(ワークフォルダ) zip 展開で生成(名前の変更は任意) Vagrantfile Vagrant 設定ファイル smb.conf Samba 設定ファイル manifests\ mozc.pp Puppet 設定ファイル scripts\ *.sh ビルド用シェルスクリプト *.py カスタマイズ用 Python スクリプト search\ カスタマイズ検索用テキスト replace\ カスタマイズ置換用テキスト
展開ツールによって、意図通りの階層構造で展開されなかった場合、手作業で移動・リネームしてください。 このフォルダは、仮想環境ゲスト OS 側からも読み書きできるように共有されます。 仮想環境側から見ると、/vagrant/ というパスで、同じ内容が読み書きできます。 特に Windows ではフォルダという用語のほうが一般的ですが、 Ubuntu を含む Linux では主にディレクトリという用語を使いますので、 以降、このフォルダのことは、共有ワーク Dir という表記で統一します。 仮想環境について、仮想環境を動かす側をホスト OS と、 ホスト OS 上で仮想環境として動く側をゲスト OS と言いますが、 このサイトでは、ホスト側、仮想環境側、という表記を多用しています。 単に仮想環境側と書いた場合、仮想環境ゲスト OS 側を意味します。

開発環境の自動構築と自動ビルド

コマンドプロンプトかターミナルを開き、共有ワーク Dir に移動します。 Windows 8 の方は、Explorer で 共有ワーク Dir を開き、 ファイルメニューから コマンドプロンプトを開く を選択してください。 Windows Vista 以降の方は、Explorer で 共有ワーク Dir を開き、 フォルダ領域内で Shift キーを押しながら右クリックして、 コマンドプロンプトをここで開く を選択してください。 上記2つの方法では、共有ワーク Dir に移動した状態でコマンドプロンプトが開きます。 Windows XP 以前の方は、スタートメニューからコマンドプロンプトを開き、 下記のように入力して 共有ワーク Dir に移動します。 共有ワーク Dir のパスはご自身で決めたものに読み替えてください。 Windows で C: ドライブ以外に決めた場合、例えば D: ドライブなら
C:\Document and Settings\yourname>D: D:\>cd D:\vagrant\mozc D:\vagrant\mozc>|
のようにドライブとフォルダを移動します。C: ドライブの場合はそのままで、
C:\Document and Settings\yourname>cd C:\vagrant\mozc C:\vagrant\mozc>|
のようにフォルダだけを移動します。 '>' の左はシステムが表示する現在のフォルダ名で、入力する必要はありません。 '>' の右の部分を上記のように入力し、Enter キーを押して実行します。 Mac、Linux の場合も、同様にターミナル内で 共有ワーク Dir に移動してください。 共有ワーク Dir 内で仮想環境を起動します。
C:\vagrant\mozc>vagrant up
1回目の vagrant up では、開発環境に必要なファイルをダウンロード・インストールするため、かなり時間が かかりますが、初期状態では確認ダイアログ等が出ないよう配慮しているので、そのまま放置しているだけで、 筆者の環境なら30分~2時間程度(ネットの回線速度とマシン性能による)でアプリのビルドまで完了します。 1回目の vagrant up 後の 共有ワーク Dir は下記の状態になります。
C:\vagrant\ mozc\ Vagrantfile smb.conf .vagrant\machines\default\virtualbox\ id Vagrant ID ファイル Vagrant が生成 build\ ビルド時に仮想環境側ホーム Dir からコピー build.log ビルド時のログファイル MozcForAndroid-debug.apk 標準版 Mozc アプリ YourAppName-debug.apk カスタマイズ版 Mozc アプリ backup\ カスタマイズ前バックアップ Dir custom\ カスタマイズ後バックアップ Dir manifests\ mozc.pp scripts\ *.sh *.py search\ replace\
共有ワーク Dir 内に build\ フォルダが作成され、その中に .apk ファイルがコピーされます。 この .apk ファイルを Android 端末にインストールすれば、アプリとして利用することができます。 共有ワーク Dir 以外にも、仮想環境側では多数のファイルがダウンロード・生成されています。 Samba を使った 仮想環境側ホーム Dir の共有を有効に設定する方法は後述します。 具体的な挙動は、Vagrantfile manifests\mozc.pp scripts\sync.sh に記述されています。 ここまででダウンロードされるファイルは下記の通りです。 下記の正確性については、このサイトのスクリプト・設定ファイルをご自身で充分検証することを推奨します。
http://files.vagrantup.com/precise32.box Vagrant で利用できる Ubuntu 12.04 32bit 版インストール後のディスクイメージ .box ファイルは有志により多数公開されているが、提供元の保証はない Ubuntu 公式の cloud-images.ubuntu.com 提供の .box を選ぶ考え方もあるが、 Vagrant 公式の vagrantup.com で提供されている .box を信用しないのであれば、 そもそも Vagrant そのものをインストールせず、VirtualBox を自分で設定すべき apt-get update Ubuntu 公式リポジトリのパッケージ更新情報 apt-get install ant g++ make python subversion openjdk-6-jdk Ubuntu 公式リポジトリのパッケージ Mozc 公式サイトの手順 で指定されている apt-get install pkg-config libqt4-dev libzinnia-dev Ubuntu 公式リポジトリのパッケージ 標準ビルドに必要だが precise32.box に含まれない apt-get install python-cairo samba Ubuntu 公式リポジトリのパッケージ このサイトのカスタマイズ(文字画像埋め込み)に必要(Samba は任意) http://dl.google.com/android/android-sdk_r22.0.1-linux.tgz Google 公式サイトの Android SDK Mozc 公式サイトの手順 では ADT Bundle が推奨されているが、 使用ディスク容量と自動化の容易さを考慮して SDK Tool Only を採用 http://dl.google.com/android/ndk/android-ndk-r8e-linux-x86.tar.bz2 Google 公式サイトの Android NDK android update sdk -u -t build-tools-17.0.0,extra-android-support,android-17,platform-tool,tool Android SDK の更新 フィルタオプション -t で必要なものだけに絞り込んでいる http://src.chromium.org/svn/trunk/tools/depot_tools Chromium(≒OSS 版 Google Chrome) 公式サイトの ツール Mozc 公式サイトの手順 で指定されている depot_tools/gclient が標準版 Mozc のソース取得に使用される http://mozc.googlecode.com/svn/trunk/src Mozc 公式サイトの標準版 Mozc のソース

仮想環境の終了と削除

vagrant up で起動している仮想環境を終了するには、コマンドラインから、共有ワーク Dir 内で
C:\vagrant\mozc>vagrant halt
と入力します。 この場合、再度 vagrant up と入力すれば、仮想環境を再起動できます。 2回目以降の vagrant up は、開発環境構築用のダウンロードとインストールが不要な分、早く起動できます。 文字入力アプリの開発が完了して仮想環境が不要となった場合や、あるいは 仮想環境の構築から全てをやり直す場合、コマンドラインから、共有ワーク Dir 内で
C:\vagrant\mozc>vagrant destroy
と入力します。 この場合、仮想環境は完全に削除され、使用ディスク容量もほとんどが回復します。 vagrant up と入力すれば再度開発環境を構築できますが、内容は完全に初期化されています。 仮想環境側に必要なファイルがある場合、削除前にご自身でバックアップを取っておいてください。 Ubuntu 12.04 のディスクイメージまで削除したい場合は、下記の通り入力してください。
C:\vagrant\mozc>vagrant box remove mozc
Vagrant や VirtualBox も不要であれば、ホスト OS の仕組みに従ってアンインストールしてください。 共有ワーク Dir については、仮想環境全体と比べると、使用ディスク容量も小さいですので、 文字入力アプリ使用期間中は、トラブル発生時に調査できるように、保存しておくことを推奨します。

インストール

ビルドされた .apk ファイルを、インストールしたい端末で実行すると、アプリとしてインストールされます。 Google日本語入力を使ったことがない方は、あらかじめインストールして動作を試しておくことを推奨します。 又、カスタマイズ版の前に、標準版の Mozc をインストール、動作確認しておくことも推奨します。 これらの手順を省略すると、カスタマイズ版の動作で問題が起きた時に、原因の推定が難しくなります。 .apk ファイルを Android 端末に送る方法はいくつかあります。
・メールに添付して端末のメールアドレスに送り、メーラアプリで添付ファイルを実行 ・ウェブ(ホームページ)にアップロードして、ブラウザアプリでダウンロード・実行 ・カードリーダでSDカードにコピーし、端末に差し替えて、ファイラアプリから実行 ・端末を USB 接続し、本体メモリかSDカードに転送して、ファイラアプリから実行 ・端末を USB 接続し、Android SDK のコマンド adb install *.apk でインストール
既にファイラアプリなどをインストールして Android 端末上でファイルを扱うこと慣れている方、 Android アプリの開発経験がある方は、ご自身の好みの方法でインストールしてください。 それらに不慣れな方だと、通常はメールを使う方法が一番簡単確実かと思いますが、 Mozc の .apk はかなりサイズが大きいため、サイズ制限で送信エラーになるかもしれません。 その場合、例えば Android 端末のために Google アカウントは持っているでしょうから、Gmail を使って、 パソコンからメールを新規作成、.apk を添付としてアップロード、自分宛に送信するか下書きで保存して、 Android 端末の Gmail アプリでそのメールを開いて添付をダウンロードする、など工夫してください。 ウェブ経由であれば、Google ドライブなど、ファイル共有サービスを使うのも一案です。 USB ケーブルで、例えば写真などを読み出すような要領で .apk を書き込んだ後、 ファイラアプリをお使いでない方は、ブラウザアプリのアドレス欄から実行することもできます。 USB 接続して開いたフォルダで、サブフォルダを開かずに、トップレベルにコピーした場合、 ブラウザアプリのアドレス欄に、SDカードの URL(機種によって異なる)と .apk ファイル名を続けて、
file:///sdcard/MozcForAndroid-debug.apk file:///sdcard/YourAppName-debug.apk
のように入力すると、機種によって若干流れは異なりますが、インストール画面に進めるはずです。 /sdcard/ の部分は機種によって異なるので、機種のマニュアルなどで調べる必要がありますが、 参考:外部メモリ | Android(TM) 技術情報 | au /sdcard/ /mnt/sdcard/ /storage/sdcard0/ を順に試せば多くの機種で通ると思います。
左のようなダイアログが表示された場合、ダウンロード を選ぶと、すでにSDカード上にあるファイルが、 ダウンロード用フォルダに対してコピーされるという余分な挙動が起きますが、ブラウザアプリの ダウンロード履歴に記録されるので、インストール操作をやり直す場合、多少簡単に操作できます。 オンライン再生 を選ぶと、その場所からコピー動作なしでインストールしようとします。 右のようなダイアログは、メール経由やウェブ経由のインストールでも表示されることがあります。 どちらを選んでもインストール画面に進みますが、上は元々端末に入っている仕組み、 下は 後に追加された仕組み で、おそらくは Google 検索のクロウラーなどから事前に発見された、 公式ストア以外のウェブサイトに置かれたアプリに対して、事前にセキュリティチェックを行っておき、 その結果と照合して、危険が見つかっていれば警告する仕組みを機能させるものだと思われます。 ご自身でビルドしてネット公開せず直接インストールする場合、原理上効果はないと思われますが、 何の確認も行わない元々の仕組みを選ぶ理由もないので、下を選んでおくのがよいでしょう。 ご自身でビルドしたアプリは、その時点で公式ストアに上がっていないため、提供元不明として警告されます。
これは開発者の身元を審査しているわけではなく、単にダウンロード元が公式ストアではない場合の警告で、 一般に、開発中のアプリを公式ストアにあげる前に動作確認する場合でも、設定画面でのチェックが必要です。 同じアプリを公式ストアにあげて、公式ストアからダウンロードすると、この警告は表示されません。 左の画像のダイアログが出たら、設定 を選んで右の画面に移動し、画像ではダイアログのすぐ下の、 不明な提供元 をチェックすると右の画像のダイアログが表示され、OK でインストール可能になります。 機種によって、設定画面のレイアウトや文章の細部など、異なる場合もあるので読み替えてください。 尚、この順序だとインストール操作をもう一度行う必要があるので、右の画面の出し方が分かる方は、 予め設定画面でこの項目をチェックしてからインストール操作を始めるほうが手順が少なくて済みます。 インストール完了後は、この項目のチェックを元通りに外しても、アプリの動作に影響はありません。 Google日本語入力でも、標準版 Mozc でも、Wnn 派生版や Simeji などの他の文字入力アプリでも、 インストールした文字入力アプリを有効にする際には、個人情報収集についての警告が表示されます。 参考:Google日本語入力 開発者さんのお一人この警告に関連する投稿 関連記事 関連記事 尚、機種(Android のバージョン?)によっては、この警告が出ないものもあるようです。 筆者がスクリーンショットを撮っている端末ではこの警告は表示されず、参考画像が撮れませんでした。 警告の全文は、上記参考 URL に記載されています。 カスタマイズ版 Mozc でも同じ警告が出ますが、全ての文字入力アプリに対して、有効にする前の警告で、 実際にアプリの挙動を監視した結果、怪しい振る舞いが検出された、という警告ではありません。 開発者でない方は、上記2つの警告を不安に感じるかもしれませんが、このカスタマイズは開発者向けに 公開しているものであり、上記警告が不安で受け入れられない方は利用できないことをご了承ください。 この不安を軽減するため、カスタマイズ版 Mozc では、通信に関するアプリの権限を削除しています。
左:標準版 Mozc / 右:カスタマイズ版 Mozc
標準版 Mozc が送信する情報の種類についても、前述の参考 URL に記載されています。 ソースとバイナリをそれぞれ公開しているとしても、そのバイナリが本当に その公開ソースからビルドされたものか、公開ソースには安全なコードだけを掲載し、 バイナリは実は不正なコードを追加してビルドしているのか、利用者には判断できません。 このサイトでは、バイナリ配布は行わず、ソースからビルドする方法でだけの配布とし、 更に、変換精度向上のための安全な統計的情報であっても、Android OS のシステムに禁止されて 全ての送信処理が失敗するように、アプリから通信に関する権限を削除して配布しています。 標準版の通信処理を強制的に失敗させるので、ここが原因で正常動作しない可能性は残ります。 尚、文字入力アプリの通信権限が削除されていても、通信権限を持つ別の不正アプリと連携し、 情報収集と外部送信を分担する手口も考えられますので、それだけでは確実に安全とは言えません、 セキュリティに絶対はないですが、ご自身でソースからビルドすることが最も安全に近いと思われます。 上記を受け入れてインストールし、入力方法を選択した後、文字入力を試してください。
左:標準版 Mozc / 右:カスタマイズ版 Mozc
標準の Mozc では、キートップ画像の文字画像パスが削除されているため、 一部のファンクションキー以外、キートップには何も表示されませんが、それで正常です。 辞書データも変更され、変換精度は異なるようですが、Google 日本語入力と概ね同等の挙動になるはずです。 標準版 Mozc の正常動作が確認できたら、同様にカスタマイズ版 Mozc をインストールし、 同様に動作すること、キートップ画像の復元などが行われていることを確認してください。 アプリ名が YourAppName のままですが、まずはそのままで正常動作を確認してください。 アプリ名を変更してビルドする方法は、次章で説明します。 正常動作が確認できて、とにかくこのサイトのカスタマイズ版が使えればいい、細かい説明は要らない、 他人へのアプリ配布はしない、アプリ名にもこだわらない、という方は、これ以降は読まなくても結構です。 このサイトでは、不具合修正も含め、一切のサポートは行わないことをご了承の上で、ご利用ください。 アプリのドキュメントやヘルプなどは用意していませんので、利用するだけだが 説明代わりにカスタマイズ内容を把握しておきたい、という方は、 具体的なカスタマイズ方法などは読み飛ばしながら以降も読み進めてください。

設定変更

アプリID・アプリ名の変更、起動時のビルド動作の変更、Samba を有効にする変更を説明します。 尚、1回目の vagrant up 時は、設定を一切変更せず、初期状態のままで、全てビルドすることを推奨します。 設定変更は1回目のビルド・インストール・動作確認が終わってから行い、問題があれば元に戻してください。

アプリID・アプリ名の変更

Mozc に限らず、カスタマイズアプリを配布する場合、アプリID(Android PackageName)の変更が必須です。 変更しないと、標準のアプリ(及び変更を怠った他のカスタマイズアプリ)と衝突しインストールできません。 又、技術的な問題とは別に、利用者が標準版と区別できるように、アプリ名の変更も事実上必須でしょう。 配布しない場合、mozc.android.yourname.yourappnameYourAppName のままでよいなら変更不要です。 しかし自分だけで使う場合でも、自分専用のアプリID・アプリ名と考えて、なるべく変更しておいてください。 共有ワーク Dirscripts\replace.py を、テキストエディタで開いてください。 最近の Windows のメモ帳アプリは UTF-8 を扱えますが、Linux 用の改行コードは扱えないようですので、 テキストエディタをお持ちでない方はインストールしてください。 先頭付近に、
myapp = { 'appid': 'mozc.android.yourname.yourappname', 'apkfile': 'YourAppName', 'appname_en': 'YourAppName', 'appname_ja': 'YourAppName', 'fullname_en': 'YourAppName for Android', 'fullname_ja': 'YourAppName for Android', 'developer_en': 'Mozc Project Team / Customized by YourName', 'developer_ja': 'Mozc Project Team / Customized by YourName', 't_url': 'http://code.google.com/p/mozc/', 'p_url': 'http://code.google.com/p/mozc/', }
という定義があるので、ID と名前を、他のアプリと区別できるように変更してください。 次に、共有ワーク Dirscripts\custom.sh の下記の行、初期状態では6行目、
python build_mozc.py gyp --target_platform=Android --android_application_id mozc.android.yourname.yourappname
の末尾の ID を、replace.py の appid と全く同じ(クォートは不要)に書き換えてください。 1文字でも不一致だとエラーになるので、手入力せず、コピー&ペーストするのが確実です。 ID は書式の制約が厳しいので、詳しくない方は、yournameyourappname のそれぞれを、最初の1文字は 半角英小文字で、2文字目以降は半角英小文字、半角数字、半角下線 '_' だけを使って書き直してください。 '_' 以外の記号、空白、英大文字、全角文字は使わないでください。 mozc.android. までは変更しないでください。 詳しい方は、Android の PackageName の制約に従って、自由に書き直してください。 通常、所有するドメイン名を逆につないだ後にアプリ名を付けるのが慣習のようです。 apkfile はファイル名として使える文字で書き直してください。 半角英数字と半角下線 '_' 半角ハイフン '-' 程度にしておくのが無難だと思います。 名前(アプリ名・アプリフルネーム・開発者名)は比較的自由に付けられます。 試しに書いてみてエラーにならなければ使えるという考え方でも大丈夫だと思います。 半角シングルクォート(アポストロフィ)"'" は、前に半角逆スラッシュ(円記号)'\' を付ければ使えます。 t_url は、設定画面のモバイル利用規約の項目の、 p_url は、設定画面のプライバシーポリシーの項目の URL です。 配布しない場合はそのままで構いませんが、配布する場合はページを用意して差し替えてください。 これらを変更した後、次章の、起動時のビルド動作の変更は行わずに、既に行っている場合は初期状態に戻して vagrant halt vagrant up で再起動すると、変更したアプリIDとアプリ名を反映してアプリが作成されます。 アプリ名が変更できて、このサイトのカスタマイズ版が使えればいい、細かい説明は要らない、 他人へのアプリ配布はしない、という方は、前章同様、これ以降は読まなくても結構ですので、 このサイトでは、不具合修正も含め、一切のサポートは行わないことをご了承の上で、ご利用ください。 尚、設定画面のオープンソースソフトウェアの項目の表示内容は下記にあります。
src/android/assets/credits_en.html src/android/assets/credits_ja.html
利用するフォント・ライブラリ等のクレジット・ライセンス表示の追加があればここに行うとよいでしょう。 但し、このサイトのカスタマイズではこれらの修正には対応していませんので、上記を参照・編集するには、 Samba による共有を有効に設定するか、ログインして vi などを使用する、もしくは 共有ワーク Dir
scripts/search/android/assets/credits_en.html.fix_myapp.1 scripts/search/android/assets/credits_ja.html.fix_myapp.1 scripts/replace/android/assets/credits_en.html.fix_myapp.1 scripts/replace/android/assets/credits_ja.html.fix_myapp.1
に、./replace.py fix_myapp 用の検索用・置換用テキストをご自身で追加してください。

起動時のビルド動作の変更

2回目以降の vagrant up は、開発環境構築用のダウンロードとインストールが行われない分早くなりますが、 初期状態では、vagrant up するたびに、標準版 Mozc とフルカスタマイズ版 Mozc を 順にクリーンビルド(フルビルド・リビルド)するように設定されています。 クリーンビルドを標準版とカスタマイズ版の2回分行うと、仮想環境を再起動する度に数分程度かかります。 そこで、SSH などで、仮想環境にログインして、コマンドラインで操作する方法が分かる方は、 vagrant up 時にはクリーン・ビルドを一切行わないように設定ファイルを変更することができます。 一方、SSH・ログイン・コマンドラインの操作などに不慣れな方は、vagrant up 時に自動ビルドされる設定の ままにしておいて、vagrant halt vagrant up をビルドコマンドの代用として利用することもできます。 この場合でも、標準版のクリーン・ビルドとカスタマイズ版のクリーンは飛ばして、カスタマイズ版の 通常ビルド(差分ビルド)だけを行うように変更すれば、起動時間を数十秒程度まで短縮できるでしょう。 ホスト側のテキストエディタで 共有ワーク Dirmanifests\mozc.pp を開き、末尾付近に移動します。 初期状態では
exec { 'scripts': require => Class['android'], command => "/bin/cp -a /vagrant/scripts/* $homedir"; 'sync.sh': require => Exec['scripts'], command => "/bin/sh $homedir/sync.sh"; 'default.sh': require => Exec['sync.sh'], command => "/bin/sh $homedir/default.sh"; 'custom.sh': require => Exec['default.sh'], command => "/bin/sh $homedir/custom.sh"; # 'build.sh': require => Exec['sync.sh'], command => "/bin/sh $homedir/build.sh"; }
となっています。他の章で、起動時のビルド動作の変更を初期状態に戻す、とあれば、上記に戻してください。 上記の箇所を、
exec { 'scripts': require => Class['android'], command => "/bin/cp -a /vagrant/scripts/* $homedir"; 'sync.sh': require => Exec['scripts'], command => "/bin/sh $homedir/sync.sh"; # 'default.sh': require => Exec['sync.sh'], command => "/bin/sh $homedir/default.sh"; # 'custom.sh': require => Exec['default.sh'], command => "/bin/sh $homedir/custom.sh"; # 'build.sh': require => Exec['sync.sh'], command => "/bin/sh $homedir/build.sh"; }
の通りコメントアウトすると、vagrant up 時に一切のクリーン処理・ビルド処理が行われなくなります。 この場合、ログインして 仮想環境側ホーム Dir から ./build.sh 等を実行してください。 仮想環境へのログイン手順と、カスタマイズを個別に適用する方法は、後述します。 上記の箇所を、
exec { 'scripts': require => Class['android'], command => "/bin/cp -a /vagrant/scripts/* $homedir"; 'sync.sh': require => Exec['scripts'], command => "/bin/sh $homedir/sync.sh"; # 'default.sh': require => Exec['sync.sh'], command => "/bin/sh $homedir/default.sh"; # 'custom.sh': require => Exec['default.sh'], command => "/bin/sh $homedir/custom.sh"; 'build.sh': require => Exec['sync.sh'], command => "/bin/sh $homedir/build.sh"; }
の通りコメントアウトを付け外しすると、vagrant up 時にカスタマイズ版の通常ビルドだけを行います。 次章で Samba を有効にして、ホスト側のテキストエディタで \\mozc\src\ 以下を任意に編集したり、 あるいは、カスタマイズを個別に適用する場合、カスタマイズの章に従って 共有ワーク Dirscripts\custom.sh を編集して、vagrant halt vagrant up でカスタマイズ版の通常ビルドを行い、 その際に 共有ワーク Dirbuild\ 以下に、仮想環境側で生成された .apk ファイルと ビルドログファイル build.log がコピーされるので、それらを確認しながら開発を進めてください。

Samba による共有設定を有効にする変更

Samba を使って 仮想環境側ホーム Dir 以下をホスト側とファイル共有する設定を有効にすることもできます。 共有ワーク Dir は、本来ホスト側のフォルダを仮想環境側から読み書きしているため、 仮想環境側から見ると制約が多く、ここに Mozc のソースを置いてビルドするのは好ましくないため、 本来仮想環境側の、vagrant ユーザのホーム Dir にソースを置いてビルドしています。 Mozc のソースをホスト側のテキストエディタを使って直接編集したい方は、共有を設定するとよいでしょう。 ソースを直接参照・編集しない方、vi エディタなどが得意な方は変更の必要はありません。 1回目の vagrant up 前に設定すると、10分経過辺りで確認ダイアログが出て処理が一時止まるため、 1回目は設定変更なしで最後まで動かして、2回目以降の起動前に設定するのがよいでしょう。 共有ワーク Dir の直下の Vagrantfile を開いてください。
# Create a private network, which allows host-only access to the machine # using a specific IP. # config.vm.network :private_network, ip: "192.168.33.10"
上記の設定行、初期状態だと28行目のコメントアウトを外して有効にしてください。
# Create a private network, which allows host-only access to the machine # using a specific IP. config.vm.network :private_network, ip: "192.168.33.10"
尚、Samba そのものの設定ファイルは初期状態で組み込み済みです。 上記の変更によって、Vagrant が VirtualBox のネットワーク設定を変更するようになり、 その結果、Samba が使えるようになるものと、筆者は認識しています。 ネットワークに詳しい方は、必要に応じて IP を変更してください。 Samba の設定にこだわりのある方は、共有ワーク Dir の直下の smb.conf を直接編集してください。 これで、 仮想環境側ホーム Dir と、その下に作成されている Mozc のソース Dir を ホスト側からネットワークパス \\mozc\vagrant\ と、ユーザ名・パスワード vagrant で読み書きできます。 このサイトのスクリプトを使わずに、独自にソースを修正することにも使えますし、 又、標準版・カスタマイズ版とも、1回目の vagrant up 時と同じ状態に戻してクリーンビルドしたければ、 前章の起動時のビルド動作の変更は初期状態に戻し、Samba 経由で
\\mozc\vagrant\src\ \\mozc\vagrant\backup\ \\mozc\vagrant\custom\
を削除して、vagrant halt vagrant up することで、1回目同様にビルドすることができます。 その場合も、アプリID・アプリ名の変更など、スクリプトへの変更は有効のままですので、 完全に同じ状態に戻したければ、共有ワーク Dir のほうも .zip から展開し直してください。 又、上記変更で IP が割り当てられることによって、例えば sudo apt-get install apache2 などで ウェブサーバなどを追加して、割り当てた IP でアクセスすることや、後述の SSH でのログインでも、 割り当てた IP と標準の SSH ポート 22 でコネクトすることができるようになります。

仮想環境へのログイン・ビルド

仮想環境にログインして、コマンドラインでビルドする手順を説明します。 vagrant up をビルドコマンドの代用とする場合は必要ありません。

VortualBox からログイン

特に Windows をお使いで、あまり詳しくない方は、こちらの方法を使ってください。 Windows でも SSH クライアントをご自身で用意できる方や、 Mac、Linux の方は、SSH を使うログイン方法を後述します。 Mac、Linux でも、SSH でうまくいかない場合、こちらの方法を使ってください。 vagrant up で仮想環境を起動して、まだ終了していない場合、起動処理が完了して 入力待ちになっているのを確認して、一度 vagrant halt で仮想環境を終了します。 以後は vagrant up を行わず、VirtualBox のメイン画面から起動するようにします。 スタートメニュー・スタート画面などから、VirtualBox を起動します。
メイン画面の左の一覧から Mozc のビルド環境を選択します。 以前から VirtualBox を使っていたのでなければ、1つしか表示されていないはずです。 複数ある方は、mozc_ で始まるものを選択します。 メイン画面の上のツールバーから、起動を押します。 仮想環境のログイン画面が開きます。 起動中にダイアログが2回表示されますが、それぞれ OK を押して閉じます。
仮想環境の画面をクリックすると、ダイアログが表示されますが、キャンセルを押して閉じます。
ログイン画面では、ユーザ名・パスワードとして、それぞれ vagrant と入力します。
Ubuntu 12.04 LTS mozc tty1 mozc Login: vagrant Password:
パスワードは入力文字が表示されませんが、同じように入力します。 再度ユーザ名を要求される場合、ユーザ名かパスワードが誤っています。 再度よく確認して入力してください。 ログインできたら、共有ワーク Dir を設定します。
vagrant@mozc:~$ sudo mount -t vboxsf /vagrant /vagrant
これで、ホスト側の 共有ワーク Dir が、例の通りならば C:\vagrant\mozc\ が、 仮想環境側の /vagrant/ として共有され、同じ内容で読み書きできます。 この方法でログインする場合、共有ワーク Dir の設定は毎回行ってください。 この方法で起動した仮想環境を終了する場合、ウィンドウの閉じるボタンを押して 仮想マシンを閉じる ダイアログを表示し、仮想マシンの電源オフ を選んで OK を押します。 次章では他のログイン方法を説明しますので、次々章まで読み飛ばしてください。

SSH でログイン

こちらは前章と比べると、ある程度知識のある方向きです。 コマンドプロンプトかターミナルから vagrant up で仮想環境を起動しているものとします。 起動処理が完了して入力待ちになっていることを確認し、仮想環境にログインします。
C:\vagrant\mozc>vagrant ssh
Mac、Linux、あるいは Windows でも cygwin などの ssh.exe が使える場合で、 上記でログイン(ユーザ名・パスワード)を要求されるところまで進んだ場合は、そのまま ユーザ名・パスワードとして、それぞれ vagrant を入力してログインしてください。 Windows の場合など、上記で SSH が起動できなかった場合、代わりに接続に必要な情報が表示されます。 通常 IP 127.0.0.1(localhost)の Port 2222 が、使用中なら Port 2200 から順次振られるようです。 Samba を有効にする変更を行っていれば、IP 192.168.33.10(又は変更した IP)の Port 22 も使えます。 SSH クライアント、Windows の場合は PuTTY・TeraTerm などをご自身で用意して、表示情報を元に接続し、 ユーザ名・パスワードとして、それぞれ vagrant を入力してログインしてください。 前章と異なり、共有 Dir は自動で設定されます。 この方法でうまくいかない場合、vagrant halt で仮想環境を終了し、前章の方法でログインしてください。

標準版 Mozc のビルド

vagrant up で標準版をビルドする方法は、設定変更の章で説明した通りです。 コマンドラインで下記の順に実行すると、このサイトカスタマイズを適用せず、標準版に戻してビルドします。
vagrant@mozc:~$ cd vagrant@mozc:~$ rm -rf src vagrant@mozc:~$ rm -rf backup vagrant@mozc:~$ rm -rf custom vagrant@mozc:~$ ./sync.sh ; ./default.sh
これで、 ホスト側の 共有ワーク Dirbuild\MozcForAndroid-debug.apk にアプリが作成されます、 ソースや生成済みファイルを一度消して処理をやり直すため、数分程度時間がかかります。 以降は、./build.sh だけで、数十秒程度で標準版がビルドされます。 カスタマイズ版のビルドは以降の章の手順に従ってください。

フルカスタマイズ版 Mozc のビルド

ご自身でも Mozc をカスタマイズしてみたい方は、この手順ではなく、次章以降の 個別カスタマイズ手順を、1つずつ確認しながら進めることを推奨します。 vagrant up でフルカスタマイズ版をビルドする方法は、設定変更の章で説明した通りです。 コマンドラインで下記の順に実行すると、1回目の vagrant up 時と同様に、 このサイトのカスタマイズを全て適用してビルドします。
vagrant@mozc:~$ cd vagrant@mozc:~$ ./custom.sh
これで、 ホスト側の 共有ワーク Dirbuild\YourAppName-debug.apk にアプリが作成されます、 設定変更の章に従って apkfile を変更している場合、そのファイル名になります。 ./custom.sh 内で、生成済みファイルを消して処理をやり直すため、数分程度時間がかかります。 以降は、./build.sh だけで、数十秒程度でフルカスタマイズ版がビルドされます。 標準版に戻すには前章の、カスタマイズを個別に適用してビルドするには次章以降の各手順に従ってください。 カスタマイズを個別に適用するため、共有ワーク Dirscripts\custom.sh を変更した後、 全てのカスタマイズを適用してビルドするように戻す場合、下記の初期状態に戻してから実行してください。
cd /home/vagrant python replace.py fix_myapp 2>&1 | tee custom.log cd /home/vagrant/src python build_mozc.py clean --target_platform=Android python build_mozc.py gyp --target_platform=Android --android_application_id mozc.android.yourname.yourappname python build_mozc.py build_tools -c Release python build_mozc.py build android/android.gyp:android_manifest android update project -s -p android --target android-17 python build_mozc.py build android/android.gyp:apk -c Debug_Android 2>&1 | tee /home/vagrant/build.log cd /home/vagrant python gen_svg.py python gen_kbd.py python replace.py fix_myapp fix_tilde fix_flick fix_layout add_kbd2 add_kbd3 add_flick 2>&1 | tee -a custom.log cd /home/vagrant/src python build_mozc.py build android/android.gyp:apk -c Debug_Android 2>&1 | tee /home/vagrant/build.log
尚、上記の例ではアプリIDは初期値になっていますが、ここは戻さずに設定変更の章で変更したままにします。

カスタマイズ

以降は、主にご自身でも Mozc をカスタマイズしてみたい開発者向けの記述を含みます。 ビルドして利用したいだけだが、カスタマイズ内容は詳しく理解しておきたい、という方は、 具体的な修正方法や、カスタマイズの難易度云々といった記述は読み飛ばして参考にしてください。

独自のアプリID(Android PackageName)・アプリ名に変更する

ビルドしたカスタマイズ版 Mozc を配布する場合は、標準版のアプリID・アプリ名や、 初期状態の mozc.android.yourname.yourappnameYourAppName ではなく、 独自のアプリID・アプリ名を設定してこのカスタマイズを適用する必要があります。 2013年6月末現在、 Mozc には、アプリIDを変更してビルドする機能はあるものの、それだけではいくつか不具合が発生します。 Mozc 公式サイト には下記の記載があります。
CAUTION Currently the application package is fixed (org.mozc.android.inputmethod.japanese). Don't publish the built package. If you want to publish, use --android_application_id on build_mozc.py gyp command and fix build bugs.
./replace.py fix_myapp を適用すると、 設定変更の章で行った、アプリID・アプリ名などの変更を反映して、関連する不具合も修正します。 一方、設定変更の章でアプリID・アプリ名などを変更していても、./replace.py fix_myapp の適用までは、 標準版のアプリID・アプリ名でビルドされるので、例えば、比較のために、標準版と、カスタマイズ版を 共存させたいが、標準版でもキートップ画像だけは埋め込みたい、などといった場合、前々章の、 標準版をビルドできる状態で、このカスタマイズは実行せずに、以降のカスタマイズを、例えば次章の ./gen_svg.py./build.sh を実行すると、標準版に対してカスタマイズを行うことができます。 コマンドラインで下記の順に実行すると、他のカスタマイズを適用せず、このカスタマイズだけを適用します。
vagrant@mozc:~$ cd vagrant@mozc:~$ ./replace.py fix_myapp vagrant@mozc:~$ cd src vagrant@mozc:~$ python build_mozc.py clean --target_platform=Android vagrant@mozc:~$ python build_mozc.py gyp --target_platform=Android --android_application_id mozc.android.yourname.yourappname vagrant@mozc:~$ python build_mozc.py build_tools -c Release vagrant@mozc:~$ python build_mozc.py build android/android.gyp:android_manifest vagrant@mozc:~$ android update project -s -p android --target android-17 vagrant@mozc:~$ ./build.sh
build_mozc.py clean で、生成済みファイルを消して処理をやり直すため、数分程度時間がかかります。 以降は ./build.sh だけで、数十秒程度でこのカスタマイズを適用した状態でビルドできます。 一度ソースを消して標準版に戻した場合、必要であれば再度適用してください。 vagrant up でビルドする場合、共有ワーク Dirscripts\custom.sh を開き、
cd /home/vagrant python replace.py fix_myapp 2>&1 | tee custom.log cd /home/vagrant/src python build_mozc.py clean --target_platform=Android python build_mozc.py gyp --target_platform=Android --android_application_id mozc.android.yourname.yourappname python build_mozc.py build_tools -c Release python build_mozc.py build android/android.gyp:android_manifest android update project -s -p android --target android-17 #python build_mozc.py build android/android.gyp:apk -c Debug_Android 2>&1 | tee /home/vagrant/build.log #cd /home/vagrant #python gen_svg.py #python gen_kbd.py #python replace.py fix_myapp fix_tilde fix_flick fix_layout add_kbd2 add_kbd3 add_flick 2>&1 | tee -a custom.log #cd /home/vagrant/src python build_mozc.py build android/android.gyp:apk -c Debug_Android 2>&1 | tee /home/vagrant/build.log
と変更し、起動時のビルド動作の変更は初期状態に戻して、vagrant up を実行します。 以降は、カスタマイズ版の通常ビルドだけに変更しても、このカスタマイズを適用した状態でビルドされます。 尚、上記の例ではアプリIDは初期値になっていますが、これは戻さずに設定変更の章で変更したままにします。 以降のカスタマイズでは、この行はコメントアウトになりますが、アプリIDを初期値に戻さないのは同様です。 ./replace.py は、実行時に backup/ に存在しないファイルは src/ からコピーして、 変更は常に backup/ のファイルを読んで適用し、src/ のファイルを上書きして書き出します。 それぞれのカスタマイズを順次適用する場合、後から適用する際に、先に適用した内容を上書きしないように、 ./replace.py fix_myapp fix_tilde のように、先に適用したものも並べて(順序は任意)指定してください。 ./replace.py fix_myapp で生成されるファイル(replace.py で指定したアプリIDに対応するパスで生成)
src/android/gen/mozc/android/yourname/yourappname/MozcService.java
./replace.py fix_myapp で修正されるファイル
src/mozc_version.txt src/android/AndroidManifest.xml src/android/AndroidManifest_template.xml src/android/ant.properties src/android/resources_oss/res/values/application.xml src/android/resources_oss/res/values-ja/application.xml src/android/resources_oss/res/xml/pref_about.xml src/android/resources_oss/res/xml/pref_dictionary.xml src/android/resources_oss/res/xml/pref_software_keyboard.xml src/android/src/com/google/android/inputmethod/japanese/ KeyEventUtil.java preference/CreditsActivity.java preference/MozcMultiSelectListPreference.java view/SymbolMajorCategoryButtonDrawableFactory.java src/build_tools/mozc_version.py
アプリID変更時のビルドの不具合としては、3つの Java クラスだけ、リソースクラス R.java への参照で、 標準の Mozc の Java パッケージを直接参照していて、生成先が変更されることでビルドエラーになります。 他の多くのクラスでは Java パッケージを変更して参照しており、3クラスだけが修正漏れかと思われます。 動作の不具合では、標準のアプリIDの設定画面のサブ画面を開こうとして、設定サブ画面が開けなくなります。 上記は修正していますが、それですべての問題を解消できている保証はありません。 又、修正方法が適切である保証もありません。 標準版とカスタマイズ版の Mozc を同じ端末上で共存させるには、Android サービス名の変更も必要です。 これには、カスタマイズ版の Java パッケージで、標準の MozcService.java を継承する Java クラスを作り、 AndroidManifest.xml のサービス名の指定を、カスタマイズ版の Java パッケージに変更します。 技術的には上記までで共存動作しますが、利用者が区別できるよう、アプリ名の変更も事実上必須です。 ./replace.py fix_myapp では、設定変更の章で変更した、アプリ名・開発者名等の変更も併せて行います。

キートップ画像・ポップアップ画像に文字画像を埋め込む

Mozc では、おそらくフォントのライセンスの関係かと思われますが、 キートップ画像・ポップアップ画像から文字画像パスを削除して配布されています。 ./gen_svg.py を適用すると、開発環境上のフォントから SVG の文字画像パスを生成して埋め込めます。 コマンドラインで下記の順に実行すると、他のカスタマイズを適用せず、このカスタマイズだけを適用します。
vagrant@mozc:~$ cd vagrant@mozc:~$ ./gen_svg.py vagrant@mozc:~$ ./build.sh
以降は ./build.sh だけで、このカスタマイズを適用した状態でビルドできます。 一度ソースを消して標準版に戻した場合、必要であれば再度適用してください。 vagrant up でビルドする場合、共有ワーク Dirscripts\custom.sh を開き、
#cd /home/vagrant #python replace.py fix_myapp 2>&1 | tee custom.log #cd /home/vagrant/src #python build_mozc.py clean --target_platform=Android #python build_mozc.py gyp --target_platform=Android --android_application_id mozc.android.yourname.yourappname #python build_mozc.py build_tools -c Release #python build_mozc.py build android/android.gyp:android_manifest #android update project -s -p android --target android-17 #python build_mozc.py build android/android.gyp:apk -c Debug_Android 2>&1 | tee /home/vagrant/build.log cd /home/vagrant python gen_svg.py #python gen_kbd.py #python replace.py fix_myapp fix_tilde fix_flick fix_layout add_kbd2 add_kbd3 add_flick 2>&1 | tee -a custom.log cd /home/vagrant/src python build_mozc.py build android/android.gyp:apk -c Debug_Android 2>&1 | tee /home/vagrant/build.log
と変更し、起動時のビルド動作の変更は初期状態に戻して、vagrant up を実行します。 以降は、カスタマイズ版の通常ビルドだけに変更しても、このカスタマイズを適用した状態でビルドされます。 ./gen_svg.py で生成・修正されるファイル
src/data/images/android/svg/*.svg custom/data/images/android/work/*.png custom/data/images/android/work/*.svg
左:標準版 Mozc / 右:カスタマイズ版 Mozc
文字画像パスの生成には、Python から cairo を使用しています。 Mozc では SVG のパスを独自パースしており、そのパーサが3次ベジェ曲線にしか対応していないため、 ImageMagick など、文字画像パスの曲線を2次ベジェ曲線で出力する画像ライブラリは利用できません。 文字画像に使うフォントを変更したい場合、フォントファイルを仮想環境側の /usr/share/fonts/ にインストールした上で、gen_svg.py の先頭付近の
fontface_h = 'Droid Sans Fallback' fontface_z = 'MotoyaLMaru'
を、利用したいフォントフェイス名(フォントファイル名ではない)に変更してください。 _h が半角文字用、_z が全角文字用です。半角全角に同じフォントフェイス名を指定することもできます。 但し、ライセンス上、このような利用法が許可されていないフォントは埋め込まないでください。 文字の表示・印刷と、フォントファイルそのものの埋め込みでは、扱いが異なるフォントもあります。 文字画像パスの利用が上記どちらに当たるか、どちらとも別扱いになるか、このサイトでは判断しかねます。 このサイトのカスタマイズの初期状態では、Android SDK に含まれるフォントの内、
Droid Sans Fallback (DroidSansFallbackFull.ttf) MotoyaLMaru (MTLmr3m.ttf) MotoyaLCedar (MTLc3m.ttf)
/usr/share/fonts/ にインストールし、Droid Sans Fallback と MotoyaLMaru を設定しています。 これらは Apache License 2 ですので、利用法には制限はないと認識していますが、 配布の際には、クレジット・ライセンスの表示条件に注意してください。 Android 版 Google日本語入力、標準の Mozc for Android の、設定画面のオープンソースソフトウェアの 項目には、Android OS の Apache License 2 の表示などが含まれているので、参考にするとよいでしょう。 設定画面のオープンソースソフトウェアの項目の表示内容は下記にあります。
src/android/assets/credits_en.html src/android/assets/credits_ja.html
利用するフォント・ライブラリ等のクレジット・ライセンス表示の追加があればここに行うとよいでしょう。 このカスタマイズでは、初期状態で指定している Droid Sans と MotoyaLMaru が、 フォントの著作権者によって、同一ライセンスで Android の一部として提供されていること、 このサイトではフォントに由来しないテキストファイルだけを配布していて、利用者がスクリプトを 元にご自身でフォントを組み込んでビルドし、私家利用するまでならばフォントの再配布に当たらないこと、 以上から、標準版 Mozc に元々含まれている、Android OS のクレジット・ライセンス表示が Droid Sans と MotoyaLMaru のクレジット・ライセンス表示を含むと見做して追記を行っていません。 フォントを埋め込んでバイナリ配布、ストア公開する方は、より厳密に判断すべきかと思います。 このカスタマイズは、Mozc for Android 以外のプラットフォーム版でも流用できるかもしれませんが、 他のプラットフォーム版のクレジット・ライセンス表示に Android OS のものが含まれていない場合、 Droid Sans と MotoyaLMaru であっても上記の考え方は適用できませんので、別途追記が必要でしょう。 フォントの中には、埋め込み・加工も自由で、クレジット・ライセンスの表示条件もない、 全くのフリーで配布されているものもあるので、そういうフォントだけを採用するもの一案です。 次章以降で必要となる、Godan 配列のフリック時に不足しているキートップ画像や、 カスタムキーボード配列で必要となる追加の画像もこのカスタマイズで同時に生成します。 標準の画像だけを生成したい場合、gen_svg.py 770 行目(ループの1行目)の
# if not os.path.isfile(root1 + svgdir + name): continue
のコメントアウトを外してください。 フリック時に切り替わるキートップ画像は、Google日本語入力では、 フリック前のキートップの文字を全て表示し、フリック方向だけ色反転していますが、 このカスタマイズでは、フリック方向の文字だけを中央に拡大表示するようになっています。 その際、句読点・濁点半濁点などの位置を示す □ 表示があると、そのまま残っています。
Godan 配列で [Nキー] を下フリック 左:Google日本語入力 / 右:カスタマイズ版 Mozc 標準版のキートップ画像はフリック方向の色が反転 カスタマイズ版ではポップアップ画像同様、フリック方向の文字を中央表示
タッチ操作の場合、フリック中は指でキートップが隠れるため、気にならないとは思いますが、 ポインティングデバイスで操作する Android 端末では違いが気になるかもしれません。 又、記号キーの顔マークらしき図形が文字画像と同様削除されているのは復元していませんし、 大⇔小のキーの特殊な文字配置も、このカスタマイズでは他のキーと同様になっています。 筆者はこれらの対応を断念したため、気になる方はご自身で修正を試みてください。

ケータイ配列英字入力・Godan 配列のフリック入力を追加・修正する

./replace.py fix_flick を適用すると、ケータイ配列英字入力と Godan 配列のフリック入力を追加・修正します。 ./gen_svg.py でフリック追加用のキートップ画像を生成しておく必要があります。 コマンドラインで下記の順に実行すると、他のカスタマイズを適用せず、このカスタマイズだけを適用します。
vagrant@mozc:~$ cd vagrant@mozc:~$ ./gen_svg.py vagrant@mozc:~$ ./replace.py fix_flick vagrant@mozc:~$ ./build.sh
以降は ./build.sh だけで、このカスタマイズを適用した状態でビルドできます。 一度ソースを消して標準版に戻した場合、必要であれば再度適用してください。 vagrant up でビルドする場合、共有ワーク Dirscripts\custom.sh を開き、
#cd /home/vagrant #python replace.py fix_myapp 2>&1 | tee custom.log #cd /home/vagrant/src #python build_mozc.py clean --target_platform=Android #python build_mozc.py gyp --target_platform=Android --android_application_id mozc.android.yourname.yourappname #python build_mozc.py build_tools -c Release #python build_mozc.py build android/android.gyp:android_manifest #android update project -s -p android --target android-17 #python build_mozc.py build android/android.gyp:apk -c Debug_Android 2>&1 | tee /home/vagrant/build.log cd /home/vagrant python gen_svg.py #python gen_kbd.py #python replace.py fix_myapp fix_tilde fix_flick fix_layout add_kbd2 add_kbd3 add_flick 2>&1 | tee -a custom.log python replace.py fix_flick cd /home/vagrant/src python build_mozc.py build android/android.gyp:apk -c Debug_Android 2>&1 | tee /home/vagrant/build.log
と変更し、起動時のビルド動作の変更は初期状態に戻して、vagrant up を実行します。 以降は、カスタマイズ版の通常ビルドだけに変更しても、このカスタマイズを適用した状態でビルドされます。 ./replace.py は、実行時に backup/ に存在しないファイルは src/ からコピーして、 変更は常に backup/ のファイルを読んで適用し、src/ のファイルを上書きして書き出します。 それぞれのカスタマイズを順次適用する場合、後から適用する際に、先に適用した内容を上書きしないように、 ./replace.py fix_flick add_flick のように、先に適用したものも並べて(順序は任意)指定してください。 ./replace.py fix_flick で修正されるファイル
src/android/resources_oss/res/xml/kbd_12keys_123.xml src/android/resources_oss/res/xml/kbd_12keys_abc.xml src/android/resources_oss/res/xml/kbd_12keys_flick_123.xml src/android/resources_oss/res/xml/kbd_12keys_flick_abc.xml src/android/resources_oss/res/xml/kbd_godan_kana.xml src/data/preedit/12keys-halfwidthascii.tsv src/data/preedit/12keys-number.tsv src/data/preedit/flick-halfwidthascii.tsv src/data/preedit/flick-number.tsv src/data/preedit/toggle_flick-halfwidthascii.tsv src/data/preedit/toggle_flick-number.tsv
2013年6月末現在、 Google日本語入力の Godann 配列には、キートップ画像には表示されていないものの、 ポップアップ画像には表示され、フリックで入力できる文字があります。
・'/': [M キー] の左フリック ・'(': [Y キー] の左フリック ・')': [Y キー] の左フリック ・':': [N キー] の左フリック ・'ん': [N キー] の上フリック ・'・': [N キー] の右フリック ・'「': [W キー] の左フリック ・'」': [W キー] の右フリック
他の文字へのフリックでは、ポップアップ画像とキートップ画像がその文字に切り替わりますが、 これらの文字では、ポップアップ画像は切り替わるものの、キートップ画像が切り替わりません。 Mozc では文字画像が削除されていますが、内部処理上、この現象を引き継いでいます。 通常時のキートップ画像は、./gen_svg.py の適用時に修正した状態で生成しています。 フリック時の切り替え用キートップ画像も ./gen_svg.py で生成していますが、 src/android/resources_oss/res/xml/kbd_godan_kana.xml で、切り替え先にも中央用の画像が指定されているため、 ./replace.py fix_flick を適用して、フリック時用の画像を指定するように修正します。
通常時のキートップ画像 左:Google日本語入力 / 右:カスタマイズ版 Mozc 上記8文字が含まれないのを追加修正 以降 [Nキー] を操作
[Nキー] をタッチ 左:Google日本語入力 / 右:カスタマイズ版 Mozc ポップアップ画像は修正前から上記8文字にも対応済
[Nキー] を上フリック 左:Google日本語入力 / 右:カスタマイズ版 Mozc ポップアップ画像は切り替わるがキートップ画像が切り替わらないのを修正
[Nキー] を下フリック 左:Google日本語入力 / 右:カスタマイズ版 Mozc 標準版のキートップ画像はフリック方向の色が反転 カスタマイズ版ではポップアップ画像同様、フリック方向の文字を中央表示
タッチ操作の場合、フリック中は指でキートップが隠れるため、気にならないものと思いますが、 他のカスタマイズと比べると、手始めに研究してみるのに手頃な修正量と難易度かと思います。
ケータイ配列英字入力
標準では、数字は、ケータイ打ち(トグル入力)では入力できて、フリック入力では入力できません。 このカスタマイズでは、数字を、トグル入力で入力できるキーの下フリックでも入力できるようにします。 又、右フリックが空いているキーに、()=+* を、フリック入力・トグル入力の両方で追加します。 標準では # が右下のキーのトグルに、ケータイ打ちでは含まれ、ケータイ+フリック入力では含まれません。 このカスタマイズでは、ケータイ+フリック入力でも右下のキーのトグルに # を含むようにします。 &1 の代わりに左上のキーから右下のキーに移動します。 標準のケータイ配列英字入力・数字入力を置き換えるため、カスタマイズ前の状態は選択できなくなります。 同様に、ケータイ配列数字入力の記号キーに、,: を、フリック入力・トグル入力の両方で追加します。 このカスタマイズはソースコードの変更を必要とせず、他の修正よりは低難易度です。 変更内容の具体例としては、上記リストの XML と TSV を参照してください。

Chrome でのパスワードの入力の不具合を改善する

2013年6月末現在、 Android 版 Google日本語入力、標準の Mozc for Android と Chrome for Android の組み合わせでは、パスワードフィールドで正常に入力することができません。 Chrome for Android Ver.28(2013年7月11日版)では、 Android 版 Google日本語入力、標準の Mozc for Android と組み合わせても 下記の不具合は発生しなくなっているようで、このカスタマイズは不要になったものと思われます。 尚、このカスタマイズでは対応できていなかった、パスワードに未確定部分が残ったままで 画面回転すると、未確定部分の入力値が伏字表示文字に置き換わる不具合は修正されていないようです。 初期状態のフルカスタマイズ版のビルドでは、このカスタマイズを含めないようにしましたが、 他のアプリで同様の不具合が発生する場合、このカスタマイズで改善できる可能性があります。 過去に有効であった修正情報として、個別カスタマイズの適用はできるように残しておきます。 具体的には、文字入力直後の、入力文字のままの表示から、時間経過で伏字表示に変わる際に、 未確定状態(下線付きの状態)が維持されず、(おそらく Mozc が意図せず)確定状態(下線なしの状態)に 変わることがあり、この時、表示だけでなく、入力値の文字までが、伏字表示用文字に置き換わってしまいます。
表示値:●●●●●●●d / 内部入力値:password ↓ 正常 表示値:●●●●●●● / 内部入力値:password
表示値:●●●●●●●d / 内部入力値:pa●sw●rd ↓ 不正 表示値:●●●●●●●● / 内部入力値:pa●sw●r●
./replace.py fix_password を適用すると、Chrome でのパスワード入力の不具合を改善します。 尚、未確定部分が残ったまま画面回転すると、同様に入力値が伏字表示文字に 置き換わる不具合もありますが、このカスタマイズでは対応できていません。 コマンドラインで下記の順に実行すると、他のカスタマイズを適用せず、このカスタマイズだけを適用します。
vagrant@mozc:~$ cd vagrant@mozc:~$ ./replace.py fix_password vagrant@mozc:~$ ./build.sh
以降は ./build.sh だけで、このカスタマイズを適用した状態でビルドできます。 一度ソースを消して標準版に戻した場合、必要であれば再度適用してください。 vagrant up でビルドする場合、共有ワーク Dirscripts\custom.sh を開き、
#cd /home/vagrant #python replace.py fix_myapp 2>&1 | tee custom.log #cd /home/vagrant/src #python build_mozc.py clean --target_platform=Android #python build_mozc.py gyp --target_platform=Android --android_application_id mozc.android.yourname.yourappname #python build_mozc.py build_tools -c Release #python build_mozc.py build android/android.gyp:android_manifest #android update project -s -p android --target android-17 python build_mozc.py build android/android.gyp:apk -c Debug_Android 2>&1 | tee /home/vagrant/build.log cd /home/vagrant #python gen_svg.py #python gen_kbd.py #python replace.py fix_myapp fix_tilde fix_flick fix_layout add_kbd2 add_kbd3 add_flick 2>&1 | tee -a custom.log python replace.py fix_password cd /home/vagrant/src python build_mozc.py build android/android.gyp:apk -c Debug_Android 2>&1 | tee /home/vagrant/build.log
と変更し、起動時のビルド動作の変更は初期状態に戻して、vagrant up を実行します。 以降は、カスタマイズ版の通常ビルドだけに変更しても、このカスタマイズを適用した状態でビルドされます。 ./replace.py は、実行時に backup/ に存在しないファイルは src/ からコピーして、 変更は常に backup/ のファイルを読んで適用し、src/ のファイルを上書きして書き出します。 それぞれのカスタマイズを順次適用する場合、後から適用する際に、先に適用した内容を上書きしないように、 ./replace.py fix_password fix_tilde のように、先に適用したものも並べて(順序は任意)指定してください。 ./replace.py fix_password で修正されるファイル
src/android/src/com/google/android/inputmethod/japanese/ MozcService.java
この修正は、内部の挙動を詳細に解析した解決対応ではなく、試行錯誤的に発見した回避対応です。 他のカスタマイズと比べても、Mozc のコード理解の参考としてはあまり役立たないと思われます。 修正方法として不適切である可能性もあり、別の場面での不具合の原因となるかもしれませんし、 パスワード入力についても修正が完全である保証はできませんのでご了承の上ご利用ください。 機種によっては伏字文字に置き換わる不具合の修正の効果がない可能性もあり得ます。 とはいえ、筆者の端末でのパスワード入力は、この修正前はほぼ常に失敗していたものが、 修正後は入力中に画面回転などしない限り概ね成功するようになり、実用性はあるものと思います。

全角チルダの入力に対応する

2013年6月末現在、 Android 版 Google日本語入力、標準の Mozc for Android では、 '〜' \u301C 波ダッシュ WAVE DASH は入力できますが、 '~' \uFF5E 全角チルダ FULLWIDTH TILDE を入力する方法がありません。 ~ z- なみ から より にょろ の変換候補では、 ガイド表示が [全] 波ダッシュ でガイド通り波ダッシュが入力されますが、 ちるだ きごう の変換候補では ガイド表示が [全] チルダ であるのに実際には波ダッシュが入力されます。 '~' \u007E 半角チルダ TILDE[半] 波ダッシュ とガイド表示されることもあります。 波ダッシュとチルダは異なる文字であり、半角の波ダッシュはあり得ないはずです。 尚、全角・半角について、このサイトでは、Mozc が
全角:Unicode UAX#11 特性値 F(全角)W(広) 半角:Unicode UAX#11 特性値 H(半角)Na(狭)N(中立)A(曖昧)
と扱っているものと想定しています。 Unicode の 例示字形の誤り、Windows のCP932変換表の誤りなど、何かと曰くのある文字ではありますが、 入力する方法がないのは問題で、望ましくは利用者が正しく区別して選択できるようにすべきでしょう。 類似字形の文字選択でガイド表示を誤るのは文字入力アプリでは致命的に思えます。 ./replace.py fix_tilde を適用すると、全角チルダ・半角チルダ・波ダッシュの不具合を修正します。 コマンドラインで下記の順に実行すると、他のカスタマイズを適用せず、このカスタマイズだけを適用します。
vagrant@mozc:~$ cd vagrant@mozc:~$ ./replace.py fix_tilde vagrant@mozc:~$ ./build.sh
以降は ./build.sh だけで、このカスタマイズを適用した状態でビルドできます。 一度ソースを消して標準版に戻した場合、必要であれば再度適用してください。 vagrant up でビルドする場合、共有ワーク Dirscripts\custom.sh を開き、
#cd /home/vagrant #python replace.py fix_myapp 2>&1 | tee custom.log #cd /home/vagrant/src #python build_mozc.py clean --target_platform=Android #python build_mozc.py gyp --target_platform=Android --android_application_id mozc.android.yourname.yourappname #python build_mozc.py build_tools -c Release #python build_mozc.py build android/android.gyp:android_manifest #android update project -s -p android --target android-17 python build_mozc.py build android/android.gyp:apk -c Debug_Android 2>&1 | tee /home/vagrant/build.log cd /home/vagrant #python gen_svg.py #python gen_kbd.py #python replace.py fix_myapp fix_tilde fix_flick fix_layout add_kbd2 add_kbd3 add_flick 2>&1 | tee -a custom.log python replace.py fix_tilde cd /home/vagrant/src python build_mozc.py build android/android.gyp:apk -c Debug_Android 2>&1 | tee /home/vagrant/build.log
と変更し、起動時のビルド動作の変更は初期状態に戻して、vagrant up を実行します。 以降は、カスタマイズ版の通常ビルドだけに変更しても、このカスタマイズを適用した状態でビルドされます。 ./replace.py は、実行時に backup/ に存在しないファイルは src/ からコピーして、 変更は常に backup/ のファイルを読んで適用し、src/ のファイルを上書きして書き出します。 それぞれのカスタマイズを順次適用する場合、後から適用する際に、先に適用した内容を上書きしないように、 ./replace.py fix_tilde fix_flick のように、先に適用したものも並べて(順序は任意)指定してください。 ./replace.py fix_tilde で修正されるファイル
src/android/gen/ org/mozc/android/inputmethod/japanese/protobuf/ProtoCandidates.java src/android/gen_for_adt/ org/mozc/android/inputmethod/japanese/protobuf/ProtoCandidates.java src/android/src/com/google/android/inputmethod/japanese/ model/SymbolCandidateStorage.java src/data/preedit/qwerty_mobile-hiragana.tsv src/data/preedit/romanji-hiragana.tsv src/data/symbol/categorized.tsv src/data/symbol/ordering_rule.txt src/data/symbol/symbol.tsv
ちるだ で変換(きごう も同様) 左:Google日本語入力 / 右:カスタマイズ版 Mozc [全] チルダ で波ダッシュが入力されるのを [全] 波ダッシュ に修正、 [全] チルダ で全角チルダの入力を別途追加、半角は修正不要
にょろ で変換(なみ から より も同様) 左:Google日本語入力 / 右:カスタマイズ版 Mozc [半] 波ダッシュ[半] チルダ に修正、全角は修正不要
入力対応は、テキストデータの修正だけでできるので、比較的低難易度です。 ガイド表示の修正は、誤りの原因まで特定した解決対応ではなく、 ガイド表示前に誤ったガイドを検知して置き換える回避対応です。 但し、回避とはいえ、他のカスタマイズと比べても難易度がかなり高いもので、 ./replace.py fix_tilde を参考に修正個所の前後を追うにもそれなりのスキルが必要でしょう。 ちたみに z- は、Google日本語入力、標準の Mozc で 特殊なローマ字変換扱いで記号を入力する方法として使える下記の10種の1つです。
・'〜': 「z-」 ・'『': 「z[」 ・'』': 「z]」 ・'…': 「z.」 ・'‥': 「z,」 ・'・': 「z/」 ・'←': 「zh」 ・'↓': 「zj」 ・'↑': 「zk」 ・'→': 「zl」

カスタムキーボード配列を組み込む

./gen_kbd.py を実行してカスタムのキーボード配列 XML を生成し、 ./replace.py add_kbd2 を適用して設定画面でカスタム配列を選択できるように組み込みます。 ./gen_svg.py でカスタム配列用のキートップ画像を生成しておく必要があります。 コマンドラインで下記の順に実行すると、他のカスタマイズを適用せず、このカスタマイズだけを適用します。
vagrant@mozc:~$ cd vagrant@mozc:~$ ./gen_svg.py vagrant@mozc:~$ ./gen_kbd.py vagrant@mozc:~$ ./replace.py add_kbd2 vagrant@mozc:~$ ./build.sh
以降は ./build.sh だけで、このカスタマイズを適用した状態でビルドできます。 一度ソースを消して標準版に戻した場合、必要であれば再度適用してください。 vagrant up でビルドする場合、共有ワーク Dirscripts\custom.sh を開き、
#cd /home/vagrant #python replace.py fix_myapp 2>&1 | tee custom.log #cd /home/vagrant/src #python build_mozc.py clean --target_platform=Android #python build_mozc.py gyp --target_platform=Android --android_application_id mozc.android.yourname.yourappname #python build_mozc.py build_tools -c Release #python build_mozc.py build android/android.gyp:android_manifest #android update project -s -p android --target android-17 #python build_mozc.py build android/android.gyp:apk -c Debug_Android 2>&1 | tee /home/vagrant/build.log cd /home/vagrant python gen_svg.py python gen_kbd.py #python replace.py fix_myapp fix_tilde fix_flick fix_layout add_kbd2 add_kbd3 add_flick 2>&1 | tee -a custom.log python replace.py add_kbd2 cd /home/vagrant/src python build_mozc.py build android/android.gyp:apk -c Debug_Android 2>&1 | tee /home/vagrant/build.log
と変更し、起動時のビルド動作の変更は初期状態に戻して、vagrant up を実行します。 以降は、カスタマイズ版の通常ビルドだけに変更しても、このカスタマイズを適用した状態でビルドされます。 ./replace.py は、実行時に backup/ に存在しないファイルは src/ からコピーして、 変更は常に backup/ のファイルを読んで適用し、src/ のファイルを上書きして書き出します。 それぞれのカスタマイズを順次適用する場合、後から適用する際に、先に適用した内容を上書きしないように、 ./replace.py add_kbd2 fix_layout のように、先に適用したものも並べて(順序は任意)指定してください。 ./gen_kbd.py で生成されるファイル
src/android/resources_oss/res/xml/kbd_12keys_qwerty*_abc.xml src/android/resources_oss/res/xml/kbd_qwerty*_abc.xml src/android/resources_oss/res/xml/kbd_qwerty*_kana.xml
./replace.py add_kbd1 ./replace.py add_kbd2 で生成されるファイル
src/android/src/com/google/android/inputmethod/japanese/ view/PentaDKeyDrawable.java view/PentaUKeyDrawable.java
./replace.py add_kbd1 ./replace.py add_kbd2 で修正されるファイル
src/android/resources_oss/res/values/strings.xml src/android/resources_oss/res/values-ja/strings.xml src/android/resources_oss/res/xml/pref_software_keyboard_advanced.xml src/android/src/com/google/android/inputmethod/japanese/ JapaneseKeyboard.java keyboard/BackgroundDrawableFactory.java keyboard/KeyboardParser.java keyboard/KeyboardViewBackgroundSurface.java model/JapaneseSoftwareKeyboardModel.java preference/ClientSidePreference.java preference/KeyboardLayoutPreference.java
./replace.py add_kbd2 で生成されるファイル
src/android/src/com/google/android/inputmethod/japanese/ preference/AlphabetLayoutPreference.java
./replace.py add_kbd2 で修正されるファイル
src/android/resources_oss/res/values/attrs.xml src/android/src/com/google/android/inputmethod/japanese/ MozcService.java ViewManager.java ViewManagerInterface.java
生成された XML は、既存の配列と入れ替えるだけでよければ、既存の XML と同名に 変更して置き換えるだけで、既存の配列が使われる場所で、代わりに使用されます。 これはソースコードの変更を必要とせず、他の修正よりは低難易度です。 ./gen_kbd.py を使わずに標準の XML を手修正することもできますし、 ./gen_kbd.py が生成した XML を手修正することもできます。 gen_kbd.py 内に簡単なコメントを付けているのを参考に、 keydata の内容を変更して独自の XML を生成してみてもよいでしょう。 設定画面への組み込みは、 通常のキーボード選択項目にカスタム配列を追加する ./replace.py add_kbd1 と、 ケータイ配列時英字入力用キーボード選択項目を、チェックボックスから プレビュー付リストに変更する ./replace.py add_kbd2 の2段階です
左:Google日本語入力 / 右:カスタマイズ版 Mozc
前者は、Java ソース内に、既存の配列と同様に定義を増やし、リストに追加するだけで、 Java クラスの追加などは必要ないので、難易度は中程度だと思います。 後者は、通常のキーボード選択を設定画面上で行うためのクラスを元に、 ケータイ配列時の英字入力用キーボード配列の選択専用クラスを新規作成し、 列挙型で選択結果を保持、入力モード切り替え時に読み出して XML を切り替えており、 他のカスタマイズと比べると、比較的難易度が高いと言えるでしょう。 Android の設定画面でカスタムビューを利用することについて知識がない方は、 解説サイトなどでより単純なサンプルを探して学習する必要があるかもしれません。 設定画面のカスタマイズを研究する場合、まずは ./replace.py add_kbd1 だけを 追ってみて、理解できてから ./replace.py add_kbd2 に進むことを推奨します。 尚、./replace.py add_kbd2./replace.py add_kbd1 の内容を全て含んでいます。 又、実質上、次章のレイアウト整数誤差の修正もセットで組み込む必要がありますが、 次章だけを単独で適用できるよう、このカスタマイズとは分割してあります。

キーボード描画レイアウトの整数丸め誤差を修正する

2013年6月末現在、 Mozc では、キーボード描画時のレイアウト処理で、各キーや段の表示位置を計算する際、 % で指定された幅や高さを、最初に整数化して保持し、整数値で積み上げているために、 いわゆる整数丸め誤差が発生し、特に右端に近いキーで横位置の誤差が拡がります。 ./replace.py fix_layout を適用すると、内部値を実数値に変更し、ずれないように修正します。 又、フリックのハイライト表示で、中央の円の直径が、キー高さしか考慮していないため、 レイアウトによっては、キー幅を超えて、隣接キーに重なって描画されることがあるため、 このカスタマイズを適用すると、キー幅でも制限するように修正します。 コマンドラインで下記の順に実行すると、他のカスタマイズを適用せず、このカスタマイズだけを適用します。
vagrant@mozc:~$ cd vagrant@mozc:~$ ./replace.py fix_layout vagrant@mozc:~$ ./build.sh
以降は ./build.sh だけで、このカスタマイズを適用した状態でビルドできます。 一度ソースを消して標準版に戻した場合、必要であれば再度適用してください。 vagrant up でビルドする場合、共有ワーク Dirscripts\custom.sh を開き、
#cd /home/vagrant #python replace.py fix_myapp 2>&1 | tee custom.log #cd /home/vagrant/src #python build_mozc.py clean --target_platform=Android #python build_mozc.py gyp --target_platform=Android --android_application_id mozc.android.yourname.yourappname #python build_mozc.py build_tools -c Release #python build_mozc.py build android/android.gyp:android_manifest #android update project -s -p android --target android-17 #python build_mozc.py build android/android.gyp:apk -c Debug_Android 2>&1 | tee /home/vagrant/build.log cd /home/vagrant #python gen_svg.py #python gen_kbd.py #python replace.py fix_myapp fix_tilde fix_flick fix_layout add_kbd2 add_kbd3 add_flick 2>&1 | tee -a custom.log python replace.py fix_layout cd /home/vagrant/src python build_mozc.py build android/android.gyp:apk -c Debug_Android 2>&1 | tee /home/vagrant/build.log
と変更し、起動時のビルド動作の変更は初期状態に戻して、vagrant up を実行します。 以降は、カスタマイズ版の通常ビルドだけに変更しても、このカスタマイズを適用した状態でビルドされます。 ./replace.py は、実行時に backup/ に存在しないファイルは src/ からコピーして、 変更は常に backup/ のファイルを読んで適用し、src/ のファイルを上書きして書き出します。 それぞれのカスタマイズを順次適用する場合、後から適用する際に、先に適用した内容を上書きしないように、 ./replace.py fix_layout add_kbd2 のように、先に適用したものも並べて(順序は任意)指定してください。 ./replace.py fix_layout で修正されるファイル
src/android/src/com/google/android/inputmethod/japanese/ keyboard/KeyboardParser.java keyboard/Key.java keyboard/Row.java view/CenterCircularHighlightDrawable.java
% 値を整数化する際、四捨五入の結果は、端末の画面サイズとの関係で、切り上げか切り捨てとなり、 特に文字キーなど、同じ幅のキーが十数個並ぶと、標準の実装では、誤差がキー数分積み上がり、 右端では最大で 10dip 以上、機種によって右又は左にずれて表示されることになります。 長いスペースバーがあるなど、キー配置が異なる上下の段とはキー右端が目に見えてずれますし、 全ての段が同じ配置の配列でも、100% に相当する画面右端との隙間が端末によって変わります。 % 値を調整して一方の機種でずれを減らすと、他方の機種でのずれは大きくなります。 従って、キーボード配列 XML の中だけで工夫しても、ずれの解決は困難です。 そのため、このサイトでのカスタムキーボード配列対応とは別のカスタマイズ扱いとしました。 このサイトのカスタム配列を利用せず、独自のカスタム配列を作成して使用する場合、 ./gen_kbd.py は適用せず、このカスタマイズだけを適用してください。 ちなみに、Android 版 Google日本語入力、標準の Mozc for Android では、 ケータイ配列と Godan 配列は、全段のキー数が5つで幅も同じなのでずれが目立たず、 QWERTY 配列は 10 列表示で、キー幅は 10% となり、画面サイズ(dip値)が 10の倍数である機種では、10% は整数値となるので、ずれが発生しません。 画面サイズが 10 の倍数ではない機種では右端がずれているものと思われます。

ケータイ配列にカスタム入力スタイルを組み込む

./replace.py add_kbd3 を適用すると、ケータイ配列にカスタム入力スタイルを追加します。 ./gen_svg.py でカスタム入力スタイル用のキートップ画像を生成しておく必要があります。 コマンドラインで下記の順に実行すると、他のカスタマイズを適用せず、このカスタマイズだけを適用します。
vagrant@mozc:~$ cd vagrant@mozc:~$ ./gen_svg.py vagrant@mozc:~$ ./replace.py add_kbd3 vagrant@mozc:~$ ./build.sh
以降は ./build.sh だけで、このカスタマイズを適用した状態でビルドできます。 一度ソースを消して標準版に戻した場合、必要であれば再度適用してください。 vagrant up でビルドする場合、共有ワーク Dirscripts\custom.sh を開き、
#cd /home/vagrant #python replace.py fix_myapp 2>&1 | tee custom.log #cd /home/vagrant/src #python build_mozc.py clean --target_platform=Android #python build_mozc.py gyp --target_platform=Android --android_application_id mozc.android.yourname.yourappname #python build_mozc.py build_tools -c Release #python build_mozc.py build android/android.gyp:android_manifest #android update project -s -p android --target android-17 #python build_mozc.py build android/android.gyp:apk -c Debug_Android 2>&1 | tee /home/vagrant/build.log cd /home/vagrant python gen_svg.py python gen_kbd.py #python replace.py fix_myapp fix_tilde fix_flick fix_layout add_kbd2 add_kbd3 add_flick 2>&1 | tee -a custom.log python replace.py add_kbd3 cd /home/vagrant/src python build_mozc.py build android/android.gyp:apk -c Debug_Android 2>&1 | tee /home/vagrant/build.log
と変更し、起動時のビルド動作の変更は初期状態に戻して、vagrant up を実行します。 以降は、カスタマイズ版の通常ビルドだけに変更しても、このカスタマイズを適用した状態でビルドされます。 ./replace.py は、実行時に backup/ に存在しないファイルは src/ からコピーして、 変更は常に backup/ のファイルを読んで適用し、src/ のファイルを上書きして書き出します。 それぞれのカスタマイズを順次適用する場合、後から適用する際に、先に適用した内容を上書きしないように、 ./replace.py add_kbd2 add_kbd3 のように、先に適用したものも並べて(順序は任意)指定してください。 ./replace.py add_kbd3 で生成されるファイル
src/android/resources_oss/res/xml/kbd_bell_flick_kana.xml src/android/resources_oss/res/xml/kbd_niko_flick_kana.xml src/data/preedit/bell_flick-hiragana.tsv src/data/preedit/niko_flick-hiragana.tsv src/data/typing/typing_model_bell_flick-hiragana.tsv src/data/typing/typing_model_niko_flick-hiragana.tsv
./replace.py add_kbd3 で修正されるファイル
src/android/resources_oss/res/values/arrays.xml src/android/resources_oss/res/values/strings.xml src/android/resources_oss/res/values-ja/strings.xml src/android/src/com/google/android/inputmethod/japanese/ JapaneseKeyboard.java model/JapaneseSoftwareKeyboardModel.java preference/ClientSidePreference.java src/base/base.gyp src/base/gen_config_file_stream_data.host.mk src/composer/composer.cc src/composer/composer.gyp src/composer/gen_typing_model.host.mk src/composer/table.cc src/composer/internal/gen_typing_model.py src/composer/internal/typing_model.cc
カスタム入力スタイル:ニコフリック
既存の入力スタイル(フリック入力など)と入れ替えるだけでよければ、既存の XML と TSV の 内容を置き換えるだけで、既存の入力スタイルが使われる場所で、代わりに使用されます。 変更内容の具体例としては、上記リストの XML と TSV を参照してください。 そこまでならソースコードの変更を必要とせず、他の修正よりは低難易度です。 尚、キーコードに英大文字を使用するには、C++ の改修が必要なので、 通常は、英小文字・数字・他のXMLでも使われている記号を使ってください。 既存の入力スタイルを置き換えず、追加した入力スタイルと切り替え可能にする場合、 Java だけではなく C++ のソースコードにも手を入れる必要があり、難易度が上がります。 基本的には既存の入力スタイルの記述箇所に、同様の記述を真似て追加するだけですが、 おそらくは入力効率の統計情報関連かと思われる、簡単には真似られそうにない TSV ファイルが存在し、 その TSV ファイルを参照しないように、該当機能をオフにしてビルドするか、 ビルド時に、機能オフにした場合と同等の空データが生成されるように対応する必要があります。 今回は空データを生成するように対応しましたが、単純に空の TSV ファイルを配置すると ビルドスクリプトでエラーになるため、Python スクリプトにも修正を施してあります。 従って、このカスタマイズを全て理解するには、言語知識として Java、C++、Python の知識が必要になります。

ファンクションキーのフリックに機能を組み込む

./replace.py add_flick を適用すると、ファンクションキーフリックに機能を追加します。 ./gen_svg.py でフリック追加用のキートップ画像を生成しておく必要があります。 コマンドラインで下記の順に実行すると、他のカスタマイズを適用せず、このカスタマイズだけを適用します。
vagrant@mozc:~$ cd vagrant@mozc:~$ ./gen_svg.py vagrant@mozc:~$ ./replace.py add_flick vagrant@mozc:~$ ./build.sh
以降は ./build.sh だけで、このカスタマイズを適用した状態でビルドできます。 一度ソースを消して標準版に戻した場合、必要であれば再度適用してください。 vagrant up でビルドする場合、共有ワーク Dirscripts\custom.sh を開き、
#cd /home/vagrant #python replace.py fix_myapp 2>&1 | tee custom.log #cd /home/vagrant/src #python build_mozc.py clean --target_platform=Android #python build_mozc.py gyp --target_platform=Android --android_application_id mozc.android.yourname.yourappname #python build_mozc.py build_tools -c Release #python build_mozc.py build android/android.gyp:android_manifest #android update project -s -p android --target android-17 #python build_mozc.py build android/android.gyp:apk -c Debug_Android 2>&1 | tee /home/vagrant/build.log cd /home/vagrant python gen_svg.py python gen_kbd.py #python replace.py fix_myapp fix_tilde fix_flick fix_layout add_kbd2 add_kbd3 add_flick 2>&1 | tee -a custom.log python replace.py add_flick cd /home/vagrant/src python build_mozc.py build android/android.gyp:apk -c Debug_Android 2>&1 | tee /home/vagrant/build.log
と変更し、起動時のビルド動作の変更は初期状態に戻して、vagrant up を実行します。 以降は、カスタマイズ版の通常ビルドだけに変更しても、このカスタマイズを適用した状態でビルドされます。 ./replace.py は、実行時に backup/ に存在しないファイルは src/ からコピーして、 変更は常に backup/ のファイルを読んで適用し、src/ のファイルを上書きして書き出します。 それぞれのカスタマイズを順次適用する場合、後から適用する際に、先に適用した内容を上書きしないように、 ./replace.py add_flick fix_flick のように、先に適用したものも並べて(順序は任意)指定してください。 ./replace.py add_flick で修正されるファイル
android/resources_oss/res/values/keycodes.xml src/android/src/com/google/android/inputmethod/japanese/ KeycodeConverter.java KeyEventUtil.java ViewManager.java keyboard/KeyboardView.java
方向↑↓←→フリック方向にカーソル移動
Space→Tab
Space←Esc
Space↑半角スペース(現在の状態に依存しない)
Space↓全角スペース(現在の状態に依存しない)
Shift/Caps↑Capsオン(現在の状態に依存しない)
Shift/Caps↓Shiftオフ(現在の状態に依存しない)
Alt↑Altオン(現在の状態に依存しない)
Alt↓Altオフ(現在の状態に依存しない)
文字種←カナ入力モード(現在の状態に依存しない)
文字種→英字入力モード(現在の状態に依存しない)
文字種↓数字入力モード(現在の状態に依存しない)
文字種↑設定画面
記号↑入力方法の選択メニュー
記号↓マッシュルームメニュー
記号←→キーボード配列変更(設定画面上で現在の左右)
カスタマイズの難易度は全体に中程度ですが、変更後の挙動をソース解析する場合、 カーソル移動や入力モード変更は、既存のコードの再割り当てなので比較的低難易度、 Tab、Esc入力やメタキーオンオフは、変更個所は多いものの内容は単純で難易度中程度、 全角半角スペース入力やキーボード配列変更は、システムの深い部分を呼び出すため高難易度です。

カスタムキーボード配列


タブレット向き

列を斜めにずらすなど、なるべくパソコンのキーボードに近いレイアウトで配置 タブレットの他、5インチクラスの大きめのスマートフォン、 テレビに挿して使ういわゆる Android スティックなどに向く
カスタム配列:QWERTY514
カスタム配列:QWERTY513

縦画面向き

ファンクションキーを下に配置し、列を斜めにずらさず、画面幅の12~10分割分のキー幅を確保
カスタム配列:QWERTY512 左:QWERTY512などでは '|' を [0キー] の上フリックに割り当てて右上 [¥キー] を省略 右:Shift On/Caps On でのキートップ画像、この状態では下フリックで元の文字を入力
カスタム配列:QWERTY511 右端1列目を 'z' の段の右から横フリックに割り当てて省略
カスタム配列:QWERTY411 右端1列目を 'z' の段の右から横フリックに割り当てて省略 数字の段を 'q' の段の横フリックに割り当てて省略 設定画面で キーボードの高さ80 に設定
カスタム配列:QWERTY510 右端1列目を 'z' の段の右から横フリックに割り当てて省略 右端2列目を 'a' の段の右から横フリックに割り当てて省略
カスタム配列:QWERTY410 右端1列目を 'z' の段の右から横フリックに割り当てて省略 右端2列目を 'a' の段の右から横フリックに割り当てて省略 数字の段を 'q' の段の横フリックに割り当てて省略 設定画面で キーボードの高さ80 に設定

小型縦画面向き

小型画面向けに、特殊な配列で、画面幅の8分割分のキー幅を確保した、疑似的な QWERTY 配列
カスタム配列:QWERTY808 PCでの1段を1列おきに2段に分けて配置
カスタム配列:QWERTY608 PCでの1段を1列おきに2段に分けて配置 数字の段を 'q' の段の横フリックに割り当てて省略
カスタム配列:QWERTY408 PCでの隣接2キーを横フリックで1キーに統合

横画面向き

ファンクションキーを左右に配置し、キーボードの詳細設定画面で キーボードの高さ を低く設定
カスタム配列:QWERTY416 設定画面で キーボードの高さ80 に設定
カスタム配列:QWERTY415 設定画面で キーボードの高さ80 に設定
カスタム配列:QWERTY414 設定画面で キーボードの高さ80 に設定
カスタム配列:QWERTY413 右端1列目を 'z' の段の右から横フリックに割り当てて省略 設定画面で キーボードの高さ80 に設定
カスタム配列:QWERTY314 右端1列目を 'z' の段の右から横フリックに割り当てて省略 数字の段を 'q' の段の横フリックに割り当てて省略 設定画面で キーボードの高さ60 に設定
カスタム配列:QWERTY313 右端1列目を 'z' の段の右から横フリックに割り当てて省略 右端2列目を 'a' の段の右から横フリックに割り当てて省略 数字の段を 'q' の段の横フリックに割り当てて省略 設定画面で キーボードの高さ60 に設定

ニコフリック・ベルフリック

2回のフリックを組み合わせて文字入力する入力スタイルです。 それぞれ、ニコタッチ、ポケベル打ち(2タッチ)を参考にしていますが、完全な再現は目指していません。 フリックを全く使わず、2回のタッチと、テンキー左下の小文字・濁音キーだけでも一通りの入力はできます。 更に Godan 配列を参考に、濁音・拗音などを2フリックで入力できるよう拡張しています。 1フリック目での下フリックは、1フリックだけで数字入力になります。 下記の入力表で、矢印はフリック方向を示し、左の欄が1フリック目、上の欄が2フリック目を示します。 最初はキートップ画像を参考に、フリックを含まないタッチだけの操作から覚えるとよいでしょう。 タッチだけで慣れてきたら、1フリック目の→濁音・←拗音を覚えることで、より効率よく入力できます。 半濁音(パ行)は、2フリック目のオ段の長音と共用する意味もあり、ナ行の→濁音の位置に配置しています。 2フリック目は、←で促音(っ)・↑で撥音(ん)・→で長音(ー)や二重母音を元の文字に続けて入力でき、 ↓では外来語や擬音語で使われるウ段+ぁ~ぉなどの特殊な表記を入力できて、入力効率を更に上げられますが 通常そこまで覚えなくとも、1フリック目まで(又はタッチだけ)でも充分に効率よく入力できるでしょう。
カスタム入力スタイル:ニコフリック
あ か さ た な は ま や ら わ 
あ _あ↓
か か↓
さ  さ↓
た た↓
な  な↓
は  は↓
ま ま↓
や や↓
ら ら↓
わ わ↓
あ か さ た な は ま や ら わ あ↓か↓さ↓た↓な↓は↓
あ _うぁうぃうぅうぇうぉいぇ
あ→ヴぁヴぃヴぇヴぉ_ヴぁヴぃヴぇヴぉ 
あ←うぁーうぃーうぅーうぇーうぉーいぇー
あ↑ヴぁヴぃヴぇヴぉヴぁーヴぃーヴーヴぇーヴぉー 
か くぁくぃくぅくぇくぉくゎ
か→ぐぁぐぃぐぅぐぇぐぉぐゎ
か←きゃきぃきゅきぇきょくぁーくぃーくぅーくぇーくぉーくゎー
か↑ぎゃぎぃぎゅぎぇぎょぐぁーぐぃーぐぅーぐぇーぐぉーぐゎー
さ  すぁすぃすぅすぇすぉ 
さ→ ずぁずぃずぅずぇずぉ 
さ←しゃしぃしゅしぇしょ すぁーすぃーすぅーすぇーすぉー 
さ↑じゃじぃじゅじぇじょ ずぁーずぃーずぅーずぇーずぉー 
た つぁつぃつぅつぇつぉとぅ
た→づぁづぃづぅづぇづぉどぅ
た←ちゃちぃちゅちぇちょてゃてぃてゅてぇてょとぅー
た↑ぢゃぢぃぢゅぢぇぢょでゃでぃでゅでぇでょどぅー
な  ぬぁぬぃぬぅぬぇぬぉ 
な→ ぷぁぷぃぷぅぷぇぷぉ 
な←にゃにぃにゅにぇにょ ぬぁーぬぃーぬぅーぬぇーぬぉー 
な↑ぴゃぴぃぴゅぴぇぴょ ぷぁーぷぃーぷぅーぷぇーぷぉー 
は  ふぁふぃふぅふぇふぉ 
は→ ぶぁぶぃぶぅぶぇぶぉ 
は←ひゃひぃひゅひぇひょ ふぁーふぃーふぅーふぇーふぉー 
は↑びゃびぃびゅびぇびょ ぶぁーぶぃーぶぅーぶぇーぶぉー 
ま むぁむぃむぅむぇむぉ 
ま←みゃみぃみゅみぇみょむぁーむぃーむぅーむぇーむぉー 
や やぁゆぅよぉ 
や← やぁーゆぅーよぉー 
ら るぁるぃるぅるぇるぉ 
ら←りゃりぃりゅりぇりょるぁーるぃーるぅーるぇーるぉー 
わ  
わ←くゎくゐくぅくゑくを 
あ←か←さ←た←な←あ↑か↑さ↑た↑な↑あ→か→さ→た→な→
あ あっいっうっえっおっあんいんうんえんおんあいいいううえいおう
あ→ヴぁっヴぃっヴっヴぇっヴぉっヴぁんヴぃんヴんヴぇんヴぉんヴぁーヴぃーヴーヴぇーヴぉー
あ←ぁっぃっぅっぇっぉっぁんぃんぅんぇんぉんぁーぃーぅーぇーぉー
あ↑ヴぁっヴぃっヴっヴぇっヴぉっヴぁんヴぃんヴんヴぇんヴぉんヴぁーヴぃーヴーヴぇーヴぉー
か かっきっくっけっこっかんきんくんけんこんかいきいくうけいこう
か→がっぎっぐっげっごっがんぎんぐんげんごんがいぎいぐうげいごう
か←きゃっきぃっきゅっきぇっきょっきゃんきぃんきゅんきぇんきょんきゃーきぃーきゅうきぇーきょう
か↑ぎゃっぎぃっぎゅっぎぇっぎょっぎゃんぎぃんぎゅんぎぇんぎょんぎゃーぎぃーぎゅうぎぇーぎょう
さ さっしっすっせっそっさんしんすんせんそんさいしいすうせいそう
さ→ざっじっずっぜっぞっざんじんずんぜんぞんざいじいずうぜいぞう
さ←しゃっしぃっしゅっしぇっしょっしゃんしぃんしゅんしぇんしょんしゃーしぃーしゅうしぇーしょう
さ↑じゃっじぃっじゅっじぇっじょっじゃんじぃんじゅんじぇんじょんじゃーじぃーじゅうじぇーじょう
た たっちっつってっとったんちんつんてんとんたいちいつうていとう
た→だっぢっづっでっどっだんぢんづんでんどんだいぢいづうでいどう
た←ちゃっちぃっちゅっちぇっちょっちゃんちぃんちゅんちぇんちょんちゃーちぃーちゅうちぇーちょう
た↑ぢゃっぢぃっぢゅっぢぇっぢょっぢゃんぢぃんぢゅんぢぇんぢょんぢゃーぢぃーぢゅうぢぇーぢょう
な なっにっぬっねっのっなんにんぬんねんのんないにいぬうねいのう
な→ぱっぴっぷっぺっぽっぱんぴんぷんぺんぽんぱいぴいぷうぺいぽう
な←にゃっにぃっにゅっにぇっにょっにゃんにぃんにゅんにぇんにょんにゃーにぃーにゅうにぇーにょう
な↑ぴゃっぴぃっぴゅっぴぇっぴょっぴゃんぴぃんぴゅんぴぇんぴょんぴゃーぴぃーぴゅうぴぇーぴょう
は はっひっふっへっほっはんひんふんへんほんはいひいふうへいほう
は→ばっびっぶっべっぼっばんびんぶんべんぼんばいびいぶうべいぼう
は←ひゃっひぃっひゅっひぇっひょっひゃんひぃんひゅんひぇんひょんひゃーひぃーひゅうひぇーひょう
は↑びゃっびぃっびゅっびぇっびょっびゃんびぃんびゅんびぇんびょんびゃーびぃーびゅうびぇーびょう
ま まっみっむっめっもっまんみんむんめんもんまいみいむうめいもう
ま←みゃっみぃっみゅっみぇっみょっみゃんみぃんみゅんみぇんみょんみゃーみぃーみゅうみぇーみょう
や やっゆっよっやんゆんよんやいゆうよう
や←ゃっゅっょっゃんゅんょんゃーゅうょう
ら らっりっるっれっろっらんりんるんれんろんらいりいるうれいろう
ら←りゃっりぃっりゅっりぇっりょっりゃんりぃんりゅんりぇんりょんりゃーりぃーりゅうりぇーりょう
わ わっをっんっゐっゑっわんをんんんゐんゑんわいをーんーゐーゑー
わ←ゎっをっんっゐっゑっゎんをんんんゐんゑんゎーをーんーゐーゑー
カスタム入力スタイル:ベルフリック
あ か さ た な は ま や ら わ 
あ あ↓
か か↓
さ さ↓
た た↓
な な↓
は は↓
ま ま↓
や  や↓
ら ら↓
わ わ↓
あ か さ た な は ま や ら わ あ↓か↓さ↓た↓な↓は↓
あ うぁうぃうぅうぇうぉいぇ
あ→ヴぁヴぃヴぇヴぉヴぁヴぃヴぇヴぉ 
あ←うぁーうぃーうぅーうぇーうぉーいぇー
あ↑ヴぁヴぃヴぇヴぉヴぁーヴぃーヴーヴぇーヴぉー 
か くぁくぃくぅくぇくぉくゎ
か→ぐぁぐぃぐぅぐぇぐぉぐゎ
か←きゃきぃきゅきぇきょくぁーくぃーくぅーくぇーくぉーくゎー
か↑ぎゃぎぃぎゅぎぇぎょぐぁーぐぃーぐぅーぐぇーぐぉーぐゎー
さ すぁすぃすぅすぇすぉ 
さ→ずぁずぃずぅずぇずぉ 
さ←しゃしぃしゅしぇしょすぁーすぃーすぅーすぇーすぉー 
さ↑じゃじぃじゅじぇじょずぁーずぃーずぅーずぇーずぉー 
た つぁつぃつぅつぇつぉとぅ
た→づぁづぃづぅづぇづぉどぅ
た←ちゃちぃちゅちぇちょてゃてぃてゅてぇてょとぅー
た↑ぢゃぢぃぢゅぢぇぢょでゃでぃでゅでぇでょどぅー
な ぬぁぬぃぬぅぬぇぬぉ 
な→ぷぁぷぃぷぅぷぇぷぉ 
な←にゃにぃにゅにぇにょぬぁーぬぃーぬぅーぬぇーぬぉー 
な↑ぴゃぴぃぴゅぴぇぴょぷぁーぷぃーぷぅーぷぇーぷぉー 
は ふぁふぃふぅふぇふぉ 
は→ぶぁぶぃぶぅぶぇぶぉ 
は←ひゃひぃひゅひぇひょ÷ふぁーふぃーふぅーふぇーふぉー 
は↑びゃびぃびゅびぇびょ÷ぶぁーぶぃーぶぅーぶぇーぶぉー 
ま むぁむぃむぅむぇむぉ 
ま←みゃみぃみゅみぇみょ±むぁーむぃーむぅーむぇーむぉー 
や  やぁゆぅよぉ 
や←× やぁーゆぅーよぉー 
ら るぁるぃるぅるぇるぉ 
ら←りゃりぃりゅりぇりょるぁーるぃーるぅーるぇーるぉー 
わ  
わ←くゎくゐくぅくゑくを 
あ←か←さ←た←な←あ↑か↑さ↑た↑な↑あ→か→さ→た→な→
あ あっいっうっえっおっあんいんうんえんおんあいいいううえいおう
あ→ヴぁっヴぃっヴっヴぇっヴぉっヴぁんヴぃんヴんヴぇんヴぉんヴぁーヴぃーヴーヴぇーヴぉー
あ←ぁっぃっぅっぇっぉっぁんぃんぅんぇんぉんぁーぃーぅーぇーぉー
あ↑ヴぁっヴぃっヴっヴぇっヴぉっヴぁんヴぃんヴんヴぇんヴぉんヴぁーヴぃーヴーヴぇーヴぉー
か かっきっくっけっこっかんきんくんけんこんかいきいくうけいこう
か→がっぎっぐっげっごっがんぎんぐんげんごんがいぎいぐうげいごう
か←きゃっきぃっきゅっきぇっきょっきゃんきぃんきゅんきぇんきょんきゃーきぃーきゅうきぇーきょう
か↑ぎゃっぎぃっぎゅっぎぇっぎょっぎゃんぎぃんぎゅんぎぇんぎょんぎゃーぎぃーぎゅうぎぇーぎょう
さ さっしっすっせっそっさんしんすんせんそんさいしいすうせいそう
さ→ざっじっずっぜっぞっざんじんずんぜんぞんざいじいずうぜいぞう
さ←しゃっしぃっしゅっしぇっしょっしゃんしぃんしゅんしぇんしょんしゃーしぃーしゅうしぇーしょう
さ↑じゃっじぃっじゅっじぇっじょっじゃんじぃんじゅんじぇんじょんじゃーじぃーじゅうじぇーじょう
た たっちっつってっとったんちんつんてんとんたいちいつうていとう
た→だっぢっづっでっどっだんぢんづんでんどんだいぢいづうでいどう
た←ちゃっちぃっちゅっちぇっちょっちゃんちぃんちゅんちぇんちょんちゃーちぃーちゅうちぇーちょう
た↑ぢゃっぢぃっぢゅっぢぇっぢょっぢゃんぢぃんぢゅんぢぇんぢょんぢゃーぢぃーぢゅうぢぇーぢょう
な なっにっぬっねっのっなんにんぬんねんのんないにいぬうねいのう
な→ぱっぴっぷっぺっぽっぱんぴんぷんぺんぽんぱいぴいぷうぺいぽう
な←にゃっにぃっにゅっにぇっにょっにゃんにぃんにゅんにぇんにょんにゃーにぃーにゅうにぇーにょう
な↑ぴゃっぴぃっぴゅっぴぇっぴょっぴゃんぴぃんぴゅんぴぇんぴょんぴゃーぴぃーぴゅうぴぇーぴょう
は はっひっふっへっほっはんひんふんへんほんはいひいふうへいほう
は→ばっびっぶっべっぼっばんびんぶんべんぼんばいびいぶうべいぼう
は←ひゃっひぃっひゅっひぇっひょっひゃんひぃんひゅんひぇんひょんひゃーひぃーひゅうひぇーひょう
は↑びゃっびぃっびゅっびぇっびょっびゃんびぃんびゅんびぇんびょんびゃーびぃーびゅうびぇーびょう
ま まっみっむっめっもっまんみんむんめんもんまいみいむうめいもう
ま←みゃっみぃっみゅっみぇっみょっみゃんみぃんみゅんみぇんみょんみゃーみぃーみゅうみぇーみょう
や やっゆっよっやんゆんよんやいゆうよう
や←ゃっゅっょっゃんゅんょんゃーゅうょう
ら らっりっるっれっろっらんりんるんれんろんらいりいるうれいろう
ら←りゃっりぃっりゅっりぇっりょっりゃんりぃんりゅんりぇんりょんりゃーりぃーりゅうりぇーりょう
わ わっをっんっゐっゑっわんをんんんゐんゑんわいをーんーゐーゑー
わ←ゎっをっんっゐっゑっゎんをんんんゐんゑんゎーをーんーゐーゑー

主要ディレクトリ・ファイル構成


仮想環境ホスト側 OS とゲスト側 OS の共有ワーク Dir

C:\vagrant\mozc\ (ホスト側で共有ワーク Dir として利用者が決めた Path) /vagrant/ (ゲスト側から見た Path) Vagrantfile Vagrant 設定ファイル このサイトからダウンロードして展開配置 .vagrant/machines/default/virtualbox/ id Vagrant ID ファイル Vagrant が生成 build/ ビルド結果 Dir ビルド用スクリプトが仮想環境側ホーム Dir からコピー build.log ビルド時のログファイル MozcForAndroid-debug.apk YourAppName-debug.apk replace.py で指定した名前で生成 backup/ カスタマイズ前バックアップ Dir custom/ カスタマイズ後バックアップ Dir manifests/ mozc.pp Puppet 設定ファイル このサイトからダウンロードして展開配置 scripts/ ビルド・カスタマイズ用スクリプト Dir このサイトからダウンロードして展開配置 *.sh ビルド用シェルスクリプト *.py カスタマイズ用 python スクリプト search/ カスタマイズ検索用テキスト Dir replace/ カスタマイズ置換用テキスト Dir

仮想環境ゲスト側 OS のホーム Dir(Samba でホスト側と共有可能)

\\mozc\vagrant\ (Samba の共有を有効にした場合にホスト側から見た Path) /home/vagrant/ (ゲスト側から見た Path) sync.sh default.sh custom.sh build.sh ビルド用シェルスクリプト vagrant up 時に共有ワーク Dir からコピー gen_svg.py gen_kbd.py replace.py カスタマイズ用 python スクリプト vagrant up 時に共有ワーク Dir からコピー search/ カスタマイズ検索用テキスト Dir:構造は src/ と同様 vagrant up 時に共有ワーク Dir からコピー replace/ カスタマイズ置換用テキスト Dir:構造は src/ と同様 vagrant up 時に共有ワーク Dir からコピー backup/ カスタマイズ前バックアップ Dir:構造は src/ と同様 カスタマイズ用スクリプトが生成 custom/ カスタマイズ後バックアップ Dir:構造は src/ と同様 カスタマイズ用スクリプトが生成 data/images/android/ work/ svg 画像生成ワーク Dir gen_svg.py で生成 *.svg 文字画像パスだけの画像(中間データ) gen_svg.py で生成 *.png 文字画像パスだけの画像(確認用参考画像) gen_svg.py で生成 src/ Mozc ソース Dir gclient が同期作成した Dir
開発環境自動構築を採用せず、ご自身で環境構築した場合、 上記を参考に、このサイトからダウンロードしたスクリプトを配置し、 シェルスクリプトでは /vagrant/ へのアクセスをコメントアウトするか、 Python スクリプトだけを直接起動する、あるいは上記配置であることを参考に、 スクリプトが行うであろうカスタマイズを手作業で再現してご利用ください。

ソース系 Dir 共通ディレクトリ・ファイル構成

src/ Mozc ソース Dir(カスタマイズに関係しないファイルは未記載) backup/ カスタマイズ前のバックアップ Dir custom/ カスタマイズ後のバックアップ Dir(下記の他、画像生成ワーク Dir を含む) カスタマイズ時のバックアップ作成後に他のスクリプトに変更される可能性はあり ビルド時の状態の確実な確認には src/ のほうを参照すべき search/ カスタマイズ検索用テキスト Dir(各ファイル末尾に .fix_myapp.1 などが付く) replace/ カスタマイズ置換用テキスト Dir(各ファイル末尾に .fix_myapp.1 などが付く) mozc_version.txt アプリID変更対応(PackageName・ServiceName) replace.py fix_myapp で修正 android/ AndroidManifest.xml アプリID変更対応(PackageName・ServiceName) replace.py fix_myapp で修正 assets/ credits_en.html credits_ja.html 含まれるオープンソースソフトウェアのクレジット・ライセンス 追加した場合、必要に応じて手作業で変更 gen/ Java ソース Dir ビルド時に生成 org/mozc/android/inputmethod/japanese/ 標準 Mozc 用 Java Package protobuf/ ProtoCandidates.java 全角チルダ入力対応(変換候補関連) replace.py fix_tilde で修正 mozc/android/yourname/yourappname/ カスタマイズアプリID(Android PackageName)用 Java Package replace.py で指定したアプリDに対応するパスで生成 MozcService.java アプリID変更対応(サービス名関連) replace.py fix_myapp で生成 gen_for_adt/ Java ソース Dir ビルド時に生成 org/mozc/android/inputmethod/japanese/ 標準 Mozc 用 Java Package protobuf/ ProtoCandidates.java 全角チルダ入力対応(変換候補関連) replace.py fix_tilde で修正 resources_oss/res/ values/ attrs.xml カスタムキーボードキー形状変更対応 replace.py add_kbd2 で修正 arrays.xml カスタム入力スタイル選択対応 replace.py add_kbd3 で修正 keycodes.xml ファンクションキーフリック追加対応 replace.py add_flick で修正 application.xml アプリ名変更対応(英語文字列リソース) replace.py fix_myapp で修正 strings.xml カスタムキーボード配列選択対応(英語文字列リソース) replace.py add_kbd2 で修正 カスタム入力スタイル選択対応(英語文字列リソース) replace.py add_kbd3 で修正 values-ja/ application.xml アプリ名変更対応(日本語文字列リソース) replace.py fix_myapp で修正 strings.xml カスタムキーボード配列選択対応(日本語文字列リソース) replace.py add_kbd2 で修正 カスタム入力スタイル選択対応(日本語文字列リソース) replace.py add_kbd3 で修正 xml/ kbd_qwerty*.xml カスタムキーボード配列レイアウト gen_kbd.py で生成 kbd_12keys_qwerty*.xml カスタム英字キーボードレイアウト gen_kbd.py で生成 kbd_bell_flick_kana.xml カスタム入力スタイルレイアウト replace.py add_kbd3 で生成 kbd_niko_flick_kana.xml カスタム入力スタイルレイアウト replace.py add_kbd3 で生成 kbd_12keys_123.xml フリック数字記号入力対応 replace.py fix_flick で修正 kbd_12keys_abc.xml フリック数字記号入力対応 replace.py fix_flick で修正 kbd_12keys_flick_123.xml フリック数字記号入力対応 replace.py fix_flick で修正 kbd_12keys_flick_abc.xml フリック数字記号入力対応 replace.py fix_flick で修正 kbd_godan_kana.xml フリックキー画像切り替え修正 replace.py fix_flick で修正 pref_about.xml アプリID変更対応(設定画面) replace.py fix_myapp で修正 pref_dictionary.xml アプリID変更対応(設定画面) replace.py fix_myapp で修正 pref_software_keyboard.xml アプリID変更対応(設定画面) replace.py fix_myapp で修正 pref_software_keyboard_advanced.xml.xml カスタムキーボード配列選択対応(設定画面) replace.py add_kbd2 で修正 src/ com/google/android/inputmethod/japanese/ Google日本語入力用 Java Package JapaneseKeyboard.java カスタムキーボード配列選択対応 replace.py add_kbd2 で修正 カスタム入力スタイル選択対応 replace.py add_kbd3 で修正 KeyEventUtil.java アプリID変更対応(Java Package 誤指定) replace.py fix_myapp で修正 ファンクションキーフリック追加対応 replace.py add_flick で修正 KeycodeConverter.java ファンクションキーフリック追加対応 replace.py add_flick で修正 MozcService.java カスタム英字キーボード選択対応 replace.py add_kbd2 で修正 Chrome パスワード入力対応(Chrome Ver.28 以降不要) replace.py fix_password で修正 ViewManager.java カスタム英字キーボード選択対応 replace.py add_kbd2 で修正 ファンクションキーフリック追加対応 replace.py add_flick で修正 ViewManagerInterface.java カスタム英字キーボード選択対応 replace.py add_kbd2 で修正 keyboard/ BackgroundDrawableFactory.java カスタムキーボードキー形状変更対応 replace.py add_kbd2 で修正 KeyboardViewBackgroundSurface.java カスタムキーボードキー形状変更対応 replace.py add_kbd2 で修正 KeyboardView.java ファンクションキーフリック追加対応 replace.py add_flick で修正 KeyboardParser.java カスタムキーボードキー形状変更対応 replace.py add_kbd2 で修正 キーボードレイアウト誤差修正 replace.py fix_layout で修正 Key.java キーボードレイアウト誤差修正 replace.py fix_layout で修正 Row.java キーボードレイアウト誤差修正 replace.py fix_layout で修正 model/ JapaneseSoftwareKeyboardModel.java カスタムキーボード配列選択対応 replace.py add_kbd2 で修正 カスタム入力スタイル選択対応 replace.py add_kbd3 で修正 SymbolCandidateStorage.java 全角チルダ入力対応(記号一覧入力候補関連) replace.py fix_tilde で修正 preference/ AlphabetLayoutPreference.java カスタム英字キーボード選択対応 replace.py add_kbd2 で生成 ClientSidePreference.java カスタムキーボード配列選択対応 replace.py add_kbd2 で修正 カスタム入力スタイル選択対応 replace.py add_kbd3 で修正 CreditsActivity.java アプリID変更対応(Java Package 誤指定) replace.py fix_myapp で修正 KeyboardLayoutPreference.java カスタムキーボード配列選択対応 replace.py add_kbd2 で修正 MozcMultiSelectListPreference.java アプリID変更対応(Java Package 誤指定) replace.py fix_myapp で修正 view/ CenterCircularHighlightDrawable.java フリックハイライト中央円直径をキー幅でも制限 replace.py fix_layout で修正 PentaDKeyDrawable.java カスタムキーボードキー形状変更対応 replace.py add_kbd2 で生成 PentaUKeyDrawable.java カスタムキーボードキー形状変更対応 replace.py add_kbd2 で生成 SymbolMajorCategoryButtonDrawableFactory.java アプリID変更対応(Java Package 誤指定) replace.py fix_myapp で修正 build_tools/ mozc_version.py アプリID変更対応(PackageName・ServiceName) replace.py fix_myapp で修正 base/ base.gyp gen_config_file_stream_data.host.mk composer/ composer.cc composer.gyp gen_typing_model.host.mk table.cc internal/ gen_typing_model.py typing_model.cc data/ images/android/svg/ *.svg キートップ・ポップアップ画像 gen_svg.py で修正・生成 preedit/ qwerty_mobile-hiragana.tsv 全角チルダ入力対応(ローマ字等変換候補) replace.py fix_tilde で修正 romanji-hiragana.tsv.tsv 全角チルダ入力対応(ローマ字等変換候補) replace.py fix_tilde で修正 bell_flick-hiragana.tsv カスタム入力スタイル選択対応 replace.py add_kbd3 で生成 niko_flick-hiragana.tsv カスタム入力スタイル選択対応 replace.py add_kbd3 で生成 12keys-halfwidthascii.tsv フリック数字記号入力対応 replace.py fix_flick で修正 12keys-number.tsv フリック数字記号入力対応 replace.py fix_flick で修正 flick-halfwidthascii.tsv フリック数字記号入力対応 replace.py fix_flick で修正 flick-number.tsv フリック数字記号入力対応 replace.py fix_flick で修正 toggle_flick-halfwidthascii.tsv フリック数字記号入力対応 replace.py fix_flick で修正 toggle_flick-number.tsv フリック数字記号入力対応 replace.py fix_flick で修正 symbol/ categorized.tsv 全角チルダ入力対応(記号等変換候補) replace.py fix_tilde で修正 symbol.tsv 全角チルダ入力対応(記号等変換候補) replace.py fix_tilde で修正 ordering_rule.txt 全角チルダ入力対応(記号等変換候補) replace.py fix_tilde で修正 typing/ typing_model_bell_flick-hiragana.tsv カスタム入力スタイル選択対応 replace.py add_kbd3 で生成(空ファイル) typing_model_niko_flick-hiragana.tsv カスタム入力スタイル選択対応 replace.py add_kbd3 で生成(空ファイル)



@d_o_locker(ろっかぁ)