Rails and Merb Merge
Rails and Merb Mergeの超簡易和訳.
Rails と Merb の統合
今日は Ruby ウェブアプリケーションフレームワークの歴史にとってかなり重大な日となった.大きな衝撃を持ってみんなと共有したいと思っているニュースはすぐ見つかるだろうけど,私はその状況を説明したいと思う.
技術的や具体的な話に入る前に,Merb コミュニティーのメンバーがもっとも重要であり,それなくしては何もできなかったということを明記しておきたい.
Merb は公開された常に変化するプロジェクトであり,いいアイデアは時にコアメンバーではない人たちから出されることがある*1.今までやって来たように,みんなのアイデアやフィードバック,苦情も将来に渡って 100% 歓迎する.私は,オープンコミュニティや,より一般的にはオープンさ自体が途方もない価値をもたらすと信じていて,これらが Ruby の将来を導きつづけると頼りにしている.
ニュースについて:今日になって,Merb チームは Rails コアチームとともにあるプロジェクトに参加することを決めた.計画は Merb でなされた違いをマージする事です.これは Merb ユーザに説得力のあった利用事例に対して,Rails 3 が使えるようになることを意味する.つまるところ,Merb 2 は RAils 3 となる.
これは何を意味するのか?
- Rails はよりモジュール化される.rails-core から始まり,特定のコンポーネントの取捨選択ができるようになる.我々は Rails を疎結合にすることにフォーカスを当てることで,各コンポーネントを入れ替えたときに,その他の部分に影響を与えないようになる.これはまさに Merb が "modularity" としつこく言って内容そのものだ.
- 我々は Rails の性能を改善する.これは性能的に優位なアーキテクチャー的な決定によってもたらされる.このプロジェクトはベンチマークアプリケーションも作成する予定で,それによってどのように最適化すればいいかを明確に知ることができるでしょう.
- Rails 3 では,テストスイートがある公開 API が定義される.これは Merb との大きな違いの一つだ.ユーザやプラグイン製作者がより明確に,さらに安定した API を使うことができるようになる.これによって,リリースがあるたびにプラグインが動かなくなることはほとんどなくなるだろう.
- Rails は「コア」バージョンだけで動くように作り直される(現 Merb の core generator のような感じ).それ以外の部分はすべてモジュール化され,それぞれのアプリケーションに応じたパーツのみを選択して使えるようになる.もちろん Rails はまだデフォルトでは「フル」バージョン(Merb は 1.0 から)から始めることもできるが,Merb と一緒に Rails を使いたい人には簡単に使えるようになる.
- Rails は OR マッパーとして DataMapper や Sequel を簡単に使えるように変更される.デフォルトの OR マッパーは ActiveRecord のままだが,驚くほど簡単に他に影響を与えずに OR マッパーを変更することが可能になる(もちろんある程度可能な限りだが).
- Merb は早期に取り入れているが,Rails は Rack を取り入れている最中であり,これは Ruby コミュニティでの本当に楽しい開発であり,これによってモジュール化を推し進め,アプリケーション間のロジックを共用可能にすることができる.
- 一般に,我々は Rails にはない Merb の特徴について調べ(もっともわかりやすい例はより強固なルーティングだ),そしてそれを Rails に持ち込む.
どうやればいい?
Rails との作業はすぐに始まり,当面の間は Merb でのバグフィックスやその他大きな問題も継続する.また Rails 3 へのいこうがしやすいような特別にデザインされたバージョンをリリースする予定でいる.
特に,Merb 1.x と Rails 3 の間にある変更点を開発者がトラッキングしやすいように,廃止予定告知のメッセージや移行用の仕組みが組み込まれた Merb をリリースする.徐々に Rails 3 に近づくように,段階的にリリースされることと,Merb のパーツ(とりわけヘルパー群)は将来の摩擦を避けるために Rails 3 で動作するようになることが期待される.
完全に明かになるには:Merb プロジェクトを放棄したわけではない.タイムリーなバグフィックスと未来への展望を心待ちにしている,多くのアプリケーションが Merb で動いている.もしいま Merb を使っているなら,そのまま使っても大丈夫.もし Merb 使おうと考えているなら,使いましょう.あなたは立ち止まる必要は無く,我々はアプリケーションがお手上げ状態になるようなことは決してしません.
もし Merb について学び終わったのであれば,その知識を Rails 3 に注ぎ込んでくれれば問題無いと保証します.Engine Yard では,Rails 3 が登場するまでは Merb を内部アプリケーションで使いつづけるが,アプリケーションが誰にとっても順調に動作することを確認するために使いつづけるつもりだ.そんなに大きな変更はなく,アプリケーションを1から作り直すようなことも起こらないだろう.
なぜかって?
上記のを読んだのだったら,Merb と Rails チームの間にもはや同意しない点はもはやないことがわかるでしょう.Merb がでてきてからだいたい2年ぐらい経って,実アプリケーション(Yellow Pages/SproutCore/http://www.powerset.com//http://defensio.com/)で我々のアイデアを証明してくれた.この思想の集約があることで,複製する努力と,他と戦うための時間とエネルギーの浪費を続けても,得るものがあったようには見えなかった.
素晴らしいものを作ることが,Merb コミュニティを認めさせるのに重要であると,私は考える.いま共にあり,そしてこれから Rails 3 に向けてお互いに助け合えることを切に願っている.
Rails は,(Merb のコアチームメンバーでエヴァンジェリストだった)Matt AimonettiとRails のエバンジェリスト数人とで,新しいエヴァンジェリストチームを立ち上げた.このチームの責務は,コミュニティを助けることだ.彼らの仕事はそのうちみんなの耳にも入るだろう.
これはクレイジーに見える!いままでにこんなことあったか?!
面白いことに,あった.同じような状況は,数年前に Struts の開発者たちが対面している.彼らは非常に人気のあるフレームワークである Struts を作っていたが,非常にアクティブな開発者グループが,同じアイデアを面白い方法で,Webwork と呼ばれるフレームワークとして世に送り出していた.ちょうど我々が Rails の実装を改善できると信じているように,Webwork の開発者たちは彼らのプロジェクトを「Struts は正しいことをした」と見ていた.
最終的に Struts と Webwork の開発者は,別々に開発するよりも共に強くある方がよいという結論に達し,プロジェクトをマージすることにした.何が Struts 2 になったかと言えば実際には Webwork 2 なのだが,2つのコミュニティが共によりいいものとして作り上げたのだ.
私はこの統合が,Merb の勢いがより多くの人の手に渡り,そして私たちのサービスのすべてを提供することをになると信じている.未来が待ち遠しい.
追記
- Merb にかかわるもっとも個人的に満足した仕事の一つは,MRI 以外の Ruby 実装で Merb をちゃんと動くようにしたことだ.かなり前になるが,Merb は JRuby で MRI よりも速く動作する.この見識を Rails に持ち込めるのと,Rails をより「速い」言語でのフレームワークと性能面で完全に争えるようにすることを,楽しみにしている.
- Merb トレーニングはまだやってるよ!出席者の多くには話したし,同じように Integrum Technologies で我々のパートナーにも同じように話したけど,この結合にはみんな興奮していた.今回の結合で,このトレーニングは基本的に Rails 3 の将来的な特徴にフォーカスを当てたものになったので,今後の競争に先手を打ついい方法になるだろう.まだいくつかの席は空いているから,来たい人は是非参加してくれ!
*1:It’s gotten where it has because of the community, and the community will get us even further in the future.