Home > Ruby on Rails > Rails4.0の入門書として新しくなったポイント – Ruby on Rails 4 アプリケーションプログラミング

Rails4.0の入門書として新しくなったポイント – Ruby on Rails 4 アプリケーションプログラミング



Ruby_on_Rails4_Application_Programing

日本語で読める Rails 4.0 の 入門書( Ruby on Rails 4 アプリケーションプログラミング ) が出ました。
雑誌以外の書籍としては一番乗りですね。

ぱらぱらとページをめくり、前書( Rails3版 )から新しくなったポイントを探してみると、Rails4.0対応については
ビュー、モデル、コントローラー、それぞれの新しい追加メソッド
Scaffolding で 生成される JSON形式 の テンプレート解説
コントローラー側 の 生成コード の 変更点
ルート定義の再利用メソッドなど、多くの解説が加わりました。
※ 主なRails 4.0 対応で追加された解説内容は下にまとめてあります

さらに Rails4.0 以外の解説もいろいろと加筆されています。

アプリケーション固有の設定情報をYAMLファイルで管理する場合、よくsettingslogic あたりが使われると思いますが
同等の機能を config/initializers での設定で手軽に実現する方法が解説されていたり
クライアントサイド では CoffeeScript と Sass( SCSS ) の 文法解説が35ページ分も加わりました。
※ もろもろ変更点が多いので、下の方に変更された部分をマークした目次を引用してあります

Rails 4.0 対応で追加された主な解説

1. ビュー関連
 新規メソッド
  (1) collection_radio_buttons と collection_check_boxes
   collection_select と同様にデータベースの情報からラジオボタンとチェックボックスを生成するヘルパーです。
  (2) cache_if と cache_unless
   指定ブロックのフラグメント・キャッシュを条件式で制御するメソッドです。
   使いどころは、何かの予定日とかWebコンテンツとして変更する可能性がある情報に使用。

2. モデル関連
 新規メソッド
  (1) find_by … find_by_xxxxx に代わって任意のキー列で検索するメソッドです。
  (2) not … クエリメソッドの検索条件を否定。
  (3) where! … クエリの条件式を破壊的に追加。
  (4) unscope … クエリメソッドによる条件式を除去。
  (5) none … 空の結果セットを取得。
 機能追加
  (6) transaction メソッドの新機能としてトランザクション分離レベルが指定可能になりました。
  (7) ActiveModel::Modelモジュール
   attr_accessorメソッドを使うことで、データベースに関連づいていない項目をモデルに実装できるようになりました。

3. コントローラ関連
 新規メソッド
  (1) add_flash_types … notice や alert 以外に独自の フラッシュメッセージ・タイプ を定義可能になりました。
 機能追加
  (2) マスアサインメント脆弱性への新しい対策方法
   フォーム入力パラメーターを検査する仕組みが Rails3 の attr_protected や attr_accesible から StrongParameters へ変更となり、モデル側ではなくコントローラー側で設定するように変わりました。
  (3) Rubyテンプレート
   Rubyテンプレートは ERB のような埋込み型ではなく直接、Rubyスクリプトで記述するテンプレートで
   使用例としてモデル・データをCSV形式で出力する方法が解説されています。
  (4) concernsフォルダ
   複数のコントローラーやモデルで共通するロジックをまとめて管理するディレクトリです。
   共通ロジックをまとめたモジュールの格納先が規約として明確になりました。

4. ルーティング( ルート定義の再利用 )
 リソース間で重複しているルート定義に名前をつけて部品化する方法の解説です。
 Rails4.0 で新しく追加された concernメソッド で共通する定義を1つにまとめ、concernsオプション で再利用します。

5. テスト関連
 前書と同じ Test::Unit でのテスト手順解説ですが、Rails4.0 で testディレクトリ の構成変更と rake test コマンド の
 オプションが変更されたため、解説内容が新しくなっています。

