書籍詳細(Ruby on Rails アプリケーションプログラミング)

Ruby on Rails アプリケーションプログラミング 書影

ISBN: 978-4-297-14598-9

Ruby on Rails アプリケーションプログラミング

山田祥寛 著

著者山田祥寛
出版社技術評論社
価格3,600円(税別)
判形B5変版・1色
ページ数584ページ
発売日2024年12月7日
シリーズ アプリケーションプログラミング
対象レベル中級

定番WebアプリフレームワークRuby on Railsの解説書。

Scaffolding機能から、ビュー/モデル/コントローラー開発、ルーティング、テスト、クライアントサイド開発まで、Railsの主要機能を徹底解説しています。
Rails 7以降の最新技術を取り入れたWebアプリ開発にも柔軟に対応できます。
書籍掲載のサンプルは、サポートページからダウンロード可能です。
Ruby on Rails アプリケーションプログラミング ロゴ

更新履歴

  • 正誤訂正:2025年6月16日 更新

目次

  • 導入編
  • 第1章 イントロダクション
  • 1.1 Rails というフレームワーク
  • 1.1.1 アプリケーションフレームワークとは?
  • 1.1.2 フレームワーク導入の利点
  • 1.1.3 Ruby で利用可能なフレームワーク
  • 1.2 Rails を利用するための環境設定
  • 1.2.1 Rails プログラミングに必要なソフトウェア
  • 1.2.2 Windows における環境設定の手順
  • 1.2.3 macOS における環境設定の手順
  • 1.2.4 Visual Studio Codeのインストール(Windows/macOS 共通)
  • 第2章 Ruby on Rails の基本
  • 2.1 アプリの作成
  • 2.2 コントローラーの基本
  • 2.2.1 コントローラークラスの作成
  • 2.2.2 コントローラークラスの基本構文
  • 2.2.3 ルーティングの基礎を理解する
  • 2.2.4 サンプルの実行
  • 2.2.5 補足:コントローラーの命名規則
  • 2.3 ビューの基本
  • 2.3.1 テンプレート変数の設定
  • 2.3.2 テンプレートファイルの作成
  • 2.3.3 サンプルの実行
  • 2.3.4 共通レイアウトの適用
  • 2.3.5 補足:コメント構文
  • 2.4 モデルの基本
  • 2.4.1 Active Record とは?
  • 2.4.2 データベース接続の設定
  • 2.4.3 モデルクラスの作成
  • 2.4.4 マイグレーションファイルによるテーブルの作成
  • 2.4.5 フィクスチャによるテストデータの準備
  • 2.4.6 補足:データベースの確認
  • 2.4.7 データ取得の基本
  • 2.4.8 SQL 命令の確認
  • 2.4.9 補足:デバッグの基本
  • 2.5 Rails の設定情報
  • 2.5.1 主な設定ファイルの配置
  • 2.5.2 利用可能な主な設定パラメーター
  • 2.5.3 アプリ固有の設定を定義する
  • 第3章 Scaffolding 機能による Rails 開発の基礎
  • 3.1 Scaffolding 機能によるアプリケーション開発
  • 3.1.1 Scaffolding 開発の手順
  • 3.1.2 自動生成されたルートを確認する ― resources メソッド
  • 3.2 一覧画面の作成(index アクション)
  • 3.2.1 index アクションメソッド
  • 3.2.2 index.html.erb テンプレート
  • 3.3 詳細画面の作成(show アクション)
  • 3.3.1 show アクションメソッド
  • 3.3.2 show.html.erb テンプレート
  • 3.4 新規登録画面の作成(new / create アクション)
  • 3.4.1 new.html.erb テンプレートファイル
  • 3.4.2 new / create アクションメソッド
  • 3.5 編集画面の作成(edit /update アクション)
  • 3.5.1 edit / update アクションメソッド
  • 3.5.2 edit.html.erb テンプレートファイル
  • 3.6 削除機能の確認(destroy アクション)
  • 3.7 準備:基本編で使用するプロジェクト
  • 3.7.1 サンプルプロジェクトの準備方法
  • 3.7.2 データベースの構造
  • 基本編
  • 第4章 ビュー開発
  • 4.1 フォーム関連のビューヘルパー
  • 4.1.1 フォーム生成の基礎
  • 4.1.2 <input>、<textarea> 要素を生成する ― xxxxx_field、text_area、radio_button、check_box メソッド
  • 4.1.3 選択ボックス/リストボックスを生成する ― xxxxx_select メソッド
  • 4.1.4 曜日の選択ボックスを生成する ― weekday_selectメソッド[7.0]
  • 4.1.5 データベースの情報をもとにラジオボタン/チェックボックスを生成する ― collection_radio_buttons/collection_check_boxesメソッド
  • 4.1.6 form_with ブロックの中で異なるモデルを編集する ― fields_for メソッド
  • 4.2 文字列/数値関連のビューヘルパー
  • 4.2.1 HTML エスケープを無効化する ― raw メソッド
  • 4.2.2 改行文字を<p>/<br>要素で置き換える ― simple_format メソッド
  • 4.2.3 文字列を指定桁で切り捨てる ― truncate メソッド
  • 4.2.4 文字列から特定の部分のみを抜粋する ― excerpt メソッド
  • 4.2.5 テーブルやリストの背景色をn行おきに変更する ― cycleメソッド
  • 4.2.6 特定のスタイルクラスを付与する ― class_namesメソッド[6.1]
  • 4.2.7 特定のキーワードをハイライト表示する ― highlight メソッド
  • 4.2.8 文字列から要素を除去する ― sanitize メソッド
  • 4.2.9 数値をさまざまな形式で加工する ― number_xxxxx メソッド
  • 4.3 リンク関連のビューヘルパー
  • 4.3.1 ハイパーリンクを生成する ― link_to メソッド
  • 4.3.2 ルート定義から動的に URL を生成する ― url_for メソッド
  • 4.3.3 条件に応じてリンクを生成する ― link_to_if / link_to_unless メソッド
  • 4.3.4 現在のページの場合はリンクを無効にする ― link_to_unless_current メソッド
  • 4.3.5 メールアドレスへのリンクを生成する ― mail_to メソッド
  • 4.4 その他のビューヘルパー
  • 4.4.1 構造化データをダンプ出力する ― debug メソッド
  • 4.4.2 スクリプトブロックの中に出力コードを埋め込む ― concat メソッド
  • 4.4.3 出力結果を変数に格納する ― capture メソッド
  • 4.4.4 サイトの Favicon を定義する ― favicon_link_tag メソッド
  • 4.5 ビューヘルパーの自作
  • 4.5.1 シンプルなビューヘルパー
  • 4.5.2 HTML 文字列を返すビューヘルパー
  • 4.5.3 本体を持つビューヘルパー
  • 4.6 アプリ共通のデザインを定義する ― レイアウト
  • 4.6.1 レイアウトを適用するさまざまな方法
  • 4.6.2 ページ単位でタイトルを変更する
  • 4.6.3 レイアウトに複数のコンテンツ領域を設置する
  • 4.6.4 レイアウトを入れ子に配置する
  • 4.7 テンプレートの一部をページ間で共有する ― 部分テンプレート
  • 4.7.1 部分テンプレートの配置
  • 4.7.2 部分テンプレートが受け取る引数を宣言する[6.1]
  • 4.7.3 部分テンプレートにレイアウトを適用する ― パーシャルレイアウト
  • 4.7.4 コレクションに繰り返し部分テンプレートを適用する ― collection オプション
  • 第5章 モデル開発
  • 5.1 データ取得の基本 ― find メソッド
  • 5.1.1 主キー列による検索
  • 5.1.2 任意のキー列による検索 ― find_by メソッド
  • 5.2 複雑な条件で検索を実行する ― クエリメソッド
  • 5.2.1 クエリメソッドの基礎
  • 5.2.2 基本的な条件式を設定する ― where メソッド
  • 5.2.3 プレイスホルダーによる条件式の生成 ― where メソッド(2)
  • 5.2.4 否定の条件式を表す ― not メソッド
  • 5.2.5 データを並べ替える ― order メソッド
  • 5.2.6 取得列を明示的に指定する ― select メソッド
  • 5.2.7 重複のないレコードを取得する ― distinct メソッド
  • 5.2.8 特定範囲のレコードだけを取得する ― limit /offset メソッド
  • 5.2.9 データを集計する ― group メソッド
  • 5.2.10 集計結果をもとにデータを絞り込む ― having メソッド
  • 5.2.11 条件句を破壊的に代入する ― where! メソッド
  • 5.2.12 クエリメソッドによる条件式を除去する ― unscope メソッド
  • 5.2.13 空の結果セットを取得する ― none メソッド
  • 5.3 データ取得のためのその他のメソッド
  • 5.3.1 指定列の配列を取得する ― pluck メソッド
  • 5.3.2 データの存在を確認する ― exists? メソッド
  • 5.3.3 よく利用する条件句をあらかじめ準備する ― 名前付きスコープ
  • 5.3.4 既定のスコープを定義する ― default_scope メソッド
  • 5.3.5 検索結果の行数を取得する ― count メソッド
  • 5.3.6 特定条件に合致するレコードの平均や最大/最小を求める
  • 5.3.7 生の SQL 命令を直接指定する ― find_by_sql メソッド
  • 5.3.8 SQL 命令を非同期に実行する ― load_async メソッド[7.0]
  • 5.3.9 補足:スロークエリを監視する
  • 5.4 レコードの登録/更新/削除
  • 5.4.1 単一のレコードを登録/更新する ― create/updateメソッド
  • 5.4.2 複数のレコードをまとめて挿入する ― insert_allメソッド[6.0]
  • 5.4.3 複数のレコードをまとめて更新する ― update_all メソッド
  • 5.4.4 入力値を正規化する ― normalizes メソッド[7.1]
  • 5.4.5 レコードを削除する ― destroy / delete メソッド
  • 5.4.6 複数のレコードをまとめて削除する ― destroy_all メソッド
  • 5.4.7 トランザクション処理を実装する ― transaction メソッド
  • 5.4.8 オプティミスティック同時実行制御
  • 5.4.9 列挙型のフィールドを定義する ― Active Record enums
  • 5.4.10 暗号化した値を保存する[7.0]
  • 5.4.11 補足:その他の更新系メソッド
  • 5.5 検証機能の実装
  • 5.5.1 Active Model で利用できる検証機能
  • 5.5.2 検証機能の基本
  • 5.5.3 その他の検証クラス
  • 5.5.4 検証クラス共通のパラメーター
  • 5.5.5 自作検証クラスの定義
  • 5.5.6 データベースに関連付かないモデルを定義する ― ActiveModel::Model モジュール
  • 5.6 アソシエーションによる複数テーブルの処理
  • 5.6.1 リレーションシップと命名規則
  • 5.6.2 参照元テーブルから参照先テーブルの情報にアクセスする ― belongs_to アソシエーション
  • 5.6.3 1:n の関係を表現する ― has_many アソシエーション
  • 5.6.4 1:1 の関係を表現する ― has_one アソシエーション
  • 5.6.5 m:n の関係を表現する(1) ― has_and_belongs_to_many アソシエーション
  • 5.6.6 m:n の関係を表現する(2) ― has_many(through)アソシエーション
  • 5.6.7 アソシエーションによって追加されるメソッド
  • 5.6.8 アソシエーションで利用できるオプション
  • 5.6.9 複数のモデルをまとめて管理する ― 単一テーブル継承
  • 5.6.10 継承関係にないモデル同士をまとめて管理する ― Delegated Types[6.1]
  • 5.6.11 アソシエーションで関連先の存在を確認する ― missingメソッド[6.1]
  • 5.6.12 関連するモデルを取得する ― extract_associated メソッド[6.0]
  • 5.6.13 関連するモデルと結合する ― joins メソッド
  • 5.6.14 関連するモデルと結合する(左外部結合) ― left_outer_ joins メソッド
  • 5.6.15 関連するモデルをまとめて取得する ― includes メソッド
  • 5.7 コールバック
  • 5.7.1 利用可能なコールバックと実行タイミング
  • 5.7.2 コールバック実装の基本
  • 5.7.3 コールバックのさまざまな定義方法
  • 5.8 マイグレーション
  • 5.8.1 マイグレーションのしくみ
  • 5.8.2 マイグレーションファイルの構造
  • 5.8.3 マイグレーションファイルの作成
  • 5.8.4 マイグレーションファイルで利用できる主なメソッド
  • 5.8.5 マイグレーションファイルの実行
  • 5.8.6 リバーシブルなマイグレーションファイル
  • 5.8.7 スキーマファイルによるデータベースの再構築
  • 5.8.8 データの初期化
  • 5.8.9 複数データベースへの対応[6.0]
  • 第6章 コントローラー開発
  • 6.1 リクエスト情報
  • 6.1.1 リクエスト情報を取得する ― params メソッド
  • 6.1.2 マスアサインメント脆弱性を回避する ― StrongParameters
  • 6.1.3 リクエストヘッダーを取得する ― headers メソッド
  • 6.1.4 リクエストヘッダーやサーバー環境変数を取得するための専用メソッド
  • 6.2 レスポンスの操作
  • 6.2.1 テンプレートファイルを呼び出す ― render メソッド
  • 6.2.2 空のコンテンツを出力する ― head メソッド
  • 6.2.3 処理をリダイレクトする ― redirect_to メソッド
  • 6.2.4 ファイルの内容を出力する ― send_file メソッド
  • 6.2.5 任意のデータを送出する ― send_data メソッド
  • 6.2.6 レスポンスヘッダーを取得/設定する
  • 6.2.7 補足:ログを出力する ― logger オブジェクト
  • 6.3 HTML 以外のレスポンス処理
  • 6.3.1 モデルの内容を JSON / XML 形式で出力する
  • 6.3.2 テンプレート経由で JSON / XML データを生成する ― JBuilder / Builder
  • 6.4 状態管理
  • 6.4.1 クッキーを取得/設定する ― cookies メソッド
  • 6.4.2 永続化クッキー/暗号化クッキー
  • 6.4.3 セッションを利用する ― session メソッド
  • 6.4.4 フラッシュを利用する ― flash メソッド
  • 6.5 フィルター
  • 6.5.1 アクションの事前/事後に処理を実行する ― before / after フィルター
  • 6.5.2 アクションの前後で処理を実行する ― around フィルター
  • 6.5.3 フィルターの適用範囲をカスタマイズする
  • 6.5.4 例:フィルターによるフォーム認証の実装
  • 6.6 アプリ共通の挙動を定義する ― Application コントローラー
  • 6.6.1 共通フィルターの定義 ― ログイン機能の実装
  • 6.6.2 共通的な例外処理をまとめる ― rescue_from メソッド
  • 6.6.3 クロスサイトリクエストフォージェリ対策を行う ― protect_from_forgery メソッド
  • 6.6.4 デバイス単位でビューを振り分ける ― Action Pack Variants
  • 6.6.5 独自のフラッシュメッセージを追加する ― add_flash_types メソッド
  • 6.6.6 補足:共通ロジックをモジュールにまとめる ― concerns フォルダー
  • 応用編
  • 第7章 ルーティング
  • 7.1 RESTfulインターフェイスとは?
  • 7.1.1 RESTful インターフェイスを定義する ― resources メソッド
  • 7.1.2 単一のリソースを定義する ― resource メソッド
  • 7.1.3 補足:ルート定義を確認する
  • 7.2 RESTful インターフェイスのカスタマイズ
  • 7.2.1 ルートパラメーターの制約条件 ― constraints オプション
  • 7.2.2 より複雑な制約条件の設定 ― 制約クラスの定義
  • 7.2.3 format パラメーターを除去する ― format オプション
  • 7.2.4 コントローラークラス/ Url ヘルパーの名前を修正する ― controllers / as オプション
  • 7.2.5 モジュール配下のコントローラーをマッピングする ― namespace / scope ブロック
  • 7.2.6 RESTful インターフェイスに自前のアクションを追加する ― collection / member ブロック
  • 7.2.7 RESTful インターフェイスのアクションを無効化する ― only / except オプション
  • 7.2.8 階層構造を持ったリソースを表現する ― resources メソッドのネスト
  • 7.2.9 リソースの「浅い」ネストを表現する ― shallow オプション
  • 7.2.10 ルート定義を再利用可能にする ― concern メソッド& concerns オプション
  • 7.3 非RESTfulなルートの定義
  • 7.3.1 非 RESTful ルートの基本 ― match メソッド
  • 7.3.2 さまざまな非 RESTful ルートの表現
  • 7.3.3 トップページへのマッピングを定義する ― root メソッド
  • 7.3.4 カスタムの Url ヘルパーを生成する[5.1]
  • 7.3.5 ルート定義ファイルを分離する[6.1]
  • 第8章 テスト
  • 8.1 テストの基本
  • 8.1.1 Railsアプリのテスト
  • 8.1.2 テストの準備
  • 8.2 Unit テスト
  • 8.2.1 Unit テストの基本
  • 8.2.2 テストの実行
  • 8.2.3 Unit テストの具体例
  • 8.2.4 テストの準備と後始末 ― setup / teardown メソッド
  • 8.2.5 補足:テストを並列に実行する ― Parallel テスト[6.0]
  • 8.3 Functionalテスト
  • 8.3.1 Functional テストの基本
  • 8.3.2 Functional テストで利用できる Assertion メソッド
  • 8.4 Integrationテスト
  • 8.5 Systemテスト
  • 8.5.1 System テストの準備
  • 8.5.2 System テストの作成
  • 8.5.3 System テストの実行
  • 第9章 フロントエンド開発
  • 9.1 クライアントサイドスクリプトの基本構成
  • 9.1.1 フロントエンド開発のキーワード
  • 9.1.2 フロントエンド開発に関わるプロジェクト作成時のオプション
  • 9.2 アセットパイプライン ― Propshaft
  • 9.2.1 設定ファイル
  • 9.2.2 アセットのインクルード
  • 9.2.3 アセットの事前処理
  • 9.3 Import Maps
  • 9.3.1 モジュールの実体を登録する
  • 9.3.2 JavaScript のコードを実装する
  • 9.4 バンドラーの活用
  • 9.4.1 バンドラー利用の準備
  • 9.4.2 バンドラーによる実装
  • 9.5 CSS プロセッサー
  • 9.5.1 CSS プロジェクトの実行
  • 9.5.2 スタイルのカスタマイズ
  • 第10章 コンポーネント
  • 10.1 電子メールを送信する ― Action Mailer
  • 10.1.1 Action Mailer を利用する準備
  • 10.1.2 メール送信の基本
  • 10.1.3 複数フォーマットでのメール配信
  • 10.1.4 メールをプレビューする
  • 10.1.5 メール送信前に任意の処理を実行する ― インターセプター
  • 10.1.6 メーラーの Unit テスト
  • 10.2 時間のかかる処理を実行する ― Active Job
  • 10.2.1 Active Job を利用する準備
  • 10.2.2 ジョブ実行の基本
  • 10.2.3 ジョブ実行のカスタマイズ
  • 10.2.4 ジョブの登録/実行の前後で処理を実行する ― コールバック
  • 10.2.5 ジョブの Unit テスト
  • 10.3 ファイルをアップロードする ― Active Storage[5.2]
  • 10.3.1 Active Storage を利用する準備
  • 10.3.2 ストレージ利用の基本
  • 10.3.3 さまざまなファイル操作
  • 10.3.4 クラウドサービスへの移行
  • 10.4 リッチなテキストエディターを実装する ― Action Text[6.0]
  • 10.4.1 Action Text 利用の準備
  • 10.4.2 Action Text 利用の基本
  • 10.5 受信メールの処理を自動化する ― Action Mailbox[6.0]
  • 10.5.1 Action Mailbox の構成
  • 10.5.2 Action Mailbox を利用する準備
  • 10.5.3 メールボックス実行の基本
  • 10.5.4 補足:本番環境への移行
  • 10.6 WebSocket 通信を実装する ― Action Cable
  • 10.6.1 WebSocket の役割
  • 10.6.2 Action Cable の構成
  • 10.6.3 Action Cable 利用の基本
  • 10.6.4 複数のストリームでトピックを分割する
  • 10.6.5 Action Cable の設定
  • 第11章 Rails の高度な機能
  • 11.1 キャッシュ機能の実装
  • 11.1.1 キャッシュを利用する場合の準備
  • 11.1.2 フラグメントキャッシュの基本
  • 11.1.3 フラグメントキャッシュを複数ページで共有する
  • 11.1.4 モデルをもとにキャッシュキーを決める
  • 11.1.5 指定の条件に応じてキャッシュを有効にする
  • 11.1.6 キャッシュの格納先を変更する
  • 11.2 アプリの国際化対応 ― I18n API
  • 11.2.1 国際化対応アプリの全体像
  • 11.2.2 国際化対応の基本的な手順
  • 11.2.3 ロケールを動的に設定する方法 ― ApplicationController
  • 11.2.4 辞書ファイルのさまざまな配置と記法
  • 11.2.5 Rails 標準の翻訳情報を追加する
  • 11.2.6 ビューヘルパー t の各種オプション
  • 11.3 Hotwire[7.0]
  • 11.3.1 Hotwire の基本
  • 11.3.2 ページの部分更新を有効化する
  • 11.3.3 コンテンツの断片を挿入/置換/削除する
  • 11.4 本番環境への移行
  • 11.4.1 GitHub リポジトリの準備
  • 11.4.2 ローカル環境での準備
  • 11.4.3 Render.com 側の準備
  • コラム
  • Rails 7.2 の新機能
  • 利用しているライブラリのバージョンを確認する
  • Rails で利用できる Rake コマンド
  • オリジナルの Rake タスクを定義する
  • きれいなコードを書いていますか? ― コーディング規約
  • Rails を支える標準基盤 ― Rack
  • Rails API モード
  • コードの改行位置には要注意
  • Rails アプリのバージョンアップ
  • Rails アプリの配布
  • 日付/時刻に関する便利なメソッド
  • コマンドラインから Rails のコードを実行する
  • ドキュメンテーションコメントで仕様書を作成する ― RDoc
  • Active ~ vs. Action ~
  • コードのやり残しをメモする ― TODO、FIXME、OPTIMIZE アノテーション

正誤表

該当頁 該当箇所 修正刷
訂正箇所 訂正事項 更新日
p.126 本文 下から2行目 -
form_forブロックの配下で form_withブロックの配下で 2025/06/16
p.127 本文下から3行目 -
確かにform_for直下の 確かにform_with直下の 2025/06/16

FAQ

現在、FAQはありません。

お問い合わせ

書籍に関するご質問や誤りのご報告、ご意見・ご感想などをお寄せください。

Powered by メールフォーム 『オレンジフォーム』