mieki256's diary



2026/02/21() [n年前の日記]

#1 [ruby] Ruby 3.4.8 x64をWindows11にインストール

Windows11 x64 25H2上で、Ruby 3.4.8 64bit(x64) をインストールした。Rubyinstaller版を利用させてもらうことにする。

今までは DXRuby を動かしたくて x86版を選んでたけど、ちょっとそのあたりの事情が変わってきそうなので今回は素直にx64版を選んでみた。

_RubyInstaller for Windows
_Downloads

rubyinstaller-devkit-3.4.8-1-x64.exe を入手して実行。

最初のダイアログで、2つの選択肢が出てくる。


後者を選ぶと、管理者権限で開いたコマンドプロンプト上じゃなければ gem install 等ができなくなる…。ここは前者を選んだほうがいい…。最初、後者を選んでしまって、gem がさっぱりインストールできないと悩んでしまった…。

今回は D:\Ruby\Ruby34-x64\ にインストールした。

一通りインストールが終わるとMSYS2関係のインストールだか初期設定だかが実行されるけれど、特に数値を選ばなくてもEnterキーを叩いていくだけで最低限のインストールはされるらしい。

gemをインストール :

Microsoft Visual Studio Code (VSCode)で ruby-lsp なる拡張を利用すると、Rubyに対する支援機能が使えるらしいので、以下の gem をインストールしておいた。
rubocop
syntax_tree
rufo
rubyfmt
ruby-lsp

_Ruby LSP - Visual Studio Marketplace

たぶん要らないものも入ってる。何を入れたら ruby-lsp が動くのか分からなかったので…。本来なら自動でインストールしてくれるらしいのだけど、よく分からないエラーメッセージが次々に表示されてしまって…。あらかじめ手動でインストールしておいたほうがいいのかなと…。

VSCode で.rb を開くと、右下のほうに「{ } Ruby」と表示されるけど、「{ }」の部分をクリックすると現在の状態が表示されて、LSPとやらが実際に動いてるかどうかが分かるっぽい。

しばらく待ってると動き始める感じもするけれど、もし動いてなかったら、VSCodeのコマンドパレット(Ctrl + Shift + P)で、「Ruby LSP: Start」や「Ruby LSP: Restart」をしないといけないかもしれない。このあたり使い方がよく分かってない…。

余談。この ruby-lsp を提供してる Shopify って、RubyGems乗っ取り事件で名前が出てきたところだろうか…?

閑話休題。ちなみに…。
  • どんな gem が入っているかは gem list で見れる。
  • ">" を使えばファイルに保存することもできる。
  • Perlを使ってバージョン表記無しのリストを保存することもできる。…これ Ruby でもできないか?

gem list
gem list | perl -pe "s/ \(.+\)//"

gem list > 20260220_ruby348.txt
gem list | perl -pe "s/ \(.+\)//" > 20260220_ruby348_no_versions.txt

rubygems のアップデートは以下。

gem update --system

pikとuruに登録 :

異なるバージョンのRubyを切り替えて利用できる pik と uru にも登録しておいた。

_vertiginous/pik: Ruby version manager for Windows
_jonforums / uru - Bitbucket

pik add D:\Ruby\Ruby34-x64\bin

uru admin add D:\Ruby\Ruby34-x64\bin --tag 348

今確認してみたら、pik の実行バイナリを配布してたページが404になってるな…。uru を使えということなんだろう…。

irbでエラーが出る :

Windows11 x64 25H2 + Ruby 3.4.8 x64 上で irb を実行しようとしたらエラーが出た。

> irb
Error loading RC file 'D:\home2\mieki256/.irbrc':
<internal:D:/Ruby/Ruby34-x64/lib/ruby/site_ruby/3.4.0/rubygems/core_ext/kernel_require.rb>:139:in 'Kernel#require': cannot load such file -- irb/ext/save-history (LoadError)

"~/.irbrc" の記述が問題だった…。以下が書かれてた。

require "irb/ext/save-history"

_Ruby 3.2と3.3のirb historyの扱いの違いと対処方法 (2025-02-11) | あーありがち

Rubyのバージョンによって、件のファイルはその場所に存在してなかったりするらしい。

以下のように書き換えてみた。

begin
  require "irb/ext/save-history"
rescue LoadError
end

IRB.conf[:SAVE_HISTORY] = 1000

これでエラーが出なくなった。

AI(Google Gemini)によると、今のirbは昔と違って補完機能も色付け機能もデフォルトで有効になってるらしい。昔の ~/.irbrc はそのまま使わないほうがいいのかもしれないな…。

#2 [ruby] DXRuby 64bit版があるらしい

DXRuby という、Windows上でRubyを使って2Dゲームを作れるライブラリがあるのだけど、64bit版Rubyに対応させた DXRuby (DXRuby64)があるらしいと知った。

