バナー画像

Rubyと言えば「Ruby on Rails」と言っていいほど、Rubyの開発案件の多くは「Ruby on Rails」を使ったWeb開発が多いのも事実ですが、Rubyでブラウザではない、マルチプラットフォームのGUIアプリを作ることも可能です。

この記事では、RubyでGUIを持つデスクトップアプリを開発する方法について解説していきます。

RubyでGUIアプリが作れる?

Ruby標準には、GUIアプリを開発するライブラリは含まれていないが、GUIライブラリをgemコマンド等でインストールすれば、WIndows / Mac / Linux上で動くマルチプラットフォームなGUIアプリが開発できます。

C#やVBの言語を使用し、Visual Studioで作成する「Windows Forms」や「WPF」に比べると、Rubyでは、あまり複雑なGUIアプリを作ることは難しいが、簡単なGUIであれば割と簡単に作ることができます。

例えば、メインは「Ruby on Rails」を使ったWebシステムの開発であるが、ちょっとしたGUIツールが必要になった時に、それもRubyを使って開発しておくことで、使用する言語をRubyに統一でききるといったメリットもあります。

RubyのGUIライブラリ

RubyでGUIアプリを開発する場合は、次のようなライブラリがあります。

上記のように、RubyのGUIライブラリは割と多くありますが、開発やメンテナンスが止まっているライブラリもあるため、GUIライブラリの選定時には注意が必要です。

今回は「Tcl/Tk」をRubyから扱えるようにした「Ruby/Tk」を使ってGUIアプリを作るサンプルをいくつか紹介していきます。

Ruby/Tkのインストール

gemコマンドで「Ruby/Tk」をインストールします。

$ gem install tk

インストール後1 gem installedと表示されればOKです。

Parsing documentation for tk-0.3.0
Installing ri documentation for tk-0.3.0
Done installing documentation for tk after 8 seconds
1 gem installed
ポテパンダの一言メモ

Ruby2.3以前までは、「Ruby/Tk」は標準のパッケージに含まれていたが、2.4以降は個別にインストールする必要があります。

簡単な画面を作ってみよう

Ruby/Tkをインストールしたら、まずはラベルにメッセージを表示するだけの簡単な画面を作ってみましょう。

次のように、TKLabelのインスタンスを生成しHello, TK!という文字列を画面上に表示するサンプルコードを作成しsample.rbという名前で保存します。

require 'tk'

TkLabel.new(nil,
     text: 'Hello, TK!',
     fg: 'red',       # 文字色
     bg: 'gray').pack # 背景色

Tk.mainloop

保存ができたら、ターミナル(Windowsの場合はコマンドプロンプト)を起動し次のコマンドで実行します。

ruby sample.rb

実行すると、次のようなウィンドウが表示され、ラベルに「Hello, TK!」のメッセージが表示されているでしょう。

いろんなGUI部品を使ってみよう

簡単な画面で「Ruby/Tk」の使い方をイメージしたところで、次は「Ruby/Tk」で使用できるGUI部品をいくつか紹介していきます。

ボタン(TkButton)

ボタンが押された時に決められた動作をするGUI部品です。クリックされた時の動作は、commandオプションにブロックで処理を指定します。

次のサンプルコードではボタンを1つ画面に追加し、クリックされた時に、コンソール上に「Hello World」という文字を出力します。

require 'tk'

TkButton.new(nil,
    text: 'ここを押してください',
    command: proc{print "Hello World\n"}).pack

Tk.mainloop

▪️実行結果

チェックボックス(TkCheckButton)

チェックボックスは、ON/OFFの状態を表すGUI部品です。

TkCheckButtononvalueには、チェックONの時に入る値、offvalueにはチェックOFFの時に入る値を指定し、チェックON/OFFの状態に応じて、TkVariableで宣言した変数にonvalueまたoffvalueで指定した値が入ります。

checkbutton .ck -text "チェックボックス"
require 'tk'

var1 = TkVariable.new('')
var2 = TkVariable.new('')

TkCheckButton.new(nil,
    text: 'りんご',
    onvalue: 'Apple',
    offvalue: '',
    variable: var1).pack

TkCheckButton.new(nil,
    text: 'メロン',
    onvalue: 'Melon',
    offvalue: '',
    variable: var2).pack

Tk.mainloop

ラジオボタン(TkRadioButton)

require 'tk'

var = TkVariable.new('Melon')

TkRadioButton.new(nil,
          text: 'りんご',
          value: 'Apple',
          variable: var).pack
TkRadioButton.new(nil,
          text: 'メロン',
          value: 'Melon',
          variable: var).pack
TkRadioButton.new(nil,
          text: 'もも',
          value: 'Peach',
          variable: var).pack

Tk.mainloop

▪️実行結果

1行のテキスト入力(TkEntry)

TkEntryは1行のみ入力可能なテキストフィールド部品です。パスワード入力のように、入力文字を伏字にする場合は、showオプションを指定します。

require 'tk'

var = TkVariable.new('サンプルテキスト')
TkEntry.new(nil,
              textvariable: var).pack

pass = TkVariable.new('12345')
TkEntry.new(nil,
              textvariable: pass,
                show: "*").pack

Tk.mainloop

▪️実行結果

複数行入力できるテキスト(TkText)

TkTextは複数行入力が可能なテキストフィールドです。

require 'tk'

text = TkText.new(nil)
text.pack('side' => 'top', 'fill' => 'both')

TkButton.new(nil, 'text' => '入力内容を表示',
              'command' => proc{print text.value, "\n"}) \
  .pack('side' => 'left', 'fill' => 'both')

Tk.mainloop

▪️実行結果

さいごに

RubyでGUIアプリが作れる「Ruby/Tk」のインストール方法から簡単な使い方を紹介してきました。

「Ruby/Tk」のベースとなる 「Tcl/Tk」はMacやLinux上であればデフォルトでインストールされており、またWindowsでも「Tcl/Tk」をインストールすればGUIを動かすことが可能です。

マルチプラットフォームで動く「Ruby/Tk」でちょっとしたアプリを作ってみるのも良いでしょう。

【関連記事】
Rubyで開発するならbundlerは必須!機能と使い方を解説

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。