日本語入力システム Mozc の Windows10 でのビルド

Googleが開発した日本語入力システム「Google日本語入力」のオープンソース版である Mozc を Windows10 でビルドするのに手間取ったので、備忘録として記録しておく。

Mozc – a Japanese Input Method Editor designed for multi-platform に従えばよいが、ビルド前の環境設定などの事前準備をきちんとしておかないといけない。

3台のPCで試したが、それぞれ作業前にインストールされているソフトウェアに違いがあるために、エラーなどの出方が異なった。しかし、以下では、PCを区別することなく、問題となった点などを記録しておく。

事前準備

How to build Mozc in Windows の Software Requirements の条件を満たすための作業を行う。

Visual Studio 2015 Community Edition

mozcのビルドのために、Visual Studio 2015のC++およびSDKをインストールしておく必要がある。

次のページの2015 (Visual Studio 2015 およびその他の製品) からインストーラをダウンロードして実行する。

https://visualstudio.microsoft.com/ja/vs/older-downloads/

最初、インストールするものを最小限にしたら C++ がインストールされず、mozcのビルドに失敗。そこで、C++ツールを追加してビルドしようとしたら、Windows SDK (Windows Kits)に含まれる mt.exe や rc.exe が見つからないというエラーで失敗した。

SDKをインストールしても、afxres.h がないというエラーで失敗した。Microsoft Foundation Class が必要とのこと。

不要なものをインストールしないようにと思ったが、時間ばかりかかってしまった。

あるPCの環境では次のオプション指定で不足のファイルはなくなった。すべての環境で大丈夫かははっきりしない。

ただし、Visual Studio 2015 のインストールと変更、アンインストールを繰り返し実行していたら mt.exe や rc.exe が見つからないということが再発してそのままではビルドできなかった。

mt.exe は、C:\Program Files (x86)\Windows Kits\10\bin\x86 などにあるようなので次のようにPATHを設定してgyp で設定ファイルを生成した。この時点では、mt.exeへのアクセスがPATHで設定されていなくても python build_mozc.py gyp の実行は終わるが、次のRelease packageのビルドで失敗したと思う。

Qt 5

Open Source版をインストールしようとしたが、それでもユーザ登録が必要であった。

次のコンポーネントをインストールした。

環境変数設定

PowerShell

環境によっては、powershell がコマンドプロンプトから起動できない場合があった。その環境では、C:\Windows\System32\WindowsPowerShell\v1.0 にあったので、コントロールパネルの「環境変数を編集」から、PATHにC:\Windows\System32\WindowsPowerShell\v1.0 を追加した。

Python

Python2.7 が必要のようだ。depot_toolsでもインストールされるが、Python2.7 をあらかじめインストールして、そのパスをPATHに設定しておいた方が良いかもしれない。

ただし、コントロールパネルの「環境変数を編集」に設定すると他のプログラムにも影響する。Python3 が必要な場合には、mozcのインストールが終わったらPython2.7のパスの設定を削除しておいた方が良いであろう。

ビルド作業

How to build Mozc in Windows に従ってビルド作業を進める。

ディレクトリ構成

以下では、次のようなディレクトリ構成を仮定している。下記のバッチファイルは、C:\workに置き、そこをカレントディレクトリとして実行した。

  • C:\work
    • doslog.exe
    • depot_tools
    • mozc

出力ログの保存

当初はうまくビルドできなかったので、コマンドプロンプトで表示しつつ、出力ログをファイルに保存するために DOS process LOG writer (Doslog.exe) を利用した。

mozcの生成の際には C:\work に doslog.exe を置いた状態で作業をしていた。

doglog.exe

Doslog.exe は、以下からダウンロード可能である。

https://www.vector.co.jp/soft/dl/win95/util/se144974.html

ログをファイルに保存する必要がなければ不要である。ただし、以下では使うことを前提に進める。

depot_tools

depot_tools_tutorial(7) Manual Page の記述に従って depot_tools をインストールする。

ダウンロード

「Download the depot_tools bundle and extract it somewhere.」に従って、次のファイルをダウンロードする。

https://storage.googleapis.com/chrome-infra/depot_tools.zip

Explorer で zipファイルの中をみて、そこからコピーでは必要なファイルがコピーされないと注意書きがあるので、ダウンロードしたファイルを展開する。

展開してできた depot_tools ディレクトリ以下をここでは、C:\work にコピーする。

環境変数設定

以下のように、コントロールパネルの「環境変数を編集」でPATHに、C:\work\depot_tools を追加する。

環境変数の編集を起動する。

PATHを選択して編集ボタンをクリックする。

C:\work\depot_tools を追加して、一番上に移動する。

「OK」ボタンをクリックして、PATHが更新されていることを確認する。

gclientの実行

コマンドプロンプト cmd.exe から gclient を実行する。

ログを残すために次の runGClient.bat をC:\work に作成して実行した。

runGClient.bat

runGClient.batの実行結果 (C:\work\gclient.log)

下記の部分をクリックすると展開される。

正常終了の場合でも Usage が表示されるようだ。最初は、何か問題があるように思って悩んだが、その後のビルドで支障がなかった。

mozc のGitHubからのダウンロード

mozc をGitHubからのダウンロードする。

ログを残すために、mozcGet.bat および runMozcGet.bat をC:\work に作成し、runMozcGet.bat を実行した。

mozcGet.bat

runMozcGet.bat

このrunMozcGet.bat の例では、Windows Kits (Windows SDK)に含まれている mt.exeや rc.exe にうまくアクセスできなかったので、パスにディレクトリを追加している。

コマンドプロンプトで where mt.exe や where rc.exe でmtコマンドやrcコマンドが見つかれば、パスに追加する必要はない。

runMozcGet.batの実行結果 (C:\work\mozcGet.log)

次の部分をクリックすると展開される。

mozcのビルド用ファイルの生成

mozc をビルドするためのファイルを生成する。ここでは必要最小限のオプションを指定することにする。

–branding=GoogleJapaneseInput を指定するとプログラムの問題でコンパイルエラーとなってビルドが完了しなかった。ただし、ビルド環境の構築がきちんとできていない場合だったので、ビルド環境構築がきちんとしていれば大丈夫なのかもしれない。時間ができたら確認したい。

ログを残すために、mozcGenerate.bat および runMozcGenerate.bat をC:\work に作成し、runMozcGenerate.batを実行した。

mozcGenerate.bat

runMozcGenerate.bat

runMozcGenerate.batの実行結果(C:\work\mozcGenerate.log)

次の部分をクリックすると展開される。

mozcのビルド

直前の段階で生成したファイルに従って、mozcのビルドを行う。

ログを残すために、mozcBuild.bat および runMozcBuild.bat をC:\work に作成し、runMozcBuild.batを実行した。

mozcBuild.bat

runMozcBuild.bat

runMozcBuild.batの実行結果(C:\work\mozcBuild.log)の一部

21MB以上の大量のログが生成された。正常に終了した場合の最後の部分は以下のようであった。

エラーが発生した場合には、ログの途中に示されているので少し探す必要がある。最後だけを見ても何が問題なのかよくわからない。

ログを記録しておかないと原因調査が難しい。出力をファイルにリダイレクトするだけでも良いが、進捗状況が気になる場合には、doslog.exe を使うと良いと思った。