前回の記事 では
とっても簡単なじゃんけんアプリを作ってみました。
今回は wxFormBuilder というGUIビルダー、RADを使って
書き換えてみましょう。
じゃんけんアプリでは、 フレーム や パネル や ボタン や サイザー をコードで組み立てていました。
wxFormBuilder を使えば、これらのデザインは
GUIビルダー側で行ないxrcファイルに保存、コード側ではxrcファイルを読み出しイベントハンドラを登録するだけになります。
DBやデータに基いてGUIの構成を細かく組み立てる場合はXRCは向きませんが、予め決まっている場合はコードで組み立てるより気楽だと思います。
まずは wxFormBuilder をインストールしましょう。
wxFormBuilder_v3.1.70.exe を入れてみます。
wxFormBuilderを起動したら、下のようにレイアウトします。
レイアウトできたら、メインの設定を変更しましょう。
nameとfileを変更します。
最後にXRCを書き出すためチェックを入れ、ボタンを押してそれぞれ janken.fbp, janken.xrc を保存しましょう。
前回のjanken.plを変更し、janken_xrc.plとします。
次のコマンドで起動します。
- portableshell.bat
- perl janken_xrc.pl
上手く起動できたでしょうか。

それぞれのシンプルなサンプルを動かしてみましたので、その起動速度のメモします。
体感時間なので当てになりませんが、次のような感じでした。
- WxPerl 1秒未満
- WxPython 1秒未満 (気持ちWxPerlより速いかも)
- WxRuby 8秒ぐらい
使ったコードは次です。
Rubyのコードは wxRubyでGUIプログラミング をそのまま使わせていただきました。
コードが等化ではありません。
ですが、それぞれの各種サンプルを動かしてみたところ、上記の体感時間に関しては
だいたい当てはまる感じがしています。
サンプルは次を動かしてみました。
- WxPerl http://search.cpan.org/perldoc?Wx::Demo
- WxPython C:\Program Files\wxPython2.8 Docs and Demos\samples\
- WxRuby C:\wxruby\samples
環境は Core 2 Duo 2.13G Macbook Air の VMWare Fusion の WindowsXP 上です。
帳票印刷を真面目にやろうとすると、色々問題が出てくると思います。
- ExcelやAccessを使い、OLEでアクセスするも、Officeが入っていなくては使えない。
- Crystal ReportsはVisual Studio 2010からバンドルされなくなった。
- 商用ライブラリを利用するには、お金が掛かる。
- 自分でレイアウトするにしてもレイアウトを計算して、デバイスコンテキストにレンダーするのが難しい、面倒。
- rubyにはとっても良いものがあるようです! ThinReports
Webアプリのようにテンプレート言語でTableタグを含むHTMLを作成して
それをPDFに変換できたら良いのに・・・と思い付きました。
wkhtmltopdf はSafariやChromeで使用されている
HTMLレンダリングエンジン Webkit をCUIから扱えるようにパッケージングしたものです。
Windows環境では、wkhtmltopdf.exeとして用意されています。
Sumatra PDF PDF用のフリーソフトです。CUIからも使えます。印刷とプレビューに使用します。ダウンロードはポータブル版がオススメです。
それでは組み合わせてみましょう。
- Text::MicroTemplateを使って、HTMLを作成します。
- wkhtmltopdfを使って、HTMLをPDFへ変換します。
- Sumatra PDFを使って、PDFを印刷、又はプレビューします。
contrib以下にダウンロードしました。

下記を chohyo.pl として保存します。
- portableshell.bat
- perl chohyo.pl
で、chohyo.htmlとchohyo.pdfを書き出します。
- perl chohyo.pl --preview
で、Sumatra PDFでchohyo.pdfを開きます。
- perl chohyo.pl --printer
で、Sumatra PDFでchohyo.pdfを印刷します。
前回 はUrladerを使って
ソースの一群を.exeに纏めてみました。
これを実行すると、C:\Documents and Settings\<ユーザー名>\Application Data\urlader\Janken\i-<バージョン> には素のソースコードが展開されてしまいます。
今回は、Filter::Crypto::CryptFileを使ってjanken.plを難読化してみたいと思います。
以下を crypt.pl として保存してください。
- portableshell.bat
- perl crypt.pl
を実行すると、janken2.plという難読化されたファイルが出力されます。
これはこのまま perl janken2.pl として実行できます。
じゃんけん.plを exe にしてみる の
pack_janken.pl内で、難読化したいファイルのみcrypt_fileを適用するようにしておけば
exeのパッケージング時に自動的に行なわれるようになると思います。
Filter::Cryptoで難読化したファイルは 復号化できないわけではない
のですが、実用上はこの程度で十分な場合もあると思います。
前回 は WxPerl で簡単な janken.pl を作成しました。
今回はperl環境をインストールしなくても簡単に実行できるように
単独のexeにしてみたいと思います。
方法いろいろ
色々な方法があると思います。
Urladerを使ってみる
ここではUrladerを使って exe にしてみます。
Urlader-1.0そのままだと、起動時に問題が出ますので、パッチを当ててインストールします。
- portableshell.bat
- cpan
- look Urlader
- lwp-request http://bokut.in/mt/2012/04/24/urlader-rt76135.patch | patch -p1
- perl Makefile.PL
- dmake
- dmake install
- exit
下記のパッケージングするためのスクリプトを pack_janken.pl として保存してください。
pack_janken.plの実行には List::Compare が必要ですので、こちらもインストールしてください。
pack_janken.plを実行してexeを作ってみましょう。
- portableshell.bat
- lwp-download http://urlader.schmorp.de/prebuilt/1.0/windows-x86 windows-x86
- perl pack_janken.pl
janken.exeが出きたら成功です。
C:\Jankenに
- Perl環境
- モジュール
- janken.pl
をコピーし、実行できる環境を用意しました。
(この時点でC:\Jankenだけ持ち歩けば、実行できるようになりました)
UrladerでC:\Janken以下を janken.exe に固めます。
janken.exeをダブルクリックすると起動できると思いますが如何でしょうか。
これでStrawberry Perl環境やjanken.plを持ち歩かなくても、janken.exeだけ持ち歩けば
実行できるようになりました。
実行時は次のように動きます。
- C:\Documents and Settings\<ユーザー名>\Application Data\urlader\Janken\i-<バージョン> に固めたC:\Jankenを展開。
- 上記ディレクトリをカレントディレクトリとして、wperl.exe janken.plを実行。
展開されたディレクトリは削除されません。
2回目移行の実行時に再利用されるので、1回目に比べ起動時間がとても短かくなります。
なお作ったjanken.exeは こちら になります。
