まつもとさんもお気に入りという Merb フレームワークの 1.0.0 がリリースされた。これは Rails 一辺倒だった時代から、複数のフレームワークが入り乱れる時代への切り替わりを告げる、大変重要なリリースだと思っている。

しかし日本のニュースサイトでは何の記事にもなってないようで、大変残念だ (InfoQ は翻訳記事を載せてくれるだろうけど)。

仕方ないので、多少なりとも日本で Merb が盛り上がるように、海外の優れたブログの投稿を翻訳してみた。これを読めば、Merb がいかに期待されているか、わかると思う。

翻訳して初めて知ったけど、Django の slice という機能が Merb にも搭載されているそうだ。しかし「Django スライス」でぐぐっても、Python のスライス (list や tuple の要素を取り出すための言語機能) しかヒットしなくて、よくわかんなかった。あとで調べてみる。

あと、Merb コアチームは来年の RubyKaigi で発表を行ないたいと言っています。日本の RubyKaigi で発表することで、日本を含めたアジアでの市場にアピールしたいと考えているようです。RubyKaigi の中の人でここを読んでくださっている方がおられましたら、ぜひ Merb コアチームメンバーの招待をご検討ください。

なお誤訳の指摘はコメントでお願いします。気を使ってメールにする必要はまったくありません。

Merb 1.0 released

Posted on November - 9 - 2008

http://merbist.com/2008/11/09/merb-1-0-released/

On November 7, Yehuda Katz gave a talk at RubyConf and made 3 major announcements:

11月7日、Yehuda Katz は RubyConf で 3 つの重要なアナウンスを行なった:

Merb 1.0 released! (Merb 1.0 がリリースされたこと!)



The first announcement is pretty substantial. Engine Yard has been financially supporting Merb by letting some of their staff work on Merb, fly them to different conferences and sponsoring events like Merb Camp. Engine Yard didn't yet announce the price structure but having the option for enterprise level support for Merb is just awesome.

1 つめのアナウンスは、かなり重要な意味を持つ。Engine Yard は従業員を何名か Merb に従事させたり、様々なカンファレンスへの旅費を出したり、Merb Camp のようなイベントのスポンサーになったりと、金銭的に Merb をサポートし続けていた。Engine Yard はまだ値段の詳細については公表していないが、エンタープライズレベルのサポートが Merb でも用意されるというのは、すごいことだ。

John Nunemaker made an interesting comment during RubyConf Pivotal Party. Something special about Merb is that it was designed to fit the needs of an audience instead of trying to create a series of tools to build a specific type of website. Having Engine Yard help to finance Merb dev and offer support is very reassuring. It's something already done by many other OSS projects such as Ubuntu, MySQL etc…

John Nunemaker は RubyConf Pivotal Party で興味深いコメントを残している。Merb で特に重要なことは、ある種の Web サイトを構築するための一連のツールを作成することを試行するかわりに、聴衆が必要とするものにフィットするよう Merb が設計されていることだ。Engine Yard が Merb の開発を金銭的に援助し、サポートを提供するのは、大変心強い。同じようなことは、すでに Ubuntu、MySQL、その他多くの OSS プロジェクトでも行なわれている。

The second announcement Yehuda made was about Merb Training. I'm probably pretty biased since I am at the origin of this project. I know for a fact that a lot of people were waiting for 1.0 to get started with Merb. We are also working on getting more documentation out, and 3 books are coming up. Still, the best way to learn is to sit down with people who know Merb who can teach you the way its intended to be used.

Yehuda による 2 つめのアナウンスは、Merb のトレーニングに関してである。恐らく私はバイアスがかかっているだろう。なぜなら私〔訳注: Matt Aimonetti〕はこのプロジェクトに最初から関わっていたからだ。私は、大勢の人が 1.0 の登場を待ってから Merb を始めるつもりであったことを知っている。我々はドキュメントをより充実させることにも努力しているし、3 冊の本が出版予定である。それでも、学習するのに最適な方法は、Merb をよく知っている人から、じっくり腰を据えて教えてもらうことである。

Training will allow you to benefit a lot from being with other people who also share the same desire to master Ruby's most powerful and flexible web framework.

トレーニングは、Ruby における最もパワフルで柔軟な Web フレームワークである Merb をマスターしたいという人たちと一緒にいるだけでも、受講者にとっては大変有益であろう。

