書店員向け情報 HELP
研鑽Rubyプログラミング 実践的なコードのための原則とトレードオフ
- 初版年月日
- 2023年4月
- 書店発売日
- 2023年4月14日
- 登録日
- 2025年1月17日
- 最終更新日
- 2025年1月30日
紹介
本書は、通常のプログラミング言語解説書の先、言語が備える基本的な機能(クラス、メソッド、変数など)の性能を実践で極限まで引き出すための思考、ライブラリやDSLを自分で設計するコツ、メタプログラミングやデザインパターンとの付き合い方、データベースやフレームワークに対する心構え、そしてセキュリティへの取り組み方などを扱います。
業務で毎日のようにRubyのコードを書いているというプログラマーはもちろん、ちょっとしたコードならRubyで書いたことがあるという他言語のプログラマーにとっても、プログラミングにおけるさまざまな原則とトレードオフについて繰り返し考え直すきっかけになる貴重な中級者向け解説書です。
目次
本書に寄せて ― まつもとゆきひろ
日本の読者の皆さんへ ― Jeremy Evans
まえがき
第I部 Rubyプログラミングの基礎的な原則
第1章 組み込みクラスを最大限に活用する
1.1 いつ組み込みクラスを使うべきか
1.2 true、false、nilを活用する
1.3 用途に応じて数値型を使い分ける
1.4 シンボルと文字列の違いを理解する
1.5 配列、ハッシュ、セット(集合)を使い分ける
1.6 Structを活用する(Structはもっと評価されるべき)
1.7 まとめ
1.8 復習問題
1.9 もっと詳しく学ぶには
第2章 役に立つ独自クラスを設計する
2.1 いつ独自クラスを定義すべきか
2.2 SOLID 原則のトレードオフ
2.3 大きなクラスか、多くのクラスか
2.4 独自データ構造の使いどころ
2.5 まとめ
2.6 復習問題
第3章 変数を適切に使う
3.1 ローカル変数:Rubyで大活躍の変数
3.2 インスタンス変数を活用する
3.3 定数も単なる変数である
3.4 クラス変数を置き換える
3.5 基本的に、グローバル変数は避ける
3.6 まとめ
3.7 復習問題
3.8 もっと詳しく学ぶには
第4章 メソッドと引数
4.1 クラスメソッドはない。あるのはインスタンスメソッドだけ
4.2 メソッドの命名
4.3 メソッド引数を使いこなす
4.4 メソッドの可視性は重要である
4.5 委譲の扱い方
4.6 まとめ
4.7 復習問題
第5章 エラーに対処する
5.1 戻り値によるエラー処理
5.2 例外によるエラー処理
5.3 一時的なエラーを再試行する
5.4 例外クラス階層の設計
5.5 まとめ
5.6 復習問題
第6章 コードを読みやすくフォーマットする
6.1 コードフォーマットにまつわる見解の違い
6.2 構文の一貫性とメンテナンス容易性
6.3 恣意的な制限の末路
6.4 Ruby自体で基本的なコードフォーマットを検査する
6.5 コードのフォーマットで本当に大切なこと
6.6 まとめ
6.7 復習問題
第II部 Rubyのライブラリプログラミングの原則
第7章 自分のライブラリを設計する
7.1 ユーザーエクスペリエンスを重視する
7.2 ライブラリの適切な規模を見極める
7.3 メソッド設計の複雑性のトレードオフ
7.4 まとめ
7.5 復習問題
第8章 ライブラリを拡張可能にする
8.1 Rubyが提供する拡張性関連の機能
8.2 プラグインシステムを設計する
8.3 「グローバルでは不変、ローカルでは可変」
8.4 まとめ
8.5 復習問題
第9章 時宜にかなったメタプログラミング
9.1 抽象化の利点と欠点
9.2 冗長なコードを削減する
9.3 2つのメタプログラミング手法
9.4 method_missingのわきまえ
9.5 まとめ
9.6 復習問題
第10章 役に立つドメイン特化言語を設計する
10.1 独自のDSLを設計する
10.2 独自のDSLを実装する
10.3 DSLの使いどころ
10.4 まとめ
10.5 復習問題
第11章 きちんとコードが動くことをテストする
11.1 なぜそんなにもRubyではテストが重要なのか
11.2 さまざまなテスト手法
11.3 テストをどこまで複雑にするか
11.4 さまざまなレベルでのテスト
11.5 カバレッジ100%に意味はない
11.6 まとめ
11.7 復習問題
第12章 変更に対処する
12.1 リファクタリングする理由
12.2 リファクタリングの進め方
12.3 よく使われるRubyのリファクタリング技法
12.4 機能追加のためのリファクタリング
12.5 機能を適切に削除する
12.6 まとめ
12.7 復習問題
第13章 代表的なデザインパターンを使う
13.1 Rubyに組み込まれているデザインパターン
13.2 「1つだけあればよい」に対処する
13.3 「何もない」を扱う
13.4 Visitor パターン
13.5 Adapter パターンとStrategy パターン
13.6 まとめ
13.7 復習問題
第14章 ライブラリを最適化する
14.1 最適化の必要がなさそうなコードを把握する
14.2 プロファイリングが先、最適化は後
14.3 存在しないコードより速いコードは存在しない
14.4 何もかもが遅い場合の対処法
14.5 まとめ
14.6 復習問題
第III部 Rubyのウェブプログラミングの原則
第15章 データベースが鍵を握る
15.1 なぜそんなにもデータベース設計が重要なのか
15.2 採用するデータベースを決める
15.3 最も重要なデータベース設計の原則
15.4 データベースは単なるデータ置き場ではない
15.5 モデル層を選ぶ
15.6 データベースとモデルのエラー処理
15.7 まとめ
15.8 もっと詳しく学ぶには
15.9 復習問題
第16章 ウェブアプリケーション設計の原則
16.1 クライアントサイド中心の設計とサーバーサイド中心の設計
16.2 ウェブフレームワークの選定
16.3 URLパスの設計
16.4 モノリス、マイクロサービス、アイランドチェーン
16.5 まとめ
16.6 復習問題
第17章 堅牢なウェブアプリケーションのセキュリティ
17.1 Ruby のウェブアプリケーションにおけるセキュリティ上の問題は、ほとんどが高レイヤのもの
17.2 入力を信用してはならない
17.3 可能な限りの高レイヤでアクセスを制御する
17.4 インジェクション対策
17.5 高いセキュリティが求められる環境に向けた取り組み
17.6 まとめ
17.7 復習問題
付録A 復習問題の回答例
訳者あとがき
索引
上記内容は本書刊行時のものです。