書籍概要

Software Design plus

プロを目指す人のためのRuby入門[改訂2版] 言語仕様からテスト駆動開発・デバッグ技法まで

著者
発売日
更新日

概要

本書は,プログラミング言語Rubyの言語仕様や開発の現場で役立つRubyの知識を説明した本です。豊富なサンプルコードで文法を学び,例題でプログラミングの流れを体験できます。第1版(2017年11月発行)は,初心者の目線にたった丁寧な解説が好評で多くのRuby初学者に愛読され,いまやRuby入門書の定番とも言える存在です。2020年末のRuby 3.0のリリースに伴い,全章にわたって記述内容を見直し,Ruby 3.0までの変更点や新機能に合わせて加筆・修正を行いました。また,第1版にて読者から「難しい,わかりづらい」という声の多かったトピックの説明を改善するなど,より初心者に親切な内容に刷新しています。

こんな方におすすめ

  • Rubyのプログラミングを学びたい人
  • Rubyのテスト駆動開発やデバッグ技法を学びたい人
  • Railsを学ぶにあたりまずはRubyを学びたい人
  • 仕事でRubyを使っている人,仕事でRubyを使いたい人

本書のサンプル

本書の一部ページを,PDFで確認することができます。

目次

第1章 本書を読み進める前に

  • 1.1 イントロダクション
    • 1.1.1 この章で説明すること
  • 1.2 本書の概要
    • 1.2.1 対象となる読者
    • 1.2.2 本書で説明する内容と説明しない内容
    • 1.2.3 Railsアプリの開発にも本書は役に立つか?
    • 1.2.4 本書の特徴と効果的な学習方法
    • 1.2.5 対象となるRubyのバージョン
  • 1.3 Rubyについて
    • 1.3.1 Rubyってどんなプログラミング言語?
    • 1.3.2 Rubyの処理系
    • 1.3.3 Rubyのライセンス
    • 1.3.4 Ruby 3.0について
  • 1.4 Rubyのインストール
    • 1.4.1 macOS/Linuxの場合
    • 1.4.2 Windowsの場合
    • 1.4.3 その他の方法
    • 1.4.4 サンプルコードの動作確認環境について
  • 1.5 エディタ/IDEについて
    • 1.5.1 エディタやIDEで不可欠な機能や設定
  • 1.6 Rubyを動かしてみる
    • 1.6.1 本書のサンプルコードとその表示例について
    • 1.6.2 ファイルに保存したRubyプログラムを実行する
  • 1.7 本書のサンプルコードについて
    • 1.7.1 サンプルコードがうまく動かない場合
  • 1.8 Rubyの公式リファレンスについて
  • 1.9 この章のまとめ