What's also really exciting is that Yehuda Katz, Merb's lead developer, agreed to be a tutor for the course. I can't imagine a better way to learn. Check this page for more information about the next training session or get in contact with me if you want to organize a training session for your company.

しかもなんと、Merb の主任開発者である Yehuda Katz がトレーニングコースの講師を務めるということだ。これ以上、学習するのに最適な方法はないだろう。次回のトレーニングセッションについての詳細はこのページをチェックしてほしい。あるいは私のほうに連絡をくれれば、自社でトレーニングセッションを開催することも可能である。

Finally, the big news was the announcement of Merb 1.0!

最後に、ビッグニュースとして、Merb 1.0 がアナウンスされた!

Merb 1.0 went through 5 release candidates and was finally marked as final. In the last few months, the Merb team worked hard to make things easier for people who want to get started in no time.

Merb 1.0 は 5 回のリリース候補を経て、ついに最終リリースとなった。すぐに始めたいという人のために、何事もより簡単にできるよう、Merb チームはここ数ヶ月のあいだ懸命に働いた。

Let's quickly look at why Merb is awesome:

Merb がどうすごいのか、簡単に見てみよう:

Merb is Modular. Merb is not a monolithic framework. You can pick and choose what you need. Create a 1 file app "a la Sinatra" or a rich web app "a la Rails". Merb has many components. Only requires the ones you need and save precious resources. (Merb doesn't believe in 1 size fits all)

Merb はモジュール化されている。Merb は一枚岩 (monolithic) なフレームワークではない。必要なものだけを取り出して選ぶことができる。アプリケーションを 1 ファイルで作る "Sinatra チック" にしたり、機能が豊富な "Rails チック" な Web アプリも可能だ。Merb は多くのコンポーネントを持っている。必要なものだけを読み込むことで、貴重なリソースを倹約してくれる (Merb は「1 つですべてに対応する」という思想を信じてはいない)。

Merb is agnostic (kinda). Because people have different needs and different believes, Merb won't force you to use one ORM or another. Same thing goes for the template engine or for the JavaScript library you want to use. ActiveRecord, DataMapper, Sequel, RelaxDb, Haml, Erb, Prototype, jQuery… choose which one you want and change whenever you want.

Merb は不可知論者 (またはそれに類するもの) である〔訳注: 不可知論 (agnostic) とは、すべてを知りうることはできないという考え方みたい〕。人にはそれぞれ異なる要求があり、異なる考え方を持っている。Merb は開発者に特定の ORM を強要することはしない。同じことはテンプレートエンジンや JavaScript ライブラリにも言える。ActiveRecord、DataMapper、Sequel、RelaxDb、Haml、Erb、Prototype、jQuery… 自分の使いたいものを選ぶことができるし、また必要とあれば別のものに変更することも可能である。

Merb can be opinonated. Merb offers a default stack using DataMapper and jQuery, authentication, exceptions and caching setup for you. However, creating your own stack is dead easy. As a matter of fact, the guys at yellowpages.com are using Merb and were talking about creating their own stack using Sequel.

Merb は 頑固でもある 自分なりの考えも持っている。Merb は、〔訳注: 特定の ORM や Template system に縛られないとはいえ、〕DataMapper と jQuery、認証、例外処理、キャッシュ機能といった機能を含んだデフォルトスタックを提供している。しかし、自分自身でスタックを作成するのは非常に簡単である。実際、yellowpages.com の中の人は、Merb を使っており、Sequel を使った独自のスタックを作成したことを話していた。

Merb let you reuse your code. Borrowed from Django, Merb has something called "slices". Slices are mini apps you can run standalone or mounted within another app. A slice is a great way to write code you can reuse. Unlike plugins which extend the framework features, slices are a way to provide encapsulated content. (David Chelimsky, RSpec's author and maintainer actually said that slices where his favorite feature in Merb 1.0)

Merb は、利用者のコードの再利用を促す。Merb には、Django から拝借した "スライス" なるものがある。スライスは、単体で実行できるミニアプリであると同時に、別のアプリケーション内にマウントすることもできる。スライスは、再利用可能なコードを書く方法として大変優れている。フレームワークの機能を拡張するプラグインとは違って、スライスはカプセル化されたコンテンツを提供する方法である。(RSpec の作者でありメンテナである David Chelimsky, は、Merb 1.0 の機能ではスライスがいちばんお気に入りだと言っていた)

Merb has an API. You might be wondering why having an API is awesome. Well, the truth is that the Merb Team spent time marking methods public, which are guaranteed to not break until the next major release (any change to the public API will be well documented). There is also a plugin API meaning that plugin developers won't have to worry about upgrades if they stick to the plugin API.

Merb は API を持っている。API を持っていることがなぜすごいことなのか、疑問に思うかもしれない。どういうことかというと、次のメジャーリリースまで仕様が変わらないことが保証されたメソッドを public にすることに、Merb チームは時間を費やした (public API に対してはどんな変更もきちんとドキュメント化される予定)。プラグイン API も用意され、プラグイン開発者はプラグイン API を使っている限りはバージョンアップについて心配する必要がなくなった。

Merb is fast. Even though Ruby the language isn't really fast and contrary to popular opinion, Ruby for the web is one of the fastest solutions out there. (Even Rails is way faster than all the mainstream PHP frameworks) And that's what Merb is proving by being one of the fastest web framework available on the market. Jason Seifer will be interested to know that Merb isn't scared to scale As a matter of fact, Merb is going to scale even better in the next few months as we are planning to integrate Swiftiply and do some totally awesome stuff to spawn/reap workers based load. (more about that in few weeks).

Merb は高速である。Ruby という言語そのものはそう速くはないが、一般的な意見とは裏腹に、Web アプリケーションで Ruby を使うことは最高速のソリューションのひとつである (Rails ですらメインストリームの PHP フレームワークより高速である)。また Merb は市場における最高速の Web フレームワークのひとつである。Jason Seifer は Merb のスケール性が高いことについて知りたいと思うだろう。実際、Merb はよりスケール性が高くなるであろう。なぜなら、次の 2、3 ヶ月で Merb に Swiftiply が統合されることが計画されており、ワーカーの起動と収穫 (spawn/reap) におけるベースロードについて大きな改善がなされる予定だからだ。〔訳注: Swiftiply は clustering を行なう proxy server であり、Mongrel に対応している〕

Matz likes Merb. Ruby's daddy, Yukihiro Matsumoto told us he likes the flexibility of Merb and the fact that the framework doesn't create a DSL on top of Ruby. He even told us that he's going to introduce his company to Merb! We were obviously very honored and for us, it validates months of work by dozens of contributors. Here is a transcript of Matz comments about Merb and the Ruby web world:

まつもとさんは Merb がお気に入りだ。Ruby の父であるまつもとさんは我々に、Merb の柔軟性と、Merb が Ruby のトップに DSL を作らないということが、お気に入りの理由だと語ってくれた。まつもとさんはまた、自分の会社に Merb を導入するつもりだとも言っていた! これは大変名誉なことだし、我々にとっては多くの貢献者とともに行なってきた数ヶ月の努力が正しかったという証明でもある。Merb と、Ruby での Web 界についての、まつもとさんのコメントをここに紹介する:

“Everyone outside of the Ruby community understands that we only have 1 web application framework, named Rails, but it's not true in any sense. We have several post-Rails frameworks, which is very good, and I believe in diversity.

“ Ruby コミュニティの外にいる人たちはみな、私たちが Rails という 1 つの Web アプリケーションフレームワークを持っていることを知っています。 Ruby コミュニティの外野にいる人たちは、Ruby にはフレームワークが 1 つしかない、つまり Rails しかないと聞いています。しかしどんな意味においても、それは真実ではありません。ポスト Rails を狙うフレームワークは複数存在し、それらはどれもよくできていますし、また私は多様性を信じています。（追記: 2008-11-23修正）

Merb has a bright future for the people who are not satisfied by the fixed ways in Rails. I think that that Merb will give users more freedom in a Ruby-ish way of programming.

Rails の固定されたやり方に満足していない人にとっては、Merb は前途有望です。私が思うに、Merb は Ruby らしいプログラミングでより大きな自由をユーザに与えてくれるでしょう。 I'm not really a web-guy, so i don't judge any of them [frameworks], but Rails does some kind of drastic change on the language itself like in Active Support. But Ruby has its own culture and technological atmosphere in the language so that keeping that makes me feel easier.”

私自身は Web 開発者ではありませんので、どのフレームワークを判定するということはしません。ただ、Rails は ActiveSupport のように言語そのものに大きな変更をしてしまいます。しかし Ruby は、Ruby 自身の文化と、技術的な雰囲気が言語にあり、それを壊さないということが、私にとっては気持ちいいことです。”

Merb is memory friendly and therefore cheap. Merb is Open Source and free, but hosting an application costs money. Merb memory footprint is tiny compared to other solutions and that means that hosting will cost you less. (interesting when you think that EngineYard help developing Merb :p) Using Ruby Entreprise Edition, you will even use less memory, meaning you save even more money By the way, Matz told me this morning that the Ruby core team is working on their own solution for a better GC and it should be available soon. (Ruby 1.9.x)

Merb はメモリに優しく、結果として安くつく。Merb はオープンソースであり無料である。しかしアプリケーションのホスティングにはお金がかかる。Merb で必要なお金は他のソリューションに比べて実に小額であり、これはホスティングによる費用が少ないことを意味する (〔訳注: ホスティングサービス会社である〕EngineYard が Merb の開発を支援していることを考えると、興味深い :p)。Ruby Entreprise Edition を使えば、使用メモリはより少なくなり、よりお金を節約できるだろう。ところでまつもとさんは今日の午前中、私に Ruby コアチームは独自で GC の改良を進めており、まもなく利用可能になるだろうと語ってくれた (Ruby 1.9.x)。

Merb source code is easy to read. Because Merb code is modular and because Merb has a concept of an API, reading Merb's source code is pretty easy. On top of that, Merb itself uses RSpec making tests really easy to read and understand. What's great when the source code is easy to read is that developers can quickly check the source code if they want to understand how things work. We also get better patches from contributors and we keep our code clean. We believe in the theory of the “Broken Windows” by James Q. Wilson and George L. Kelling:

Merb ソースコードは読みやすい。Merb のコードはモジュール化されており、また Merb は API の概念を持っているため、Merb のソースコードを読むのは簡単である。それに加えて、Merb 自体が RSpec を使ってテストを読みやすく理解しやすいように作られている。ソースコードが読みやすいということは、開発者が中の仕組みを理解したいと思ったときに素早くソースコードをチェックできるということであり、大変重要なことである。また貢献者からもよりよいパッチを得られるので、コードをきれいに保つことができる。我々は、James Q. Wilson と George L. Kelling による "壊れ窓" 理論を信じている:

“Consider a building with a few broken windows. If the windows are not repaired, the tendency is for vandals to break a few more windows. Eventually, they may even break into the building, and if it's unoccupied, perhaps become squatters or light fires inside.

“ビルの窓が何枚か壊れているとしよう。もし窓が修理されなかったとしたら、悪意ある者がもう何枚か窓を壊すようになるでしょう。最終的には、彼らはビルに侵入し、もしビルが使われてなければ不法居住者になったり、放火したりするでしょう。 Or consider a sidewalk. Some litter accumulates. Soon, more litter accumulates. Eventually, people even start leaving bags of trash from take-out restaurants there or breaking into cars.”

また歩道を考えてみましょう。ごみが散らかっていたとします。しばらくすると、別のごみが増えています。最終的に、人々はレストランからのテイクアウトのごみを歩道に捨てたり、車に侵入するようになるでしょう。”



I guess I could keep on going with other reasons why Merb is so awesome, but let's keep some for another post :)

Merb がなぜそれほどすごいのか、その理由をもっと挙げることはできるけど、それは別の投稿のために取っておくことにしよう :)

In conclusion, on behalf of the Merb core team, I'd like to thank all the Merb contributors, Ezra Zygmuntowic (creator of Merb), Yehuda Katz (Merb lead developer), Matz (Ruby creator) and finally DHH & the Rails core team. One more thing:

まとめとして、Merb コアチームを代表して、私はすべての Merb 貢献者に感謝の意を表したい: Ezra Zygmuntowic (Merb 作者)、Yehuda Katz (Merb 主任開発者)、まつもとさん (Ruby 作者)、それから DHH と Rails コアチーム。どうもありがとう。あともうひとつ:

$ sudo gem install merb $ merb-gen app my-awesome-merb-app