Ruby on Rails (RoR) 講習会 近畿大学大学院 田中大介
本日の目標 Web アプリケーションを作ろう!
本日の予定 Web アプリケーションとは? データベース( DB )とは? MVC モデルとは? scaffold とは? 実践練習
Web アプリケーション Web 上で動作するアプリケーション インストールが不要 ブラウザさえあれば動く (動作環境に依存しない) ex. Google 検索、 YouTube 、 Amazon など
Web アプリケーション Web アプリはデータを使う Google 検索 ⇒ サイトの URL YouTube ⇒ 動画やそのタイトル Amazon ⇒ 商品の名前やその値段 データを扱うしくみが必要 ⇒ DB
データベース( DB ) データを簡単に利用するためのしくみ 大量のデータを高速に処理できる 不正なデータを受け付けない ユーザ権限を管理できる etc … たくさんのテーブル(データの入れ物)を 持ちます
データベース( DB ) しくみ(例: Amazon ) DB 商品 テーブル 顧客 テーブル
データベース( DB ) しくみ(例: Amazon の商品) ID 商品名値段カテゴ リ 1 カッパ(黄色) 2,000 雨具 2 トマトサンド 300 食物 3 スプーン 1,000 食器 商品テーブル DB テーブル カラム レコード
データベース( DB ) しくみ(例: Amazon の商品) カテゴリ 値段 商品名 ID
MVC モデル ソフトウェアの設計モデルの一つ 3 要素を組み合わせ、システムを実装 データベースを処理する「 Model 」 表示(ブラウザ)を処理する「 View 」 View と Model を制御する「 Controller 」
MVC モデル例 図: wisdom 様
MVC モデルの利点 機能ごとに分離 開発作業の分業が簡単 プログラマはプログラムに、 デザイナーはデザインに集中できる 変更の影響を受けにくくなる 一つのモデルを変更しても、 他に影響しない
Rails では プロジェクト作成時に Controller 、 Model 、 View をフォルダ分け MVC モデルの利点を 生かした開発を助ける
scaffold Rails には generator という コード生成プログラムがある controller ⇒ コントローラとビューを生成 model ⇒ モデルを生成 scaffold ⇒ 雛形を一括作成 CRUD (作成、一覧、更新、削除)ができ る 簡単な Web アプリケーションを瞬時に作 成
小まとめ(1) Web アプリケーションを作ります Web で動作する(ブラウザで操作する) アプリケーション データベースを使います データの入れ物です テーブル(入れ物)にレコード(データ) を 入れて使います
小まとめ(2) MVC モデルを利用します データベース担当 (Model) 、表示担当 ( View )、 制御担当( Controller )に分けられます プロジェクト作成時に自動で分けてくれま す scaffold を利用します 簡単に雛形アプリを作れます
実践練習 本を管理する Web アプリを作成する テーブル Books テーブル id : 固有番号 name : 書名 price : 値段 state : 状態(どこにあるか)
実践練習 本を管理する Web アプリを作成する 手順 1. プロジェクトを作成 2. scaffold を実行 3. データベースを作成 4. サーバ起動・確認
実践1・プロジェクトを作成 1. RailsNavigator で右クリック 2. New > RailsProject を選択 3. Project Name を 「 books 」にして終了
実践2・ scaffold を実行 Generators で scaffold を選択して、 「 book name:string price:integer state:string 」
実習 3 ・データベース作成 Rake Tasks で db:migrate を実行
実習4・サーバ起動 1. Servers で 作成したプロジェクトの サーバを起動 2. (ポート番号は起動したサーバのも の)
解説1・プロジェクトを作成 各ディレクトリの中身 app : Model 、 View 、 Controller config :各種設定ファイル db :データベースに関連するファイル log :ログファイル public : Web 経由でアクセスできるファイル test :テストコード
解説2・ scaffold を実行 scaffold テーブル名 { カラム名 : タイ プ } CRUD が可能な雛形 Web アプリを作成 Controller, Model, View, Migration 指定したタイプのカラムを持つ テーブルを作成する string : 文字列 integer : 整数 date : 日付
解説2・ scaffold を実行 controller メソッドで Model や View を制御する 例: ⇒ book コントローラの new メソッドが呼ばれ る 指定しなければ new.html.erb
解説2・ scaffold を実行 model CRUD 処理を行う。以下はメソッドの一例 Create : save メソッド Read : find メソッド Update : update メソッド Delete : destroy メソッド バリデーションをかけるのもこのファイル validates_presence_of : 空っぽのときエラー validates_numericality_of : 数値でないときエラー validates : その他
解説2・ scaffold を実行 view /views/layouts/xxx.html.erb + /views/xxx/yyy.html.erb で画面を作成 xxx : controller 名 yyy : action 名 layout の yield に埋め込まれる
解説2・ scaffold を実行 routes.rb map.resources メソッドが追加 CRUD にアクセスする URL を設定 /books/new => new メソッド /books/1 => show メソッド( ID は 1 番) /books/1/edit => edit メソッド( ID は 1 番) URL に変換するキーワードを設定 books_url => index メソッド new_book_path => new メソッド edit_book_path(1) => edit メソッド( ID は 1 番)
解説2・ scaffold を実行 migration データベースを操作するファイル create_table : テーブルを作成 drop_table : テーブルを削除 add_column : カラムの追加 remove_column : カラムの削除
練習問題 1.本の状態を「貸出中」にするリンク を作る 2.本の状態を「本棚」にするリンクを 作る 3.書名がない本をはじく 4.値段が数字でない本をはじく 5. 300 円以上の本だけを表示する
練習問題 1.本の状態を「貸出中」にするリンクを作る 1. メソッドを作成する ( app/controllers/books_controller.rb ) 2. メソッドへのアクセス方法を指定する ( config/routes.rb ) 3. リンクを作る ( app/views/books/index.html.erb ) 3.書名がない本をはじく 1. 書名にバリデーションをつける
終わり 資料 moon/study2008.ppt 今日の資料 moon/study2008.ppt Rails の取扱説明書(英語)