レシピ一覧

第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
クラス図の生成
パッケージはどこにインストールされる?
ファイバ