6. クライアントサイドの新機能 ( Turbolinks )
 ホームページのページ遷移を高速化する新機能の解説です。
 Rails4.0標準で設定が有効になっている機能なので、意識せずに使い始められるのですが
 その反面、仕組みを理解しておかないとハマるポイントでもあり、その回避方法が解説されています。

目次 ( Ruby on Rails 4 アプリケーションプログラミング )

著者サイトに 詳細目次 がありましたので、内容が新しくなった部分 は 目次行 の 背景色 を変えて引用してあります。

第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 Linuxにおける環境設定の手順
      1.2.4 サンプルの配置方法(Windows/Linux共通)

第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.4 モデルの基本
      2.4.1 O/Rマッパーとは?
      2.4.2 データベース接続の設定
      2.4.3 モデルクラスの作成
      2.4.4 マイグレーションファイルによるテーブルの作成
      2.4.5 フィクスチャによるテストデータの準備
      2.4.6 補足:データベースクライアントの起動
      2.4.7 データ取得の基本
      2.4.8 補足:アプリケーションの実行環境を指定する
    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 汎用的なフォームを出力する - form_tagメソッド
      4.1.3 モデル編集のためのフォームを生成する(1) - form_tagメソッド
      4.1.4 モデル編集のためのフォームを生成する(2) - form_forメソッド
      4.1.5 <input>、<textarea>要素を生成する - xxxxx _field、text_area、radio_button、check_boxメソッド
      4.1.6 HTML5対応の<input>要素を生成する - xxxxx _fieldメソッド(2)
      4.1.7 選択ボックス/リストボックスを生成する - selectメソッド
      4.1.8 データベースの情報をもとに選択肢を生成する - collection_selectメソッド
      4.1.9 選択ボックスの選択肢をグループ化する - grouped_collection_selectメソッド
      4.1.10 モデルと関連付かない選択ボックスを生成する - select_tagメソッド
      4.1.11 日付/時刻選択のための選択ボックスを生成する - xxxxx_selectメソッド
      4.1.12 データベースの情報をもとにラジオボタン/チェックボックスを生成する - collection_radio_buttons/collection_check_boxesメソッド
      4.1.13 その他のフォーム系ヘルパー
    4.2 文字列/数値関連のビューヘルパー
      4.2.1 改行文字を<p>、<br>タグで置き換える - simple_formatメソッド
      4.2.2 文字列を指定桁で切り捨てる - truncateメソッド
      4.2.3 文字列から特定の部分のみを抜粋する - excerptメソッド
      4.2.4 テーブルやリストの背景色をn行おきに変更する - cycleメソッド
      4.2.5 特定のキーワードをハイライト表示する - highlightメソッド
      4.2.6 スクリプトブロックの中に出力コードを埋め込む - concatメソッド
      4.2.7 文字列をHTMLエスケープする - h / rawメソッド
      4.2.8 文字列からタグを除去する - sanitizeメソッド
      4.2.9 文字列を整形する - sprintfメソッド
      4.2.10 数値をさまざまな形式で加工する - number_xxxxxメソッド
      4.2.11 日付データを整形する - strftimeメソッド
    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 イメージタグを生成する - image_tagメソッド
      4.4.2 音声、動画をブラウザで再生する - audio_tag/video_tagメソッド
      4.4.3 ブラウザのフィード検出機能を有効にする - auto_discovery_link_tagメソッド
      4.4.4 サイトのFaviconを定義する - favicon_link_tagメソッド
      4.4.5 外部リソースのパスを取得する - path_to_xxxxx メソッド
    4.5 その他のビューヘルパー
      4.5.1 構造化データをダンプ出力する - debugメソッド
      4.5.2 出力結果を変数に格納する - captureメソッド
      4.5.3 本体を持たない任意のタグを生成する - tagメソッド
      4.5.4 本体を持つ任意のタグを生成する - content_tagメソッド
    4.6 ビューヘルパーの自作
      4.6.1 シンプルなビューヘルパー
      4.6.2 HTML文字列を返すビューヘルパー
      4.6.3 本体を持つビューヘルパー
    4.7 アプリケーション共通のデザインを定義する - レイアウト
      4.7.1 レイアウトを適用するさまざまな方法
      4.7.2 ページ単位にタイトルを変更する
      4.7.3 レイアウトに複数のコンテンツ領域を設置する
      4.7.4 レイアウトを入れ子に配置する
    4.8 テンプレートの一部をページ間で共有する - 部分テンプレート
      4.8.1 部分テンプレートの基本
      4.8.2 部分テンプレートにパラメータを引き渡す
      4.8.3 コレクションに繰り返し部分テンプレートを適用する - 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 名前付きパラメータと名前なしパラメータ
      5.2.5 否定の条件式を表す - notメソッド
      5.2.6 データを並べ替える - orderメソッド
      5.2.7 ソート式を上書きする - reorderメソッド
      5.2.8 取得列を明示的に指定する - selectメソッド
      5.2.9 重複のないレコードを取得する - distinctメソッド
      5.2.10 特定範囲のレコードだけを取得する - limit/offsetメソッド
      5.2.11 先頭/末尾のレコードを取得するには - first/lastメソッド
      5.2.12 データを集計する - groupメソッド
      5.2.13 集計結果をもとにデータを絞り込む - havingメソッド
      5.2.14 条件句を破壊的に代入する - where!メソッド
      5.2.15 クエリメソッドによる条件式を除去する - unscopeメソッド
      5.2.16 空の結果セットを取得する - 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.4 レコードの登録/更新/削除
      5.4.1 複数のレコードをまとめて更新する - update_allメソッド
      5.4.2 レコードを削除する - destroy / deleteメソッド
      5.4.3 複数のレコードをまとめて削除する - destroy_allメソッド
      5.4.4 トランザクション処理を実装する - transactionメソッド
      5.4.5 補足:トランザクション分離レベルを指定する
      5.4.6 オプティミスティック同時実行制御
      5.4.7 補足:その他の更新系メソッド
    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 関連するモデルと結合する - joinsメソッド
      5.6.10 関連するモデルをまとめて取得する - 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 データの初期化

