Rubyには、初期状態で使えるクラス・モジュールが多く用意されています。また、よく使われるライブラリはRubyインタプリタに標準添付されています。別途、別サイトなどから入手する必要はありません。
すべてのクラスは、Object
クラスの直接的あるいは間接的なサブクラスです。組み込みクラスには、次のものがあります。
クラス名 内容 ----------------- ----------------------------------------------------- Object Array 配列 Binding ローカル変数とselfなどの情報を保持するためのクラス Continuation 直前の状態(ローカル変数など)を記憶するためのクラス Data Objectからnew()をundefしたクラス。拡張ライブラリを書くときに用いる。 Dir ディレクトリ Exception 例外 FalseClass 偽を表すfalseのクラス File::Stat ファイルの情報(更新日時など)を格納するためのクラス Hash ハッシュ IO 入出力 File ファイル MatchData 正規表現のマッチに関するクラス Method メソッド Module モジュール Class クラス NilClass nilのクラス Numeric 数値 Float 浮動小数点数 Integer 整数 Bignum 絶対値が大きな整数 Fixnum 機械で扱える整数 Proc イテレータブロックをオブジェクト化するためのクラス Process::Status プロセスの状態 Range 範囲 Regexp 正規表現 String 文字列 Struct 構造体 Symbol シンボル Thread スレッド ThreadGroup 複数のスレッドをまとめて操作するためのクラス Time 時刻 TrueClass trueのクラス UnboundMethod レシーバを持たないメソッド
例外クラスも、ほかのクラスと同様、通常のクラスです。例外クラスはException
クラスのサブクラスです。組み込み例外クラスには、次のものがあります。
クラス名 ------------------------------ Exception NoMemoryError ScriptError LoadError NotImplementedError SyntaxError SignalException Interrupt StandardError ArgumentError IndexError IOError EOFError LocalJumpError NameError NoMethodError RangeError FloatDomainError RegexpError RuntimeError SecurityError SystemCallError Errno::EEXISTなどエラー別のクラス SystemStackError ThreadError TypeError ZeroDivisionError SystemExit
モジュールは、インスタンスを直接生成できないクラスです。モジュールは、別のクラスにinclude
することでそのクラスに機能を追加するためのものと、関数的な機能を集めたものがあります。前者はComparable、Enumerableモジュールなどです。後者はFileTestモジュールなどで、クラスメソッドで機能を呼び出します。
組み込みモジュールには次のものがあります。
モジュール名 | 内容 |
---|---|
Comparable | 比較演算を行うメソッドを提供する。includeするクラスは、<=>メソッドを持たなければならない。 |
Enumerable | 繰り返しに関するメソッドを提供する。includeするクラスは、eachメソッドを持たなければならない。 |
File::Constants | Fileクラスに係る定数を集めたモジュール |
FileTest | ファイルの各種検査のためのクラスメソッドを提供するモジュール |
GC | Rubyインタプリタのガベージコレクタを制御するためのモジュール |
Kernel | どこからでも使えるメソッドを提供する。Kernelのメソッドはレシーバの指定が不要なので、関数に見える |
Marshal | Rubyオブジェクトを直列化する機能を提供する。ファイルなどにオブジェクトを一時的に保存する場合に用いる。 |
Math | 数学の関数を集めたモジュール |
ObjectSpace | オブジェクトが保管される場所(オブジェクト空間)を操作するためのモジュール |
Precision | 精度を持つ具象数値クラスのためのモジュール。includeして使う。 |
Process | プロセスに対する操作を提供する |
Signal | シグナルに関する操作を提供する |
基本的な、よく使われるだろうライブラリは、Rubyインタプリタに標準添付されています。ライブラリのファイルは、require関数で取り込んで使用します。require関数では、ファイルの拡張子を指定する必要はありません(してもよい)。
一つのライブラリで複数のクラスやモジュールが定義されていることがあります。ここでは、どのようなライブラリがあるか、について列挙します。ライブラリに含まれるクラスや、その使用法については、リファレンスマニュアルなどを参照してください。
【注】このページはRuby 1.8.0リリース前に書かれたため、リリース直前に猛烈な勢いで追加されたライブラリを網羅できていません。
ファイル名 | 分類 | 内容 | 非推奨 |
---|---|---|---|
base64.rb | テキスト | Base64 (RFC 2045) を扱う | |
benchmark.rb | 開発用 | 実行時間の計測と報告 | |
bigdecimal-rational.rb | 数学 | BigDecimal(可変長浮動小数点数)とRational(有理数)との相互変換 | |
bigdecimal.so | 数学 | 可変長浮動小数点演算 | |
cgi-lib.rb | ネットワーク | (非推奨) | -> cgi.rb |
cgi.rb | ネットワーク | CGIライブラリ | |
cgi/session.rb | ネットワーク | CGIセッション管理 | |
complex.rb | 数学 | 複素数 | |
csv.rb | CSV(コンマ区切り形式)データを扱う | ||
curses.so | UI | 端末操作ライブラリcursesのインターフェイス | |
date.rb | 日付・時刻 | 日付クラス | |
date2.rb | 日付・時刻 | (非推奨) | -> date.rb |
dbm.so | データ保管 | ndbmをハッシュのように使う | |
debug.rb | 開発用 | Rubyスクリプト・デバッガ | |
delegate.rb | デザインパターン | メソッドの委譲 | |
digest/md5.so | テキスト | MD5ハッシュ関数 | |
digest/rmd160.so | テキスト | RIPEMD-160ハッシュ関数 | |
digest/sha1.so | テキスト | SHA-1ハッシュ関数 | |
digest/sha2.so | テキスト | SHA-256/384/512ハッシュ関数 | |
dl/import.rb | その他 | 共有オブジェクト(UNIX)またはDLL(Windows)を直接呼び出す | |
dl/win32.rb | Windows | Win32API互換インターフェイス | |
drb.rb | 分散Ruby(dRuby) | ||
e2mmap.rb | その他 | 例外クラスにエラーメッセージを関連付ける | |
English.rb | その他 | 特殊変数$!などに英語の別名($ERROR_INFOなど)を付ける | |
Env.rb | その他 | (非推奨) | -> importenv.rb |
erb.rb | テキスト | 埋め込みRuby | |
eregex.rb | テキスト | 二つの正規表現によるandまたはorの機能 | |
etc.so | UNIX | /etc/passwdファイルなどを操作する | |
expect.rb | 外部コマンド操作 | 対話プログラムをRubyスクリプトから制御する | |
fcntl.so | ファイル操作 | IO#fcntl()で使用する定数群 | |
fileutils.rb | ファイル操作 | ファイル操作ユーティリティ | |
finalize.rb | その他 | オブジェクトがGCされるときに依存オブジェクトにメッセージを送る | |
find.rb | ファイル操作 | ファイル探索 | |
forwardable.rb | デザインパターン | クラスに対してメソッドの委譲機能を定義する | |
ftools.rb | ファイル操作 | (非推奨) | -> fileutils.rb |
gdbm.so | データ保管 | gdbm (GNU dbm) をハッシュのように使う | |
getoptlong.rb | UI | コマンドラインオプションの解析。GNU getopt_long互換。オプションに別名を定義できる。 | |
getopts.rb | UI | コマンドラインオプションの解析。$OPT_xxxに結果を格納する。 | |
gserver.rb | 汎用サーバー | ||
iconv.so | テキスト | 文字コード変換。日本文字に限ればnkf.soが良い。 | |
importenv.rb | その他 | 環境変数をRubyグローバル変数で操作 | |
ipaddr.rb | ネットワーク | IPアドレスの操作。IPv6対応。 | |
irb.rb | UI | Rubyの対話型インターフェイス | |
jacobian.rb | 数学 | ヤコビ行列(Jacobian matrix) | |
jcode.rb | テキスト | Stringクラスを日本語対応に拡張する。副作用が大きいので、通常は使うべきではない。 | |
kconv.rb | テキスト | 日本語EUC、シフトJIS、ISO-2022-JPの相互変換。nkfのラッパー。通常はnkfを直接使う。 | |
ludcmp.rb | 数学 | 行列のLU分解など | |
mailread.rb | テキスト | メール形式のデータを読み込む | |
mathn.rb | 数学 | 数学用の補助メソッド群 | |
matrix.rb | 数学 | 行列 | |
md5.rb | テキスト | (非推奨) | -> digest/md5.so |
mkmf.rb | 開発用 | 拡張ライブラリ作成用ツール | |
monitor.rb | スレッド | スレッド間同期のためのモニタ機能を提供する。Javaのsynchronizedに似た機能。 | |
mutex_m.rb | スレッド | オブジェクトにスレッド間同期のためのlock/unlock機能を付加するmix-in。プロセス間の同期機能は提供しない。 | |
net/ftp.rb | ネットワーク | FTPクライアント | |
net/http.rb | ネットワーク | HTTP/1.1クライアント | |
net/imap.rb | ネットワーク | IMAP4rev1クライアント | |
net/pop.rb | ネットワーク | POP3クライアント | |
net/smtp.rb | ネットワーク | SMTPクライアント | |
net/telnet.rb | ネットワーク | Telnetクライアント | |
newton.rb | 数学 | ニュートン法によって非線形方程式を解く | |
nkf.so | テキスト | 日本語EUC、シフトJIS、ISO-2022-JPの相互変換 | |
observer.rb | デザインパターン | ObserverパターンのRubyによる実装 | |
open-uri.rb | ネットワーク | HTTP・FTP資源への容易なアクセス | |
open3.rb | 外部コマンド操作 | 外部コマンドを起動し、入力・出力・エラーのIOを得る | |
openssl.rb | OpenSSLサポート | ||
optparse.rb | UI | コマンドラインオプションの解析。柔軟だが、その分複雑。 | |
ostruct.rb | その他 | 属性をオブジェクト生成後に加えられる構造体 | |
parsearg.rb | UI | コマンドラインオプションの解析。getopts.rbのラッパー | |
parsedate.rb | 日付・時刻 | 日付フォーマットの解析 | |
pathname.rb | パス名を扱う | ||
ping.rb | ネットワーク | ホストに対するパケット到達の検証 | |
pp.rb | その他 | 関数p()の読みやすい版 | |
prettyprint.rb | その他 | pretty printingアルゴリズム | |
profile.rb | 開発用 | (非推奨) | -> profiler.rb |
profiler.rb | 開発用 | プロファイラ | |
pstore.rb | データ保管 | オブジェクト永続化 | |
pty.so | 外部コマンド操作 | 仮想端末(pseudo-tty)で外部コマンドを実行する | |
racc/parser.rb | 開発用 | Ruby版yacc(パーサー生成器) | |
rational.rb | 数学 | 有理数 | |
rbconfig.rb | 開発用 | Rubyインタプリタの設定情報 | |
readbytes.rb | テキスト | IOからの読み込み状況によって例外を発生させるIO#readbytes()を追加する | |
readline.so | UI | GNU Readlineインターフェイス | |
resolv-replace.rb | ネットワーク | Socket関連クラスで、ホスト名解決にresolv.rbを使うようメソッドを置き換える | |
resolv.rb | ネットワーク | Ruby版ホスト名解決(リゾルバ) | |
rexml/rexml.rb | XMLパーサー | ||
rubyunit.rb | 開発用 | (非推奨) | -> text/unit.rb |
sdbm.so | データ保管 | 外部ライブラリに依存しないDBM。キーや値に使用できる長さに制限あり。 | |
set.rb | 数学 | 有限集合。重複のないオブジェクトの順序付けられていない集まり。 | |
sha1.rb | テキスト | (非推奨) | -> digest/sha1.so |
shell.rb | 外部コマンド操作 | Rubyスクリプトからシェルコマンドに似た方法で外部コマンドを呼び出す | |
shellwords.rb | テキスト | テキストをUNIXシェル方式で単語に分割する | |
singleton.rb | デザインパターン | SingletonパターンのRuby実装 | |
socket.so | ネットワーク | IP/UNIXソケット | |
stringio.so | テキスト | 文字列にIOクラスのインターフェイスを付加 | |
strscan.so | テキスト | 簡易文字列スキャナ | |
syck.so | テキスト | YAMLを高速に読み込む | |
sync.rb | スレッド | 再入可能なスレッド間reader/writerロック機能を提供する。 | |
syslog.so | UNIX | UNIX syslogを扱う | |
tcltk.rb | UI | Tcl/Tkの高水準インターフェイス。tcltklib.soのラッパー | |
tcltklib.so | UI | Tcl/Tkの低水準インターフェイス | |
tempfile.rb | ファイル操作 | 一時ファイル生成 | |
test/unit.rb | 開発用 | ユニットテスト | |
thread.rb | スレッド | スレッドに関するユーティリティ群 | |
thwait.rb | スレッド | 複数スレッドのための同期機能 | |
time.rb | 日付・時刻 | 時刻フォーマットの解析、よく使われるフォーマットへの時刻データの整形 | |
timeout.rb | その他 | 一定時刻が経過した場合に例外を投げる。ただし、Rubyレベルで割り込みできない処理(DNSの名前解決など)に対しては無力 | |
tk.rb | UI | (非推奨) | -> tcltk.rb |
tmpdir.rb | 一時ディレクトリ操作 | ||
tracer.rb | 開発用 | 実行トレースを得る | |
tsort.rb | その他 | トポロジカルソート (topological sort) と強連結成分 | |
un.rb | UNIXコマンドに似たファイル操作ユーティリティ | ||
uri.rb | ネットワーク | URI | |
weakref.rb | その他 | GCされる弱い参照 | |
win32/registry.rb | Windows | Windowsレジストリを読み書きする(Windows環境専用) | |
Win32API.so | Windows | Windows API呼び出し(Windows環境専用) | |
win32ole.so | Windows | OLEオートメーションのインターフェイス(Windows環境専用) | |
win32ole/property.rb | Windows | OLEプロパティのヘルパークラス | |
yaml.rb | テキスト | YAML (YAML Ain't Markup Language) を読み書きする | |
zlib.so | テキスト | zlibのインターフェイス。データ圧縮・伸張 |
Rubyで使えるライブラリは、たいていの場合、Rubyアプリケーションアーカイブに登録されています。上記にないものについては、次のいずれかで探すといいでしょう。