レシピ一覧
第1章 さあ始めよう 1.1 ツールやライブラリを探してインストールする 001 Rubyの便利なライブラリやツールをインストールしたい 002 RubyGemsを使ってパッケージをインストールしたい 003 gemパッケージを検索したい 004 インストールしたgemパッケージをアップデートしたい 005 RubyGemsが参照するリモートリポジトリを追加したい 006 インストール用スクリプトを使ってパッケージをインストールしたい 1.2 リファレンスマニュアルや各種ドキュメントを参照する 007 リファレンスマニュアルを参照したい 008 riコマンドでリファレンスマニュアルを参照したい 009 refeコマンドでリファレンスマニュアルを参照したい 010 RubyGemsでインストールしたパッケージのドキュメントを参照したい 011 よく使うコマンドやメソッドの利用方法を一覧したい 1.3 開発環境を整える 012 irb起動時に読み込むライブラリを指定したい 013 irbでTab補完やシンタックスハイライトをしたい 014 irbの実行結果をハッシュロケット形式で式の横に表示したい 015 コマンドプロンプト上でANSIエスケープシーケンスを扱いたい 第2章 基本オブジェクト 2.1 文字列オブジェクト 016 スクリプトの文字エンコーディングを指定したい 017 文字列の中に式を埋め込みたい 018 単一引用符( ' )や二重引用符( " )を含む文字列を扱いたい 019 複数行に渡る長い文字列を扱いたい 020 文字エンコーディングを変換したい 021 文字と文字コードを相互に変換したい 022 Base64形式でエンコード/デコードしたい 023 日本語を分かち書きしたい 2.2 数値オブジェクト 024 数値クラスが扱える数値の範囲を知りたい 025 10進法から2進法、8進法、16進法へ基数変換したい 026 階乗羃、順列、階乗、組み合わせの値を求めたい 027 Floatオブジェクトでは表現できない精度の浮動小数点数を扱いたい 028 10進法で表記された小数を誤差なく扱いたい 029 単位換算をしたい 030 数値ベクトルを高速に扱いたい 031 連立一次方程式の解を求めたい 2.3 コレクション/データ構造 032 サイズを指定して配列を初期化したい 033 ハッシュ要素の初期値を設定したい 034 配列やハッシュの状態を確かめたい 035 配列やハッシュから条件を満たす要素を取り除きたい 036 配列やハッシュの要素を条件に基づいて分割したい 037 2つの配列の和集合、積集合、差集合をとりたい 038 2つのハッシュをマージしたい 039 構造体を使いたい 040 遅延リストを作成したい 第3章 システム 3.1 日付と時刻 041 和暦表記の文字列を日付として処理したい 042 日時が特定の期間に含まれるかどうかを調べたい 043 月の日数を算出したい 044 月末の日付を算出したい 045 Timeオブジェクト、Dateオブジェクト、DateTimeオブジェクトを相互に変換したい 046 日時を任意のフォーマットで出力したい 047 曜日を日本語で出力したい 048 日時を和暦表記で出力したい 3.2 ファイルとディレクトリ 049 ファイルのパスからファイル名とディレクトリを分離したい 050 相対パスを絶対パスに変換したい 051 絶対パスを相対パスに変換したい 052 ファイル名がパターンにマッチするかどうかを調べたい 053 処理の間だけ特定のディレクトリに移動したい 054 作業用一時ディレクトリを作成したい 055 ファイルのタイムスタンプを参照したい 3.3 その他 056 標準入力からメッセージを読み込みたい 057 標準出力や標準エラー出力にメッセージを書き込みたい 058 コマンドラインから与えられたオプションを解析したい 059 環境変数を参照したい 060 アプリケーションの設定ファイルを作りたい 061 外部コマンドを実行したい 062 スクリプトをデーモンとして動作させたい 063 スクリプトをWindowsサービスとして登録したい 064 データを可逆圧縮したい 第4章 オブジェクト指向プログラミング 4.1 生成 065 オブジェクトが持つ情報を別の形式(オブジェクト)に変換したい 066 オブジェクトが持つ情報から新たな情報(オブジェクト)を生成したい 067 既存のインスタンスを雛形にして新しいインスタンスを生成したい 068 オブジェクトの生成に伴う具体的な手続きを隠蔽したい 069 あるクラスのインスタンスが1つしかないことを保証したい 4.2 構造 070 クラス名や定数名がほかと衝突するのを防ぎたい 071 メソッド呼び出しをほかのオブジェクトに委譲したい 072 受け取ったブロックをほかのオブジェクトに引き渡したい 073 既存のクラスの挙動を変更したい 074 スーパークラスで定義されている機能を拡張したい 075 単純な値の組み合わせをオブジェクトとして扱いたい 076 1つのクラスから異なる振る舞いを持つインスタンスを生成したい 077 既存のクラスのインターフェイスを別の形に変換して提供したい 4.3 状態 078 変数を初めて使うときに初期化したい 079 インスタンス変数を外部から参照できるようにしたい 080 インスタンス変数を外部から設定できるようにしたい 081 可変長引数を使いたい 082 キーワード引数を使いたい 083 状態遷移を表現したい 084 オブジェクトを変更できないようにしたい 085 オブジェクトがコピーされた際に特別な初期化をしたい 086 防御的コピーを使ってオブジェクトの内部状態を保護したい 087 メソッドがブロックを伴って呼び出されたかを知りたい 4.4 振る舞い 088 クラスメソッドを定義したい 089 真偽値を返すメソッドであることを示したい 090 使う際に注意が必要なメソッドであることを示したい 091 オブジェクトを同じと見なす基準を同値にしたい 092 メソッドに別名を付けたい 093 状態の変化を協調するオブジェクトに通知したい 094 相互作用するオブジェクトの約束事を1 ヶ所で定義したい 095 後処理を必ず実行させたい 096 処理の一部を外から指定できるようにしたい 第5章 データベース/永続化 5.1 データベース 097 O/Rマッピングを用いてデータベースを手軽に扱いたい 098 簡潔なDSLでデータベースを手軽に扱いたい 099 SQLiteを使いたい 100 PostgreSQLを使いたい 101 MySQLを使いたい 102 高速な全文検索を行ないたい 103 memcachedを利用したい 5.2 データの永続化 104 オブジェクトを永続化したい 105 オブジェクトデータベースを手軽に利用したい 106 YAML形式でオブジェクトをシリアライズしたい 107 JSON形式でオブジェクトをシリアライズしたい 108 CSV形式のデータを読み書きしたい 第6章 ネットワーク処理/Webプログラミング 6.1 プロトコル 109 IRC bot を作りたい 110 XMPPを使ってGoogle TalkなどのIMへ通知したい 111 SMTPでメールを送信したい 112 SMTP over SSLでメールを送信したい 113 LDAPのエントリを手軽に扱いたい 114 SCPを使ってファイルをアップロードしたい 6.2 WEBrick 115 Webサーバーを手軽に作成したい 116 URIをディレクトリに対応付けたい 117 URIに対応するコンテンツを動的に生成したい 118 リクエストを別のURIへリダイレクトしたい 119 Basic認証を行ないたい 120 リクエストヘッダやボディの内容を参照したい 121 レスポンスに任意のステータスコードを返したい 6.3 Webアプリケーション基盤 122 WebサーバーをWSGIのような統一的なインターフェイスで扱いたい 123 DSLを使って小規模Webアプリケーションを簡潔に記述したい 6.4 Webクライアント 124 Webページを取得して解析したい 125 HTTPリクエストを発行したい 126 Basic認証付きHTTPリクエストを発行したい 127 ファイルをHTTP POSTしたい 128 RESTfulなWeb APIクライアントを簡単に作りたい 129 スクリプトで使うパスワードをまとめて管理したい 130 Webサーバーの動作をシミュレートしたい 131 open-uriをフックしてローカルファイルを返したい 6.5 並列分散処理 132 分散オブジェクトを利用したい 133 タプルスペースを介した分散処理を行ないたい 第7章 各種フォーマット/画像 7.1 各種フォーマット 134 定型テキストをテンプレートから生成したい 135 PDFを生成したい 136 Wordファイルを読み書きしたい 137 Excelファイルの読み書きをしたい 138 vCard形式のデータを読み書きしたい 139 iCalendar形式のデータを読み書きしたい 140 ユニークな識別子(UUID)を生成したい 7.2 HTML 141 ビルダーを使ってHTML/XML文書を生成したい 142 Markdown記法からHTMLを生成したい 143 Textile記法からHTMLを生成したい 144 Wiki記法からHTMLを生成したい 145 はてな記法からHTMLを生成したい 146 Haml記法からHTMLを生成したい 7.3 メール 147 メールからヘッダや本文を取り出したい 148 メールから添付ファイルを取り出したい 7.4 フィード 149 RSSを作成したい 150 Atom配信フォーマットを作成したい 151 フィードから特定のエントリを抽出/削除したい 152 Webサイトから情報を抽出したい 7.5 画像 153 画像にエフェクトをかけたい 154 サムネイル画像を作成したい 155 高品質な図を作成したい 156 折れ線グラフや棒グラフなどを生成したい 157 QRコードを生成したい 第8章 他言語/外部ライブラリ 8.1 Cプログラムとの連携 158 Rubyコードの中にCのコードを埋め込みたい 159 共有ライブラリ内の関数をRubyから呼び出したい 160 Cで作られたプログラムにRubyインタープリタを組み込みたい 8.2 JRuby 161 JRubyを使ってJavaとRubyをシームレスにつなげたい 162 RubyからJavaのクラスを利用したい 163 RubyからJavaのパッケージを利用したい 第9章 エラー処理/ログ 9.1 例外 164 例外処理を行ないたい 165 例外を発生させたい 166 例外を捕捉して処理したい 167 メソッド単位で例外を捕捉して処理したい 168 行単位で簡潔な例外処理を記述したい 169 独自の例外を定義したい 9.2 ログの記録 170 ファイルや標準出力にログを出力したい 171 特定のレベルよりも重要なログだけを出力したい 172 一定の期間ごとにログファイルをローテートしたい 173 一定のサイズごとにログファイルをローテートしたい 174 Syslogにログを出力したい 第10章 テスト/最適化 10.1 テスト 175 ユニットテストを行ないたい 176 処理の結果が期待したとおりであることを検証したい 177 テストに先立って必要なデータを準備したい 178 Mochaを使ってモックやスタブを利用したい 179 テストを全部ひとまとめに実行したい 180 テスト結果を色付きで見やすく表示したい 181 振舞駆動開発(BDD)を行ないたい 10.2 最適化 182 カバレッジを計測したい 183 パフォーマンスを計測したい 184 コードの不吉な匂いを検出したい 第11章 デバッグ 11.1 デバッガ 185 デバッガを利用したい 186 ブレークポイントを設定したい 187 プログラムの実行を例外が起きたところで止めたい 188 デバッグ中のソースコードを表示したい 189 スタックフレームを表示/選択したい 190 デバッグ中に式を評価したい 191 実行を停止するたびに特定の式を評価した結果を確認したい 192 起動時のデバッグオプションを設定したい 193 任意の箇所に達した場合にデバッガを起動したい 194 特定の条件を満たした場合にデバッガを起動したい 11.2 技法 195 処理中のファイル名や行番号を参照したい 196 コールスタックを調査したい 197 オブジェクトの中身を調べたい 198 オブジェクトが存在しているかを調べたい 199 オブジェクトのクラス名を調べたい 200 クラスライブラリをコマンドとして実行可能にしたい 201 スーパークラスを調べたい 202 オブジェクトで利用可能なメソッドを一覧したい 203 メソッドチェーンの途中経過を調べたい 第12章 システム管理/自動化 12.1 システム管理 204 Ruby版Monitでプロセスの動作を監視したい 205 Windowsサービスを管理したい 12.2 自動化 206 Rakeでビルド作業やタスクを自動化したい 207 Rakeタスク中で外部プログラムやRubyスクリプトを実行したい 208 引数をとるRakeタスクを定義したい 209 関連する複数のRakeタスクをまとめたい 210 ファイルを変換するRakeタスクを定義したい 211 中間ファイルや生成ファイルを削除するRakeタスクを定義したい 212 ソースリポジトリの変更を監視して自動でビルドやテストを実施したい 第13章 ドキュメンテーション/パッケージ化 13.1 ドキュメンテーション 213 ソースコードからAPIドキュメントを生成したい 214 ドキュメント用のコメント内でJavadocのようなメタデータを扱いたい 13.2 パッケージ化 215 exe形式でアプリケーションを配布したい 216 プログラムにインストーラを付けて配布したい 第14章 さらに先へ 14.1 Ruby 1.9 217 Ruby 1.9をインストールしたい 218 RubyVMに触れてみたい 219 文字列オブジェクトの文字エンコーディングを調べたい 220 Ruby 1.9の多言語化機能を用いて文字エンコーディング変換を行ないたい 221 文字列のバイト列を変更せずに文字エンコーディングを指定したい 222 入出力される文字列の文字エンコーディングを指定したい 223 入出力時のデフォルト文字エンコーディングを指定したい 224 スクリプトファイルの文字エンコーディングを指定したい 225 文字列のバイト列が正しく符号化されていることを検証したい 226 文字列をバイト列として使用したい 227 Fiberを使ってジェネレータを実装したい 228 分数や循環小数を精確に扱いたい 229 複素数を扱いたい 14.2 Rubyの文化、コミュニティ 230 Webにある情報を参照したい 231 メーリングリストに参加したい 232 各地で行なわれている勉強会に参加したい ◆COLUMN Contents リモートリポジトリとローカルリポジトリ GitHub cheatの仕組み Ruby 1.9のBase64モジュール DecimalクラスとBigDecimalクラスの性能差 遅延リスト STDIN と$stdinの使い分け Zlib::GzipWriter.openメソッドの圧縮のレベル Singletonパターンを利用する前に ||=は何をしているのか クラスやモジュールを凍結するとどうなるか 浅いコピーと深いコピー Ruby ではクラスもインスタンス 非破壊的メソッドと破壊的メソッド sequelコマンド MySQL接続のオプションの設定 フレームワークはWebアプリケーションの規模に応じて選択を NokogiriとNokogirl メールを受信して処理する Webスクレイピングの注意点 XPathとNokogiriのxpathメソッド さまざまなRuby の実装 捕捉した例外を再度発生させる方法 POSIXシグナルに関する注意点 独自の例外は通常Exceptionクラスのサブクラスとして定義しない ユニットテストとテスト駆動開発 テストコードはどこで管理する? 振舞駆動開発 流れるようなインターフェイス RakefileとDSL クラス図の生成 パッケージはどこにインストールされる? ファイバ