第2章 Rubyの基礎を理解する

  • 2.1 イントロダクション
    • 2.1.1 この章の例題:FizzBuzzプログラム
    • 2.1.2 FizzBuzzプログラムの実行例
    • 2.1.3 この章で学ぶこと
  • 2.2 Rubyに関する基礎知識
    • 2.2.1 すべてがオブジェクト
    • 2.2.2 メソッド呼び出し
    • 2.2.3 文の区切り
    • 2.2.4 コメント
    • 2.2.5 識別子と予約語
    • 2.2.6 空白文字
    • 2.2.7 リテラル
    • 2.2.8 変数(ローカル変数)の宣言と代入
  • 2.3 文字列
    • 2.3.1 シングルクオートとダブルクオート
    • 2.3.2 文字列の比較
  • 2.4 数値
    • 2.4.1 演算子による値の比較
    • 2.4.2 演算子の優先順位
    • 2.4.3 変数に格納された数値の増減
  • 2.5 真偽値と条件分岐
    • 2.5.1 Rubyの真偽値
    • 2.5.2 論理演算子
    • 2.5.3 if文
  • 2.6 メソッドの定義
    • 2.6.1 メソッドの戻り値
    • 2.6.2 メソッド定義における引数の( )
  • 2.7 例題:FizzBuzzプログラムを作成する
    • 2.7.1 作業用のディレクトリとファイルを準備する
    • 2.7.2 一番簡単なプログラムで動作確認する
    • 2.7.3 fizz_buzzメソッドを作成する
  • 2.8 文字列についてもっと詳しく
    • 2.8.1 文字列はStringクラスのオブジェクト
    • 2.8.2 %記法で文字列を作る
    • 2.8.3 ヒアドキュメント(行指向文字列リテラル)
    • 2.8.4 フォーマットを指定して文字列を作成する
    • 2.8.5 その他,文字列作成のいろいろ
    • 2.8.6 文字と文字列の違いはない
  • 2.9 数値についてもっと詳しく
    • 2.9.1 基数指示子を用いた整数リテラル
    • 2.9.2 ビット演算
    • 2.9.3 指数表現
    • 2.9.4 数値クラスのあれこれ
  • 2.10 真偽値と条件分岐についてもっと詳しく
    • 2.10.1 &&や||の戻り値と評価を終了するタイミング
    • 2.10.2 優先順位が低いand,or,not
    • 2.10.3 unless文
    • 2.10.4 case文
    • 2.10.5 条件演算子(三項演算子)
  • 2.11 メソッド定義についてもっと詳しく
    • 2.11.1 デフォルト値付きの引数
    • 2.11.2 ?で終わるメソッド
    • 2.11.3 !で終わるメソッド
    • 2.11.4 エンドレスメソッド定義(1行メソッド定義)
  • 2.12 その他の基礎知識
    • 2.12.1 ガベージコレクション(GC)
    • 2.12.2 エイリアスメソッド
    • 2.12.3 式(Expression)と文(Statement)
    • 2.12.4 擬似変数
    • 2.12.5 参照の概念を理解する
    • 2.12.6 組み込みライブラリ,標準ライブラリ,gem
    • 2.12.7 requireとrequire_relative
    • 2.12.8 putsメソッド,printメソッド,pメソッド,ppメソッド
  • 2.13 この章のまとめ

第3章 テストを自動化する

  • 3.1 イントロダクション
    • 3.1.1 この章で学ぶこと
    • 3.1.2 「プログラマの三大美徳」
  • 3.2 Minitestの基本
    • 3.2.1 テストコードのひな形
    • 3.2.2 本書で使用するMinitestの検証メソッド
    • 3.2.3 テストコードの実行と結果の確認
    • 3.2.4 テストが失敗した場合の実行結果
    • 3.2.5 実行中にエラーが発生した場合の実行結果
  • 3.3 FizzBuzzプログラムのテスト自動化
    • 3.3.1 putsメソッドをテストコードに置き換える
    • 3.3.2 プログラム本体とテストコードを分離する
  • 3.4 この章のまとめ

