@a_matsuda
Asakusa.rb 主宰
Forkwell社外取締役
begin
読めば分かるようなことは話しません
本日のお題
2つのメジャーバージョンアップ
Ruby 1.9.3 → 2.0.0
Rails 3.2.9 → 4.0.0
Rake 10.0
RubyGems 2.0
RDoc 4.0
RSpec 3.0
など
空前のメジャーバージョンアップ期
心機一転参入のチャンス
(色々切り替えていかないといけない)
Ruby2.0
(Matz)長年の悲願
絵に描いた餅 燃料 人参 Perl6 (出ないと思われてた)
2003 1.8 その頃は偶数番号が安定版
2007 1.9 開発版(すごく不安定) →1.9.0は開発版 1.9.1が安定版でどうか(1.10.0とかは使いたくない)
2010.8 1.9.2 安定版
2011.10 1.9.3 安定版
2013.2.24 2.0リリース ダッシャアァァァ
2003にMatzがやりたかった2.0
Variable Scopes
Multiple Values
Range in Condition
Method Visibilities
Keyboad Argument (今回実装)
Method Combination (今回実装)
Selector Namespace (今回実装)
Optional Type
など
2.0リリースと20周年を同時にやりたい
1.9.3..2.0.0
1.8..1.9ほど 大きな変更はなく
本当に重い変更(=阿鼻叫喚)は1.9で済ませた
1.9.3との互換性を重視し、1.9.3からスムーズに移行できる 非互換な変更は2.1以降
(変な使い方をしなければおk)
新機能(後述)
パフォーマンス向上 VM GC require(←遅すぎるよ)
デフォルトスクリプトエンコーディング ついにデフォルトUTF-8になりました(たぶんこれが最大の非互換)
パフォーマンス向上
e.g Rails起動が2.0にすると倍近く速くなった →バージョン上げて困ることも少ないので、上げたら幸せになるかもしれない
VM GC require
貢献者
VM @ko1
GC @nari3
マジコメとは何だったのか
ユーザーにとっては必要な段階があった
String が encoding を持つという概念
CSI
internal encoding, external encoding
US-ASCII, ASCII-8BIT, BINARY
mojibake == 死
神展開
encoding なんとなく分かったでしょ?ということでデフォルトUTF-8にしました(成瀬さんすげえ)
M17Nについて詳しく
その他
Refinements
など
Rails 4.0
2004.07 公開
2005.12 1.0
2007.12 2.0
2010.8 3.0
2012-2013 4.0
メジャーバージョンアップに伴う新パラダイム(業界の常識を覆すのばっかり)
1.0 DRY, CoC
2.0 RESTful
3.0 Modularity
4.0 特にない
「新機能はいろいろ」
「新パラダイム」は特にない
基本的には3.2の正常進化形
4.0にしたきっかけは、1.8サポートを終了したから?2.0に引きずられる形で?
バージョン番号なんて飾りです
Railsは絶え間なく変化する1本の線路で、バージョンの区切りに意味はない
なので、新機能を細かくみるより、4.0.0の大きな流れを把握するといいかもしれない
Railsの新バージョン番号戦略
新バージョンで使えなくなる機能はいきなり消さない
1個前のバージョンで deprecation warningを出す
次のバージョンで消す (とはいえ、3.2.9から4.0.0でいきなり消えるものもあるよ)
4.0.0の特徴
最初から安定版を指向
4.0.0が出た瞬間から安心して使える
3.2.xとの互換性を重視
最近の潮流
Modern
Ruby '>=1.9.3'
APIのさらなる洗練
あまり使われていない機能をもりもり外部Gemへ(古いものをどんどん捨てていく)
APIもいろいろあるぜ
PATCH verb (Get Post PutのPutよりもPATCHを使ったほうがいいんじゃない?)
Active Recordがすごい変わってれぅ
RIP
Ruby 1.8 support
vendor/plugins
ActiveResource
AR.find :all
dynamic finders
ActiveRecord::SessionStore
Rack::Cache(Cookpadで問題が発生したやつ)
Speed
パフォーマンスの向上
1.9移行に伴うコードのスリム化(とっても読みやすくなった)
Sprocketsのprecompile
threadsafe(スレッドに注意したアプリを書こうぜ)
AS::Queue (タスクの遅延処理するらしいけど、使うことあるんだろうか)
TurboLinks (DHHが入れた機能で、Ajaxモドキ)
Security
Mass Assingment Security → Strong Parameters
(ロシア人がRailsをクラックした部分を改造してれぅ)
Real-time web
AC::Live(@tenderlove RealtimeSalami)
ActiveRecord
メンテナー1 @tenderlove
メンテナー2 @jonleighton
PostgreSQL
Social coding
2721 peopleがコミッター
南米
@josevalim
@spastorino
コミッターの第3世代が南米からやってきてれぅ
2013にRubyKaigi復ッ活ッ!!するときに@josevalm来るよ
Ruby2.0の話は?
Ruby2.0 on Rails
RubyConfでしゃべったやつを見てくれよ
https://speakerdeck.com/a_matsuda/ruby-2-dot-0-on-rails
まとめ
The new Ruby world is coming
People ar making the Ruby world better everyday
Meet the people (=the community) and say "Hi!" to them! <3 <3 <3
直接会ってありがとうと言えばいいんじゃないだろうか。
追記
講演のスライドがここにあるので、参考にしたらいいと思います。
Ruby 2 and Rails 4 // Speaker Deck