WindowsデスクトップアプリケーションをRubyで作って実行可能ファイル(.exe)を配布する！

#結論から

2018年3月現在、Windows向けデスクトップアプリケーションをRubyで書いて実行可能ファイル（.exe）を作って配布したいなら、採用するのはこれ択一！

* Ruby-GNOME2 （GUIライブラリ）
* OCRA （実行可能ファイル作成ツール）

##手順

Ruby-GNOME2をインストール。Windows用GNOMEライブラリも自動でインストールされる。

```shell
gem install gtk2 -r
```

RubyスクリプトからWindows実行可能ファイルを作成するツールOCRAをインストール。

```shell
gem install ocra -r
```

OCRAを使ってRuby/GNOME2で書かれたデスクトップアプリケーションから実行ファイルを作成。

```shell
ocra desctopapplication.rb --no-autoload --add-all-core
```

生成された実行ファイルdesctopapplication.exeは75MBだった。


#RubyでWindowsデスクトップアプリケーション（GUIアプリケーション）を作るためライブラリ比較

| 名前 | 活動状況 | サポート環境 | メリット | デメリット |
|:--|:-:|:-:|:-:|:-:|
| Ruby-GNOME2 | 活発  | Windows, Linux, Mac | 安定、情報豊富                | メンテナンスのみ。機能開発はGNOME3      |
| Ruby-GNOME3 | 活発  | Windows, Linux, Mac | 活発に開発中                  | 情報が少ない、機能不足のところも        |
| FXRuby      | 活発  | Windows, Linux, Mac | Rubyらしいコードが書ける       | 日本語入力に対応していない（表示は可能） |
| Shoes       | 活発  | JRuby               | 簡素でRubyらしいコードで書ける | JRubyが必要。将来pure Rubyになる?       |
| Qt  |   |   |   |
| wxRuby | 7年間更新なし | Windows, Linux, Mac | - | - |






```shell
gem install gtk2 -r -p http://lv2west-proxy.nwdept:8080
```

結果

```shell
Fetching: pkg-config-1.2.9.gem (100%)
Successfully installed pkg-config-1.2.9
Fetching: native-package-installer-1.0.6.gem (100%)
Successfully installed native-package-installer-1.0.6
Fetching: cairo-1.15.11-x86-mingw32.gem (100%)
Successfully installed cairo-1.15.11-x86-mingw32
Fetching: glib2-3.2.1-x86-mingw32.gem (100%)
Successfully installed glib2-3.2.1-x86-mingw32
Fetching: atk-3.2.1-x86-mingw32.gem (100%)
Successfully installed atk-3.2.1-x86-mingw32
Fetching: cairo-gobject-3.2.1-x86-mingw32.gem (100%)
Successfully installed cairo-gobject-3.2.1-x86-mingw32
Fetching: gobject-introspection-3.2.1-x86-mingw32.gem (100%)
Successfully installed gobject-introspection-3.2.1-x86-mingw32
Fetching: pango-3.2.1-x86-mingw32.gem (100%)
Successfully installed pango-3.2.1-x86-mingw32
Fetching: gio2-3.2.1-x86-mingw32.gem (100%)
Successfully installed gio2-3.2.1-x86-mingw32
Fetching: gdk_pixbuf2-3.2.1-x86-mingw32.gem (100%)
Successfully installed gdk_pixbuf2-3.2.1-x86-mingw32
Fetching: gtk2-3.2.1-x86-mingw32.gem (100%)
Successfully installed gtk2-3.2.1-x86-mingw32
Parsing documentation for pkg-config-1.2.9
Installing ri documentation for pkg-config-1.2.9
Parsing documentation for native-package-installer-1.0.6
Installing ri documentation for native-package-installer-1.0.6
Parsing documentation for cairo-1.15.11-x86-mingw32
Installing ri documentation for cairo-1.15.11-x86-mingw32
Parsing documentation for glib2-3.2.1-x86-mingw32
Installing ri documentation for glib2-3.2.1-x86-mingw32
Parsing documentation for atk-3.2.1-x86-mingw32
Installing ri documentation for atk-3.2.1-x86-mingw32
Parsing documentation for cairo-gobject-3.2.1-x86-mingw32
Installing ri documentation for cairo-gobject-3.2.1-x86-mingw32
Parsing documentation for gobject-introspection-3.2.1-x86-mingw32
Installing ri documentation for gobject-introspection-3.2.1-x86-mingw32
Parsing documentation for pango-3.2.1-x86-mingw32
Installing ri documentation for pango-3.2.1-x86-mingw32
Parsing documentation for gio2-3.2.1-x86-mingw32
Installing ri documentation for gio2-3.2.1-x86-mingw32
Parsing documentation for gdk_pixbuf2-3.2.1-x86-mingw32
Installing ri documentation for gdk_pixbuf2-3.2.1-x86-mingw32
Parsing documentation for gtk2-3.2.1-x86-mingw32
Installing ri documentation for gtk2-3.2.1-x86-mingw32
Done installing documentation for pkg-config, native-package-installer, cairo, glib2, atk, cairo-gobject, gobject-introspection, pango, gio2, gdk_pixbuf2, gtk2 after 21 seconds
11 gems installed
```

ocra sample.rb C:\Ruby193\lib\tcltk\ --no-autoload --add-all-core






[FXRuby](https://github.com/larskanis/fxruby)

公式サイトであったはずの[fxruby.org](http://www.fxruby.org/)が死んでいるけどgithub上の活動はそこそこあるので気にしない。[READMEで代用](https://github.com/larskanis/fxruby/blob/1.6/README.rdoc)。

最新バージョンは1.6.39。2017年12月25日にリリースされている。


[APIマニュアルはこちら](http://www.rubydoc.info/gems/fxruby/frames)

日本語入力ができない。非公式パッチの適評が必要。らしい。
http://magazine.rubyist.net/?0001-RubyGUI#l8



Shoes ... JRuby用

FXRuby ... 生きてる
公式サイト http://www.fxruby.org/ は死んでるし、
trunkは6年放置されているけど、最新版の1.6はまあまあ活発に活動されているので大丈夫。
最新のりりース
=== 1.6.39 / 2017-12-26
Fix FXGLVisual.supported and .supported?
Add support for RubyInstaller-2.5


Ruby/Tk
Ruby-GNOME2
QTRuby ... 最近怪しい
Ruby/FLTK ... 当時から開発が停止
wxRuby ... 7年前から更新なし

limelight ... 6年前から更新なし


#FXRubyを使う

##インストール

```shell
gem install fxruby -r -p http://lv2west-proxy.nwdept:8080
```

結果

```shell
Fetching: fxruby-1.6.39-x86-mingw32.gem (100%)
Successfully installed fxruby-1.6.39-x86-mingw32
Parsing documentation for fxruby-1.6.39-x86-mingw32
Installing ri documentation for fxruby-1.6.39-x86-mingw32
Done installing documentation for fxruby after 38 seconds
1 gem installed
```

##


###参考
https://code.i-harness.com/ja/q/3fb29
https://code.i-harness.com/ja/q/1c32d
https://qiita.com/drumath2237/items/16ab7247f30000cb7583