第4章 配列や繰り返し処理を理解する

  • 4.1 イントロダクション
    • 4.1.1 この章の例題:RGBカラー変換プログラム
    • 4.1.2 RGBカラー変換プログラムの実行例
    • 4.1.3 この章で学ぶこと
  • 4.2 配列
    • 4.2.1 要素の変更,追加,削除
    • 4.2.2 配列を使った多重代入
  • 4.3 ブロック
    • 4.3.1 参考:JavaScriptの繰り返し処理
    • 4.3.2 Rubyの繰り返し処理
    • 4.3.3 配列の要素を削除する条件を自由に指定する
    • 4.3.4 ブロックパラメータとブロック内の変数
    • 4.3.5 do ... end と {}
  • 4.4 ブロックを使う配列のメソッド
    • 4.4.1 map/collect
    • 4.4.2 select/find_all/reject
    • 4.4.3 find/detect
    • 4.4.4 sum
    • 4.4.5 &とシンボルを使ってもっと簡潔に書く
  • 4.5 範囲(Range)
    • 4.5.1 配列や文字列の一部を抜き出す
    • 4.5.2 n以上m以下,n以上m未満の判定をする
    • 4.5.3 case文で使う
    • 4.5.4 値が連続する配列を作成する
    • 4.5.5 繰り返し処理を行う
  • 4.6 例題:RGB変換プログラムを作成する
    • 4.6.1 to_hexメソッドを作成する
    • 4.6.2 to_hexメソッドをリファクタリングする
    • 4.6.3 to_intsメソッドを作成する
    • 4.6.4 to_intsメソッドをリファクタリングする
    • 4.6.5 to_intsメソッドをリファクタリングする(上級編)
  • 4.7 配列についてもっと詳しく
    • 4.7.1 さまざまな要素の取得方法
    • 4.7.2 さまざまな要素の変更方法
    • 4.7.3 配列の連結
    • 4.7.4 配列の和集合,差集合,積集合
    • 4.7.5 多重代入で残りの全要素を配列として受け取る,または無視する
    • 4.7.6 1つの配列を複数の引数やwhen節の条件として展開する
    • 4.7.7 メソッドの可変長引数
    • 4.7.8 *で配列同士を非破壊的に連結する
    • 4.7.9 ==で等しい配列かどうか判断する
    • 4.7.10 %記法で文字列の配列を簡潔に作る
    • 4.7.11 文字列を配列に変換する
    • 4.7.12 配列にデフォルト値を設定する
    • 4.7.13 配列にデフォルト値を設定する場合の注意点
    • 4.7.14 ミュータブル? イミュータブル?
  • 4.8 ブロックについてもっと詳しく
    • 4.8.1 添え字付きの繰り返し処理
    • 4.8.2 with_indexメソッドを使った添え字付きの繰り返し処理
    • 4.8.3 添え字を0以外の数値から開始させる
    • 4.8.4 配列がブロックパラメータに渡される場合
    • 4.8.5 番号指定パラメータ
    • 4.8.6 ブロックローカル変数
    • 4.8.7 繰り返し処理以外でも使用されるブロック
    • 4.8.8 do...endと{}の結合度の違い
    • 4.8.9 ブロックを使うメソッドを定義する
  • 4.9 範囲(Range)についてもっと詳しく
    • 4.9.1 終端や始端を持たない範囲オブジェクト
  • 4.10 さまざまな繰り返し処理
    • 4.10.1 timesメソッド
    • 4.10.2 uptoメソッドとdowntoメソッド
    • 4.10.3 stepメソッド
    • 4.10.4 while文とuntil文
    • 4.10.5 for文
    • 4.10.6 loopメソッド
    • 4.10.7 再帰呼び出し
  • 4.11 繰り返し処理用の制御構造
    • 4.11.1 break
    • 4.11.2 throwとcatchを使った大域脱出
    • 4.11.3 繰り返し処理で使うbreakとreturnの違い
    • 4.11.4 next
    • 4.11.5 redo
  • 4.12 この章のまとめ

第5章 ハッシュやシンボルを理解する

  • 5.1 イントロダクション
    • 5.1.1 この章の例題:長さの単位変換プログラム
    • 5.1.2 長さの単位変換プログラムの実行例
    • 5.1.3 この章で学ぶこと
  • 5.2 ハッシュ
    • 5.2.1 要素の追加,変更,取得
    • 5.2.2 ハッシュを使った繰り返し処理
    • 5.2.3 ハッシュの同値比較,要素数の取得,要素の削除
  • 5.3 シンボル
    • 5.3.1 シンボルと文字列の違い
    • 5.3.2 シンボルの特徴とおもな用途
  • 5.4 続・ハッシュについて
    • 5.4.1 ハッシュのキーにシンボルを使う
    • 5.4.2 キーや値に異なるデータ型を混在させる
    • 5.4.3 メソッドのキーワード引数とハッシュ
  • 5.5 例題:長さの単位変換プログラムを作成する
    • 5.5.1 テストコードを準備する
    • 5.5.2 いろんな単位を変換できるようにする
    • 5.5.3 convert_lengthメソッドを改善する
  • 5.6 ハッシュとキーワード引数についてもっと詳しく
    • 5.6.1 ハッシュで使用頻度の高いメソッド
    • 5.6.2 **でハッシュを展開させる
    • 5.6.3 ハッシュを使った擬似キーワード引数
    • 5.6.4 任意のキーワードを受け付ける**引数
    • 5.6.5 ハッシュを明示的にキーワード引数に変換する**
    • 5.6.6 メソッド呼び出し時の{}の省略
    • 5.6.7 ハッシュリテラルの{}とブロックの{}
    • 5.6.8 ハッシュから配列へ,配列からハッシュへ
    • 5.6.9 ハッシュのデフォルト値を理解する
    • 5.6.10 その他,キーワード引数に関する高度な話題
  • 5.7 シンボルについてもっと詳しく
    • 5.7.1 シンボルを作成するさまざまな方法
    • 5.7.2 %記法でシンボルやシンボルの配列を作成する
    • 5.7.3 シンボルと文字列の関係
  • 5.8 この章のまとめ

