2011/01/12 19:30 to 22:00
■Rails3情報源の歩き方(西村賢@IT編集部)
・ゾンビ 学習コンテンツ
@ITのリンク集で紹介する
・JRubyの記事を書いている
月間、週間アスキーの編集をしていた。
最近はPC雑誌を讀人は少ない。
今は、Matzの追っかけ
「ソフトウェアは工業製品ではない!」
「すべてのソフトはRISCになる。」
・Googleの取材もしている。
・Ruby on Railsの情報は英語だと豊富!
・TOEICは良いペースメーカー
→860点 DHHの公園を聞いて、なんとなくは言ってることが分かる。
→970点 英語のRSSは苦にならない。
→990点 今
・RoRの公式サイト
スクリーンキャスト
Rails0.5で動いている。
DocumentationのGuidsがおすすめ。読み応えがある。
「API.」を付ければ全部見られる
Residence.int
railsのユーザ名でgitで公式の
git log -p
バグトラッキングシステム
Rubyはテストが無いライブラリは公開しない文化
→自分でやった成果を共有
・そもそもどうやってプラグイン探すの?
解答例:Asakusa.rb
→コミュニティを探すのが良い
RubyToolBox
ActiveRecordの暗号化でいいものはあるか?
・Railscasts
話題のトピックを10〜15分で
・ASCIIcasts
・ScalingRails
作者:ウェックポーラック、ゾンビのサイトにも関係。
・envylabs
チートシート
・Ruby on Rails Tutorial
・Rails Wiki時々英語、ボランティア部速
・Conireaks
●カンファレンス系
・RubyConf(最大)
・RailsConf(もっと最大)
・OSSは人が作る
何に関心あるか発表すること。
・Rubyのコミッタ
・ビジネスとソフト開発を語るDHHはめちゃめちゃ面白い
地元の街で愛されるイタリア料理屋を
Fortune500よりFortunemil
制約こそアートを生む
・Yehuda Katz
・海外の専門オンライン媒体
Rails InsideをRSSをとっておけばいい
Engine Yardブログは要注目
これからお勉強の人は、はてダの「Ruby」「Rails」をRSS登録
息抜きにRuby Quicktips
コアなRubyの話なら、るびま
ML:Rubyon Rails Talk
→ノイズがおおいので拾い読み
・検索でやたらとひっかかるStackOverflow
・RailsBridge
関東在住でしたら!
→Rails勉強会
関西にすんでるんやっったら!
→〜関西
・Rails専門コーナーはじめました @IT
対談や新連載
ついでにブログも
■「2011年は、Rails3を使おう!」
Yuichiro MASUI
→JavaScriptでAndroid開発の会社
●Railsのおさらい
2004/07-最初のバージョン
05/12 1.0
07/12 2.0.3
10/08 3.0
10/11 3.0.3
→3.0からソフトは安定するというジンクス
・Rails1の特徴
DRY
CoC
Full stack
Generator/Scaffold
Write less code 各コードをできるだけ少なくする バグの量は工数に依存する
→速く書けるし、バグが減る
・Rails1の問題
不安定
遅い/メモリ食い過ぎ
実行環境が少ない
実績が少ない
Rubyプログラマが少ない
・Rails2の特徴
RESTful
XML->JSON
→ブラウザとのやりとりがしやすい
セキュリティの強化(CSRF対策など)
多言語対応
パフォーマンス(クエリキャッシュなど)
・Rails2の問題
Rails本体が複雑すぎる
遅い
プラグイン非互換
→内部インターフェイスがきちんと規定していないため、0.0.1くらいの少しバージョン変更で動かなくなる
環境構築(RubyGems)
→標準でレンタルサーバに入っていない
依存関係がたくさんある
構築が大変
Rails2リリース後
・新しいフレームワーク
Sinatra しなとら
極めてシンプルなフレームワーク
→O/Rマッパ含まない
routing、フィルタ処理やテンプレート
■Merb+DataMapper まーぶ
・モジュール構造のフレームワーク
テンプレートエンジンやORMを選択
■ORM=DataMapper
・DataMpperパターンを提供
モデル=デーブルではない
実際は流行らない、実用にならない
Merb gets
merged into Rails3!
→ある種ライバルがくっついた
Merbから得た物
モジュール構造
PluginAPI
MatzRuby(CRuby)以外の環境(JRuby)での動作
Passenger
よくある質問=Railsってどうやって
Production環境で動かせばいいの?
Apacheに組み込めるmodule
一つのサーバで複数の
Heroku
Rails appをホスティングしてくれる会社はないの?
Jeroku
Engine YoedApp Cloud
New Eelic アプリ管理サービス
Rails 3で何が変わったのか?
Sexyになった 綺麗にかけるようになった
→具体的に
AcriveRecordでHash指定が多い
メソッドベース
可読性が上がる
Rails 3の特徴
フルスタックだがモジューラブル
ActiveRecordの新クエリエンジン(Arel)
→SQLベースに基本になったが、SQLでないのも別エンジンで。切り替えも楽になった。
新しいRouting engine
Plugin API
Bundler ばんどらー
→gem
●大きな問題
すでにあるRails 2のプロジェクトを
Rails 3にUpgradeする?
●Upgrade問題
なぜUpgradeするのか?
新しいバージョンは安定しているか
コードの書き換えはどの程度なのか
最新のRailsが一番いいRails
ある程度の安定性が保てる
マイナーバージョンを一つ飛ばしてUpgradeするのは大変
●バージョン追従
Rails3.0.xはRails2.3.xとの後方互換のためのメソッドが定義されているが
・Rails3の安定度
クラッシュしない (レアケースのみクラッシュ)
→Rails1はクラッシュよくしたが、プロセスkillすればいいじゃんだが、そうはいかない
APIの変更がない
パフォーマンス
・アーロンパッターソン(シアトル在住)
のこぎり
・パフォーマンス
モジュール構造になるとメソッド呼び出しが増え、どうしても遅くなる
特にRails3.0.0のActiveRecordが遅かった
2.5.3の5倍遅い!?
きれいなコードを書く傾向はあるが、パフォーマンスは気にしない人が多い
3.0.2で大きく改善
→2.3より速くなった
・ActiveRecordの構造
ActiveRecord
ActiveModel
Arel
SQLAdapter
●コードの書き換え
テストが書かれていないなら諦める
まずは、Rails 2.3.8にアップグレード
ここではつまずく様なら諦める
使っているプラグインがRails 3に対応しているか確認する
自分でプラグインを書き換えられるなら問題ない
「rake roots」コマンドで どのコントローラを呼び出しているかのリストが見られる
config/*
config/routes.rb
app/modules/*
RAILS_ROOTなどの設定部分を書き換える
Rails 2->3 Case Study Deltacloud
http://mo.mors.org/blog/node/31
Rails 3 Upgrade Handbook
おいやっくすの黒田さん
結論
新規アプリはRails 3で
テスト書いてないならUpgradeは諦める
PluginのRails 3対応度次第
ActiveRecordは後方互換を生かしつつ
●Rails 3の特徴
find allがwhereに
→すっきりメソッド
fin(:all)などもしばらくは使える
New routing
ハッシュをメソッドなどにしてすっきり
Bundler
依存するGemsのインストール
→コマンドひとつでインストール
バージョン管理
Gemfile
And more..
Erb、デフォルトエスケープ
ActionMailer
ActionController /
Rails3への期待
Plugin APIによって、バージョアップ
時のPluginの互換問題が少なくなる
モジュール化によって最適化が行いやすくなる
■Javascriptでスマホアプリオを作れる
Titanium Mobile
テストを書けば苦労をしない
@appcelerator_ja
今日の資料 http://bit.ly/co-rails3
●質問
1.8.7と1.9.7のどっちがいい?
→1.8を一応使ってる、1.9でも一応動く
Rails1のままのプロジェクトは弊害は?
→もう変えてない、工数をかけられないからほっといている
■Rails3の試験
吉田
取得率RoR 2.8%
取りたい人24.2%
1/19, 1/21