第6章 コントローラ開発
    6.1 リクエスト情報
      6.1.1 リクエスト情報を取得する - paramsメソッド
      6.1.2 マスアサインメント脆弱性を回避する - StrongParameters
      6.1.3 リクエストヘッダを取得する - headersメソッド
      6.1.4 リクエストヘッダやサーバ環境変数を取得するための専用メソッド
      6.1.5 ファイルをアップロードする(1) - ファイルシステムへの保存
      6.1.6 ファイルをアップロードする(2) - データベースへの保存
    6.2 レスポンスの操作
      6.2.1 テンプレートファイルを呼び出す - renderメソッド(1)
      6.2.2 レスポンスをインラインで設定する - renderメソッド(2)
      6.2.3 空のコンテンツを出力する - render&headメソッド
      6.2.4 処理をリダイレクトする - redirect_toメソッド
      6.2.5 ファイルの内容を出力する - send_fileメソッド
      6.2.6 バイナリデータを出力する - send_dataメソッド
      6.2.7 補足:ログを出力する - loggerオブジェクト
    6.3 HTML以外のレスポンス処理
      6.3.1 モデルの内容をXML/JSON形式で出力する
      6.3.2 テンプレート経由でJSON/XMLデータを生成する - JBuilder/Builder
      6.3.3 補足:Rubyスクリプトの結果を出力する - Rubyテンプレート
      6.3.4 マルチフォーマット出力に対応する - respond_toメソッド
    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.5.5 例:フィルタによるフォーム認証の実装
    6.6 アプリケーション共通の挙動を定義する - Applicationコントローラ
      6.6.1 共通フィルタの定義 - ログイン機能の実装
      6.6.2 共通的な例外処理をまとめる - rescue_fromメソッド
      6.6.3 クロスサイトリクエストフォージェリ対策を行う - protect_from_forgeryメソッド
      6.6.4 独自のフラッシュメッセージを追加する - add_flash_typesメソッド
      6.6.5 補足:共通ロジックをモジュールにまとめる - 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メソッド

