=begin

= Exerb

== 概要

Exerbは、オブジェクト指向言語Rubyのスクリプト/拡張ライブラリを
単一で動作可能なWindows実行形式ファイルに変換するソフトウェアです。

== 特徴

* 複数のファイル（スクリプト、拡張ライブラリ）を単一の実行形式ファイルに変換することができます。
* 生成された実行形式ファイルにはRuby本体も含まれているため、Rubyがインストールされていない環境でも実行することができます。
* 実行形式ファイルを生成するのにコンパイラを必要としません。

== 使用方法

Exerbは2つのスクリプトで構成されています。

=== archive.rb

"archive.rb"は、アーカイブリストファイルを読み込んで、複数の
スクリプト、複数の拡張ライブラリを1つのアーカイブファイルに変換
します。書式は以下の通りです。

  $ ruby archive.rb <アーカイブリストファイル> <出力するアーカイブファイル>

==== アーカイブリスト

アーカイブリストファイルは、アーカイブファイルに格納するファイルと
その内部名を記述したテキストファイルです。下記がその例です。

  # この行はコメント
  kcode		sjis
  script	main.rb		sample/sample1.rb
  library	Win32API.so	sample/Win32API.so

"#"で始まる行はコメントです。
"kcode"で始まる行は、文字コードの指定です。
"script"で始まる行は、スクリプトファイルの読み込みです。
"library"で始まる行は、拡張ライブラリの読み込みです。

script、libraryは以下の書式で記述します。

  <scriptまたはlibrary><1つ以上のタブ><内部名><1つ以上のタブ><ファイル名>

内部名はアーカイブ内に格納されたときのファイル名です。この内部名は
require、バックトレースなどで使用されます。
ファイル名は実際に読み込むファイル名です。

kcodeは以下の書式で記述します。

  kcode<1つ以上のタブ><文字コード>

文字コードには"euc"、"sjis"、"utf8"のいずれかを指定します。

アーカイブ内の一番先頭にあるスクリプトファイルが、実行形式ファイル
の実行時に実行されます。一番先頭にあるスクリプトファイルとは、つまり
一番最初に指定された"script"です。

=== join.rb

"join.rb"は、"archive.rb"によって生成されたアーカイブファイルと
Ruby本体が含まれたコアファイルを結合して、実行形式ファイルを生成
します。
書式は以下の通りです。

  $ ruby join.rb <コアファイル> <アーカイブファイル> <生成する実行形式ファイル>

== サンプル

exampleディレクトリ以下には下記のサンプルがあります。

: sample1
    Win32APIを使ってメッセージボックスを表示するサンプル。

: sample2
    例外を発生させ、例外ダイアログを表示するサンプル。

: sample3
    VisualuRubyを使ってウィンドウを表示するサンプル。

: sample4
    標準入力から文字列を読み込み、行番号を付加して出力するサンプル。

sample1を実行形式ファイルに変換するには、sample1.shを実行するか
下記のようにします。

  $ cd example
  $ ruby ../bin/archive.rb sample1.rbc sample1.rba
  $ ruby ../bin/join.rb ../bin/ruby167g.rbx sample1.rba sample1.exe

sample2、sample3についても同様の方法で変換することができます。
sample4については後述のCUI版コア（ruby167c.rbx）を使用してください。

=== サンプルで使用しているライブラリ

サンプルプログラムではVisualuRuby（vr/以下、及びswin.so）と
Win32API（Win32API.so）を使用しています。
VisualuRubyはNISHIKAWA Yasuhiro氏によるWin32 GUIライブラリです。
VisualuRubyに関する情報は((<URL:http://www.osk.3web.ne.jp/~nyasu/software/vrproject.html>))から入手することができます。
すばらしいライブラリをありがとう！

== コア

ExerbにはGUI版とCUI版の2種類のコア（Ruby本体部分）があります。
GUI版、CUI版のそれぞれのファイル名は"ruby167g.rbx"と"ruby167c.rbx"です。
GUI版とCUI版の違いは下記の通りです。

* GUI版では標準入出力は使用できません。CUI版では使用できます。
* GUI版では例外発生時にダイアログボックスを表示します。CUI版ではコンソールにメッセージを出力します。

== 入手方法

Exerbの最新情報、及び最新バージョンは下記のURLから入手することができます。

((<URL:http://sourceforge.jp/projects/exerb/>))

また、Rubyの情報、及びソースコードは下記のURLから入手することができます。

((<URL:http://www.ruby-lang.org/>))

== 開発環境

Exerbは以下の環境で開発されました。

* Microsoft Windows2000 SP2
* Microsoft VisualC++ 6.0

== 動作確認環境

Exerbによって生成された実行形式ファイルが、以下の環境で動作することを確認しました。

* Microsoft WindowsXP
* Microsoft Windows2000 SP2
* Microsoft WindowsMe
* Microsoft Windows98 SecondEdition
* Microsoft Windows98
* Microsoft Windows95

== ライセンス

Exerbのコア、およびスクリプトのライセンスはLGPLです。
Exerbによって生成された実行形式ファイルについては、特に制約はありません。

== 著作権・免責

* ExerbのRuby本体部分の著作権は、まつもとゆきひろ氏、及びその他開発に関わった方々に属します。
* ExerbのRuby本体部分以外の著作権は、加藤勇也に属します。
* Exerbの使用によって発生したいかなる損害に対して、作者は一切責任を持ちません。

== 謝辞

Rubyというすばらしい言語を開発されたまつもとゆきひろ氏、及びその開発に関わったすべての方々に感謝いたします。
すばらしい言語をありがとう！

== 連絡先

Exerbの作者、加藤勇也のメールアドレスは下記の通りです。
ご意見、ご感想、ご要望、バグ報告などを送っていただけると幸いです。

yuya@katoden.co.jp

== 最後に

良いRubyライフを。:-)

=end