第6章 正規表現を理解する

  • 6.1 イントロダクション
    • 6.1.1 この章の例題:ハッシュ記法変換プログラム
    • 6.1.2 ハッシュ記法変換プログラムの実行例
    • 6.1.3 この章で学ぶこと
  • 6.2 正規表現って何?
    • 6.2.1 正規表現の便利さを知る
    • 6.2.2 正規表現をゼロから学習するための参考資料
  • 6.3 Rubyにおける正規表現オブジェクト
    • 6.3.1 Rubularで視覚的にマッチする文字列を確認する
    • 6.3.2 正規表現のキャプチャを利用する
    • 6.3.3 キャプチャに名前を付ける
    • 6.3.4 組み込み変数でマッチの結果を取得する
    • 6.3.5 正規表現と組み合わせると便利なStringクラスのメソッド
  • 6.4 例題:Rubyのハッシュ記法を変換する
    • 6.4.1 テストコードを準備する
    • 6.4.2 ハッシュ記法変換プログラムを実装する
  • 6.5 正規表現オブジェクトについてもっと詳しく
    • 6.5.1 正規表現オブジェクトを作成するさまざまな方法
    • 6.5.2 case文で正規表現を使う
    • 6.5.3 正規表現オブジェクト作成時のオプション
    • 6.5.4 Regexp.last_matchでマッチの結果を取得する
    • 6.5.5 組み込み変数を書き換えないmatch?メソッド
  • 6.6 この章のまとめ

第7章 クラスの作成を理解する

  • 7.1 イントロダクション
    • 7.1.1 この章の例題:改札機プログラム
    • 7.1.2 この章で学ぶこと
  • 7.2 オブジェクト指向プログラミングの基礎知識
    • 7.2.1 クラスを使う場合と使わない場合の比較
    • 7.2.2 オブジェクト指向プログラミング関連の用語
  • 7.3 クラスの定義
    • 7.3.1 オブジェクトの作成とinitializeメソッド
    • 7.3.2 インスタンスメソッドの定義
    • 7.3.3 インスタンス変数とアクセサメソッド
    • 7.3.4 クラスメソッドの定義
    • 7.3.5 定数
  • 7.4 例題:改札機プログラムの作成
    • 7.4.1 テストコードを準備する
    • 7.4.2 必要なメソッドやクラスを仮実装する
    • 7.4.3 運賃が足りているかどうかを判別する
    • 7.4.4 テストコードのリファクタリング
    • 7.4.5 残りのテストケースをテストする
  • 7.5 selfキーワード
    • 7.5.1 selfの付け忘れで不具合が発生するケース
    • 7.5.2 クラスメソッドの内部やクラス構文直下のself
    • 7.5.3 クラスメソッドをインスタンスメソッドで呼び出す
  • 7.6 クラスの継承
    • 7.6.1 標準ライブラリの継承関係
    • 7.6.2 デフォルトで継承されるObjectクラス
    • 7.6.3 オブジェクトのクラスを確認する
    • 7.6.4 ほかのクラスを継承したクラスを作る
    • 7.6.5 superでスーパークラスのメソッドを呼び出す
    • 7.6.6 メソッドのオーバーライド
    • 7.6.7 クラスメソッドの継承
  • 7.7 メソッドの可視性
    • 7.7.1 publicメソッド
    • 7.7.2 privateメソッド
    • 7.7.3 privateメソッドから先に定義する場合
    • 7.7.4 privateメソッドはサブクラスでも呼び出せる
    • 7.7.5 クラスメソッドをprivateにしたい場合
    • 7.7.6 メソッドの可視性を変える方法あれこれ
    • 7.7.7 protectedメソッド
  • 7.8 定数についてもっと詳しく
    • 7.8.1 定数と再代入
    • 7.8.2 定数はミュータブルなオブジェクトに注意する
  • 7.9 さまざまな種類の変数
    • 7.9.1 クラスインスタンス変数
    • 7.9.2 クラス変数
    • 7.9.3 グローバル変数と組み込み変数
  • 7.10 クラス定義やRubyの言語仕様に関する高度な話題
    • 7.10.1 エイリアスメソッドの定義
    • 7.10.2 メソッドの削除
    • 7.10.3 入れ子になったクラスの定義
    • 7.10.4 演算子の挙動を独自に再定義する
    • 7.10.5 等値を判断するメソッドや演算子を理解する
    • 7.10.6 オープンクラスとモンキーパッチ
    • 7.10.7 特異メソッド
    • 7.10.8 クラスメソッドは特異メソッドの一種
    • 7.10.9 ダックタイピング
  • 7.11 この章のまとめ

