[ top ] [ prev ] [ up ] [ next ] Last-Modified: 2001/09/18

Project Apollo
Ruby Ring [ prev ] [ list ] [ home ] [ next ] Ruby.home Ruby.get

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

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

Apollo = Delphi + Ruby
嘘か真か,まずは試してみてちょ。

プラットフォーム (OS)

Apollo は Delphi5, 6 が動作可能な環境下で動作します。現時点では MS-Windows95/98/NT4.0 以降です。また Kylix を用いて Linux への移植を進めています。
なお, Delphi の配布可能なライブラリを使用しますので, Delphi 自体は Apollo の実行に必要ありません。

文書

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

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

外部文書

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

書籍

ダウンロード

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

ap-doc-pi.zip
Pi 形式のドキュメントです。Pi => HTML 変換スクリプトを含みます。

apollo 実行環境
最新版は ver 0.626 ( ap-626 ) です。
.msi, .zip どちらも Apollo に関しては内容は同じものですが、.msi は VCL6 の実行時パッケージを含んでいるのでたいへん大きくなっています。 Delphi6 をお持ちの方は .zip のほうをお勧めします。Delphi6 をお持ちでない方は .zip だけでは動作しません。ただし Delphi5 をお持ちの方は下記の Apollo ソース配布からコンパイルして VCL5 を使う Apollo を作ることができます。
要するに VCL6 環境をお持ちの方は .zip を、お持ちでない方は .msi を拾えば大丈夫です。

Apollo-626.msi
Apollo の実行環境です。ダブルクリックすれば後は MSI が勝手にやります。

ap-bin-626.zip
Apollo の実行環境です。お好きなフォルダに展開してください。
使うだけなら上記だけ拾っていただければ結構です。以下はソースの配布です。

apollo
ap-src-626.zip
Project Apollo の完全なソースファイルを固めたものです。
コンパイルするには Delphi5 あるいは 6 が必要です。
Delphi5 であれば ProjectApollo.bpg を開いてください。
Delphi6 であれば少し変換作業が必要です。 5to6 をご覧ください。

spin ( ruby.exe, mswin32-ruby16.dll )
ruby_spin.patch
ruby-1.6.5-preview2.tar.gz に対するパッチ。これは上記 Apollo ソース配布の src フォルダに含まれています。
spin は Ruby のソースをちょこっといじって作ります。

大域変数関係
Delphi の DLL export は関数形式じゃないといけないので, global な変数を取得するためのラッパー関数をつけています。
もう少ししたらパッチは必要なくなるかもしれません。

インストール

配布ファイルを展開してください。なお,コマンドラインから Ruby を使用したり,APL を使う場合 ( apl をご覧ください ) には,インストールしたフォルダに作られる bin フォルダにパスを通しておく必要があります。

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 を動かすためにあります。^^;

使い方

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

起動時のコマンドラインは 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 で書くと表現が自然で理解しやすいです。 (^-^)

メーリングリスト

Project Apollo ML に入ろう!!
FreeML メールアドレス
author: YOSHIDA Kazuhiro
[ top ] [ prev ] [ up ] [ next ]