_dxruby64 | RubyGems.org | コミュニティのgemホスティングサービス
_spoolkitamura/dxruby64
_dxruby64/README-ja.md at main - spoolkitamura/dxruby64
_DXRubyの64bit対応版|rbCanvas
_MP3の再生もできるようになったDXRuby64の Soundクラス|rbCanvas
_DXRuby64でOGGファイルの再生にも対応|rbCanvas

素晴らしい…。Windows11 x64 25H2 + Ruby 3.4.8 x64(64bit) 上でインストールしてみた。

gem install dxruby64

DXRuby の動作には d3dx9_40.dll が必要になる。入手方法と置き場所は以下のページで解説されている。

_dxruby64/README-ja.md at main - spoolkitamura/dxruby64

Ruby 3.4.8 x64上で動いてくれた。素晴らしい…。

サウンド関係は仕様が変わっているらしいのでそのあたりのチェックはしていないけれど、表示関係は手元のスクリプトがそのまま動いてくれた。

#3 [ruby] ruby-gtk4/ruby-gtk3をRuby 3.4.8 x64にインストール

Windows11 x64 25H2 + Ruby 3.4.8 x64 (Rubyinstaller版)で、gtk4 (ruby-gtk4) がインストールできそうか試してみた。

_gtk4 | RubyGems.org | コミュニティのgemホスティングサービス
_ruby-gnome/ruby-gnome: A set of bindings for the GNOME libraries to use from Ruby.

Ruby 2.3.8 x64にインストール :

gtk4 は、以下のパッケージが必要になる模様。

> gem install gtk4

Fetching gobject-introspection-4.3.5.gem
Fetching glib2-4.3.5.gem
Fetching graphene1-4.3.5.gem
Fetching cairo-1.18.4.gem
Fetching gdk_pixbuf2-4.3.5.gem
Fetching gio2-4.3.5.gem
Fetching cairo-gobject-4.3.5.gem
Fetching pango-4.3.5.gem
Fetching atk-4.3.5.gem
Fetching gtk4-4.3.5.gem
Fetching gdk4-4.3.5.gem
Fetching gsk4-4.3.5.gem
...

Done installing documentation for glib2, gobject-introspection, graphene1, cairo, cairo-gobject, pango, gio2, gdk_pixbuf2, gdk4, gsk4, atk, gtk4 after 7 seconds
12 gems installed

gtk4 4.3.5 をインストールできたっぽい?

サンプル :

ruby-gtk4 を使ったサンプルをAI(Google Gemini)に提示して貰った。Hello World と表示しつつ、ボタンをクリックしたらメッセージダイアログを表示する。動いてくれた。

01_hello_gtk4.rb
require "gtk4"

application = Gtk::Application.new("jp.example.hello", :default_flags)

application.signal_connect "activate" do |app|
  window = Gtk::ApplicationWindow.new(app)
  window.set_title("Ruby GTK4 Sample")
  window.set_default_size(300, 200)

  box = Gtk::Box.new(:vertical, 10)
  box.set_margin_top(20)
  box.set_margin_bottom(20)
  box.set_margin_start(20)
  box.set_margin_end(20)

  label = Gtk::Label.new("Hello World")
  box.append(label)

  label2 = Gtk::Label.new("Use : ruby-gtk4")
  box.append(label2)

  button = Gtk::Button.new(label: "Push me")
  button.signal_connect "clicked" do
    dialog = Gtk::MessageDialog.new(
      parent: window,
      flags: :modal,
      type: :info,
      buttons: :ok,
      message: "Hello",
    )
    dialog.signal_connect("response") { dialog.destroy }
    dialog.show
  end
  box.append(button)

  window.set_child(box)
  window.present
end

puts "Starting GTK4 Application..."
application.run([$0] + ARGV)

rub-gtk3のインストール :

Windows11 x64 25H2 + Ruby 3.4.8 x64 (Rubyinstaller版)に、ruby-gtk3 (gtk3) をインストールしてみた。

_gtk3 | RubyGems.org | コミュニティのgemホスティングサービス

gtk4 をインストールしてから、直後に gtk3 をインストールした。必要なパッケージは gtk4 の段階でインストールされたように見える。

> gem install gtk4

> gem install gtk3

Fetching gtk3-4.3.5.gem
Fetching gdk3-4.3.5.gem
Temporarily enhancing PATH for MSYS/MINGW...
Installing required msys2 packages: mingw-w64-ucrt-x86_64-gtk3
Building native extensions. This could take a while...
Successfully installed gdk3-4.3.5
Building native extensions. This could take a while...
Successfully installed gtk3-4.3.5
Parsing documentation for gdk3-4.3.5
Installing ri documentation for gdk3-4.3.5
Parsing documentation for gtk3-4.3.5
Installing ri documentation for gtk3-4.3.5
Done installing documentation for gdk3, gtk3 after 1 seconds
2 gems installed

gtk3 4.3.5 がインストールされた。手元にあったサンプルも動いてくれた。