第8章 モジュールを理解する

  • 8.1 イントロダクション
    • 8.1.1 この章の例題:rainbowメソッド
    • 8.1.2 この章で学ぶこと
  • 8.2 モジュールの概要
    • 8.2.1 モジュールの用途
    • 8.2.2 モジュールの定義
  • 8.3 モジュールを利用したメソッド定義(includeとextend)
    • 8.3.1 モジュールをクラスにincludeする
    • 8.3.2 include先のメソッドを使うモジュール
    • 8.3.3 モジュールをextendする
  • 8.4 例題:rainbowメソッドの作成
    • 8.4.1 実装の方針を検討する
    • 8.4.2 テストコードを準備する
    • 8.4.3 rainbowメソッドを実装する
    • 8.4.4 rainbowメソッドのリファクタリング
    • 8.4.5 あらゆるオブジェクトでrainbowメソッドを使えるようにする
  • 8.5 モジュールを利用したメソッド定義についてもっと詳しく
    • 8.5.1 includeされたモジュールの有無を確認する
    • 8.5.2 Enumerableモジュール
    • 8.5.3 Comparableモジュールと<=>演算子
    • 8.5.4 Kernelモジュール
    • 8.5.5 トップレベルはmainという名前のObject
    • 8.5.6 クラスやモジュール自身もオブジェクト
    • 8.5.7 モジュールとインスタンス変数
    • 8.5.8 クラス以外のオブジェクトにextendする
  • 8.6 モジュールを利用した名前空間の作成
    • 8.6.1 名前空間を分けて名前の衝突を防ぐ
    • 8.6.2 名前空間でグループやカテゴリを分ける
    • 8.6.3 入れ子なしで名前空間付きのクラスを定義する
    • 8.6.4 トップレベルの同名クラスを参照する
    • 8.6.5 入れ子の有無によって参照されるクラスが異なるケース
  • 8.7 関数や定数を提供するモジュールの作成
    • 8.7.1 モジュールに特異メソッドを定義する
    • 8.7.2 module_functionメソッド
    • 8.7.3 モジュールに定数を定義する
    • 8.7.4 モジュール関数や定数を持つモジュールの例
  • 8.8 状態を保持するモジュールの作成
  • 8.9 モジュールに関する高度な話題
    • 8.9.1 メソッド探索のルールを理解する
    • 8.9.2 モジュールにほかのモジュールをincludeする
    • 8.9.3 prependでモジュールをミックスインする
    • 8.9.4 prependで既存メソッドを置き換える
    • 8.9.5 有効範囲を限定できるrefinements
  • 8.10 この章のまとめ

