Kamuycikap - SentenceDataBase

日々の勉強の記録を気分で書き綴るブログ

RubyでGUIなアプリケーションを作成する

開発環境の構築

★ダウンロードとインストール

開発OS:Ubuntu9.04
開発環境:NetBeans6.5.1

開発環境はNetBeansRuby版をダウンロードしてインストールした。
NetBeans Ruby版

ダウンロードしたシェルスクリプトを実行すればインストール完了。
アプリケーションメニューに登録される。

GUIを開発するためにWideStudioを採用
インストール方法については、Ubuntuフォーラム書き込みを参照。
WideStudioのインストールについて

★環境設定
最初にWideStudioで新規プロジェクトとしてプロジェクトを作成。
開発言語をRubyとし、文字コードをUTF8と設定する。
Rubyインタプリタへのパスを正しく設定する。
デバッグ用のパスはRubyへのパラメータ指定で、「ruby -r debug」 とするとデバッグモードでRubyが起動する。
WideStudioで作成したRubyプログラム(GUI)が動作する所までを確認しておく。

WideStudioRubyプログラムが動作することを確認した後は、NetBeans側でプロジェクトを作成する。
NetBeans側でプロジェクトを作成する場合、既存のソースを利用するRubyアプリケーションとしてプロジェクトを新規作成する事。
この時に指定するファイルはWideStudioで作成したプロシージャファイルとなる。
基本的に全てのRubyファイルを指定して問題無し。
NetBeansプロジェクトを無事に作成できたら、プロジェクトのプロパティを開き、「主スクリプト」を設定する。
設定する内容は、WideStudioで作成したプロジェクト名と同じRubyファイルが存在するはずなので、そのファイルを指定する。
続けて、作業ディレクトリも設定すること。
この指定により、NetBeansWideStudioのプロジェクトをデバッグ出きるようになる。
ブレークポイントの設定まで出きるようになるので、かなり便利。

開発方法

WideStudioで新規プロジェクトを作成し、GUI及びイベントプロシージャ(Rubyソースファイル)を作成する
NetBeansで作成したプロジェクトにWideStudioで作成したイベントプロシージャ(Rubyソースファイル)を読み込ませる。
ソースコードの編集はNetBeansで行い、デバッグNetBeansから実行する。

putsやpメソッドを利用すると、NetBenasのコンソールにデータを出力できるので非常に便利。

WindowsへのWideStudioプロジェクトの移行

※事前にWindows版WideStudioとActiveScriptRubyをインストールしておくこと。
 可能であれば、Linux側のRubyとWindows側のRubyのバージョンを合わせておいた方が良い。

(注意!!) WideStudioをインストールする際に、指定によってRubyインタプリタがインストールされる。
      インストールされるインタプリタのバージョンが古いので、Windows側のWideStudioRubyインタプリタ設定を 
      ActiveScriptRubyへのパスにする必要がある。

Linux側で作成したプロジェクトは、そのままWindowsのWideStudioに読み込ませても実行できないので下記の手順で対応する。

1. Linuxで作成したプロジェクトをWindowsのWideStudioに読み込ませる。
2. メニューにある「プロジェクト」の「プロジェクト設定」にある「基本設定」を参照し、「TARGET」を「Platform Conpatible」に変更する。
3. エクスプローラを利用して、プロジェクトが保存されているフォルダにある「mwt.so」を削除する。

以上の手順で、LinuxプロジェクトをWindowsプロジェクトとして実行できるようになる。

WideStudioプロジェクトをEXEファイルにする

1. Rubyコンソールを起動し、カレントディレクトリを対象となるプロジェクトのフォルダにしておく
2. mkexyコマンドにてレシピファイルを作成する。
  
  mkexy hoge.rb

  として、実行スクリプトを指定する。
  ※hoge.rbの部分は、WideStudioが作成したプロジェクト名と同じ名前のRubyファイル

  プログラムが実行されるので、全ての機能を網羅する。

2.1 WideStudioで自動的に作成されたプロジェクト名と同じ名前のRubyファイルを編集する

 loadメソッドの部分をrequireに変更する

(例)===========================================================================
#
#WINDOW BUILDER PROJECT MASTER SRC
require 'mwt'

Mwt::WSGFdeviceInitialize()
app = Mwt::WSGIappDev()
Mwt::WSGFwsInitialize()

fontdata = Mwt::WSCstring.new("13,0,0,0,400,0,0,0,128,3,2,1,1,MSゴシック\n15,0,0,0,400,0,0,0,128,3,2,1,1,MSゴシック\n17,0,0,0,400,0,0,0,128,3,2,1,1,MSゴシック\n19,0,0,0,400,0,0,0,128,3,2,1,1,MSゴシック\n22,0,0,0,400,0,0,0,128,3,2,1,1,MSゴシック\n24,0,0,0,400,0,0,0,128,3,2,1,1,MSゴシック\n26,0,0,0,400,0,0,0,128,3,2,1,1,MSゴシック\n34,0,0,0,400,0,0,0,128,3,2,1,1,MS ゴシック\n")
Mwt::WSGFsetFontData(fontdata)
Mwt::WSGFsetDefaultEncoding(16)
$KCODE = "UTF8"
#--- OBJECT execute auto initialize ---
require "MainWindow.rb" # <= ここ
require "IfdBarCode_KeyHook.rb" # <= ここ
require "PmnExit_Activate.rb" # <= ここ
app.execInitHandler()

app.handleEvents()
===========================================================================

3. 起動したプログラムの全ての機能を網羅する。
  mkexyは実行したソースコードを解析してレシピファイルを作成する。
  従って、全てのソースコードを実行しないと、読み込むファイルやライブラリを検出してくれない。
  間違っても、アプリケーションが表示されたからといって、いきなり終了させてはいけない。
  mkexyで起動したアプリケーションの全ての機能を動作させなければ、正しいEXEファイルが出来ないので注意が必要。
プログラムを終了させれば、拡張子exyのファイル(レシピファイル)が新しく作成される。

4. exerbコマンドで実行ファイルを作成

  exerb hoge.exy

  上記の要領で、手順3で作成したレシピファイルを指定して、exerbコマンドを実行。
  コマンド実行後、hoge.exeが作成される。
  ※手順3で全ての機能を網羅出来て入れば問題ないが・・・もし全ての機能テストを網羅出来ていなければ、exeファイルは異常終了する。
    ただ異常終了するだけならまだしも、コマンドプロンプトからプログラムを実行している場合、コマンドプロンプトRubyのエラーコードが列挙されてしまう。
    かっこ悪いので得に注意してテストしておくこと。

  ※実行するにはWideStudioのライブラリが必要となる。
    つまりWideStudioをインストールしているコンピュータでなければ動作しない。
   これはWindowsフォルダに含まれるdllファイルが必要となるためである。
   この問題に付いては、インストーラを作成する段階でインストールする用細工をする必要がある。

CreateInstallFreeを利用したセットアップの作り方

WideStudioをインストールしている状態で、Windowsフォルダの中にあるファイル「libws*.*」を全て任意のディレクトリにコピーしておかなければならない。
セットアップを作成する時に、これらのファイルをインストールするコンピュータのWindowsシステムフォルダにコピーするように指定する。

mwt.dllはインストールされる実行ファイルと同じディレクトリに入れるように指定する事。