Create  Edit  Diff  Phillro Industries  Index  Search  Changes  History  Source  RSS  Note  wikifarm  Login

index

<center>

<img src="pa0.gif" alt="Project Apollo">

Ruby Ring [ <a href="http://www.webring.ne.jp/cgi-bin/webring?ring=ruby;id=29;prev">prev</a> ] [ <a href="http://www.webring.ne.jp/cgi-bin/webring?ring=ruby;list">list</a> ] [ <a href="http://www.webring.ne.jp/cgi-bin/webring?ring=ruby;id=29;home">home</a> ] [ <a href="http://www.webring.ne.jp/cgi-bin/webring?ring=ruby;id=29;next">next</a> ]

[[Ruby.home|http://www.ruby-lang.org/ja/]] [[Ruby.get|ftp://ftp.netlab.co.jp/pub/lang/ruby/]]

</center>

[ Japanese? ] / [ English? ] Hello, another way.

Delphi と Ruby 夢の共演 ! (^-^)

Apollo = Delphi + Ruby

嘘か真か,まずは試してみてちょ。

プラットフォーム (OS)

Apollo は Delphi5 が動作可能な環境下で動作します。現時点では MS-Windows95/98/NT4.0 以降です。

将来, Inprise が kylix をリリースした暁には Unix でも動くようになるかも,と淡い期待を抱いています。

なお, Delphi の配布可能なライブラリを使用しますので, Delphi 自体は Apollo の実行に必要ありません。

文書

Apollo のマニュアルその他の文書は pi 形式のテキストで納められています。

  • .pi はそのまま読むこともできますが、*.html に変換することもできます。*.html に変換するには $(Apollo)/doc ディレクトリに入っている auto.rb か pi.rb を使います。auto.rb を apollo.exe で読み込んで実行すると、Apollo をインストールしたドライブに /ap-doc というディレクトリが作られ、そこに html 形式に変換された Apollo のドキュメントができあがります。
  • Update Information?
  • Phi manual?
  • Phi 拡張ライブラリを書くために?

外部文書

みなさんの協力なしには今の Apollo は存在しえません。ありがとう。

初めて Apollo に触れる方に読んでいただきたい解説書です。

Apollo コンポーネント の説明書です。

組み込み Ruby の説明書 ( かなり中途半端 ) です。

この記事は Delphi マガジンの Vol.13 で特集として発表されました。

最新版とは食い違う記述もあります。

書籍

『★特集:RubyとDelphi〜Apolloプロジェクト』

Ruby を 256 倍使う会 著

ダウンロード

apollo ドキュメント

ap-doc.zip
HTML 形式のドキュメントです。Phi manual を含みます。

apollo 実行環境

<a href="http
//www.moriq.com/ruby/archive/ap-636a_vcl60.zip">ap-636a_vcl60.zip</a>: Apollo の実行環境のすべてを含んでいます。

Delphi5 あるいは C++Builder5 がインストールされている場合には,これだけで ok です。

Delphi5 配布パッケージ

Delphi5 も C++Builder5 もインストールされていない場合には,次の vcl50.zip か delphi5.zip のいずれかをダウンロードしてください。

vcl50.zip
vcl50.zip は最低限必要な配布パッケージです。 vcl50.bpl, vcl50.jpn, vclx50.bpl を含んでいます。とりあえず試したい方はこちらを拾ってください。展開してできた vcl50.bpl, vcl50.jpn, vclx50.bpl を Windows のシステムディレクトリ ( c:\windows\system ) にコピーすれば ok です。
delphi5.zip
delphi5.zip は Delphi5 professonal の配布パッケージすべてを含んでいます。 データベース (RDB) が Apollo で扱えるようになります。 1.8MB もありますのでご注意ください。

使うだけなら上記だけ拾っていただければ結構です。以下はソースの配布です。

apollo

上記実行環境の配布に含まれています。

spin ( ruby.exe, mswin32-ruby16.dll )

ruby_spin-1.6.4.patch
ruby-1.6.4.tar.gz に対するパッチです。

spin は Ruby のソースをちょこっといじって作ります。

入出力関係
stdout, stderr に直接出力している箇所を io_write を通すように変更
ハンドル関係
Phi との連携のための ap_set_handle_message, ap_set_stdout_proc
大域変数関係
Delphi の DLL export は関数形式じゃないといけない ( はず ) なので, global な変数を取得するためのラッパー関数をつける。

インストール

配布ファイルを解凍してください。

Apollo に含まれる実行ファイル群

Apollo には, .exe の拡張子を持つ実行ファイルがいくつかあります。

Apollo.exe

簡易エディタを備えた開発環境。

ruby.exe

DOS console 実行環境。

ご注意
ruby.exe に何も付けないで実行すると標準入力からのスクリプトの入力待ちになります。あたかもハングしたかのように見えます。その場合には Ctrl+Z を押して入力待ちを終了させれば ok です。

ruby_ap.exe

Delphi 例外が飛んで捕捉されないとき,ruby.exe では『外部例外なんとか』と出て嫌な終了の仕方をしますが,ruby_ap.exe では普通に終了します。ただ,IO (stderr) まわりとか,微妙に動作が異なるのがネックです。

AppPath.exe

Apollo.exe の所在地を Windows のレジストリに登録します。

ruby_aw.exe

スクリプトの所在地を適当に捜し出して実行します。この実行ファイルをスクリプトと同じ名前にするとそのスクリプト専用になります。

ole.exe

COM server です。 sample/ole/ole_simple.vbs を動かすためにあります。^^;

使い方

実行直後「開始エラー」と表示されるかもしれません。必要なファイルをコンピュータが見つけられなかったと思われます。たぶん, VCL50 に関連するファイルがないのでしょう。検索してみて,もしなければ, vcl50.zip を拾ってください。

起動時のコマンドラインは foo.rb となっています。これにより, Apollo.exe を置いたそのフォルダの foo.rb をロードします。 foo.rb の内容がメモに表示されます。もしなければ失敗するので,メモは空欄のままです。

コマンドラインは自由に変更できます。空白で区切ることにより引数も指定できます。

  foo.rb foo.txt

[Execute] をクリックすると,コマンドラインを実行します。 [Browse...] をクリックすると, [ ファイルを開く ] ダイアログを表示します。 [ 開く ] を選択すると,そのファイルを開きます。

[Terminate] をクリックすると,実行中の Ruby プロセスを終了します。 [Save] をクリックすると,メモの内容をコマンドラインで指定されたファイルに保存します。

Apollo とは

Delphi と Ruby を結びつける機構全体を総称して Apollo と呼んでいます。

rubymw.dll を Delphi から呼び出すために Ruby.pas を書いたのが,その始まりです。 MS-Windows アプリケーションは,コンソールアプリケーションとウィンドウアプリケーションとに大別できますが,オリジナル ruby は基本的にコンソールアプリケーションとして設計されています。 Ruby をウィンドウアプリケーションのエンジン部として使えると便利ではないかと考え, Delphi VCL を Ruby 拡張ライブラリとして呼び出す機構を基礎に据えました。

まだ試行錯誤の段階なので,仕様はころころ変わると思います。 ^^;

Phi とは

Phi は Delphi VCL の Ruby 拡張ライブラリです。使い方は,ほかの Ruby 拡張ライブラリと同じです。すなわち,次のように書くことにより導入できます。

require 'phi'

以後, VCL に対応するモジュールを呼び出せるようになります。手始めに,フォームを作って表示してみましょう。

form = Form.new
form.show

ボタンのクリックを捕捉するイベントハンドラを書いてみます。

btn = Button.new(form)
btn.parent = form
def btn.on_click
  print "click!\n"
end

最後に,イベントループに入るようにします。

Phi.mainloop

このように, Ruby で書くと表現が自然で理解しやすいです。 (^-^)

メーリングリスト

<FORM ACTION="http://www.freeml.com/regist.cgi" METHOD="post"> <INPUT TYPE="hidden" NAME="ml" VALUE="ap-list"> <TABLE WIDTH=300 BORDER=0 CELLSPACING=0 CELLPADDING=0> <TR>

 <TD ALIGN="center" HEIGHT=20 COLSPAN=2 BGCOLOR="#333366">
   <TABLE WIDTH="100%" BORDER=0 CELLSPACING=1 CELLPADDING=0> <TR BGCOLOR="#6666FF">
     <TD HEIGHT=20 ALIGN="center"><FONT SIZE="-1" COLOR="#FFFFFF"><B>Project Apollo ML に入ろう!!</B></FONT></TD>
   </TR> </TABLE>
 </TD>

</TR> <TR BGCOLOR="#CCCCFF">

 <TD WIDTH=120 HEIGHT=36><A HREF="http://www.freeml.com/Mess.cgi?Group=ap-list"><IMG SRC="freeml.gif" BORDER=0 ALT="FreeML"></A></TD> <TD WIDTH=180 HEIGHT=36>
   <FONT SIZE="-1"> メールアドレス<BR> </FONT><INPUT TYPE="text" SIZE="16" NAME="email"> <FONT SIZE="-1"><INPUT TYPE="submit" NAME="join" VALUE="参加"></FONT>
 </TD>

</TR> </TABLE> </FORM>

Last modified:2003/07/14 21:39:22
Keyword(s):
References: