Upload
yuichiro-masui
View
2.048
Download
3
Tags:
Embed Size (px)
DESCRIPTION
Citation preview
Yuichiro MASUI <[email protected]>
なぜRubyでRailsか最新フレームワーク Ruby on Rails
Ruby on Rails知ってる人~
Ruby on Railsでアプリを作ったことある人~
Ruby loveな人~
Ruby on Rails
37signalsに所属するDHHが作ったフレームワーク
2004年7月に初めてのRails 0.5.0公開
2005年12月14日
Rails 1.0リリース
現在はRails 1.1.6
来月にはRails 1.2が出る予定
煽り文句
生産性がJavaの10倍
15分でblog作ったり
10分でオンラインブックマークが作れる
「10分で作るRailsアプリ」をみたことある人
ありがとうございます
おかげさまで大好評
でも、絶対10分じゃ無理
数十回練習した成果
2005/11/9Web Developer Study #1
「1時間で作るWebアプリ」
この辺が限界
これもWebで公開してます
なぜJavaの10倍の生産性を誇るのか
少ないコードでアプリが書ける
どの言語を使っても1行のコストはあまり変わらない
その為の方策
その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
まつもとひろゆきさんが作ったオブジェクト指向言語
1993年誕生
結構、歴史は長い
でも今までキラーアプリがなかった
でもRailsのおかげでRuby本が大売れ
DHHがRubyを選んだ理由
Rubyは美しいコードを書くことができる,プログラマをハッピーにする言語だと感じたのです。
ITProインタービューにて
なぜ美しいと思うか
思考との乖離が少ない
頭で考えた物が作れる
言語の柔軟性が非常に高い
本当のオブジェクト指向、演算子のオーバーライド、オブジェクトへのメソッド追加...
RailsではRubyを拡張してDSLっぽく使っている
•if a==b then; obj.m(); end
•a==b && obj.m
•obj.m if a==b
title = obj.name.strip.camelize
rescue ‘no title’
module RakeTask def method1 .... end
task :task1 do ..... endend
標準ライブラリなどにも手を入れまくり
Webに特化させてる故に書きやすい
思いついたのを簡単にコードにできたらプログラムは
楽しい
その4
すぐ動く
まず目の前に動く物があると作業がはかどる
動くまで時間がかかるとテンションが続かない
scaffold
足場
コントローラに1行書くだけでCRUD完成
Create - 作成Read - 表示Update - 更新Delete - 削除
DBにテーブル作って空のモデルクラスつくってコントローラにscaffoldって
書くだけでDB更新アプリ完成
これが10分Railsムービーの内容
あとは足場を頼りに骨組みを作っていけばいい
scaffold以外に色々なジェネレータも出ている
これらを使えば管理画面とかは
コード書かなくても行ける
生成されたコードは勉強にも役に立つ
その5
豊富なプラグイン
なんでもある
画像アップならfile_columnタグはacts_as_tabbable
などなど・・・
日本語化はActiveHeatとRuby-GetText
ただプラグインが増えすぎで探すのが大変
CoCDRY言語重要すぐ動く
豊富なプラグイン
以上5つがRailsの生産性の高さを支えている
Railsのスローガン
that's optimized for programmer happiness
and sustainable
プログラマーの幸福と創造性の継続に最適化されたフレームワーク
Railsで幸福になりませんか?
しかしRailsは万能じゃない
プログラマが全部設計できるならずいぶん楽なんだけど
自分で考えたアプリを作る場合
DB設計 (Model)
コントローラ設計
Scaffold
コード実装 HTML実装
現実そうはいかない
顧客のアプリを作る場合は画面ありきの設計になる
DB設計 (Model)コントローラ設計
Scaffold
コード実装 HTML実装
画面設計
顧客は画面しか見ないから
画面からDBを設計するのが一番のネックになる
コードが少なくなった分DB設計が肝になる
でもDBの変更もmigrationで楽々
migration
DBの変更を記述する
class AddNick < ActiveRecord::Migration def self.up add_column :users, :nick, :text end
def self.down remove_column :users, :nick endend
DBの変更もRailsで書く
rake migrate
古い状態にも戻せる
rake migrate VERSION=3
サーバのDBも簡単に変更できる
rake remote:migrate
Railsにはdeploy管理のアプリも付いてくる
Capistrano
カピストラーノ
前はSwitchTowerって名前だった
レシピを書くとコマンド一つでアップして再起動とかしてくれる
しかも過去の分は全部バックアップした上で
あなたのプロジェクトは過去の履歴を全部とってますか?
すぐに前のバージョンに戻せますか?
担当者がいなくてもアップデートできますか?
Capistranoなら簡単
rake deploy
rake rollback
Railsはコードだけじゃなくサポートアプリも含めてAll in oneな環境
さてRailsで幸福になるのは良いけど
第一部おわり
小休憩
Yuichiro MASUI <[email protected]>
仕事でRailsホントに使えるの?
実際問題、Railsで動いてるサイトはあるの?
正直、あまりない
表に出さないだけであることは、あるらしい
仕事でRailsを使う場合の障壁
Railsで作れる人が居ない
勉強を兼ねて小さなプロジェクトから
始めましょう
日本の伝統 OJT
オファーは結構ある
デザイナはSmatyしかわからない
やってみたらうちの周りは全員問題なし
近々デザイナー向けRails本が出るらしい
サーバがRailsに対応していない
自鯖でRails入れれば問題なし
安定して稼働できるか
やっぱりノウハウが必要
lighttpd+FastCGIはlighttpdが固まる事がある
Apache2+mod_fcgid私は経験ないが不安定らしい
Apache1.3+mod_fastcgiFastCGIでは一番安定してる
FastCGIはちょっと不安
最近の定番
mongrel+
Apache 2.2mod_proxy_balancer
mongrelRuby+CのWebサーバ
Apacheをリバースプロキシにして使う
これならApacheでPHPを動かして混在させることも
可能
速度に問題はないか
確かにRailsは遅いが
キャッシュを使って動的生成を減らせば
早くなる
それでも遅ければスケールアウトできる
まずは、小さな物から試してみませんか?
Yuichiro MASUI <[email protected]>
Railsで作るどうやって作ってるの?
実際にアプリを組むにはどっから始めればいい?
rails プロジェクト名
ひな形が作られる
•app•controllers•models•views
•db•migrate
•test•unit
主なディレクトリ
models層が厚くcontrollerが薄い
ユーザ単位のアプリならacts_as_authenticatedが
おすすめ
gem installacts_as_authenticated
script/generate authenticated user
account
日本語を使うならRuby-GetText
gem install gettext
下準備はこれぐらいで次はmodelを作成
script/generate modelbookmark
bookmarkモデルを作成
migrationのひな形も同時に作成
bookmarkコントローラを作成
script/generate scaffold bookmark
script/server
流行物だしUnitTestぐらい書いておこう
test/unit/bookmark_test.rb
ZenTestで自動テスト
あっという間にアプリが完成
Ajaxも超簡単
prototype.jsによるエフェクト
RJSによるDOM操作
一緒にアプリを作ってみませんか?
ご静聴ありがとうございました
質問コーナー