2013年7月18日木曜日

mac版 gnucash日本語入力への道 (gtkimcocoa使用)

この記事の情報は古くなっています。
2013/7当時は、普通にダウンロードしたgnucashでは、日本語入力できませんでしたが、2014/12現在の版(Ver. 2.6.5)では、何も考えずに普通に日本語入力できました。
(OSX Yosemite 10.10.1使用。OSX標準とgoogleの日本語入力で確認。)

最近macを使いだしたので、gnucashをmacにも入れて、どのマシンからでもgnucashからdropboxに置いたデータを更新できたら便利だなと思って、公式のmac用バイナリをインストールしてみた。

で、レシートそろえて「いざ入力!」と勇んでみたが、なんと日本語の入力が出来ない。
{まじすかーーっ!?}

いろいろ調べてみると、

だ、そうだ。おいおい。

そんな状況なのだが、gtk+にパッチを当てて、日本語入力できるようにした人もいるらしい
それをやってみようとも思ったが、後でgtk+のバージョンが上がったときに、もしパッチが当てられなくなったら手も足も出なくなりそうなのでパッチは嫌だなーと二の足を踏んでいたら、gtk+にパッチを当てなくても、偉い人がgtkimcocoaというgtk+のアドイン?を作っていて、これを使うと日本語入力できるらしいことを発見。

それを利用して、なんとか日本語入力できるところまで行ったので、後でもう一回出来るように記録を残します。

ただ、かなりややこしかったので、このページに検索で迷い込んできた人は、以下の俺のスペックを参考にやってみるか決めてください。
・ macを使い始めたばかりで、mac特有の仕組み等は全然わからない。
・ GTK+の仕組みについては全く知らない。
・ もちろん、GTK+の日本語入力の仕組みも知らない。
・ ソースをダウンロードしてビルドしてインストールとかは、変なオプションを駆使したりしないケースならできる。(./configure; make; make install; 位で勘弁してくれるeasyなケースね)
・ configureやmakeの途中でエラーで止まったりしたときは、エラーを見て足らないファイルをどこかから探して持ってくる位は出来ることが多い。
・ configureでエラーが出た時に、configure.acとかconfigure.inをいじってみたりすると、失敗することの方が多い。← configureについてちゃんと理解してない。

スペックを見て、こいつに出来るなら大丈夫そうだな等の参考にしてください。
ただ、なんのことやらわからない人は、手を出さない方がいいでしょう。

以下、やった作業をいろいろ書いていきますが、無駄な試行も含めてかなりいろいろやったので、全部は書ききれませんでした。なんとなくな書き方ですみません。(←性格の問題だろ)
また、自分がやった手順なので、無駄な手順も含まれていると思います。

大まかな順序は、
 gtk+のビルド・インストール →
 gtkimcocoaのビルド・インストール →
 gtk-demoで日本語入力確認 →
 gnucashのビルド・インストール →
 gnucash環境下へのgtkimcocoaのビルド・インストール →
 gnucash環境下のgtk-demoで日本語入力確認 →
 gnucashで日本語入力確認

注意点: 現時点のgnucashは、ver.2.5.3(Unstable)で、Gtk+-2.24 を使っていますが、今後GTL+3系に移行する予定があるようです。その場合、そのあたりの手順が変更になります。

なお、当方のOSバージョンは、OS X 10.8.4 です。日本語入力には「ことえり」を使用しています。

◎ GTK+のビルド・インストール
GTK+のインストール前にやってだめだったこと。
brew install gtk+
homebrewで、インストールしたgtk+だと、GTK+日本語入力モジュールのgtkimcocoaのコンパイルがうまくいかず挫折した。

いきなり{jhbuildってなんじゃ}とつまづくが、GTK+そのものやGTK+を使用したアプリをbuildする環境らしい。
ホームディレクトリで作業した。
$ curl -s -O https://git.gnome.org/browse/gtk-osx/plain/gtk-osx-build-setup.sh
$ sh gtk-osx-build-setup.sh  ← これでjhbuildがインストールされる
$ ~/.local/bin/jhbuild bootstrap
$ ~/.local/bin/jhbuild build meta-gtk-osx-bootstrap
$ ~/.local/bin/jhbuild build meta-gtk-osx-core

☆出会ったトラブルと対処
・ libffiのインストール時に、必要なダウンロードサイトがダウン(?)していてエラーで止まったが、エラー後のメニューで[4]を選択しjhbuildのシェルに入って、失敗したcurlコマンドのURLをググって他のサイトに変更しダウンロードする。ダウンロード後、そのshellでexitすると、先ほどのエラーメニューに戻るので[1]を選択すると次のステージに進む。
・ gettextのインストール(たぶん)で、autopointコマンドのエラーで止まったが、[4]shellから
autopoint --force
で切り抜ける。参考URL:http://lists.sourceforge.jp/mailman/archives/scim-imengine-dev/2007-March.txt
またexit→[1] で続行。
・ どこかで、configureの無限ループに落ち入るが、いっぺんctrl+cで強制終了して、もう一度
$ ~/.local/bin/jhbuild build meta-gtk-osx-core
の実行でなぜか切り抜ける。

◎ gtkimcocoaのビルド・インストール
テキトウにgitのsrcを展開するフォルダを作ってcdで移動
$ git clone git://github.com/ashie/gtkimcocoa.git
$ cd gtkimcocoa
$ ~/.local/bin/jhbuild shell
$ ./autogen.sh
$ ./configure   ← メッセージの最後の方の GTK+2: yes を確認
$ make
$ make install
◎ gtkimcocoaの設定
$ gtk-query-immodules-2.0 > ~/gtk/inst/etc/gtk-2.0/gtk.immodules
$ gtk-demo でデモ起動 OK
「Text Widget」→「Hypertext」を開いても日本語入力できた。

gtkimcocoaが正しくインストールされていると、バイナリ配布のGTK+使用アプリでも日本語入力可になるはずらしいのだが、この時点でバイナリ配布のgnucashを動かしても日本語入力がされなかった。

バイナリ配布のgnucashが32bitコンパイルされているのが原因かもしれない。ここで、GTK+を32bitでコンパイルして試すか、gnucashを64bitでコンパイルするかの選択を迫られるが、前者の方が大変そうな予感がするので、gnucashのコンパイルに賭けることにした。

◎ gnucash-unstableのビルド・インストール
$ ホームディレクトリで作業した。
$ ホームディレクトリにある .jhbuildrc-custom をバックアップを取った後
https://raw.github.com/jralls/gnucash-on-osx/master/.jhbuildrc-custom を参考に編集
$ ~/.local/bin/jhbuild bootstrap
$ ~/.local/bin/jhbuild build
編集した.jhbuildrc-customを参考に置いておきます。(unstableのgnucash用です。)

☆出会ったトラブルと対処
・ 何度も
AM_CONFIG_HEADER を使うな AC_CONFIG_HEADER を使え!というエラーに遭遇して止まるので、その度に[4]shellからconfigure.acまたはconfigure.inのAM_CONFIG_HEADERをAC_CONFIG_HEADERに変更する。
・ gmpのconfigureで、OS or マシンのarchitecture の認識がうまくいかなくて止まる。オプションでarchitectureを指定してもconfigureは通るがmakeで止まるので、gmpのコンパイルをあきらめる。
gmpは、brew install gmp でインストールしてskip連打で次に進んだ。
本来ここで入るgmpとバージョンも結構違うのでどうかと思ったが、後でこれが問題になることはなく最後まで行った。
・ どこかで、configureの無限ループに落ち入るが、いっぺんctrl+cで強制終了して、もう一度
$ ~/.local/bin/jhbuild build
の実行でなぜか切り抜ける。
・ ビルド中に何度かエラーで止まって冷や汗をかくが、なぜかいっぺんctrl+cで強制終了して、また
$ ~/.local/bin/jhbuild build
の再実行で、止まらずに次に行けるという現象と数回遭遇する。

◎ gnucashの環境でもgtkimcocoaをインストール
上でgtkimcocoaをインストールしたときと同じフォルダに移動
$ ~/.local/bin/jhbuild shell
$ ./autogen.sh
$ ./configure  ← メッセージの最後の方の GTK+2: yes を確認
$ make
$ make install ← 今度はgnucash-unstableのフォルダの奥にインストールされる
◎ gnucashの環境でgtkimcocoaの設定
$ gtk-query-immodules-2.0 > ~/gnucash-unstable/etc/gtk-2.0/gtk.immodules
$ ~/gnucash-unstable/bin/gtk-demo でデモ起動 OK
「Text Widget」→「Hypertext」を開いても日本語入力できた。

◎ GnuCashで日本語入力確認
$ ~/gnucash-unstable/bin/gnucash-launcher &
でgnucash起動。
日本語入力できることを確認した。

うへー、結構長い道のりだった。
証拠写真は、これ。

ただし、まだ日本語入力周りが原因で落ちることがあるようですので、こまめに記録を取った方がいいでしょう。