機能 ショートカットキー
リファレンス(参考URL)一覧へ移動 R
記事URLをMarkDownとしてコピー Ctrl+M
前のコードタグへ移動 Ctrl+←
次のコードタグへ移動 Ctrl+→
ヘルプを表示・非表示 H
Tips
- ショートカットキーは記事上で有効です。ヘッダー/フッター付近では機能しないことがあります。
- コードタグ移動機能がうまく動かないときは、Shift+F5でページを更新してみてください。
- このウィンドウを閉じるには、Hキーをもう一度押してください

JRubyでRuby製クロスプラットフォームGUIアプリを作ってみた

プログラミング

Windows 10環境でshoes(shoes4)を使ってクロスプラットフォームなRuby製GUIアプリケーションを作っていきたいと思います。

準備

プログラミング
  1. JavaとJDKをインストールします

JavaがないとJavaが動きません。
JDKというデベロッパー開発環境がないとJrubyが動きません。Javaの開発ができません。

  1. jrubyをインストールします

GettingStarted · jruby/jruby Wiki

Downloads — JRuby.orgから、JRuby 9.2.0.0 Windows Executable (x64) をクリックしてダウンロード。

インストールして、パスを通して、Powershellなどを再起動してjrubyが入っているか確認。

jruby --version
  1. jruby -S gem install shoes –pre

Gemをインストール。

参考:shoes/shoes4: Shoes 4 : the next version of Shoes

とりあえず動かしてみた

プログラミング

app.rb

Shoes.app width: 300, height: 200 do
  background lime..blue

  stack do
    para "Welcome to the world of Shoes!"
    button "Click me" do alert "Nice click!" end
    image "http://shoesrb.com/img/shoes-icon.png",
          margin_top: 20, margin_left: 10
  end
end
shoes app.rb

これでGUIウィンドウが開いているはず。

パッケージング

プログラミング
PS C:\pg\rubyGuiAppDev> shoes package --help
Usage: shoes-swt [options]
        --jar                        Package as executable JAR file
        --mac                        Package as OS X application
        --windows                    Package as Windows application
        --linux                      Package as Linux application

あれ、エラー…。

PS C:\pg\rubyGuiAppDev\_> shoes package --windows .\app.rb
Packaging windows...
rm -f pkg/tmp/app.jar
Creating pkg/tmp/app.jar
ArgumentError: same file: pkg/tmp/windows-app-template/app.bat and pkg/tmp/windows-app-template/app.bat
  block in fu_each_src_dest at C:/jruby-9.2.0.0/lib/ruby/stdlib/fileutils.rb:1557
          fu_each_src_dest0 at C:/jruby-9.2.0.0/lib/ruby/stdlib/fileutils.rb:1574
           fu_each_src_dest at C:/jruby-9.2.0.0/lib/ruby/stdlib/fileutils.rb:1556
                         mv at C:/jruby-9.2.0.0/lib/ruby/stdlib/fileutils.rb:516
                after_built at C:/jruby-9.2.0.0/lib/ruby/gems/shared/gems/furoshiki-0.6.1/lib/furoshiki/windows_app.rb:34
                    package at C:/jruby-9.2.0.0/lib/ruby/gems/shared/gems/furoshiki-0.6.1/lib/furoshiki/base_app.rb:41
               block in run at C:/jruby-9.2.0.0/lib/ruby/gems/shared/gems/shoes-swt-4.0.0.rc1/lib/shoes/swt/packager.rb:52
                       each at org/jruby/RubyArray.java:1801
                        run at C:/jruby-9.2.0.0/lib/ruby/gems/shared/gems/shoes-swt-4.0.0.rc1/lib/shoes/swt/packager.rb:49
                        run at C:/jruby-9.2.0.0/lib/ruby/gems/shared/gems/shoes-core-4.0.0.rc1/lib/shoes/packager.rb:24
                        run at C:/jruby-9.2.0.0/lib/ruby/gems/shared/gems/shoes-core-4.0.0.rc1/lib/shoes/ui/cli/package_command.rb:14
                        run at C:/jruby-9.2.0.0/lib/ruby/gems/shared/gems/shoes-core-4.0.0.rc1/lib/shoes/ui/cli.rb:40
                     <main> at C:/jruby-9.2.0.0/lib/ruby/gems/shared/gems/shoes-swt-4.0.0.rc1/bin/shoes-swt:37
                       load at org/jruby/RubyKernel.java:994

