「たのしいRuby 第2版」目次

第1部Rubyをはじめよう
第1章はじめてのRuby3
1.1Rubyを動かす4
1.1.1Windowsの場合5
1.1.2Unixの場合6
1.1.3MacOS Xの場合7
1.1.4動作確認8
1.2プログラムの解説8
1.2.1オブジェクト8
1.2.2メソッド9
1.3文字列9
1.3.1改行文字と「\」9
1.3.2「''」と「""」11
1.4メソッドの呼び出し12
1.5putsメソッド13
1.6pメソッド13
1.7日本語の表示15
1.8数値の表示と計算16
1.8.1数値の表示16
1.8.2四則演算17
1.8.3数学的な関数18
1.9変数19
1.10コメントを書く21
1.11制御構造22
1.11.1制御構造の分類22
1.12条件判断:if〜then〜end23
1.13繰り返し25
1.13.1while文25
1.13.2timesメソッド26
1.14メソッドの作成27
1.15別のファイルを取り込む28
第2章便利なオブジェクト31
2.1配列(Array)32
2.1.1配列を作る32
2.1.2配列からオブジェクトを取り出す33
2.1.3配列にオブジェクトを格納する35
2.1.4配列の中身35
2.1.5配列と大きさ36
2.1.6配列と繰り返し36
2.2ハッシュ(Hash)38
2.2.1ハッシュを作る38
2.2.2ハッシュからオブジェクトを取り出す39
2.2.3ハッシュの繰り返し39
2.3正規表現42
2.3.1パターンマッチと正規表現42
第3章コマンドを作ろう47
3.1コマンドラインからのデータの入力47
3.2ファイルからの読み込み49
3.2.1ファイルからテキストデータを読み込んで表示する49
3.2.2ファイルからテキストデータを1行ずつ読み込んで表示する51
3.2.3ファイルの中から特定のパターンの行のみを選んで出力する52
第2部基礎を学ぼう
第4章オブジェクトと変数・定数59
4.1オブジェクト59
4.2クラス60
4.3変数61
4.4定数64
4.5予約語64
第5章条件判断73
5.1条件判断とは73
5.2Rubyでの条件74
5.2.1条件と真偽値75
5.2.2論理演算子76
5.3if文77
5.4unless文78
5.5case文80
5.6if修飾子とunless修飾子82
5.7まとめ84
第6章繰り返し87
6.1繰り返しの基本87
6.2繰り返しで気をつけること88
6.3繰り返しの実現方法88
6.4timesメソッド89
6.5for文91
6.6一般的なfor文93
6.7while文94
6.8until文97
6.9eachメソッド98
6.10loopメソッド100
6.11繰り返しの制御100
6.11.1break102
6.11.2next104
6.11.3redo106
6.12まとめ107
第7章メソッド109
7.1メソッド呼び出し109
7.2メソッドの分類110
7.2.1インスタンスメソッド110
7.2.2クラスメソッド111
7.2.3関数的メソッド112
7.3メソッドの定義112
7.3.1メソッドの返り値114
第8章クラスとモジュール117
8.1クラスとは118
8.1.1クラスとインスタンス118
8.1.2継承119
8.2クラスを作る122
8.2.1class文122
8.2.2initializeメソッド123
8.2.3インスタンス変数とインスタンスメソッド123
8.2.4アクセスメソッド125
8.2.5クラスメソッド126
8.2.6定数128
8.2.7クラス変数129
8.2.8クラスを拡張する130
8.2.9継承する130
8.2.10メソッドの呼び出しを制限する132
8.3オブジェクト指向とは135
8.3.1データと処理135
8.3.2「データと処理」の問題点136
8.3.3オブジェクト138
8.3.4オブジェクト指向の特徴141
8.3.5ダックタイピング142
8.4モジュールとは144
8.4.1モジュールの使い方144
8.5モジュールを作る146
8.5.1定数147
8.5.2メソッドの定義147
第9章エラー処理と例外149
9.1エラー処理について149
9.2例外処理151
9.3例外処理の書き方152
9.4後処理156
9.5やりなおし157
9.6rescue修飾子157
9.7例外処理の構文の補足158
9.8補足する例外を指定する159
9.9例外クラス160
9.10例外を発生させる161
9.11catchとthrow162
第3部クラスを使おう
第10章数値(Numeric)クラス167
10.1Numericのクラス構成168
10.2数値のリテラル169
10.3算術演算170
10.3.1割り算171
10.3.2Mathモジュール172
10.4数値型の変換173
10.5ビット演算174
10.6数えあげ178
練習問題180
第11章配列(Array)クラス181
11.1配列の復習182
11.2配列の作り方183
11.2.1Array.newを使う183
11.2.2%wを使う183
11.2.3to_aメソッドを使う184
11.2.4文字列のsplitメソッドを使う184
11.3インデックスの使い方185
11.3.1要素を取り出す185
11.3.2要素を置き換える188
11.3.3要素を挿入する189
11.3.4複数のインデックスから配列を作る190
11.4インデックスを使わない配列の操作191
11.5集合としての配列191
11.5.1「|」と「+」の違い193
11.6「列」としての配列194
11.7配列の主なメソッド197
11.7.1配列に要素を加える197
11.7.2配列から要素を取り除く199
11.7.3配列の要素を置き換える201
11.8配列とイテレータ203
11.9配列内の各要素を処理する204
11.9.1繰り返しとインデックスを使う204
11.9.2eachメソッドで要素を1つずつ得る205
11.9.3破壊的なメソッドで繰り返しを行う206
11.9.4その他のイテレータを使う206
11.9.5専用のイテレータを作る206
11.10配列の要素206
11.10.1例:簡単な行列を使う207
11.10.2初期化に注意207
11.11複数の値に並行してアクセスする209
練習問題211
第12章文字列(String)クラス213
12.1文字列を作る214
12.1.1%Q,%qを使う214
12.1.2ヒアドキュメントを使う215
12.1.3sprintfメソッドを使う216
12.2文字列の長さを得る219
12.3文字列を分割する220
12.4文字列をつなげる222
12.5文字列のインデックス224
12.6文字列を比較する225
12.6.1文字列の大小比較225
12.7改行文字の扱い方228
12.8文字列の検索と置換229
12.8.1文字列の検索229
12.8.2文字列の置換231
12.9文字列と配列で共通するメソッド231
12.9.1インデックス操作に関するメソッド232
12.9.2Enumerableモジュール関連のメソッド232
12.9.3連結や逆順に関するメソッド233
12.10その他のメソッド234
練習問題239
第13章ハッシュ(Hash)クラス241
13.1ハッシュの復習242
13.2ハッシュの作り方243
13.2.1{}を使う243
13.2.2Hash.newを使う243
13.3値を取り出す・設定する244
13.3.1キーや値をまとめて取り出す245
13.3.2ハッシュのデフォルト値246
13.4あるオブジェクトをキーや値として持っているかどうか調べる247
13.5ハッシュの大きさを調べる248
13.6キーと値を削除する249
13.6ハッシュを初期化する250
13.6.12つのキーがあるハッシュを扱う251
13.7応用例:単語数を数える252
練習問題255
第14章正規表現(Regexp)クラス257
14.1正規表現について258
14.1.1正規表現の書き方と使い方258
14.1.2正規表現オブジェクトの作り方258
14.2正規表現のパターンとマッチング259
14.2.1通常の文字によるマッチング260
14.2.2行頭と行末とのマッチング260
14.2.3マッチさせたい文字を範囲で指定する262
14.2.4任意の文字とのマッチング263
14.2.5バックスラッシュを使ったパターン264
14.2.6繰り返し266
14.2.7最短マッチ268
14.2.8「()」と繰り返し268
14.2.9選択269
14.3quoteメソッドを使った正規表現269
14.4正規表現のオプション270
14.5後方参照271
14.6正規表現を使うメソッド273
14.6.1subメソッドとgsubメソッド273
14.6.2scanメソッド274
14.7正規表現の例276
練習問題279
第15章IOクラス281
15.1入出力の種類282
15.1.1標準入出力282
15.1.2ファイル入出力284
15.1.3open-uri.rb286
15.1.4stringio.rb287
15.2基本的な入出力操作288
15.2.1入力操作289
15.2.2出力操作291
15.3ファイルポインタ293
15.4バイナリモードとテキストモード295
15.5バッファリング296
15.6コマンドとのやりとり299
練習問題301
第16章FileクラスとDirクラス303
16.1Fileクラス304
16.1.1ファイル名を変更する304
16.1.2ファイルをコピーする304
16.1.3ファイルを削除する305
16.2ディレクトリの操作305
16.2.1ディレクトリの内容を読む307
16.2.2Dir.glob310
16.2.3ディレクトリの作成と削除311
16.3ファイルとディレクトリの属性311
16.3.1属性の取得311
16.3.2FileTestモジュール315
16.4ファイル名の操作316
16.5ファイル操作関連のライブラリ318
16.5.1find.rb318
16.5.2tempfile.rb320
16.5.3fileutils.rb321
練習問題324
第17章TimeクラスとDateクラス325
17.1Timeクラス,Dateクラス,DateTimeクラス326
17.2Timeオブジェクトを取得する326
17.3時刻を計算する327
17.4時刻のフォーマット328
17.5ローカルタイム329
17.6文字列の解析330
17.7DateTimeクラスを使う331
17.8DateTimeクラスとTimeクラスの違い332
17.8.1DateTimeクラスにおける1日の表現332
17.8.2時差の扱いの違い333
17.9Dateクラスを使って日付を求める335
17.10日付を計算する336
17.11日付のフォーマット337
17.12文字列の解析337
練習問題338
第4部Rubyを使いこなそう
第18章Ruby落ち穂ひろい341
18.1コマンドラインオプション341
18.1.1デバッグ・動作確認用341
18.1.2情報取得344
18.1.3ワンライナー用345
18.1.4セキュリティチェック347
18.1.5その他348
18.2環境変数349
18.3リテラル351
18.4組み込み変数352
18.5組み込み定数356
18.6多重代入357
18.7BEGIN{}とEND{}360
18.8alias360
18.9undef361
18.10疑似変数361
第19章演算子363
19.1論理演算子の応用363
19.2条件演算子365
19.3自己代入366
19.4範囲演算子368
19.5演算子の優先順位369
19.6演算子を定義する370
19.6.1二項演算子370
19.6.2単項演算子371
19.6.3配列参照演算子372
第20章イテレータ375
20.1イテレータとブロックつき呼び出し375
20.2イテレータの基本376
20.3さまざまなイテレータ379
20.3.1配列の場合379
20.3.2ハッシュの場合379
20.3.3ファイルの例380
20.4Enumerableモジュール382
20.4.1eachメソッド382
20.4.2collectメソッド382
20.4.3sortメソッド382
20.4.4sort_byメソッド383
20.5イテレータを作る385
20.5.1引数のあるイテレータ390
第21章Mix-in395
21.1includeメソッド395
21.2Comparableモジュール396
21.3Enumerableモジュール398
21.4継承との関係403
21.5メソッド検索のルール404
第5部ツールを作ってみよう
第22章ログの解析411
22.1アクセスログの概要411
22.2アクセス数を調べる413
22.3アクセス日を調べる415
22.4アクセス日をグラフで出力する420
22.5特定のファイルへのアクセス数を集計する422
第23章郵便番号の検索425
23.1郵便番号データベース425
23.2とりあえず読んでみる426
23.3gdbmライブラリ427
23.4データの登録428
23.5データの検索430
23.6jzipcode.rb432
23.7使ってみる433
23.8まとめ434
第24章HTMLの解析435
24.1HTMLについて435
24.1.1要素とタグ435
24.1.2コメント437
24.1.3文字参照437
24.2プログラムの作成438
24.2.1コメントの解析439
24.2.2タグの解析(その1)440
24.2.3テキストデータの解析441
24.2.4試してみる441
24.2.5タグの解析(その2)443
24.3リンクの一覧449
付録
A.1Rubyのインストール456
A.2Windowsでのインストール456
A.3Unixでのインストール460
A.4MacOS Xでのインストール462
A.5エディタ462
A.6Rubyリファレンスマニュアル464
A.7メーリングリスト465
A.8Web上での情報467
A.9エラーメッセージ469
索引473