title: Apollo - Delphi Ruby interface
author: YOSHIDA Kazuhiro
mailto: moriq@moriq.com
header:
%c:Last-Modified: % %e:Time.now.strftime('%%Y/%%m/%%d')%
end
%html:<center>%
%html:<img src="pa0.gif" alt="Project Apollo">%
%i:rubyring.htm% %href:http://www.ruby-lang.org/ja/ Ruby.home% %href:ftp://ftp.netlab.co.jp/pub/lang/ruby/ Ruby.get%
%html:</center>%
[ %href:index.html Japanese% ] / [ %href:index-en.html English% ] Hello, another way.

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

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

1.1. What's new

: 2003-06-04
  Apollo関連文書は %href:http://wiki.fdiary.net/apollo/ apollo's Wiki% に移行する予定です。
: 2003-05-20
  [%href:http://www.freeml.com/message/ap-list@freeml.com/3070 ap-list:3070%] Kylix2 で Apollo (Re: Kylix ではApolloは無理かも)

1.1. プラットフォーム (OS)

Apollo は Delphi6 が動作可能な環境下で動作します。現時点では MS-Windows95/98/NT4.0 以降です。
将来、 Inprise が kylix をリリースした暁には Unix でも動くようになるかも、と淡い期待を抱いています。( 現状うまくいってません )
なお、 Delphi の配布可能なライブラリを使用しますので、 Delphi 自体は Apollo の実行に必要ありません。

1.1. ダウンロード

: Apollo バイナリ + Delphi6 実行時パッケージ

  : %href:http://www.moriq.com/apollo/archive/ap-636_bde60.msi .%
    bin, lib, doc, sample, VCL60, BDE
  : 対象
    Delphi6 をお持ちでない方
    データベースを扱いたい方

: BDE モジュール設定ファイル

  : %href:http://www.moriq.com/apollo/archive/bdemerge.ini .%
    データベースドライバをインストールするためには %c:bdemerge.ini% を %c:.msi% と同じディレクトリに入れておく必要があります。
    ただし Delphi6 には (Personal を含めて) 標準で %c:bdemerge.ini% が用意されていますので Delphi6 をインストールした環境では必要ありません。

: Apollo バイナリ + Apollo ソース配布

  : %href:http://www.moriq.com/apollo/archive/ap-636_vcl60.zip .%
    bin, lib, doc, sample, src for Delphi6
  : 対象
    Delphi6 をお持ちの方
  : 注意
    Ruby本体 (ruby.exe, ruby16-mswin32.dll) は含んでいません。

1.1. インストール

配布ファイルを展開してください。

MSI 配布では、スタートメニューの プログラム -> Apollo から set_path_for_ruby を実行してください。これで Ruby へのパスが通ります。その後、再起動する必要があるかもしれません。

zip 配布では、あらかじめ Ruby 本体 (Ruby1.6.6) をインストールして ruby16-mswin32.dll にはパスを通しておいてください。
mswin32 版 Ruby バイナリは %href:http://www.dm4lab.to/~usa/ruby/ Ruby-mswin32% などで配布されています。

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

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

: Apollo.exe
  簡易エディタを備えた開発環境。

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

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

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

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

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

1.1. 使い方

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

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

コマンドラインは自由に変更できます。空白で区切ることにより引数も指定できます。
--text
  foo.rb foo.txt
--
[Execute] をクリックすると、コマンドラインを実行します。 [Browse...] をクリックすると、 [ ファイルを開く ] ダイアログを表示します。 [ 開く ] を選択すると、そのファイルを開きます。

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

1.1. Apollo とは

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

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

1.1. Phi とは

Phi は Delphi VCL の Ruby 拡張ライブラリです。使い方は、ほかの Ruby 拡張ライブラリと同じです。すなわち、次のように書くことにより導入できます。
--ruby
require 'phi'
--
以後、 VCL に対応するモジュールを呼び出せるようになります。手始めに、フォームを作って表示してみましょう。
--ruby
form = Phi::Form.new
form.show
--
ボタンのクリックを捕捉するイベントハンドラを書いてみます。
--ruby
btn = Phi::Button.new(form)
btn.parent = form
def btn.on_click
  print "click!\n"
end
--
最後に、イベントループに入るようにします。
--ruby
Phi.mainloop
--
このように、 Ruby で書くと表現が自然で理解しやすいです。 (^-^)

1.1. メーリングリスト
%i:ap-list.htm%
1.1. 文書
Apollo のマニュアルその他の文書は pi 形式のテキストで納められています。

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

* %href:update.html Update Information%
  古い
* %href:Phi/index.html Phi manual%
  古い
* %href:ap.html Apollo問答%
* %href:dev/index.html Phi 拡張ライブラリを書くために%
* %href:apache/index.html Apollo for win32 Apache %
  Apache を Apatch と綴ってしまう罠。

1.1. 外部文書
みなさんの協力なしには今の Apollo は存在しえません。ありがとう。

* %href:tutorial/tut_index.html Apollo チュートリアル% by みずほちゃん
  初めて Apollo に触れる方に読んでいただきたい解説書です。

* %href:/ruby/apl.html Apollo Library% by もりきゅう
  Apollo コンポーネント の説明書です。

* %href:/ruby/ap-memo.html Apollo ドキュメントを書かなくちゃ% by もりきゅう
  組み込み Ruby の説明書 ( かなり中途半端 ) です。

* %href:/ruby/article.html Project Apollo 紹介記事% by もりきゅう
  この記事は %href:http://dmj.psnet.ne.jp/books/ISBN4-939049-13-0.html Delphi マガジンの Vol.13% で特集として発表されました。
  最新版とは食い違う記述もあります。

1.1. 書籍

* %href:http://dmj.psnet.ne.jp/books/ISBN4-939049-13-0.html デルファイマガジン Vol.13%  2000/11/1 発行
  『★特集：RubyとDelphi〜Apolloプロジェクト』

* %href:http://www.ascii.co.jp/books/detail/4-7561/4-7561-3810-1.html Ruby を 256+ 倍使うための本 紅玉制覇編%
  Ruby を 256 倍使う会 著

* %href:http://www.ascii.co.jp/books/detail/4-7561/4-7561-3886-1.html Ruby を 256 倍使うための本 黄道編% %href:http://www.jin.gr.jp/~nahi/RWiki/?cmd=view;name=256%%3A%%3Aerrata 正誤表%