名前が被っているファイルがあるって書いてあるので、名前を変えます。

app > firstapp

PS C:\pg\rubyGuiAppDev\_> shoes package --windows .\firstapp.rb
Packaging windows...
rm -f pkg/tmp/firstapp.jar
Creating pkg/tmp/firstapp.jar

できました。

出来たfirstapp-windows.zipを解凍して、中にある.jarファイルを実行するとGUIが開きます。

リファレンス

プログラミング

ここまで確認できたら、Rdocでも見てみましょうか。

Top Level Namespace — Documentation for shoes/shoes4 (master)

デバッグ方法

プログラミング

ask_open_fileメソッドが気になったんだけど、これは開いたファイルの中身をオブジェクトに保存でもするのだろうか。どうやって取り出すんだ?

と、JavaもJrubyも初めて触るので(Javaは少し触ってはいるのですが)、WindowsサイドのIO的な部分がわからなかったり。

こういう時pryでデバッグ出来たらなぁ………

The development group in Shoe’s Gemfile has pry and pry-nav installed, which should give a solid, basic debugging experience when necessary.

Development and Debugging Tools · shoes/shoes4 Wiki

ShareX_ScreenShot_938e9034-0cb6-48b3-a7d6-8959e5f4598e.png (878×427)

出来ました。
ask_open_fileは選択したファイルの絶対パスを返してくれるようです。

やり方:
1. インストール:jruby -S gem install pry
1. デバッグ起動したいところに追記

require "pry"
binding.pry

Gemfileにpry入ってるからすぐ使えますよ、って言う割にはインストールしないと使えない。よくわからない。まぁインストールできるのでおk。

終了するときはquit、ヘルプはhelpで見れます。
俺が知ってるpryはcontinueなんだけど、pryとpry-byebugって違うのだろうか。よくわからない。

ちなみにpry-byebugはインストールもrequireもできない。jruby -S gem install pry-byebugするとmakeのエラーERROR: Failed to build gem native extension.が出ます。使うなってことなのでしょう。

pryの安心感。

GUIからデバッグを起動する

ボタンを押したらpryが起動するようにします。

button do |b|
    b.text = 'pry'
    if b.enabled?
        binding.pry
    end
end

ボタンを押すとテキストボッスの値をRubyに送信する

プログラミング

テキストを入力するごとにedit_boxメソッドが実行され、@edit_box_textが書き換わります。
sendボタンを押すと、@edit_box_textをputsします。

edit_box do |e|
  @edit_box_text = e.text
end

button "send" do |b|
puts @edit_box_text
end

他にも、inputBoxのようなクラスを呼び出すメソッドがあります。

ref:

shoes4/element.rb at d16159b94ae8190059e1d596332da1ad9346b0a7 · shoes/shoes4

この記事で欲しい情報が見つからなかった方へ

この記事の更新情報がある場合があります。
この記事は以下の記事とも関連性があると思われます。

Ruby hash キーが重複していた場合は2つの値を加算する
Ruby jrubyをインストールしてからGEMのパスが変わってしまった場合の対処
Rubyでhashや配列をeach_with_indexで最初と最後の処理だけ特別な処理をする
Rubyで配列の集合演算
Rubyでmechanizeでブログをキーワード検索して最初の投稿を取得する
Ruby open-uriでBASIC認証ありのプロキシサーバーを経由
Ubuntu Rubyでmecabを使えるようにする


管理人の方針で、既存の記事の編集はせず、新しい情報や大きな既存情報の更新があった場合には、新しい記事として公開することになっています。
当記事で欲しい情報が見つからなかった・解決に至らなかった場合、これらのリンクがお役に立てるかも知れません。

どうやってこの関連記事を生成しているの?
この機能のPHPソースコード(2500行)

コメントを残す

Close Menu