= Rubyとは
Rubyはシンプルかつ強力なオブジェクト指向スクリプト言語です.
Rubyは最初から純粋なオブジェクト指向言語として設計されていま
すから,オブジェクト指向プログラミングを手軽に行う事が出来ま
す.もちろん通常の手続き型のプログラミングも可能です.
Rubyはテキスト処理関係の能力などに優れ,Perlと同じくらい強力
です.さらにシンプルな文法と,例外処理やイテレータなどの機構
によって,より分かりやすいプログラミングが出来ます.
== Rubyの特長
* シンプルな文法
* 普通のオブジェクト指向機能(クラス,メソッドコールなど)
* 特殊なオブジェクト指向機能(Mixin, 特異メソッドなど)
* 演算子オーバーロード
* 例外処理機能
* イテレータとクロージャ
* ガーベージコレクタ
* ダイナミックローディング (アーキテクチャによる)
* 移植性が高い.多くのUnix-like/POSIX互換プラットフォーム上で
動くだけでなく,Windows, Mac OS X,BeOSなどの上でも動く
cf. http://bugs.ruby-lang.org/projects/ruby-trunk/wiki/SupportedPlatformsJa
== 入手法
=== FTPで
以下の場所においてあります.
ftp://ftp.ruby-lang.org/pub/ruby/
=== Subversionで
開発先端のソースコードは次のコマンドで取得できます.
$ svn co http://svn.ruby-lang.org/repos/ruby/trunk/ ruby
他に開発中のブランチの一覧は次のコマンドで見られます.
$ svn ls http://svn.ruby-lang.org/repos/ruby/branches/
=== Gitで
SubversionのミラーをGitHubに公開しています.
以下のコマンドでリポジトリを取得できます.
$ git clone git://github.com/ruby/ruby.git
== ホームページ
RubyのホームページのURLは
http://www.ruby-lang.org/
です.
== メーリングリスト
Rubyのメーリングリストがあります。参加希望の方は
mailto:ruby-list-ctl@ruby-lang.org
まで本文に
subscribe YourFirstName YourFamilyName
と書いて送って下さい。
Ruby開発者向けメーリングリストもあります。こちらではrubyのバ
グ、将来の仕様拡張など実装上の問題について議論されています。
参加希望の方は
mailto:ruby-dev-ctl@ruby-lang.org
までruby-listと同様の方法でメールしてください。
Ruby拡張モジュールについて話し合うruby-extメーリングリストと
数学関係の話題について話し合うruby-mathメーリングリストと
英語で話し合うruby-talkメーリングリストもあります。参加方法
はどれも同じです。
== コンパイル・インストール
以下の手順で行ってください.
1. もし +configure+ ファイルが見つからない、もしくは
+configure.in+ より古いようなら、 +autoconf+ を実行して
新しく +configure+ を生成する
2. +configure+ を実行して +Makefile+ などを生成する
環境によってはデフォルトのCコンパイラ用オプションが付き
ます. +configure+ オプションで optflags=.. warnflags=.. 等
で上書きできます.
3. (必要ならば)+defines.h+ を編集する
多分,必要無いと思います.
4. (必要ならば)+ext/Setup+ に静的にリンクする拡張モジュールを
指定する
+ext/Setup+ に記述したモジュールは静的にリンクされます.
ダイナミックローディングをサポートしていないアーキテク
チャでは +Setup+ の1行目の「option nodynamic」という行のコ
メントを外す必要があります.また,このアーキテクチャで
拡張モジュールを利用するためには,あらかじめ静的にリン
クしておく必要があります.
5. +make+ を実行してコンパイルする
6. make checkでテストを行う.
「check succeeded」と表示されれば成功です.ただしテスト
に成功しても完璧だと保証されている訳ではありません.
7. make install
以下のディレクトリを作って,そこにファイルをインストー
ルします.
* ${DESTDIR}${prefix}/bin
* ${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}
* ${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}
* ${DESTDIR}${prefix}/lib
* ${DESTDIR}${prefix}/lib/ruby
* ${DESTDIR}${prefix}/lib/ruby/${MAJOR}.${MINOR}.${TEENY}
* ${DESTDIR}${prefix}/lib/ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}
* ${DESTDIR}${prefix}/lib/ruby/site_ruby
* ${DESTDIR}${prefix}/lib/ruby/site_ruby/${MAJOR}.${MINOR}.${TEENY}
* ${DESTDIR}${prefix}/lib/ruby/site_ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}
* ${DESTDIR}${prefix}/lib/ruby/vendor_ruby
* ${DESTDIR}${prefix}/lib/ruby/vendor_ruby/${MAJOR}.${MINOR}.${TEENY}
* ${DESTDIR}${prefix}/lib/ruby/vendor_ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}
* ${DESTDIR}${prefix}/lib/ruby/gems/${MAJOR}.${MINOR}.${TEENY}
* ${DESTDIR}${prefix}/share/man/man1
* ${DESTDIR}${prefix}/share/ri/${MAJOR}.${MINOR}.${TEENY}/system
RubyのAPIバージョンが'_x.y.z_'であれば,${MAJOR}は
'_x_'で,${MINOR}は'_y_',${TEENY}は'_z_'です.
注意: APIバージョンの +teeny+ は,Rubyプログラムのバージョ
ンとは異なることがあります.
+root+ で作業する必要があるかもしれません.
もし,コンパイル時にエラーが発生した場合にはエラーのログとマ
シン,OSの種類を含むできるだけ詳しいレポートを作者に送ってく
ださると他の方のためにもなります.
== 移植
UNIXであれば +configure+ がほとんどの差異を吸収してくれるはずで
すが,思わぬ見落としがあった場合(あるに違いない),作者にその
ことをレポートすれば,解決できるかも知れません.
アーキテクチャにもっとも依存するのはGC部です.RubyのGCは対象
のアーキテクチャがsetjmp()またはgetcontext()によって全てのレ
ジスタを +jmp_buf+ や +ucontext_t+ に格納することと, +jmp_buf+ や
+ucontext_t+ とスタックが32bitアラインメントされていることを仮定
しています.特に前者が成立しない場合の対応は非常に困難でしょう.
後者の解決は比較的簡単で, +gc.c+ でスタックをマークしている
部分にアラインメントのバイト数だけずらしてマークするコードを
追加するだけで済みます.defined(\_\_mc68000\_\_)で括られてい
る部分を参考にしてください.
レジスタウィンドウを持つCPUでは,レジスタウィンドウをスタッ
クにフラッシュするアセンブラコードを追加する必要があるかも知
れません.
== 配布条件
+COPYING.ja+ ファイルを参照してください。
== 著者
コメント,バグレポートその他は mailto:matz@ruby-lang.org まで.
-------------------------------------------------------
created at: Thu Aug 3 11:57:36 JST 1995
--
Local variables:
mode: rdoc
end: