Transcript MVCモデル
Ruby on Rails (RoR) 講習会
近畿大学大学院 田中大介
本日の予定
MVCモデル
ペアプログラミング
scaffold
練習問題
本日の目標
MVCモデルを考慮しつつ、
ペアプログラミングにより、
scaffoldを使ってアプリを作る
MVCモデル
ソフトウェアの設計モデルの一つ
3要素を組み合わせ、システムを実装
処理を行う「Model」
表示・出力を行う「View」
ViewとModelを制御する「Controller」
MVCモデル例
図:wisdom様 http://www.blwisdom.com/word/key/000517.html
MVCモデルの利点
機能ごとに分離
開発作業の分業が簡単
変更の影響を受けにくくなる
Railsでは
プロジェクト作成時に
Controller、Model、View
をフォルダ分け
MVCモデルの利点を
生かした開発を助ける
本日の目標
MVCモデルを考慮しつつ、
ペアプログラミングにより、
scaffoldを使ってアプリを作る
MVCモデル
「Model」「View」「Controller」を組み合わせてシステムを作る方式
ペアプログラミング
XP(エクストリームプログラミング)の1手法
すべてのコードを2人一組で実装する
1人がコーディング、1人がチェックとナビ
ペアプログラミングのメリット
コードの品質が上がる
開発速度が上がる
プロジェクトのリスクは下がる
本日の目標
MVCモデルを考慮しつつ、
ペアプログラミングにより、
scaffoldを使ってアプリを作る
MVCモデル
「Model」「View」「Controller」を組み合わせてシステムを作る方式
ペアプログラミング
2人一組でシステムを実装する
scaffold
Railsの持つ強力なフレームワーク
データベースの構造を基にして、
CRUD(新規作成、一覧、更新、削除)を提供
簡単なWebアプリケーションを瞬時に作成
実習・手順
1.
2.
3.
4.
5.
商品を管理するWebアプリを作成する
プロジェクト作成
データベースの設定
データベース作成
scaffold実行
サーバ起動・確認
実習1・プロジェクトを作成
1.
2.
3.
RailsNavigatorで右クリック
New > RailsProjectを選択
Project Nameを
「depot」にして終了
実習2・データベースの設定
depot プロジェクトの
config / database.yml を下のように変更
development部分
adapter : sqlite3
database: db/development.sqlite3
実習3・データベース作成
1.データベースの元となる
migrationファイルを作成
generatorsで以下を実行
•
•
model Product title:string description:text
image_url:string price:float
実習3・データベース作成
2.migrationファイルから
データベースを作成
•
Rake Tasks で db:migrateを実行
実習4・scaffoldを実行
Generators で scaffold Product Product
実習5・サーバ起動
1.
2.
Servers で 作成したプロジェクトの
サーバを起動
http://localhost:3000/product
(ポート番号は起動したサーバのもの)
実演
がんばります
解説1・プロジェクトを作成
各ディレクトリの中身
app:Model、View、Controller
config:各種設定ファイル
db:データベースに関連するファイル
log:ログファイル
public:Web経由でアクセスできるファイル
test:テストコード
解説2・データベースの作成
generate model Product title:stirng…
1.
第1引数で作成するモデル名を指定、
第2引数以降で変数名と型を指定
同時に、db/migrateにmigrationファイルが生成
rake db:migrate
2.
実行すると、ファイルからDB作成
⇒ モデル名の複数形がテーブル名に、変数がカラムに
ただし、データベースにオプションはつけられない
⇒ バリデーションをかけることで解決
参照:型とカラム型のマッピング一覧
http://hsj.g.hatena.ne.jp/donayama/20060102/migration
解説3・scaffold
第1引数でModel名を指定、
第2引数でController・View名を指定
作成されるファイル
app/controllers/product_controller.rb : controller
app/models/product.rb : model
app/views/product/* : view
helper, layout, テスト関連のファイル等
解説3・scaffold
controller
URLを通じて呼び出される
例:http://localhost:3000/product/show/3
⇒ productコントローラのshowメソッドが呼ばれる
指定しなければshowのviewが呼び出される
config / routes.rb で調整可能
解説3・scaffold
model
CRUD処理を行う。以下はメソッドの一例
create(insert) : saveメソッド
read(select) : findメソッド
update : updateメソッド
delete : destroyメソッド
バリデーションをかけるのもこのファイル
validates_presence_of : not null 制約
validates_numericality_of : 数値かどうか
validates : その他のバリデーション
解説3・scaffold
view
layout と views の中身によって画面を作成
controller名に対応したlayoutが適用される
(変更したい場合は layout メソッドを使用)
layoutにあるyieldフィールドに、
viewの中身が埋め込まれる
練習問題
1.じゃんけんプログラムを
Webアプリケーションにして下さい
「グー」、「チョキ」、「パー」を入力
勝敗を表示
戦績を一覧で表示
練習問題
2.商品アプリをより使いやすくして下さい
1.
商品にバリデーションをかける
2.
機能を追加する
3.
画面を見やすくする等
参考:http://techno.hippy.jp/apidoc/
http://api.rubyonrails.org/
終わり
資料
http://ecl.info.kindai.ac.jp/~earthmoon/mvc.ppt