= 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: