よたらぼ
自分の興味の赴くままにIT技術系のネタを取りとめもなくメモっています。
Ruby言語やLinuxのネタが多いです。

February 12, 2007 [おもひで]

[Ruby-GNOME2] Ruby-GNOME2 Win32 GUI Installerリリース!

Ruby-GNOME2がWindows環境でもホントに簡単に使うことができるようになりました。RailsやJavascriptに疲れた貴方、気分転換にGUIアプリケーションにチャレンジしてみませんか。おもしろいですよー。

ちなみに、今回のインストーラに含まれるライブラリは、Ruby/GLib2, Ruby/ATK, Ruby/Pango, Ruby/GdkPixbuf2, Ruby/GTK2, Ruby/Libglade2, Ruby/GtkGLExt, Ruby/Libart2, Ruby/GnomeCanvas2, Ruby/GnomePrint2, Ruby/GnomePrintUI2, Ruby/GtkSourceView, Ruby/RSVG2です。

他に、rcairo, glade-2等も入っています。あ、msgmerge/msginit等のRuby-GetText向け開発ツール群も入っていますよん。

GUIアプリケーションに興味がなくても、画像処理、PDF/SVGの処理などでrcairo, RSVG2, GdkPixbuf2等を使ってみるのも楽しいかもしれません。

[Ruby-GNOME2] Ruby-GNOME2 Win32 GUI Installer開発ノート

今までもRuby-GNOME2 ProjectではWin32向けのバイナリを提供してきたのですが、GTK2本体を他から提供されるインストーラ(gladewin32.sf.netを推奨)を利用して別途インストールしなければいけなかったため以下のような問題がありました。

  1. 2回インストール作業しなければいけないのが面倒くさかった。チュートリアルに書いてある手順を読まないと何をどうインストールすれば良いのかわかりづらい、というのは今思えば大きなマイナスポイントだった
  2. Ruby-GNOME2が期待するGTK2バイナリとgladewin32のGTK2バイナリのバージョン違いが原因でRuby-GNOME2が動作しないことがあった
  3. 実はWin32版が提供されているライブラリであっても、gladewin32.sf.netがサポートしていないがためにRuby-GNOME2としても提供できないライブラリがあった
  4. 複数のWin32版GTK2がインストールされている環境では、PATH指定の影響で意図していないバージョンのバイナリを参照してしまい、Ruby-GNOME2が動作しない場合があった(2番目との合わせ技ですね)

そこで、年末から、上記問題を解決すべく作業を始めました。

まず、大前提としてGTK2本体を配布パッケージに含めることにしました。これで1, 2番目の問題を解決できます。

次にgladewin32.sf.netが提供するバイナリをベースにftp.gnome.orgで配布されているgtksourceview, libgnomeprint, libgnomeprintui, libgnomecanvasを追加しコンパイルできるところまで持っていきました。これを合わせて配布することで3番目を解決できます。私としてはgtksourceviewがサポートできたというのがポイント高いです。

次にGTK2本体を置く場所ですが、これはruby-install-dir\lib\GTKにしました。c:\GTK等に自由にインストールできるスタイルも考えたのですが、あえて固定し、Ruby-GNOME2ライブラリ側がPATH指定より優先してそのライブラリを読み込むようにしました。これで、4番目の問題を解決できます(ちなみにGTK2はインストールしないこともでき、その場合はPATHに指定されているGTK2を読み込むことになる)。実は、これを見越して、Ruby-GNOME2-0.16.0では上記修正がすでに入っていたりします。

それから、インストーラですが、今まではzip形式を展開し、install.rbを実行するとインストールがCUIベースで始まる、という形態だったのですが、WindowsではGUIインストーラの方が受けが良いと思ったのでNSISを使ってインストーラを作ることにしました。実はこれに時間がかかったのでした。でも、慣れると非常に便利なインストーラですね。オススメです。なお、インストール方法としてgem化も考えたのですがダウンロードしている時間が長くなりそう(配布ファイルが12MB弱ある)だったのでリモートからの直接インストールでgemは向いていないと判断しました。ローカルにダウンロードしてからインストールするのであれば、gemはインストール手順としてはinstall.rbと同じレベルですし(もちろんアンインストールできるところや複数のバージョン云々は違いますが)。また、GTK2が必要とするiconvとOne Click Ruby Installerが提供するiconv.dllの相性が悪いため、Ruby-GNOME2のインストーラではiconv.dllを上書きしているということもあり、gemにしづらいなと思ったのもひとつです。ただ、こちらはPATHの指定をうまくすることで回避できるかもしれません。

あ、そうそう。リリースするファイルを集めたりするための作業をRakefile化したのもポイントです。今までは繰り返し作業でやっていた部分も極力自動にすることで作業を楽にすることに注力しました。これは当たり前のことで頭の中では良く分かっていたことなんですが、今までは手作業でやってしまっていたんですよねぇ。

そんなこんなで今回のリリースにこぎつけたわけです。ぜひとも使ってみてくださいね。

[GTK+] Windowsで文字化け

上記の作業をしていて初めて知ったのですが(苦笑)WindowsでGTK+を使うと文字化け(主にトーフになる)する、画像が読み込めない、IM(日本語入力)がうまく動作しないとかいう場合、以下の3つを実行すると解決するかもしれません。

GTK\bin\pango-querymodules.exe > ..\etc\pango\pango.modules
GTK\bin\gdk-pixbuf-query-loaders.exe > ..\etc\gtk-2.0\gdk-pixbuf.loaders
GTK\bin\gtk-query-immodules-2.0.exe > ..\etc\gtk-2.0\gtk.immodules

実はgladewin32では上記をまとめてreconfig.batというバッチファイルが用意されていますのでそれを実行するだけでOKです。


編集