『Ruby逆引きハンドブック』出版
書籍『Ruby逆引きハンドブック』を出版しました。 10 年にわたる Ruby の経験を一冊の本にまとめました。 この本は、「 Ruby で○○するにはどう書けばいいのか」という問いに答える 逆引き本ですが、それだけにとどまらず、陥りやすい落とし穴、理解しづらい部分、 応用例などもしっかり解説しました。 Ruby 初心者〜上級者、他言語から Ruby を学ぶ人すべてにおすすめです。
この本の持ち味は類書をはるかに凌ぐ圧倒的な情報量です。 セクションとコラムは合わせて 588 項目にわたり、総ページ数 768 ページです。 Ruby プログラミングの際には手元に置いて、辞書として繰り返し使ってください。 Ruby 1.8.6 、 Ruby 1.8.7 、 Ruby 1.9.1 全方位対応なので、今風な書き方も学べます。
Ruby on Rails 習得のためには、ベースとなっている Ruby の理解が不可欠です。 Ruby を使いこなしていれば、 Rails はあなたの味方となってくれるでしょう。
気に入りましたら、同僚や友人に広めてください!
まつもとさんより 「今や巨大に成長した Ruby の世界をすべて頭に入れるのは困難です。 本書なら『やりたいこと』から Ruby の機能を見つけられます。」
小飼弾さんの書評 「こういう本を待っていた。他のプログラミング言語を会得している人であれば、 Ruby 本はこれと「初めての Ruby 」で必要十分なのではないか。」
目次(公式サイト目次ページより引用)
CHAPTER 01 Ruby の基礎知識 001 Ruby とは 002 Ruby の入手方法について 003 Ruby の基本的な記述方法について COLUMN エディタはパートナー 004 Ruby の実行について 005 スクリプトの文字コードを設定する 006 スクリプトを探索する順序について 007 ライブラリを読み込む COLUMN ファイル間でローカル変数は共有できない COLUMN ローカル変数の代わりに無引数メソッドを使用する COLUMN グローバルな名前空間を汚染しないでロードする 008 ライブラリが意図通りに動かない原因について 009 Ruby を制御する環境変数について 010 オブジェクト指向について COLUMN 特異メソッド COLUMN クラスメソッド 011 クラス階層について COLUMN Ruby 1.9 では BasicObject が Object のスーパークラス COLUMN 卵が先か鶏が先か 012 動的型付について COLUMN Ruby の学習方法 013 メソッドの表記方法について 014 Ruby 1.9 のエンコーディングについて CHAPTER 02 基本的なツール 015 手軽な実験環境 COLUMN irb でスクリプトを実行 COLUMN 「 Kernel#p 」で式の値を表示する COLUMN xmpfilter とエディタを使えば自動で再計算 016 拡張パッケージを手軽にインストール COLUMN RubyGems の欠点 COLUMN gem コマンドの他の使い方 017 日本語でドキュメント引き 018 英語でドキュメント引き(高速版) COLUMN その他の機能 CHAPTER 03 Ruby の文法 019 リテラルについて 020 演算子について 021 四則演算・剰余・べき乗について 022 論理式について COLUMN 論理式を使った条件分岐 COLUMN 「 and 」「 or 」「 not 」をメソッドの引数にするときは二重括弧が必要 023 代入について COLUMN Fixnum (小さい整数)と Symbol は即値 COLUMN インデックス代入・書き込みアクセサは広い意味での代入式 024 多重代入について COLUMN 代入形式のメソッドにも多重代入が使用可能 025 変数と定数について COLUMN スレッドローカル変数 026 組み込み変数について COLUMN Perl でおなじみの「$_」 027 コメントについて COLUMN RD について 028 条件分岐式について 029 ループ式について 030 ループ制御について COLUMN 深いループを抜けるには「 Kernel#catch 」「 Kernel#throw 」を使用する COLUMN 「 break 」「 next 」と返り値 COLUMN ブロック付きメソッドの旧名はイテレータ COLUMN 忘れられたループ内「 retry 」 031 インクリメント・デクリメントについて COLUMN なぜインクリメント演算子を用意していないか 032 メソッド呼び出しについて COLUMN 組み込み関数とトップレベルの self 033 メソッド定義について COLUMN 標準的なメソッドの命名法 COLUMN 暗黙の「 begin 」式 COLUMN メソッド定義のネスト 034 ブロックの使用例 035 ブロック付きメソッドについて COLUMN Ruby 1.9 におけるブロックパラメータの渡り方の変更 COLUMN Ruby 1.9 でのブロックローカル変数 COLUMN 「 do 」ブロックと「{}」ブロックの使い分け COLUMN ブロックと高階関数 036 クラス・モジュール定義について COLUMN 標準的なクラス・モジュールの命名法 COLUMN 動的なクラス・モジュール定義 COLUMN 暗黙の「 begin 」式 037 クラスの継承について 038 Mix-in について COLUMN インクルードをフックする 039 特異メソッド・クラスメソッドについて COLUMN 「 Object#extend 」はモジュールを特異クラスにインクルードする COLUMN モジュール関数はプライベートメソッドと特異メソッド 040 呼び出されるメソッドの決定方法 COLUMN 関数の落とし穴 041 「===」と「 case 」式について COLUMN 「 case 」に式を指定しないと「 if 〜 elsif 〜 else 」の代わりになる 042 例外処理・後片付けについて COLUMN 例外は濫用するな 043 定義の別名・取り消しについて COLUMN 元のメソッド定義を利用してメソッドを再定義する COLUMN クラス・モジュールに別名を付ける COLUMN メソッド内で alias する COLUMN クラスメソッドを alias する 044 式の検査について COLUMN クラス・モジュールからメソッドの存在を確認する 045 %記法について 046 予約語について CHAPTER 04 オブジェクトの基礎 047 オブジェクトの文字列表現について 048 オブジェクトを表示する ONEPOINT オブジェクトを画面に表示するには「 Kernel#print 」や「 Kernel#puts 」を使用する COLUMN 「 Kernel#p 」は主にデバッグ用 049 オブジェクトの同一性と同値性について COLUMN ユーザ定義クラスでは「==」を再定義する必要があるので注意 COLUMN 「 eql? 」と「 hash 」 COLUMN Ruby と他言語の同一性比較・同値性比較の違い 050 破壊的メソッドについて COLUMN オブジェクトをコピーしてから破壊的メソッドを適用すれば安全 051 オブジェクトの比較について 052 オブジェクトのコピーについて 053 オブジェクトが空であるかどうかを調べる ONEPOINT 空のオブジェクトであるか判定するには「 empty? 」メソッドを使用する COLUMN すべてのオブジェクトに対応するために CHAPTER 05 文字列と正規表現 054 文字列リテラルについて COLUMN Ruby 1.9 では Unicode 文字のためのバックスラッシュ記法「\u 」がある 055 Ruby での日本語の扱いについて COLUMN jcode.rb は Ruby 1.9 から削除される 056 ヒアドキュメントについて 057 文字列の長さを求める ONEPOINT 文字列の長さを求めるには「 String#length 」を指定使用する COLUMN 文字数を数える方法の比較 058 部分文字列を抜き出す ONEPOINT 部分文字列を抜き出すには「 String#[]」を使用する 059 文字列を連結する ONEPOINT 文字列を結合するには「 String#+ 」や「 String#<<」を指定する COLUMN 「<<」メソッドは String と Array と IO で共用できる 060 文字列の一部を書き換える ONEPOINT 文字列の一部を書き換えるには「 String#[]=」を使用する 061 文字列を取り除く ONEPOINT 文字列の一部を取り除くには「 String#slice! 」を使用する COLUMN 「 String#[]=」でも文字列の一部を取り除くことができる 062 文字列を挿入する ONEPOINT 文字列を挿入するには「 String#insert 」を使用する 063 文字列を繰り返す ONEPOINT 文字列を繰り返すには「 String#*」を使用する 064 文字列を反転する ONEPOINT 文字列を反転するには「 String#reverse 」「 String#reverse! 」を使用する 065 文字列を比較する ONEPOINT 文字列比較は文字コード順に行われる 066 式の評価結果を文字列に埋め込む(式展開) ONEPOINT 式展開はダブルクォート文字列に「#{式}」を含める COLUMN 式展開のタイミングをずらす方法 067 文字列をフォーマットする( sprintf ) ONEPOINT 文字列をフォーマットするには「 Kernel#sprintf 」「 String#%」を使用する 068 文字列を 1 行・ 1 バイト・ 1 文字ごとに処理する ONEPOINT 文字列を行、バイト、文字ごとに処理するには「 String#lines 」「 String#bytes 」「 String#chars 」を使用する COLUMN Ruby 1.8 の「 String#chars 」は「$KCODE 」に依存する COLUMN Ruby 1.9 の文字列における重大な仕様変更 069 文字列の大文字と小文字を変換する ONEPOINT すべての ASCII アルファベットを大文字にするには「 String#upcase 」を使用する 070 文字列を中央寄せ・左詰め・右詰めする ONEPOINT 文字列を中央寄せするには「 String#center 」を使用する 071 文字列の最後の文字・改行を取り除く ONEPOINT 文字列の末尾の改行を取り除くには「 String#chomp! 」を使用する 072 文字列の先頭と末尾の空白文字を取り除く ONEPOINT 文字列の先頭と末尾の空白文字を取り除くには「 String#strip! 」を使用する 073 文字の集合に含まれる同一の文字の並びを 1 つにまとめる ONEPOINT 連続する文字の並びをまとめるには「 String#squeeze 」を使用する COLUMN 余計な空白文字を取り除く 074 文字列を数値に変換する ONEPOINT 文字列を整数に変換するには「 String#to_i 」を、小数に変換するには「 String#to_f 」を使用する COLUMN 頭に 0 が付いた数の落とし穴 075 文字列中の文字を数える ONEPOINT 特定の文字を数えるには「 String#count 」を使用する COLUMN 特定の日本語文字を数える COLUMN 括弧の対応が取れているかチェックする COLUMN 行数を数える 076 文字列中の文字を置き換える ONEPOINT 文字を別の文字に置き換えるには「 String#tr 」を使用する 077 文字列を eval できる形式に変換する ONEPOINT 「 String#dump 」において「 eval ( string.dump ) == string 」が成立する 078 連番付きの文字列を生成する ONEPOINT 連番付きの文字列を生成するには範囲オブジェクトを作成する COLUMN 連番を適切に認識してくれない場合の対処法 079 文字コードを変換する ONEPOINT 文字コードを変換するには NKF や Kconv を使用する COLUMN NKF.nkf の知られざる機能 COLUMN ひらがなをカタカナに、カタカナをひらがなに変換する COLUMN ROT13/47 暗号化・復号化 COLUMN 全角アルファベット・記号を半角にする COLUMN MIME エンコード・デコード COLUMN 改行コード変換 080 文字コードを推測する ONEPOINT 文字コードを推測するには「 Kconv.guess 」を使用する 081 正規表現の基本 082 正規表現のオプションについて COLUMN JIS コードのマッチ 083 正規表現の部分マッチを取得する(後方参照) ONEPOINT 後方参照するには「()」付き正規表現にマッチさせてから「$1 」や MatchData を使用する 084 正規表現の欲張りマッチ・非欲張りマッチについて 085 正規表現の先読みについて COLUMN Ruby 1.9 (鬼車)では戻り読みが使える 086 文字列から正規表現を作成する ONEPOINT 文字列から正規表現を作成するには正規表現中の式展開を使用する COLUMN grep コマンドを Ruby で実装する 087 先頭・末尾がマッチするか調べる ONEPOINT 文字列の先頭・末尾が文字列にマッチするか調べるには「 String#start_with? 」「 String#end_with? 」を使用する 088 正規表現で場合分けする ONEPOINT 正規表現で場合分けするには「 case 」式を使用する 089 文字列そのものにマッチする正規表現を生成する ONEPOINT 文字列そのものにマッチする正規表現を作成するには「 Regexp.escape 」「 Regexp.union 」を使用する 090 正規表現マッチに付随する情報(マッチデータ)を参照する ONEPOINT 正規表現マッチに関する情報は MatchData オブジェクトを参照する COLUMN 予約語のメソッド名を作成することは可能 COLUMN マッチ関連の特殊変数のスコープはローカルかつスレッドローカル 091 複雑な正規表現をわかりやすく記述する ONEPOINT 複雑な正規表現を記述するには「 x 」オプションを指定する 092 正規表現にマッチする部分を 1 つ抜き出す ONEPOINT 文字列から最初に正規表現にマッチする部分を抜き出すには「 String#[]」に正規表現を指定する 093 正規表現にマッチする部分を全部抜き出す ONEPOINT 正規表現にマッチする部分をすべて抜き出すには「 String#scan 」を使用する COLUMN 正規表現にマッチした回数を数える COLUMN 文字列の出現回数を数える 094 文字列を置き換える ONEPOINT 文字列を置換するには「 String#sub 」「 String#gsub 」などを使用する COLUMN 特殊変数置換はシングルクォート文字列を使う COLUMN 欲張りマッチの落とし穴に注意 COLUMN 改行コードを統一する COLUMN HTML ・ XML のタグを除去する COLUMN 「\」を倍増させるには(ダブルエスケープ問題) COLUMN 「 String#gsub 」をまとめると効率が上がることも COLUMN ブロックパラメータはお勧めできない 095 文字列を分割する ONEPOINT 文字列を分割するには「 String#split 」を使用する COLUMN 分割結果を構造体にまとめる COLUMN 「 String#partition 」「 String#rpartition 」について COLUMN 先読み・戻り読み正規表現を指定する 096 文字列を検索する ONEPOINT 文字列を検索するには「正規表現」「 String#index 」「 String#rindex 」を使用する COLUMN 文字列の特定の位置から正規表現にマッチさせる 097 シンボルについて COLUMN Ruby 1.9 のシンボルは文字列のような振る舞いをする 098 文字列とシンボルを変換する ONEPOINT 文字列とシンボルの変換には「 Symbol#to_s 」「 String#intern 」を使用する 099 バイナリデータを扱う ONEPOINT バイナリ文字列から情報を取り出すには「 String#unpack 」を使用する 100 文字列を一定の桁で折り畳む(日本語対応) ONEPOINT 文字列を一定の桁で折り返すには NKF.nkf の第 1 引数に「-f 」「-F 」オプションを指定する 101 文字列から書式指定で情報を取り出す( scanf ) ONEPOINT 文字列から書式指定で情報を取り出すには「 String#scanf 」を使用する COLUMN 書式文字列における文字クラスの落とし穴 102 パスワード文字列を照合する ONEPOINT パスワードを照合するには「 String#crypt 」を使用する COLUMN より強力なハッシュアルゴリズムを使う COLUMN ファイルの同一性を確認する 103 文字列を暗号化・復号化する ONEPOINT 文字列を暗号化・復号化するには「 OpenSSL::Cipher::Cipher 」を使用する 104 Unix シェル風に単語へ分割する ONEPOINT Unix シェルの規則で単語分割・エスケープするには Shellwords のモジュール関数を使用する 105 HTML エスケープ・アンエスケープする ONEPOINT HTML エスケープするには「 CGI.escapeHTML 」を使用する COLUMN クロスサイトスクリプティング脆弱性 106 テキストに Ruby の式を埋め込む( eRuby ) 107 eRuby で無駄な改行を取り除く ONEPOINT ERB で余計な改行の出力を抑制するには「 ERB.new 」の「 trim_mode 」に「<>」を指定する COLUMN 明示的に改行を抑制する eRuby タグについて 108 eRuby で行頭の%を有効にする ONEPOINT ERB で「%」から始まる行を Ruby の式として評価するには「 trim_mode 」に「%」を指定する 109 eRuby に渡す変数を明示する 110 eRuby でメソッドを定義する ONEPOINT eRuby でメソッドを定義するには「 def_method 」メソッド( ERB 、 Erubis 共通)を使用する COLUMN eRuby のコンパイル結果を得る 111 eRuby で HTML エスケープする 112 CSV データを処理する ONEPOINT CSV ファイルを扱うには「 CSV.read 」などを使用する 113 URL エンコード・デコードする ONEPOINT URL エンコード・デコードするには「 CGI.escape 」「 CGI.unescape 」を使用する COLUMN Ruby 1.9 では cgi.rb が再編成された 114 HTML を解析する ONEPOINT HTML を解析するには「 Kernel#Hpricot 」を使用する COLUMN より高速な HTML パーサ「 Nokogiri 」 115 XML を解析する CHAPTER 06 配列とハッシュ 116 配列・ハッシュを作成する 117 同一要素にまつわる問題について 118 配列・ハッシュの要素を取り出す ONEPOINT 配列・ハッシュから要素を取り出すには「 Array#[]」「 Hash#[]」「 Array#fetch 」「 Hash#fetch 」を使用する COLUMN 「 Enumerable#first 」で最初の要素を得る 119 配列・ハッシュの要素を変更する ONEPOINT 配列・ハッシュの要素を変更するには「[]=」を使用する 120 配列・ハッシュの要素数を求める ONEPOINT 配列・ハッシュのサイズを求めるには「 Array#length 」「 Hash#length 」を使用する COLUMN 「 Array#nitems 」は Ruby 1.9 で削除される 121 配列を結合する ONEPOINT 配列と配列を結合するには「 Array#+ 」か「 Array#concat 」を使用する COLUMN ループ中では「 concat 」を使用する 122 同じ配列を繰り返す ONEPOINT 同じ配列を整数回繰り返すには「*」演算子を使用する COLUMN コピーして繰り返す 123 部分配列を作成する ONEPOINT 配列の連続した部分配列を作成するには「 Array#[]」を使用する COLUMN 最初の n 個を取り出すには「 Enumerable#take 」が使用可能 COLUMN 最初の n 個を取り除いた配列を作成するには「 Enumerable#drop 」が使用可能 COLUMN 複数インデックスの要素からなる部分配列を作成するには 124 配列で集合演算する ONEPOINT 配列で集合演算するには「&」「|」「−」演算子を使用する COLUMN 配列 A のすべての要素が配列 B に含まれているかチェックする COLUMN 集合クラス 125 順列・組み合わせ・直積を求める ONEPOINT 順列・組み合わせを求めるには「 Array#permutation 」「 Array#combination 」を使用する COLUMN 覆面算を強引に解く 126 配列に要素を追加する ONEPOINT 配列に要素を破壊的に追加するには「 Array#push 」「<<」「 Array#unshift 」を使用する COLUMN 配列は後ろに追加する方が速い 127 配列の末尾・先頭の要素を取り除く ONEPOINT 配列の末尾・先頭の要素を取り除くには「 Array#pop 」「 Array#shift 」を使用する 128 配列を Lisp 的連想リストとして使う ONEPOINT 連想リストからキーに対応する要素を得るには「 Array#assoc 」を使用する COLUMN 少数要素でもハッシュの方が速い 129 配列・ハッシュを空にする ONEPOINT 配列・ハッシュの内容を空にするには「 clear 」メソッドを使用する COLUMN 別の配列・ハッシュに置き換えるには「 replace 」メソッドを使用する 130 配列から要素を取り除く ONEPOINT 配列から要素を削除するには「 Array#delete 」「 Array#delete_at 」「 Array#delete_if 」を使用する COLUMN 要素を削除する他のメソッド 131 配列の要素を 1 つずつ処理する ONEPOINT 配列の要素を 1 つずつ処理するには「 Array#each 」を使用する COLUMN while は邪道 132 配列のインデックスに対して繰り返す ONEPOINT 配列のインデックスに対して繰り返すには「 Array#each_index 」を使用する COLUMN 他の方法を模索する 133 配列の指定された範囲を同じ値で埋める ONEPOINT 配列を同じ値で埋めるには「 Array#fill 」を使用する COLUMN 「 fill ( value, 範囲指定引数)」には注意 134 ネストした配列を平滑化する ONEPOINT ネストした配列を平滑化するには「 Array#flatten 」「 Array#flatten! 」を使用する 135 配列内で等しい要素の位置を求める ONEPOINT 等しいオブジェクトを見つけてそのインデックスを得るには「 Array#index 」「 Array#rindex 」を使用する COLUMN Ruby 1.8.7 以降ではブロックの評価結果が真になったインデックスを求める 136 配列に要素を挿入する ONEPOINT 配列に要素を挿入するには「 Array#insert 」を使用する 137 配列を文字列化する ONEPOINT 配列を文字列化するには「 Array#inspect 」や「 Array#join 」を使用する COLUMN 「 Array#to_s 」は Ruby 1.8 と Ruby 1.9 で異なる 138 配列を反転する ONEPOINT 配列の要素を逆順にするには「 Array#reverse 」を使用する 139 二次元配列を転置する ONEPOINT 疑似二次元配列の行と列を入れ替えるには「 Array#transpose 」を使用する 140 配列から重複要素を取り除く ONEPOINT 配列から重複要素を取り除くには「 Array#uniq 」を使用する 141 配列をシャッフルする ONEPOINT 配列をシャッフルするには「 Array#shuffle 」を使用する COLUMN 「 sort_by { rand }」がなぜシャッフルになるか COLUMN 「 sort { rand ( 3 )− 1 }」は間違った方法である 142 配列をスタックとして使う ONEPOINT 配列をスタックとして使うには「 Array#push 」と「 Array#pop 」と「 Array#last 」を使用する 143 配列をキューとして使う ONEPOINT 配列をキューとして使うには「 Array#push 」と「 Array#shift 」を使用する 144 多次元配列を扱う ONEPOINT 多次元配列はネストした配列やハッシュで代用する COLUMN Ruby では多次元配列は特に必要ない 145 ハッシュのデフォルト値を設定・取得する ONEPOINT ハッシュの値が設定されていない場合はデフォルト値を使用する 146 ハッシュの要素を 1 つずつ処理する ONEPOINT ハッシュの要素を 1 つずつ処理するには「 Hash#each 」を使用する COLUMN 「 Hash#each 」と「 Hash#each_pair 」の微妙な違い 147 ハッシュがキー・値を持つかどうかをチェックする ONEPOINT ハッシュがキーを持つかチェックするには「 Hash#has_key? 」を使用する 148 ハッシュから要素を取り除く ONEPOINT ハッシュから要素を取り除くには「 Hash#delete 」や「 Hash#delete_if 」を使用する COLUMN nil の落とし穴 149 ハッシュの値に対応するキーを求める ONEPOINT ハッシュの値に対応するキーを求めるには「 Hash#key 」を使用する COLUMN ハッシュの逆検索は非常に遅い 150 ハッシュのキーと値を反転する(逆写像) ONEPOINT ハッシュのキーと値を反転するには「 Hash#invert 」を使用する 151 ハッシュのキー・値のみを集める ONEPOINT ハッシュのすべてのキー・値を得るには「 Hash#keys 」「 Hash#values 」を使用する 152 ハッシュを混合する ONEPOINT ハッシュを混ぜ合わせるには「 Hash#merge 」か「 Hash#update 」を使用する 153 要素の初期化を簡潔に記述する ONEPOINT メソッドチェーンの途中で値を覗き見するには「 Object#tap 」を使用する COLUMN 「 Object#tap 」の定義 154 オブジェクトをハッシュのキーとして扱えるようにする ONEPOINT ハッシュのキーとして使えるようにするには「 Object#eql? 」と「 Object#hash 」を再定義する COLUMN キーに破壊的メソッドを適用すると値を取り出せなくなる CHAPTER 07 コレクション一般を扱うモジュール Enumerable 155 Enumerable は配列を一般化したもの 156 各要素に対してブロックの評価結果の配列を作る(写像) ONEPOINT 各要素にブロックを適用した配列を作成するには「 Enumerable#collect 」か「 Enumerable#map 」を使用する 157 すべての要素の真偽をチェックする ONEPOINT 全要素・ 1 つ以上の要素が条件を満たすか調査するには「 Enumerable#all? 」と「 Enumerable#any? 」を使用する COLUMN 「 Enumerable#all? 」の真逆は「 Enumerable#none? 」 COLUMN 1 つの要素のみが条件を満たすか調査するには「 Enumerable#one? 」を使用する 158 要素とインデックスを使って繰り返す ONEPOINT 要素にインデックスを付けて繰り返すには「 Enumerable#each_with_index 」を使用する COLUMN 他の配列との並行処理を行うには「 Enumerable#zip 」を使用する 159 指定した要素が含まれるかを調べる ONEPOINT 指定した要素が含まれるか調べるには「 Enumerable#include? 」を使用する COLUMN 「 case 」式で配列展開を使うこともできる 160 パターンにマッチする要素を求める ONEPOINT 要素のパターンマッチを行うには「 Enumerable#grep 」を使用する COLUMN Ruby 1.9 では文字列に grep できない 161 合計を計算する(畳み込み) ONEPOINT 要素の合計を計算するには「 Enumerable#inject 」を使用する COLUMN 畳み込みについて COLUMN 「 inject 」応用編 COLUMN クラス名を表す文字列から実際のクラスオブジェクトを取り出す 162 最小値・最大値を求める ONEPOINT 要素の最小値・最大値を求めるには「 Enumerable#min 」「 Enumerable#max 」を使用する 163 条件を満たす最初の要素を求める ONEPOINT 条件を満たす最初の要素を求めるには「 Enumerable#find 」を使用する 164 条件を満たす要素をすべて求める ONEPOINT 条件を満たす要素をすべて求めるには「 Enumerable#select 」を使用する COLUMN 条件を満たさないところで打ち切るには「 Enumerable#take_while 」を使用する 165 条件を満たさない要素をすべて求める ONEPOINT 条件を満たさない要素を求めるには「 Enumerable#reject 」を使用する COLUMN 条件を満たさないところで打ち切るには「 Enumerable#drop_while 」を使用する 166 条件を満たす要素と満たさない要素に分ける ONEPOINT 条件を満たす要素と満たさない要素を同時に求めるには「 Enumerable#partition 」を使用する COLUMN ブロックの値によって分けるには「 Set#classify 」や「 Enumerable#group_by 」を使用する 167 条件を満たす要素を数える ONEPOINT 条件を満たす要素を数えるには「 Enumerable#count 」を使用する COLUMN Enumerator の要素数(行数・文字数)を求める 168 ソートする ONEPOINT 要素のソートには「 Enumerable#sort 」や「 Enumerable#sort_by 」を使用する COLUMN 降順のソートは「 sort.reverse 」を使用する COLUMN 「 sort_by 」のカラクリ 169 縦横計算をする(配列の並行処理) ONEPOINT Enumerable を並行処理するには「 Enumerable#zip 」を使用する 170 各要素を N 個ずつ繰り返す ONEPOINT 各要素を N 個ずつ繰り返すには「 Enumerable#each_slice 」を使用する COLUMN 重複ありで N 個一組にして繰り返すには「 Enumerable#each_cons 」を使用する 171 各要素をローテーションする ONEPOINT 要素をローテーションするには「 Enumerable#cycle 」を使用する 172 each 以外のメソッドに Enumerable モジュールを適用する ONEPOINT 繰り返しメソッドでブロックを省くと「 each 」メソッド以外で Enumerable モジュールが使用できる COLUMN 繰り返しメソッドを with_index 化する COLUMN 繰り返しメソッドを Enumerator 化するおまじない CHAPTER 08 数値と範囲 173 数値リテラルについて COLUMN 偶数・奇数判定は「 Integer#even? 」「 Integer#odd? 」を使用する COLUMN 文字リテラルはバージョンによって値が異なる COLUMN 整数の 16 進、 8 進、 2 進表記を得るには 174 数学関数の値を求める ONEPOINT 数学関数を使うには Math モジュールを使用する 175 乱数を得る ONEPOINT 疑似乱数を得るには「 Kernel#rand 」を使用する COLUMN 乱数の種を設定する 176 範囲オブジェクトを作成する ONEPOINT 範囲オブジェクトを作成するには「..」「...」リテラルを使用する COLUMN 「<=>」メソッドを持っていれば始点・終点になれる 177 範囲の間の繰り返しを行う ONEPOINT M から N までの繰り返すには「 Integer#upto 」や「 Range#each 」を使用する 178 範囲に含まれているかどうかをチェックする ONEPOINT 範囲に含まれているかチェックするには「 Comparable#between? 」や「 Range#include? 」を使用する COLUMN Ruby 1.9 における「 Range#include? 」の仕様変更 179 数字を 3 桁ずつカンマで区切る ONEPOINT 数字を 3 桁ずつカンマで区切るには文字列化してから「 String#gsub 」を使用する COLUMN 登場する正規表現の解説 180 行列・ベクトルを計算する ONEPOINT 行列を作るには「 Matrix.[]」を、ベクトルを作るには「 Vector.[]」を使用する COLUMN 数値の高速な行列計算をするには 181 複素数を計算する ONEPOINT 複素数を作成するには「 Kernel#Complex 」「 Complex.polar 」を使用する 182 有理数を計算する ONEPOINT 有理数を作成するには「 Kernel#Rational 」を使用する 183 任意精度浮動小数点数で浮動小数点数の誤差をなくす ONEPOINT 10 進小数を使用するには「 Kernel#BigDecimal 」を使用する COLUMN 浮動小数点数の誤差の累積について COLUMN 10 進小数の 2 進数表記 184 数値計算用多次元配列で高速な数値計算をする ONEPOINT 数値計算専用の配列を作成するには「 NArray.[]」を使用する COLUMN NArray の要素の取り出し方は配列とは逆 CHAPTER 09 時刻と日付 185 現在時刻・日付を求める ONEPOINT 現在時刻・日付を得るには「 Time.now 」や「 Date.today 」を使用する COLUMN 特定の時刻・日付を得るには「 Time.local 」や「 Date.new 」を使用する 186 時刻・日付から情報を抜き出す ONEPOINT Time ・ Date から情報を抜き出すには時間の単位名のメソッドを使用する COLUMN 他の情報を抜き出すには 187 時刻・日付をフォーマットする ONEPOINT Time ・ Date をフォーマットするには「 strftime 」メソッドを使用する COLUMN 曜日の名称などを日本語にする 188 文字列から時刻・日付に変換する ONEPOINT 文字列を解析して Time ・ Date に変換するには「 parse 」クラスメソッドを使用する 189 時刻・日付を加減算する ONEPOINT 時刻・日付の計算をするには加減算を使用する CHAPTER 10 入出力とファイルの扱い 190 ファイル操作を始めるには COLUMN ファイルのパーミッションを指定する 191 Ruby 1.9 の IO エンコーディングについて COLUMN 「 default_internal 」について COLUMN default_external と default_internal を設定するコマンドラインオプション COLUMN default_external と default_internal をスクリプト内で設定する 192 ファイル全体を読み込む ONEPOINT ファイル全体を読み込むには「 IO#read 」や「 IO.read 」を使用する COLUMN 「 IO#read 」「 IO.read 」の「 optional 」引数 193 ファイルを 1 行ずつ読み込む ONEPOINT ファイルから 1 行ずつ読み込むには「 IO#gets 」や「 IO#each_line 」を使用する COLUMN 「 IO#gets 」や「 IO#readlines 」で改行以外の区切りを指定する 194 ファイルを 1 バイトずつ読み込む ONEPOINT ファイルから 1 バイトずつ読み込むには「 IO#each_byte 」を使用する 195 ファイルに書き込む ONEPOINT ファイルに書き込むには「 IO#<<」などを使用する COLUMN 「 IO#<<」とポリモーフィズム COLUMN 「$stdout 」と「$stderr 」に IO 以外を指定することも可能 196 ファイルの情報を得る ONEPOINT ファイルの情報を得るには「 File.stat 」を使用する COLUMN シンボリックリンクそのものの情報を得るには「 File.lstat 」を使用する 197 ファイルのコピー・移動・削除などを行う ONEPOINT ファイルをコピー・移動・削除するには FileUtils モジュールを使用する 198 ファイルポインタを移動する ONEPOINT ファイルポインタを移動するには「 IO#pos=」などを使用する 199 一時ファイルを作成する ONEPOINT 一時ファイルを作成するには「 Tempfile.open 」を使用する COLUMN 一時ディレクトリを得るには「 Dir.tmpdir 」を使用する COLUMN ファイル名を指定して一時ファイルを作成するには「 Kernel#open 」と「 Kernel#at_exit 」を使用する 200 gzip 圧縮のファイルを読み書きする ONEPOINT gzip 圧縮のファイルを読み書きするには Zlib::GzipReader と Zlib::GzipWriter を使用する 201 ファイル名を操作する ONEPOINT パス名を操作するには File の各種クラスメソッドを使用する 202 ワイルドカードでファイル名をパターンマッチする COLUMN 隠しファイルについて COLUMN 「 File.fnmatch 」のフラグについて COLUMN 「 Dir.[]」と「 Dir.glob 」について 203 ファイル名をオブジェクト指向で扱う 204 文字列を IO オブジェクトのように扱う ONEPOINT 文字列を IO オブジェクトのように扱うには StringIO クラスを使用する COLUMN オブジェクトが IO であるかを判定してはいけない 205 ログファイルに書き込む ONEPOINT ログファイルに書き込むには Logger を使用する COLUMN ログファイルを取り換える COLUMN tail シェルコマンドでログを閲覧する COLUMN 特定の重要度のログのみを取り出す CHAPTER 11 システムとのインターフェース 206 コマンドとしてもライブラリとしても使えるようにするイディオムについて 207 他の文字コードで記述されたスクリプトを実行する 208 コマンドライン引数を読む ONEPOINT コマンドライン引数を得るには「 ARGV 」にアクセスする COLUMN オプション変数 209 入力ファイルまたは標準入力を読む ONEPOINT フィルタの入力を扱うには「 ARGF 」を使用する COLUMN 「 ARGF 」は実は File オブジェクトではない 210 コマンドラインオプションを処理する ONEPOINT 受け付けるオプション引数を制限する COLUMN オプション引数の変換 COLUMN カジュアルなオプション解析をするには「 OptionParser.getopts 」を使用する 211 環境変数を読み書きする ONEPOINT 環境変数を読み書きするには ENV にアクセスする COLUMN 環境変数は基本的に汚染されている 212 Ruby のバージョンを知る ONEPOINT Ruby のバージョンを得るには「 RUBY_VERSION 」にアクセスする 213 OS の種類を判別する ONEPOINT 動作している OS の種類を知るには「 RUBY_PLATFORM 」にアクセスする COLUMN より細かい判別には Platform モジュールを使用する 214 外部コマンドを実行する ONEPOINT 外部コマンドを実行するには「 Kernel#system 」を使用する COLUMN Process::Status オブジェクトについて 215 子プロセスの出力を文字列で得る ONEPOINT 子プロセスの出力を得るには「`コマンド`」を使用する 216 文字列を標準入力として子プロセスの出力を文字列で得る ONEPOINT 文字列をフィルタコマンドにかけた結果を得るには「 String#external_filter 」を定義して使う 217 子プロセスとのパイプラインを確立する ONEPOINT 子プロセスとのパイプを作成するには「 IO.popen 」を使用する COLUMN 入出力バッファリングについて 218 シグナルを捕捉する ONEPOINT シグナルを捕捉するには「 Signal.trap 」を使用する COLUMN シグナルによる割り込みから守る 219 デーモンを作成する ONEPOINT Unix 系 OS でデーモンを作成するには WEBrick::Daemon.start を使用する 220 ワンライナーを極める COLUMN zsh でシングルクォート文字列の中にシングルクォートを入れる方法 221 ワンライナーでフィルタを記述する COLUMN 「-i 」でファイルを書き換える COLUMN Perl には負けてしまう 222 ワンライナーでレコードセパレータを変更する CHAPTER 12 ネットワーク 223 URL からホスト名、パスなどを抜き出す ONEPOINT URL からホスト名などを抜き出すには URI クラスを使用する COLUMN URI とは 224 Web サーバを立ち上げる 225 URL にある内容を読み込む ONEPOINT URL の内容を読み込むには「 open-uri 」ライブラリを使用する 226 フォームを送信する ONEPOINT フォームを送信するには HTTPClient クラスを使用する 227 ファイルをアップロードする ONEPOINT CGI スクリプトでファイルをアップロードするには「 HTTPClient#post_content 」で File オブジェクトを指定する COLUMN アップロード CGI スクリプトの作成方法 228 Web ブラウザをシミュレートする COLUMN 古い Mechanize 用のスクリプトは書き換えが必要 229 メールを読み書きする ONEPOINT メールを読み書きするには tmail を使用する COLUMN 添付ファイル付きのメールを作成する COLUMN 日本語メール送る際のおまじないヘッダの詳細 230 メールを送信する ONEPOINT メールを送信するには Net::SMTP を使用する COLUMN 単純なメールならば Net::SMTP だけで充分 231 ソケットを読み書きする ONEPOINT ソケットは IO のサブクラス 232 TCP サーバ・クライアントを作成する ONEPOINT TCP サーバを作成するには無限ループの中でスレッドを作成して「 TCPServer#accept 」を渡す 233 CGI スクリプトを作成する ONEPOINT CGI スクリプトを作成するには CGI.new を使用する COLUMN 同じコントロール名が複数ある場合は「 CGI#params 」を使用する COLUMN スクリプトの文字コードは UTF-8 推奨 COLUMN CGI スクリプトを Ruby 1.9 へ移行するには CHAPTER 13 データベースの扱い 234 オブジェクトをディスクに保存・復元する ONEPOINT オブジェクトをディスクに保存・復元するには「 Marshal.dump 」「 Marshal.load 」を使用する COLUMN extend されたオブジェクトは保存・復元できる 235 オブジェクトを人間が読める形式( YAML )で保存・復元する ONEPOINT オブジェクトを YAML 化してディスクに保存・復元するには「 YAML.dump 」「 YAML.load 」を使用する COLUMN 日本語を扱うには Ya2YAML を使用する COLUMN 「 Kernel#p 」の YAML 版が「 Kernel#y 」 COLUMN PStore のインターフェイスで YAML を使う COLUMN DBM のインターフェイスで YAML を使う 236 Ruby のオブジェクトをデータベース的に読み書きする ONEPOINT Ruby のオブジェクトをデータベース的に扱うには PStore クラスを使用する 237 文字列ベースの簡易データベース( DBM )の読み書きをする ONEPOINT 文字列データを永続化するには GDBM クラスを使用する COLUMN GDBM.open の第 2 ・第 3 引数 238 MySQL データベースにアクセスする 239 PostgreSQL データベースにアクセスする 240 SQLite データベースにアクセスする 241 データベース統一インターフェイス( DBI )を使う 242 Ruby のみで記述されたデータベース「 KirbyBase 」を使う COLUMN KirbyBase はテーブルごとにテキストファイルが作られる CHAPTER 14 クラス・モジュール・オブジェクト 243 アクセサを使ってインスタンス変数をパブリックにする ONEPOINT インスタンス変数を外部からアクセス可能にするには「 Module#attr_accessor 」などを使用する COLUMN アクセサ経由でインスタンス変数にアクセスすることの利点 COLUMN 「 obj.getA ()」「 obj.setA ( a )」ではなくて「 obj.a 」「 obj.a = a 」が Ruby 流 244 デフォルト値付きのアクセサを定義する ONEPOINT デフォルト値のアクセサを定義するには「 Module#attr_accessor_default 」を定義する 245 オブジェクトがメソッドを受け付けるかチェックする ONEPOINT オブジェクトがメソッドを受け付けるかチェックするには「 Object#respond_to? 」を使用する COLUMN プライベートメソッドを受け付けるかチェックする 246 メソッドの可視性を設定する COLUMN private なメソッドを外部から強引に呼ぶ COLUMN 見捨てられた protected COLUMN 内部インターフェイスを共有する場合は private にして「 Object#__send__」で呼び出す 247 変数を遅延初期化する ONEPOINT 変数が nil のときに初期値を与えるには「||=」演算子を使用する COLUMN 「||=」は警告が出ないので安心 COLUMN 「||=」演算子を簡易 memoize として使う 248 複数のコンストラクタを定義する ONEPOINT new 以外のコンストラクタを定義するにはクラスメソッド定義中に new を呼び出す 249 キーワード引数を使う ONEPOINT 疑似キーワード引数を実現するにはメソッドの最後の引数にハッシュを指定する COLUMN Ruby 1.9 で使える新しいハッシュリテラルを使う COLUMN 疑似キーワード引数を一度にインスタンス変数に代入する 250 モジュール関数を定義する ONEPOINT モジュール関数を定義するには「 module_function 」を指定する COLUMN 「 extend self 」とするとすべてのメソッドをモジュール関数にできる 251 情報を集積するタイプのオブジェクトには構造体を使う ONEPOINT 構造体を定義するには「 Struct.new 」を使用する COLUMN ハッシュとの違い COLUMN OpenStruct について 252 ハッシュのキーをアクセサにする ONEPOINT ハッシュのキーをアクセサにするには構造体に変換する 253 メソッドを委譲する ONEPOINT メソッドをインスタンス変数に委譲するには Forwardable モジュールを使用する COLUMN 継承と委譲 254 未初期化のオブジェクトを作る ONEPOINT 未初期化のオブジェクトを作成するには「 Class#allocate 」を使用する COLUMN 「 Class#new 」を Ruby で記述すると COLUMN 「 Class#allocate 」を使う前に設計の見直しを 255 オブジェクトを変更不可にする ONEPOINT オブジェクトを変更不可にするには「 Object#freeze 」を使用する COLUMN 自己代入は名札の張り替えである 256 キャッシュ付きのメソッドを定義する ONEPOINT 計算結果をキャッシュするメソッドを作成するにはブロック付き「 Hash.new 」を使用する COLUMN フィボナッチ数列に memoize が効果的な理由 257 オブジェクトに動的に特異メソッドを追加する ONEPOINT オブジェクトに動的に特異メソッドを追加するには「 Object#extend 」を使用する COLUMN 組み込みクラスに必要に応じてメソッドを追加するには COLUMN オブジェクトの特異メソッド定義は extend を使用するべき 258 動的にメソッドを定義する ONEPOINT 動的にメソッドを定義するには「 Module#define_method 」を使用する 259 動的にブロック付きメソッドを定義する ONEPOINT 動的にブロック付きメソッドを定義するには「 Module#define_method 」でブロック引数を使用する COLUMN Ruby 1.9 ではブロックに「 optional 」引数も持てる 260 動的に特異メソッドを定義する ONEPOINT 動的に特異メソッドを定義するには特異クラス内で「 Module#define_method 」を使用する COLUMN 特異クラスを開くのが面倒な理由 COLUMN 特異クラスを得るメソッド名が決まらない理由 261 動的にクラス・モジュールを定義する ONEPOINT 動的にクラスを定義するには「 Class.new 」を使用する 262 メソッドを再定義する ONEPOINT 元の定義を保持しつつメソッドを再定義するには「 Object#extend 」を使用する COLUMN 「 once 」関数で保護しないとどうなるか 263 ブロックでクロージャー(無名関数)を作る ONEPOINT 手続きオブジェクトは「 Proc.new 」「 Kernel#lambda 」「ブロック引数」で得られる COLUMN 「 Proc.new 」と「 Kernel#lambda 」の違い COLUMN クロージャーでデータを隠蔽する COLUMN Ruby 1.9 での新しい文法 264 メソッドオブジェクトを得る ONEPOINT メソッドをオブジェクトとして扱うには「 Object#method 」を使用する COLUMN Method はメソッドの実体をコピーする 265 ブロックを他のメソッドに丸投げする ONEPOINT ブロックを他のメソッドに丸投げするにはブロック引数を指定する 266 ブロックを簡潔に表現する ONEPOINT 無引数メソッド呼び出しのみのブロックを簡潔に記述するにはブロック引数にシンボルを指定する COLUMN 「 Symbol#to_proc 」の定義 267 抽象メソッドを定義する ONEPOINT サブクラスで定義されるべきメソッドを宣言するには「 Module#abstract_method 」を定義して使う 268 文脈を変えてブロックを評価する ONEPOINT 文脈を変えてコードを評価するには「 Object#instance_eval 」や「 Module#module_eval 」を使用する COLUMN 「 Module#define_method 」とメソッド定義は同一ではない 269 文脈を変えて引数付きでブロックを評価する ONEPOINT 「 Object#instance_eval 」にブロックパラメータを渡すには「 Object#instance_exec 」を使用する COLUMN 「 Object#instance_exec 」の定義 COLUMN 「 Module#module_exec 」「 Module#class_exec 」は亜種 270 似たようなメソッドをまとめて定義する ONEPOINT 似たようなメソッドをまとめて定義するには「 Module#def_each 」を定義する 271 文字列を Ruby の式として評価する ONEPOINT 文字列を Ruby の式として評価するには「 Kernel#eval 」を使用する COLUMN 複数行の文字列を評価する場合は COLUMN ファイル名と行番号を設定しておくべき 272 名前を指定してメソッドを呼び出す ONEPOINT 名前を指定してメソッドを呼び出すには「 Object#__send__」を使用する COLUMN 呼び出すメソッドを「 case 」式で分岐する処理が出てきたら「 Object#__send__」を使うチャンス 273 名前を指定して定数の値を得る ONEPOINT 名前を指定して定数の値を得るには「 Module#const_get 」を使用する 274 名前を指定してインスタンス変数を読み書きする ONEPOINT オブジェクトのインスタンス変数を外から参照するには「 Object#instance_variable_get 」を使用する COLUMN 長い名前のメソッドは要注意の意味 275 終了直前に実行する処理を記述する ONEPOINT スクリプト終了直前に実行させるには「 Kernel#at_exit 」などを使用する COLUMN リソース使用開始時に終了処理を記述する 276 大きいオブジェクトをコンパクトに表示する ONEPOINT 大きいオブジェクトをコンパクトに表示するには不要なオブジェクトを短縮形にする COLUMN UnboundMethod からメソッドを定義する 277 セキュリティチェックについて 278 リフレクションについて 279 使用可能なメソッド名をすべて得る COLUMN 普通は「 Object#respond_to? 」を使用する COLUMN 要素数が多い配列を省略して注釈する 280 変数のリストを得る 281 存在しないメソッド呼び出しをフックする ONEPOINT 存在しないメソッドを呼び出した場合の動作を定義するには「 method_missing 」メソッドを定義する CHAPTER 15 Ruby そのものを拡張する ActiveSupport 282 ActiveSupport の概要と構造について 283 オブジェクトが「空白」であるかどうかを調べる ONEPOINT オブジェクトが空白であるか判定するには「 Object#blank? 」を使用する 284 DSL で容量計算をする ONEPOINT 容量計算では単位名メソッドが使用できる COLUMN SI 接頭辞と 2 進接頭辞 285 DSL で時刻計算をする ONEPOINT 時刻・日付計算では単位名メソッドが使用できる COLUMN 1 カ月、 1 年は何日? 286 クラス変数のアクセサを作る ONEPOINT クラス変数のアクセサを作成するには「 Class#cattr_accessor 」などを使用する 287 出力を黙らせる ONEPOINT 出力を黙らせるには「 Kernel#silence_stream 」を使用する COLUMN 警告を黙らせる COLUMN 特定の例外を無視する 288 アトミックな処理でファイルに書き込む ONEPOINT アトミックな処理でファイルに書き込むには「 File.atomic_write 」を使用する COLUMN アトミックとは CHAPTER 16 マルチスレッドと分散 Ruby 289 スレッドで並行実行する ONEPOINT Ruby で並行処理するには「 Thread.start 」を使用する COLUMN 「 Thread.start 」の引数の必要性 COLUMN スレッドでの例外には注意 290 無限ループを実現する ONEPOINT 無限ループするには「 Kernel#loop 」を使用する COLUMN Ruby 1.8.7 以降では「 StopIteration 」例外で「 Kernel#loop 」から抜けることができる 291 他のスレッドの実行終了を待つ ONEPOINT 他のスレッドと待ち合わせをするには「 Thread#join 」を使用する COLUMN 「 Thread#join 」と例外 COLUMN スレッドのブロックが返した値を知るには「 Thread#value 」を使用する COLUMN タイムアウトの設定 292 スレッドローカル変数を扱う ONEPOINT スレッド固有のデータを設定するには「 Thread#[]=」を使用する 293 ブロックの実行にタイムアウトを設定する ONEPOINT タイムアウトを設定するには「 Timeout.timeout 」モジュール関数を使用する COLUMN timeout.rb のソースコードを読んでみる 294 キューで順番に処理していく ONEPOINT スレッド間通信のキューを作成するには Queue クラスを使用する 295 スレッドを排他制御する ONEPOINT 排他制御するには「 Mutex#synchronize 」や「 Monitor#synchronize 」を使用する COLUMN Monitor は Mutex の高機能版 COLUMN 「 Thread.stop 」はカレントスレッドを停止する 296 他の Ruby スクリプトと通信する ONEPOINT 他の Ruby スクリプトと dRuby で通信するには「 DRb.start_service 」と「 DRbObject.new_with_uri 」を対で使用する COLUMN dRuby サーバを動かし続ける本来の方法 COLUMN 相手の知らないオブジェクトを渡すとどうなるか COLUMN Unix 系 OS で他のユーザに使わせないようにするには drbunix を使用する 297 dRuby でオブジェクトを遠隔操作する ONEPOINT 相手の知らないオブジェクトを遠隔操作するには DRbUndumped をインクルードする COLUMN 「 Marshal.dump 」を実行できないオブジェクトは参照渡しになる COLUMN 巨大なオブジェクトも参照渡しがよい CHAPTER 17 ドメイン特化言語(DSL)の構築 298 ドメイン特化言語とは 299 コンストラクタにブロックを使って DSL を構築する ONEPOINT コンストラクタにブロックを指定するには「 initialize 」で「 Object#instance_eval 」を使用する 300 メソッド呼び出しを英語として自然に読めるようにする ONEPOINT メソッド呼び出しを英語として自然に読めるようにするには self を返すメソッドを定義する 301 メソッド呼び出しで英語を記述する ONEPOINT メソッド呼び出しで英語を記述するには Recorder クラスを定義する 302 物理単位を表す DSL を定義する 303 型付き構造体を表す DSL を定義する CHAPTER 18 テスト・デバッグ 304 自動テストの書き方について COLUMN DRY 原則とユニットテスト COLUMN Ruby 1.9 では miniunit が代わりに標準添付になる 305 モジュールメソッドのテストを書く ONEPOINT モジュールメソッドのテストを書くにはモジュールをインクルードする 306 スタブを作成する ONEPOINT メソッドの返り値を偽装するにはスタブを使用する 307 モックを作成する ONEPOINT メソッドの呼び出し方をテストするにはモックを使用する COLUMN モックは厳格化したスタブ COLUMN モックは検証コードを含む 308 RSpec で実行可能な仕様書を作成する ONEPOINT より可読性の高いテストを書くには RSpec を使用する COLUMN 英語読みへのこだわり COLUMN 日本語の仕様書を作成する 309 デバッガの使い方について COLUMN デバッガコマンドのリストを得る 310 ベンチマークを測定する ONEPOINT ブロックで囲まれたコードのベンチマークを測定するには「 Benchmark.bmbm 」を使用する COLUMN プロセス時間と実時間の違い 311 ボトルネックを探す 312 テストの網羅具合を調査する COLUMN テストスクリプトが複数ある場合は「--aggregate 」オプションを使用する COLUMN rcov はコード解析ツールでもある 313 ライブラリのファイル名を得る ONEPOINT ライブラリのファイル名を得るには「 Kernel#which_library 」を使用する 索引
購入する
http://www.amazon.co.jp/gp/product/4863540221
livedoor
Ruby逆引きハンドブックの通販/るびきち - 紙の本:honto本の通販ストア
http://store.shopping.yahoo.co.jp/7andy/32254127.html
http://item.rakuten.co.jp/book/6073651/
Ruby逆引きハンドブック / るびきち【著】 - 紀伊國屋書店ウェブストア
http://www.owlbooks.jp/detail.jsp?ID=0110110054
追記[2009/07/08]
すみません、誤植です。後程正誤表が更新されるはずです。指摘ありがとうございます。