Upload
yuichiro-masui
View
6.435
Download
0
Embed Size (px)
DESCRIPTION
Citation preview
Yuichiro MASUI <[email protected]>
PHPからRailsへ1時間で分かってもらうのは無理だけど
生産性が10倍?
幸せなプログラム環境ってなに?
頭に考えたモノをそのまま記述できれば生産性が高く
楽しいプログラミングができるのでは?
Railsを採用する理由
頭で考えたモノをそのまま記述しやすい
その為の仕掛け作りが沢山あるのがRails
Railsのスローガン
that's optimized for programmer happiness
and sustainable
プログラマーの幸福と創造性の継続に最適化されたフレームワーク
一発屋じゃなくて継続性も大事
UnitTestによるテストも標準搭載
人を育てるフレームワーク
PHPからRailsへ移行
フレームワークは全容を把握しないと使えない
大体3ヶ月ぐらいかかる(感覚値)
Ruby自体は2-3日もあればとりあえず使えるようになる
引っかかるのは....
ブロックイテレータリフレクションオープンクラス
ブロック
プログラムの固まり。if~endや{~}などで囲った部分。ブロックはオブジェクトではないが、関数の引数として渡すことができる。
イテレーション
繰り返しの抽象化。foreachみたいなもん。これを配列やハッシュ以外でも使える。Railsでは繰り返さないでもイテレーションがある
リフレクション
クラスの内容を外部から把握したり、呼び出された関数を動的に処理する仕組み。Rubyではクラス名はあまり意味を持たない。
オープンクラス
既存のクラスであっても継承なしに書き換えることができる。組み込みのStringクラスの挙動を後から変えることが可能。
これらが使えるとRubyist
これらを使わないならRubyを使う意味がない
Ruby on Rails
Rubyで書かれたフルスタックの
MVCフレームワーク
理念
その1
Conventionover
Configuration
設定より規約
デフォルトの動作が規約として多数盛り込まれてる
JavaのフレームワークはXMLで設定する物が多い
XMLの設定=コード
設定ではコード量は減らない
その2
DRY
Don't Repeat Yourself
同じ事は二度するな
DBのO/Rマッピングを行う時
DBのカラム名をコードに書くのはDRY違反
DB変更したらコードの変更もいる
バグの元
Railsならクラス作るだけ
class User < ActiveRecord::Baseend
テーブル定義はDBから参照する
ただ、リレーションだけは設定する必要がある
class User < ActiveRecord::Base has_many :booksend
これだけでusersテーブルのマッピング終わり
Conventionover
Configuration
設定より規約
ActiveRecordの規約
テーブル名の単数形のクラスでActiveRecord::Baseを継承するとO/Rマッパになる
だからSQLでテーブル定義するだけで設定はいらない
規約に沿わない場合は設定が必要
class User < ActiveRecord::Base set_table_name 'user' set_primary_key 'pkey'end
その3
言語重要
Ruby
歴史は長いがキラーアプリがなかった
DHHがRubyを選んだ理由
Rubyは美しいコードを書くことができる,プログラマをハッピーにする言語だと感じたのです。
ITProインタービューにて
なぜ美しいと思うか
思考との乖離が少ない
頭で考えた物が作れる
言語の柔軟性が非常に高い
本当のオブジェクト指向、演算子のオーバーライド、オブジェクトへのメソッド追加...
RailsではRubyを拡張してDSLっぽく使っている
標準ライブラリなどにも手を入れまくり
Webに特化させてる故に書きやすい
思いついたのを簡単にコードにできたらプログラムは
楽しい
その4
すぐ動く
まず目の前に動く物があると作業がはかどる
動くまで時間がかかるとテンションが続かない
scaffold
足場
コントローラに1行書くだけでCRUD完成
Create - 作成Read - 表示Update - 更新Delete - 削除
DBにテーブル作って空のモデルクラスつくってコントローラにscaffoldって
書くだけでDB更新アプリ完成
これが10分Railsムービーの内容
あとは足場を頼りに骨組みを作っていけばいい
scaffold以外に色々なジェネレータも出ている
これらを使えば管理画面とかは
コード書かなくても行ける
生成されたコードは勉強にも役に立つ
その5
豊富なプラグイン
なんでもある
画像アップならfile_columnタグはacts_as_taggable
などなど・・・
日本語化はGetText-Ruby
以上5つがRailsの生産性の高さを支えている
Railsのscaffoldでアプリを作る姿はムービーで見てね
ブラウザRails
mongrel
Controller
Railsアプリの構造
Model
View
Controller
MVCの流れ
Model
View
Controller
MVCの流れ
Model
View
params[]URLやフォームで渡される値
Controller
MVCの流れ
Model
View
params[]URLやフォームで渡される値
URLからコントーラとアクションを決定
Controller
MVCの流れ
Model
View
Model.find,model.save
params[]URLやフォームで渡される値
URLからコントーラとアクションを決定
Controller
MVCの流れ
Model
View
Model.find,model.save
params[]URLやフォームで渡される値
インスタンス変数
URLからコントーラとアクションを決定
Controller
MVCの流れ
Model
View
Model.find,model.save
params[]URLやフォームで渡される値
インスタンス変数
アクション名のテンプレ
URLからコントーラとアクションを決定
プログラムで実は多いのは妥当性のチェック
validate
モデルに1行書くだけで必須項目に出来る
class Todo < ActiveRecord::Base validates_presence_of :descriptionend
app/models/todo.rb
descriptionを必須項目に
これだけで保存しようとするとエラーになる
入力値チェックをコントローラに書いていませんか?
Railsに乗ればよりよい道を走れる
Rails way