万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

2011年は、Rails3を使おう!〜masuidriveに学ぶ

http://atnd.org/events/11360

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
 →JavaScriptAndroid開発の会社
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