本書は、これからRailsを学ぶ人、さらに深くRailsとWebアプリケーションプログラミングを理解したい人のための本です。イラストや写真を使って、楽しくRailsの仕組みを解説します。他にもショートストーリーやパズルなど、読者の集中力を切らせないさまざまな工夫を凝らしており、無理なく学習することができます。楽しくて、読み進めることが苦痛にならない本書を読了する頃には、Webアプリケーションを自力で作れるようになるはずです。
Head First Rails
―頭とからだで覚えるRailsの基本
David Griffiths 著 、松田 明 監訳 、児島 修 訳
- TOPICS
- Head First , Programming , Web , Ruby
- 発行年月日
- 2010年01月
- PRINT LENGTH
- 464
- ISBN
- 978-4-87311-438-5
- 原書
- Head First Rails, First Edition
- FORMAT
目次
序章 本書の対象読者 あなたは今、こう考えているはずです メタ認知――「考えること」について考える 脳に言うことを聞かせる方法 注意事項 レビューチーム 謝辞 1章 さあ始めよう このアプリケーションには機能がたくさん このアプリに必要なものは何? Railsはチケット販売システムのようなデータベースアプリ開発に最適 railsコマンドで、アプリケーションを新規作成 デフォルトのアプリにコードを追加 Scaffoldはコードを「生成」する データベースには、テーブルが作成されていない! migrationを実行してテーブルを作成 やった!親友はクビにならずに済みました! アプリケーション変更のために、アーキテクチャの内部を探る アプリケーションの 3つのパート model、view、controller Railsの真実 3種類のコードは、それぞれ「別の」フォルダに格納される 編集すべきは、 VIEWのファイル アプリケーションが保持すべき情報が増えた migrationはRubyスクリプト Railsは migrationを生成する migrationに「利口な」名前を与えると、 Railsがコードを書いてくれる migrationは、 rakeで実行する データベースの変更だけでは不十分 2章 scaffoldを超えて scaffoldで作成される機能が多すぎる まずは、 MeBayのモデルを生成して…… ……次に、 rakeを使ってテーブルを作成する コントローラーはどうすればいい? ビューはページテンプレートを使って作成する ページテンプレートは HTMLを含む Railsに Webページの場所を伝えるのは routes ビューに、表示すべきデータがありません ページに表示すべきデータは? ビューに広告情報を送るのは、コントローラー Railsはレコードをオブジェクトに変える データはメモリにあり、 Webページはそれを参照できる 問題発生――ユーザーは見たいページを探すことができない routesは、優先度に従って実行される ビューにデータを渡すには、コントローラーにもコードが必要 indexページには、「すべてのレコード」のデータが要る Ad.allは、テーブルの全情報を一度に読み込む データは、配列と呼ばれるオブジェクトを返す 配列は、番号付きの連続したオブジェクト eachメソッドですべての広告を読み込む 配列のそれぞれの要素ごとに HTMLが必要 Railsはページテンプレートを Rubyコードに変換する 繰り返し処理は、スクリプトレットを使ってページテンプレートに追加できる eachで展開されたオブジェクトごとに、ページはリンクを 1つ生成する 生成された HTMLはどんな感じ? ページテンプレートが 2つ……、それぞれのコードを変えるべき? MeBayから送られてきた静的コンテンツはどうすればいい? 3章 登録、更新、そして削除 新しい広告を、サイトから直接投稿したい データベースのデータを公開するアプリの開発方法なら、すでにわかっている データの保存はデータの読込みと逆の流れになる データ送信のためのフォームと、データ保存のためのメソッドが必要 フォームとオブジェクトの関係は? Railsはモデルオブジェクトと関連付けられたフォームを作成できる @adフォームオブジェクトを作成していなかった フォームオブジェクトは、フォームが表示される前に作成しなければならない フォーム用の adオブジェクトは、コントローラーのnewアクションで作成される 各ページテンプレートは、対応するコントローラーのメソッドを持つようになった フォームはオブジェクトを送信しない。送信するのは「データ」だ Railsがデータを保存する前に、データをオブジェクトに変換しておかなくてはいけない コントローラーの createメソッドを段階的に見てみましょう コントローラーはレコードを保存する必要がある 新しいページを作成せず、既存のページを使おう コントローラーのアクションは、どのようにして別のアクションページを表示すればよいのか? リダイレクトによって、コントローラーは表示するビューを指定できる 広告が投稿された後に変更するには? 更新は、新規作成とほどんど同じ…違いはわずか 広告データを新しく作成するのではなく、既存データを検索する。新規登録するのではなく、更新する 機能へのアクセスを制限する ……課題がもうひとつ −不要になった広告を削除する必要もある コードを自分で作成することで、 scaffoldよりも多くのことを実現できる 4章 データベースファインダ Rubyvilleフィットネスクラブで健康を維持しよう アプリケーションは、求められているものにかなり近い。だけど… scaffoldでアプリを作成し、修正しましょう 検索機能を設計する 始めにフォームを作成する 検索機能のインターフェースを追加する 特定のクライアントのレコードを見つける方法は? 「client_name =検索文字列」に一致するレコードのみが必要 すべての属性向けのファインダがある クライアント名またはトレーナー名のどちらかと一致するレコードを検索したい ファインダは、データベースクエリを発行する SQLクエリの中の条件部分を変更できる必要がある :conditionsでSQLを作ろう 5章 データの検証 気をつけろ! ここには「よからぬ」データがある バリデーションのコードはモデルに記述する Railsでは、シンプルな妥当性確認にバリデータを使う バリデータのしくみ 値が数値かどうかを確認しよう フォームにデータを入力しないユーザーがいる 必須フィールドはどうやってチェックすればいい? バリデータはシンプルで効果的 MeBayでおかしな現象が起きている バリデータは機能している。でもエラーが表示されない 自分で作成した機能ではエラー処理のコードも自分で書かなくてはならない コントローラーがエラーの発生を知る必要がある ユーザーは明確なコミュニケーションを求めている MeBayのシステムは、とても快適に稼働しています 6章 「つながり」を作る ココナッツ航空から予約システムの依頼 フライトと座席予約をつなぎ合わせなくてはなりません scaffoldで作られたものを見てみよう フライトのページに予約フォームと座席一覧が必要 ページのコンテンツを別のファイルに分けるには? ERBはページを組み立てる 予約フォームのパーシャルを作るには? パーシャルをテンプレートに含める パーシャルには座席が必要です! パーシャルにはローカル変数を渡すことができる 座席一覧のパーシャルも必要 ユーザーは間違ったフライトを予約してしまう 関連はモデルを結び付ける 関連を定義するには? 荷物がたくさんあるときの問題 自分でバリデータを書かなくてはいけません 必要なのは、逆の関連 システムは、ココナッツ航空で稼働を始めました。テイクオフ! 7章 Ajax ココナッツ航空に新たな依頼 もっとも頻繁に変更されるのはページのどの部分? ブラウザは常にページ全体を更新するのでは? リクエストの発行に使える、ブラウザ以外のものとは? まず、 Ajaxライブラリを読み込む必要がある… ブラウザは更新のリクエストを求めている トブラウザには、絶えずリクエストを送信させ続けなくてはいけないの? ボタンのイベントを受け取るように、タイマーを受け取る Ajaxの真実 突然ですが、独身パーティーで問題が発生しました フォームから Ajaxリクエストを作成しなければならない フォームを JavaScriptでコントロールする createメソッドを書き換える このコードによって、何が変わるのでしょうか? フライトの予約で問題が…… わかっているのは、ページのある部分を一度にひとつだけ更新する方法だけ コントローラーで、 HTMLの代わりに JavaScriptを返すようにする で、 Railsは何を生成するの? どこにレスポンスを挿入するかを指示しなければ、レスポンスは実行される 8章 XMLといろいろな表現方法 世界の山々を登ろう ユーザーはインターフェイスを気に入っていないのです! データを地図の上に 新しいアクションを作成する 新しいアクションは上手く動作しているようだけど…… 新しいページには……、地図が必要です! どんなコードが必要? コードが localhostでしか動作しない 次に必要なのは地図データ 生成する必要のあるものは何? モデルから XMLを生成 モデルオブジェクトは XMLを生成できる コントローラーのコードはどうなる? 登山者はウェブサイトも欲しい XMLだけではなく、 HTMLも生成しなければ XMLと HTMLはどちらも表現形式 どのフォーマットを使うかを判断する基準は? 地図ページのしくみ 本番環境での稼働の準備ができた RSSフィードは単なる XML アクション「 news」を作成する XMLの構造を変更しなければならない 新たなタイプのテンプレート、 XMLビルダーを使う ページにフィードを追加しましょう この世の頂点にいるような気分! 9章 RESTとAjax インシデント、多すぎ! 地図にはもっと詳しい情報を載せられる Ajaxで、地図の機能を拡張できる インデックスページはどうなる? showアクションが生成すべきものは? 新機能は成功! ここでも Ajaxでリクエストを発行すればよい 地図パーシャルには newアクションも指定できるようになっている インシデントが登録されたことを「証明」するには? ポップアップの <div>にあるコンテンツを更新する 雪崩だ! 今はどうなっているの? ポップアップウィンドウには Editリンクを追加できる editアクションの修正から着手しよう showページには新しいリンクが要る link_toの使い方は? レスキューへの Ajaxリンク ルートが違っていた! HTTPメソッドが、ルートの選択に影響していた HTTPメソッドって何? Head First Climbersを、もっとよいアプリに! 10章 現実世界のアプリケーション Rubyをいろいろ「試してみよう」! ウェブアプリにもテストが必要 どんなテストが利用できるの? 本番環境へ データベースを変更するには? RESTって何? 道を踏み外してしまったウェブアプリ 最先端を行く もっと多くの情報を得る 読み物をいくつか…… 関連トピックの Head Firstシリーズ Railsvilleよ、さようなら……