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