Merb 1.0の初のリリース候補版(Release Candidate 1; RC1)が登場した(リンク) 。Merbの目標は、そのWebサイトに記述されているとおり(リンク)、「コア内のあらゆるものを使ってモノリシックライブラリを生成しようとする」のではなく、最小限でありながらプラグインによって拡張できる強力なコアを提供することである。
InfoQは、Merbの保守担当者であるYehuda Katz氏(リンク)にインタビューし、Merbの概要について聞いた。
Merbについて最も重要なことは、ほとんど前提を置かない強力なコア機能セットを提供することに焦点を合わせるということです。それに加えて、きめ細かく削除できるデフォルトセットを追加しています。我々とは異なる前提を置きたい場合にもこのデフォルトが絡んでしまうことなく、ごく簡単に削除できるようにすることに、多くの時間を費やしています。
これによって、新しい手法やパラダイム(たとえば、クラウドコンピューティング、JavaScript技術の変化、Rubyのデータベースサポートの改善など)に適応することが、はるかに容易になります。
我々の見解では、MerbとRailsの最大の違いは、Merbは我々が提供するデフォルトからの極めてきめ細かな逸脱を信用するのに対し、Railsはかなり大きな逸脱の決定を必要とすることです。Merbスタックはレゴブロックで作ったスタックといった感じで、Railsスタックはデュプロブロックで作ったスタックに近いといえます(前提から逸脱する場合、多くのことから逸脱することになります)。
そういう訳で、MerbはConvention over Configuration(設定よりも規約)というRailsの考えに100%同意しています。我々は、Merbを使用する開発者が、類似した独断的な前提セットを用いてすぐにでも実行できることを望みます。
フレームワークを切り替えるには通常、時間と労力がかかる。したがって我々はMerbがRails開発者の移行をどのように手助けするのかを知りたいと思った。
良い知らせは、今までどおりご自分のActiveRecordモデルを使用できるということと、コントローラとビューが比較的簡単に移植を行えるくらい類似しているということです。とは言っても、MerbとRailsの間には構文上および概念上の違いがあるため、今月末の最終的なMerb 1.0のリリースまでにMerb wikiに相違のリストを掲載する必要があります。
Merbに関する近刊書も2冊ある。
私はManning出版のMerbに関する本(リンク) を執筆しており、すでにこれはMEAPプログラムを通じて入手可能になり始めたところです。また、Foy SavasはAddison Wesley出版の本を執筆しています(リンク)。
1月のInfoQのインタビューでは(参考記事・英語)、「セントラルプラグインサイト」について述べられた。それに関する状況はどうなっているのか?
1.0リリースの一環として、Merbプロジェクトに第一級市民(first-class citizens)として、認証、キャッシング、例外通知などの多数の共通プラグインを含めることが必要です。ある時点で、セントラルプラグインレポジトリを再び取り上げるかもしれません。
Yehuda氏は最近Merbサーバー(リンク)の改善についてブログに書いていたので、それに関して詳しく説明してもらった。
MerbにもRailsにも、自らを起動してページを提供するメカニズムがあります。Railsでは、このメカニズムはスクリプト/サーバーです。Merbでは、merbコマンドです。1.0については、Merb 0.9では非常に不足していた機能を追加するためにサーバーに関するmerbのバージョンを大幅に改善しました。
いくつかの例を挙げます。
将来、我々は、merb配備ソリューションをさらに改善するつもりです。
- すでに使用している特定のポートに結合するようにMerbサーバーのクラスタを起動しても、Merbをクラッシュさせることはありません。代わりに、Merbは通知を出し、ポートが利用可能になるのを待機します。このため次の配備ソリューションが可能になります。 (1) リモートサーバー上で新しいコードを更新する; (2) 新しいmerbクラスタをロードする; (3) 古いクラスタを潔くkillする。
- gemを追加していない、またはinit.rbを修正していない場合、生産時にコードを高速、簡単に間違いなく再ロードできるようになりました。単にmerbを実行します。問題のディレクトリに高速で再配備し、すべてのコードが再ロードされます。
- merbワーカープロセスはkillされると(kill -9を介してですら)、即座に再発生します。このため、ダウンタイムについて心配することなく、肥大化したプロセスをmonitにkillさせることが可能になります。
1.0はリリース間近になったが、Merb 2についてどのような計画があるのか?
計画は、今後1年の間にいくつか1.xリリースを公開し、2.0に予定される機能をプレビューできるようにすることです。新機能すべてを含んだ大きな2.0リリースを投下するのではなく、1.xリリースを、2.0機能に慣れるために使用できるリリースとして扱い、また、Agileの精神で、追加的にMerb 2.0を開発する方法として扱います。
Merb 2.0の大きな話題となるのは、Merbでさらに容易に起動し実行できるようにPythonコミュニティのフレームワークから、および他のプログラミング言語から学習し、迅速なプロトタイピングのサポートが改善されることになるということです。我々は、JavaScriptライブラリとのさらなる統合を提供し、jQueryなどのライブラリとそれに関連したプラグイン、CSS、およびイメージを可能な限り容易にインストールできるようにする予定です。
我々は、Merbアプリケーションのメモリ使用をさらに最適化し、merbプロセスのクラスタのオーバーヘッドを低減し、そして恐らくmerbプロセスのクラスタをオンザフライで拡大・縮小できるようにするために、Merbサーバーをさらに改善する予定です。
Merb 1.0は数週間のうちにリリースされる見込みだ。MerbのWebサイトにインストール方法が掲載されている(リンク)。