[ruby-list:42834] [ANN] Beta (trial) version of Ruby/TkORCA
From:
Hidetoshi NAGAI <nagai@...>
Date:
2006-09-28 10:23:34 UTC
List:
ruby-list #42834
永井@知能.九工大です.
Ruby/TkORCA のβ版 (というかトライアル版) がダウンロード可能になりまし
たので,ご案内させていただきます.
*** それって何? ****
「どこでも GUI! (GUI, Anywhere!)」というのがコンセプトです.
Ruby/TkORCA (Ruby/Tk On RFB Canvas) は,ローカルのウィンドウシステム用
に書かれた Ruby/Tk ベースのマルチウィンドウアプリケーションを,手軽に,
操作性はそのままに,安全に,ソース変更もほとんど必要なく,(ユーザのウィ
ンドウ操作も含めて)監視や制御の下で,ネットワークを介して利用できるよ
うにするためのフレームワークです.
( IPA の 2005 年度下期未踏ソフトウェア創造事業の採択プロジェクトとして
開発が行われました.)
*** どんな風に使うの? ***
最も簡単なケースの例では次のようになるでしょう.
1. ローカルのウィンドウシステムで動作するような Ruby/Tk アプリケーショ
ンを作ります.
GUI の最表層が Ruby/Tk で作られていさえすれば,外部のプログラムやラ
イブラリを使っていても問題はありません.
$stdout や $stderr を使ってメッセージを出力しているものでも OK です.
2. Ruby/TkORCA のスクリプトを使って,上記 1 で作ったアプリケーションを
動かしてみます.
ローカルのウィンドウシステムの画面に Ruby/TkORCA のウィンドウが一つ
起動して,セキュリティエラーなどが出なければ,その中にアプリケーショ
ンが埋め込まれているものを目にすることができるはずです.
セキュリティエラーが出て動かないなら,そのまま公開するのは危険であ
ることを意味しますので,修正が必要かもしれません.
ただし,もしそのアプリケーションを公開しても十分に安全である (たと
えば,利用者が入力した文字列は一切読み込まないとか,信頼できる人に
しか使わせないとか...) のであれば,コマンドラインオプションを使っ
て,アプリケーションの実行環境のセーフレベルを緩めることも可能です.
3. Ruby/TkORCA サーバを起動します.
上記 2 と同じオプションを与えて Ruby/TkORCA のサーバスクリプトを起
動します.
起動できたならば,サーバの 5940 番ポート (デフォルトでは) に VNC
ビューアを使って接続してみてください.ファイアウォールが同ポートへ
のパケットを通していれば(^_^),VNC ビューアに上記 2 で目にしていた
表示があらわれるはずです.
サーバ管理者は,IRB のようにインタラクティブに,稼働中のアプリケー
ションを監視したり操作したりすることも可能です.
例として,ネットワークアクセス可能な "Hello, World" GUI アプリケーショ
ンを作るとすれば,次のような手順になるでしょう.
1. "/tmp/hello.rb" として次のようなスクリプトを作ります.
( もちろん,ローカルのウィンドウシステムでそのまま動きます. )
-----------------------------------------------------------------
require 'tk'
TkButton.new(:text=>'hello', :command=>proc{
Tk.messageBox(:message=>'Hello, Ruby/TkORCA !!')
}).pack
Tk.mainloop
-----------------------------------------------------------------
2. 次のようなコマンドで Ruby/TkORCA 上で動かしてみます.
この時点では,ローカルウィンドウに表示が出ますので,操作してみて問
題がないかどうかを確かめます.
-----------------------------------------------------------------
$ tkorca.rb /tmp/hello.rb
-----------------------------------------------------------------
3. 次のようなコマンドで Ruby/TkORCA サーバを動かしてます.
-----------------------------------------------------------------
$ tkorca_server.rb /tmp/hello.rb
-----------------------------------------------------------------
完全にサービスデーモンにしてしまうなら,次のようにします.
-----------------------------------------------------------------
$ tkorca_daemon.rb /tmp/hello.rb
-----------------------------------------------------------------
以上です.多分,3分もかからないのではないかと思います.
このサーバが動いている時に,サーバ管理者が稼働中のアプリケーションに
対して操作を加えた際の例を以下に示します.
この例では,上記の "hello.rb" の "hello" ボタンを押したときの動作を
強制的に起動しています.
=========================================================================
$ telnet localhost 5941
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
*** Control Port of Ruby/TkORCA Server ***
Username: admin
Password:
Connect ...
Pod[5940]> list
--- list of current connections ---
ID[1]: connection ["AF_INET", 54592, "192.168.11.8", "192.168.11.8"] on display :1 from 2006-08-26 23:36:38
-----------------------------------
Pod[5940]> connect 1
ID[1]:0> TkORCA.daughter_list
=> {#<TkORCA::Daughter:0xb67b6018>=>"/tmp/hello.rb"}
ID[1]:0> daughter = TkORCDA.daughter_list.index('/tmp/hello.rb')
=> #<TkORCA::Daughter:0xb67b6018>
ID[1]:0> daughter.eval{ Tk.root.winfo_children }.value
=> [#<TkButton:0xb679cf8c @cmdtbl=["c00065"], @path=".w00014">]
ID[1]:0> daughter.eval{ Tk.root.winfo_children[0].invoke }
=> #<Thread:0xb6744bd4 run>
ID[1]:0>
=========================================================================
ここでやっているような操作ステップを監視用メソッドとして別ファイルに定
義し,アプリケーションの起動時に読み込むようにすることも可能です.
Ruby/TkORCA では,既存のメソッドを wrap して,こうした監視・制御処理を
追加するのを支援するモジュールも用意しています.
もちろん,アプリケーション側からは普通にそのメソッドを呼び出しているよ
うにしか見えません.
*** 使うには何が必要なの? ***
Ruby/TkORCA は pure Ruby/Tk のアプリケーションです.
必要なのは
* Ruby/Tk が正しく動作するような 1.8.5 以降の Ruby
( これは Tcl/Tk も必要であることを意味します.)
* "inetd" サポートありの Xvnc ( TightVNC を推奨します. )
です.
後は,公開したいアプリケーションが必要としているプログラムやライブラリ
ということになります.
*** インストール方法は? ***
Ruby/TkORCA のアーカイブを適当な場所に展開するだけです.
もしかすると,Ruby/TkORCA のデフォルトの設定を変更するために,一部の設
定ファイルを修正したくなることはあるかもしれません.
*** 入手方法は? ***
次のページからにベータ (トライアル) 版の Ruby/TkORCA のアーカイブを
入手できます.
<http://qwik.jp/ruby-tk/RubyTkORCA.html>.
ただし...
ドキュメントはまだ不十分で,説明していない部分が多々あります.
( だから「トライアル」版なのですが.(^_^; )
上記のページも,とりあえず「間借り」しているような状態で,オフィシャル
サイトはまだ準備できていません.
Ruby/TkORCA についての質問などは,この ML に流してください.
( 流す際には,サブジェクトの頭に "[Ruby/TkORCA]" と付けていただけると
見落としづらくなると思いますので,よろしくお願いします.)
注) アーカイブにはいくつかのサンプルが含まれていますが,
Tcl/Tk の Tile 拡張が必要なものや VTk (Visualization Tool Kit) が
必要なものも含まれています.
もし興味を持っていただけたなら,お試しいただけると幸いです.
--
永井 秀利 (九工大 知能情報)
nagai@ai.kyutech.ac.jp