第9章 例外処理を理解する

  • 9.1 イントロダクション
    • 9.1.1 この章の例題:正規表現チェッカープログラム
    • 9.1.2 正規表現チェッカーの実行例
    • 9.1.3 この章で学ぶこと
  • 9.2 例外の捕捉
    • 9.2.1 発生した例外を捕捉しない場合
    • 9.2.2 例外を捕捉して処理を続行する場合
    • 9.2.3 例外処理の流れ
    • 9.2.4 例外オブジェクトから情報を取得する
    • 9.2.5 クラスを指定して捕捉する例外を限定する
    • 9.2.6 例外クラスの継承関係を理解する
    • 9.2.7 継承関係とrescue節の順番に注意する
    • 9.2.8 例外発生時にもう一度処理をやりなおすretry
  • 9.3 意図的に例外を発生させる
  • 9.4 例外処理のベストプラクティス
    • 9.4.1 安易にrescueを使わない
    • 9.4.2 rescueしたら情報を残す
    • 9.4.3 例外処理の対象範囲と対象クラスを極力絞り込む
    • 9.4.4 例外処理よりも条件分岐を使う
    • 9.4.5 予期しない条件は異常終了させる
    • 9.4.6 例外処理も手を抜かずにテストする
  • 9.5 例題:正規表現チェッカープログラムの作成
    • 9.5.1 テスト駆動開発をするかどうか
    • 9.5.2 実装のフローチャートを考える
    • 9.5.3 文字入力を受け付けるgetsメソッド
    • 9.5.4 実装を開始する
    • 9.5.5 例外処理を組み込む
  • 9.6 例外処理についてもっと詳しく
    • 9.6.1 ensure
    • 9.6.2 ensureの代わりにブロックを使う
    • 9.6.3 例外処理のelse
    • 9.6.4 例外処理と戻り値
    • 9.6.5 begin/endを省略するrescue修飾子
    • 9.6.6 $!と$@に格納される例外情報
    • 9.6.7 例外処理のbegin/endを省略できるケース
    • 9.6.8 rescueした例外を再度発生させる
    • 9.6.9 独自の例外クラスを定義する
  • 9.7 この章のまとめ

第10章 yieldとProcを理解する

  • 10.1 イントロダクション
    • 10.1.1 この章の例題:ワードシンセサイザー
    • 10.1.2 この章で学ぶこと
  • 10.2 ブロックを利用するメソッドの定義とyield
    • 10.2.1 yieldを使ってブロックの処理を呼び出す
    • 10.2.2 ブロックを引数として明示的に受け取る
  • 10.3 Procオブジェクト
    • 10.3.1 Procオブジェクトの基礎
    • 10.3.2 Procオブジェクトをブロックの代わりに渡す
    • 10.3.3 Procオブジェクトを普通の引数として渡す
    • 10.3.4 Proc.newとラムダの違い
    • 10.3.5 Proc.newかラムダかを判断するlambda?メソッド
  • 10.4 例題:ワードシンセサイザーの作成
    • 10.4.1 エフェクトの実装方法を検討する
    • 10.4.2 テストコードも2つに分ける
    • 10.4.3 テストコードを準備する
    • 10.4.4 リバースエフェクトを実装する
    • 10.4.5 エコーエフェクトを実装する
    • 10.4.6 ラウドエフェクトを実装する
    • 10.4.7 WordSynthクラスの実装とテスト
  • 10.5 Procオブジェクトについてもっと詳しく
    • 10.5.1 Procオブジェクトを実行するさまざまな方法
    • 10.5.2 &とto_procメソッド
    • 10.5.3 Procオブジェクトとクロージャ
  • 10.6 この章のまとめ

第11章 パターンマッチを理解する

  • 11.1 イントロダクション
    • 11.1.1 この章の例題:ログフォーマッタープログラム
    • 11.1.2 この章で学ぶこと
  • 11.2 パターンマッチの基本
    • 11.2.1 ハッシュをパターンマッチさせる
  • 11.3 パターンマッチの利用パターン
    • 11.3.1 valueパターン
    • 11.3.2 variableパターン
    • 11.3.3 arrayパターン
    • 11.3.4 hashパターン
    • 11.3.5 asパターン
    • 11.3.6 alternativeパターン
    • 11.3.7 findパターン
  • 11.4 例題:ログフォーマッターの作成
    • 11.4.1 入力データの取得
    • 11.4.2 “OK”のログに対応する
    • 11.4.3 404エラーのログに対応する
    • 11.4.4 “WARN”のログに対応する
    • 11.4.5 500エラーのログに対応する
    • 11.4.6 参考:パターンマッチを使わない場合
  • 11.5 パターンマッチについてもっと詳しく
    • 11.5.1 ガード式
    • 11.5.2 1行パターンマッチ
    • 11.5.3 変数のスコープに関する注意点
    • 11.5.4 自作クラスをパターンマッチに対応させる
  • 11.6 この章のまとめ