第8章 テスト
    8.1 テストとは
    8.2 テストの準備
      8.2.1 テストデータベースの構築
      8.2.2 テストデータを準備する
    8.3 Unitテスト
      8.3.1 Unitテストの基本
      8.3.2 Unitテストの具体例
      8.3.3 テストの準備と後始末 - setup/teardownメソッド
    8.4 Functionalテスト
      8.4.1 Functionalテストの基本
      8.4.2 Functionalテストで利用できるAssertionメソッド
    8.5 Integrationテスト

第9章 クライアントサイド開発
    9.1 JavaScript/スタイルシートのインポート
      9.1.1 マニフェストの基本
    9.2 Asset Pipeline
      9.2.1 Asset Pipelineのしくみ
      9.2.2 実行環境による挙動の違い
      9.2.3 Asset Pipelineの挙動を制御する
    9.3 CoffeeScript
      9.3.1 CoffeeScriptの基本
      9.3.2 CoffeeScriptの基本構文
      9.3.3 変数とリテラル表現
      9.3.4 演算子
      9.3.5 制御構文
      9.3.6 関数
      9.3.7 オブジェクト指向構文
      9.3.8 補足:即時関数
    9.4 Sass(SCSS)
      9.4.1 SCSSの基本
      9.4.2 スタイル定義のネスト
      9.4.3 変数
      9.4.4 演算子
      9.4.5 関数
      9.4.6 ディレクティブ
      9.4.7 コメント
    9.5 Ajax開発
      9.5.1 Ajaxの基礎知識
      9.5.2 Ajax対応のハイパーリンクを生成する - link_toメソッド
      9.5.3 補足:更新コンテンツの生成は部分テンプレートで
      9.5.4 Ajax対応のフォームを生成する - form_tag/form_forメソッド
      9.5.5 Ajax通信でJSONデータを利用する
      9.5.6 補足:Ajax呼び出しの際に進捗メッセージを表示する
      9.5.7 Slideshare APIを利用する
    9.6 Turbolinks
      9.6.1 Turbolinksのしくみ
      9.6.2 Turbolinksの落とし穴
      9.6.3 Turbolinksを無効にする
      9.6.4 リンク単位でTurbolinksを無効にする

第10章 Railsの高度な機能
    10.1 電子メールを送信する - Action Mailer
      10.1.1 Action Mailerを利用する準備
      10.1.2 メール送信の基本
      10.1.3 複数フォーマットでのメール配信
      10.1.4 メール送信前に任意の処理を実行する - インターセプタ
      10.1.5 メーラーのUnitテスト
    10.2 キャッシュ機能の実装
      10.2.1 フラグメントキャッシュの基本
      10.2.2 フラグメントキャッシュを複数ページで共有する
      10.2.3 モデルをもとにキャッシュキーを決める
      10.2.4 指定の条件に応じてキャッシュを有効にする
      10.2.5 キャッシュの格納先を変更する
    10.3 アプリケーションの国際化対応 - I18n API
      10.3.1 国際化対応アプリケーションの全体像
      10.3.2 国際化対応の基本的な手順
      10.3.3 ロケールを動的に設定する方法 - ApplicationController
      10.3.4 辞書ファイルのさまざまな配置と記法
      10.3.5 Rails標準の翻訳情報を追加する
      10.3.6 ビューヘルパーの各種オプション
    10.4 Rails の機能拡張
      10.4.1 Rails 4で利用できるライブラリ
      10.4.2 ページング機能を実装する - will_paginate
    10.5 本番環境への移行
      10.5.1 Apache+Passenger環境への配置
      10.5.2 Heroku環境への配置

Home > Ruby on Rails > Rails4.0の入門書として新しくなったポイント – Ruby on Rails 4 アプリケーションプログラミング

Fedora 20
アーカイブ

Return to page top