ただ、Ruby 3.4.8 x64 (64bit版)ではなく、Ruby 3.4.8 x86 (32bit版) でインストールを試した時はエラーが出まくった…。x64版なら上手く行くのかもしれない。

#4 [ruby] ruby-tkをRuby 3.4.8にインストール

Windows11 x64 25H2 + Ruby 3.4.8 x64 (Rubyinstaller版) に、tk (ruby-tk) をインストールしてみた。

結論を先に書いておくけど、以下でインストールすればいいかもしれない。

gem install tk -- --with-cflags="--std=c17"

インストールで試行錯誤 :

まずは素直に以下を打ってみたけれど。

> gem install tk

Fetching tk-0.5.1.gem
Temporarily enhancing PATH for MSYS/MINGW...
Using msys2 packages: mingw-w64-ucrt-x86_64-tk
Building native extensions. This could take a while...
ERROR:  Error installing tk:
        ERROR: Failed to build gem native extension.

    current directory: D:/Ruby/Ruby34-x64/lib/ruby/gems/3.4.0/gems/tk-0.5.1/ext/tk
...
make: *** [Makefile:252: tcltklib.o] エラー 1

make failed, exit code 2

Gem files will remain installed in D:/Ruby/Ruby34-x64/lib/ruby/gems/3.4.0/gems/tk-0.5.1 for inspection.
Results logged to D:/Ruby/Ruby34-x64/lib/ruby/gems/3.4.0/extensions/x64-mingw-ucrt/3.4.0/tk-0.5.1/gem_make.out

ビルド時にエラーが出てしまってダメだった…。tcltklib.o を作れないと言ってるな…。


_tcltklib.c build issue with Windows 11 + MSYS2 (RubyInstaller) - Issue #72 - ruby/tk

Ruby 3.4.5 の時点でもエラーが出てビルドできなかったっぽい。

試しに MSYS2上で Ruby 3.4.8 をインストールして gem install tk をしてみたけど、別のエラーが出てビルドできなかった。MSYS2上ですらインストールできないのか…。


Cコンパイラに、CFLAGS="--std=c17" を渡してやれ、という話があるな…。

_Compatibility issues with Ruby 3.4.7 - Issue #74 - ruby/tk

gem install tk -- --with-cflags="--std=c17"

むむ? これならビルドが通ったっぽい?

手元にあったサンプルを動かしてみたら、Hello World的なサンプルなら動いてくれた。

余談。RubyでGUIアプリは鬼門 :

一応インストールできたけど…。Ruby/Tk で何かを作るということは、自分の場合はまず無いのだよな…。

Tkを使って何かしらを作りたいなら Python + tkinter で作るほうが良い。絶対にPythonを選んだほうが良い。

Python は tkinter が標準で同梱されてるから、Rubyのようにこんな初っ端で無意味に悩まなくて済む。しかも Python ならユーザ数も解説記事も圧倒的に多いからググってコピペしてれば大体なんとかなる。

Ruby/Tkに限らず、Ruby でGUIアプリを作ろうとすると軽く地獄を見るから止めたほうがいい…。遊びや暇潰しなら止めないけど…。

  • 今動いたとしてもRuby本体のバージョンアップが早いので、サードパーティ製GUIライブラリがRuby本体のバージョンアップに対応できず、下手すると1年後にはそのRubyスクリプトが現行バージョンで動かなくなる。
  • ruby-gtk3/gtk4 はexe化できないので、作ったGUIアプリを他のPCに持っていって使うことが難しい。
  • 他のPCでもそのGUIアプリを動かせるように RubyInstaller + gtk3/gtk4をインストールすると、全部で2.76GBほどになる。

特にストレージの圧迫具合がちょっと…。

  • Delphi や LazarusでGUIアプリを作れば数MBのexeで済む。
  • golang で作ったexeでも十数MBで済む。
  • C#で作って.NETランタイム込みにしたとしてもせいぜい100MBを超えるぐらい。

それらと比べると、Ruby製GUIアプリを動作させるための2.76GBというファイルサイズは桁違いに大き過ぎる。

そもそもRubyInstallerに同梱されてるMSYS2(DevKit)の中には Python が入ってるので…。だったら最初からPython使えよ!

そんなわけで、LL(Lightweight Language、軽量プログラミング言語)でちょっとしたGUIアプリを作りたいなら Python + tkinter のほうが絶対に良いです。exe化もできるし。

まあ、これはあくまで Windows上の話で…。gtk等があらかじめ入っていて各アプリが共用してるLinux上ならこんなギャグレベルの状態にはならないのだろうなと…。

Ruby で Qt を使えるようにした方も「もうRubyなんて使わずにPythonを使いましょうね」って言っちゃってるし…。

_ryanmelt/qtbindings: An easy to install gem version of the Ruby bindings to Qt

以上、1 日分です。

過去ログ表示

Prev - 2026/02 -
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project