第12章 Rubyのデバッグ技法を身につける

  • 12.1 イントロダクション
    • 12.1.1 この章で学ぶこと
  • 12.2 バックトレースの読み方
    • 12.2.1 実行環境によって変化するバックトレースの表示形式
  • 12.3 よく発生する例外クラスとその原因
    • 12.3.1 NameError
    • 12.3.2 NoMethodError
    • 12.3.3 TypeError
    • 12.3.4 ArgumentError
    • 12.3.5 ZeroDivisionError
    • 12.3.6 SystemStackError
    • 12.3.7 LoadError
    • 12.3.8 SyntaxError(syntax error)
    • 12.3.9 組み込みライブラリに定義されている上記以外の例外クラス
    • 12.3.10 Rubyの標準ライブラリに含まれない例外クラス
  • 12.4 プログラムの途中経過を確認する
    • 12.4.1 printデバッグ
    • 12.4.2 tapメソッドでメソッドチェーンをデバッグする
    • 12.4.3 ログにデバッグ情報を出力する
    • 12.4.4 デバッガ(debug.gem)を使う
  • 12.5 汎用的なトラブルシューティング方法
    • 12.5.1 irb上で簡単なコードを動かしてみる
    • 12.5.2 ログを調べる
    • 12.5.3 公式ドキュメントや公式リファレンスを読む
    • 12.5.4 issueを検索する
    • 12.5.5 ライブラリのコードを読む
    • 12.5.6 テストコードを書く
    • 12.5.7 “警戒しながら”ネットの情報を参考にする
    • 12.5.8 パソコンの前から離れる
    • 12.5.9 誰かに聞く
  • 12.6 この章のまとめ

第13章 Rubyに関するその他のトピック

  • 13.1 イントロダクション
    • 13.1.1 この章で学ぶこと
  • 13.2 日付や時刻の扱い
  • 13.3 ファイルやディレクトリの扱い
  • 13.4 特定の形式のファイルを読み書きする
    • 13.4.1 CSV
    • 13.4.2 JSON
    • 13.4.3 YAML
  • 13.5 環境変数や起動時引数の取得
    • 13.5.1 組み込み定数
  • 13.6 非推奨機能を使ったときに警告を出力する
  • 13.7 eval,バッククオートリテラル,sendメソッド
  • 13.8 Rake
    • 13.8.1 Rakeの基本的な使い方
    • 13.8.2 Rakeを使ったテストの一括実行
  • 13.9 gemとBundler
    • 13.9.1 gemのインストールと利用方法
    • 13.9.2 Bundlerでプロジェクト内で使用するgemを一括管理する
    • 13.9.3 Gemfile.lockの役割
    • 13.9.4 Gemfileでgemのバージョンを指定する記号の意味
  • 13.10 Rubyにおける型情報の定義と型検査(RBS,TypeProf,Steep)
    • 13.10.1 typeprofコマンドで型情報を自動生成する
    • 13.10.2 Steepで型検査を行う
    • 13.10.3 RBSとRubyの未来
  • 13.11 「Railsの中のRuby」と「素のRuby」の違い
    • 13.11.1 requireやrequire_relativeを書く機会がほとんどない
    • 13.11.2 名前空間として使われるモジュールが自動生成される
    • 13.11.3 標準ライブラリのクラスやMinitestが独自に拡張されている
    • 13.11.4 Rubyの構文や言語機能がまったく別の用途で使われているケースがある
  • 13.12 この章のまとめ

サポート

現在サポート情報はありません。

商品一覧