Ruby Freaks Lounge

第13回 モジュラーなWebアプリケーションフレームワーク,Merb

この記事を読むのに必要な時間:およそ 2 分

はじめに

MerbはRubyで記述されたWebアプリケーションフレームワークです。2006年の10月18日にEzra Zygmuntowicz氏によって最初のリリースが発表されました

RubyでWebアプリケーションフレームワークといえばRuby on Rails(以下Rails)が有名ですが,Merbは以下のような特長を備えています。

  • ActiveRecord, DataMapper, SequelなどのORMを自由に選べる
  • jQuery, PrototypeなどのJavaScriptライブラリを自由に選べる
  • HAML, ERBなどのテンプレートエンジンを自由に選べる
  • 単一の機能を実現するために作られた再利用しやすいプラグイン群がある
  • 軽量でシンプルなコア
  • プラグイン機構としてRubyGemsを使っている
  • ControllerとViewのコンテクストが同じ
  • シンプルで強力なルーティングの仕組み

Merbの特徴は,モジュラーであることです。例えばビュッフェ形式のように,自分の好きな道具を選んで利用することができます。

また,Railsより後発のプロジェクトということで,全体的にRailsの問題点を克服するような設計となっています。最近では,Railsの次期メジャーリリースでMerbとの統合を行うという発表がなされるなど,Merbの優れた特長の多くがRailsに逆輸入される状況になっています。

インストール方法

では早速,Merbをインストールしてみましょう。Merbをインストールする方法としては,RubyGemsを使うのが一番簡単です。

以下のようにgemコマンドを使ってインストールしてみましょう。

% sudo gem install merb

merbというパッケージは,Merbが依存しているgemを一括してインストールするためのバンドルGemになっています。

執筆時点の最新バージョン(merb-1.0.11)では,49個のGemがインストールされます。Merbを構成している個々のコンポーネントは,すべて独立したgemとして提供されています。Merbでは,プラグインについてもすべてGemで提供する事になっており,バージョン管理の煩雑さを回避する事に一役買っています。

Merbを使ってみる

では,実際にMerbを使ってWebアプリケーションを作ってみましょう。以下のようなコマンドを実行すると,Merbアプリケーションのひな形を生成することができます。

% merb-gen app my_app_name

このmerb-genというコマンドは,templaterというGenerator生成ライブラリを使って実装されています。merbでは,controllerやtestなどのひな形を使うときには,このmerb-genコマンドを利用します。templater自体,非常に汎用的で優れたGeneratorフレームワークなので,コードジェネレータを作りたいときには重宝します。

アプリケーションのひな形が生成されたら,ひな形のディレクトリに移動してWebサーバを起動してみましょう。以下のコマンドでWebサーバが立ち上がり,4000番のポートでアクセスできるようになります。

% merb

では早速,http://localhost:4000にブラウザでアクセスしてみましょう。以下のような画面が表示されます図1)。

図1 Merbのエラー画面

図1 Merbのエラー画面

この画面は,リクエストされたPATH '/' に対応するルートが定義されていない場合に表示されるエラー画面です。

Merbには,発生した例外に対応するエラーページを表示する機能が最初から備わっています。

それでは,'/' へのリクエストに応答するために,以下のコマンドでTopコントローラのひな形を生成してみます。

% merb-gen controller top

     [ADDED]  app/controllers/top.rb
     [ADDED]  app/views/top/index.html.erb
     [ADDED]  spec/requests/top_spec.rb
     [ADDED]  app/helpers/top_helper.rb

これで,Topコントローラが生成されました。コントローラのファイルは,Railsと同様にapp/controllersディレクトリに設置されます。

以下は生成されたapp/controllers/top.rbファイルです。

リスト1 app/controllers/top.rb

class Top < Application

  def index
    render
  end

end

Applicationというクラスは,全てのコントローラの基底クラスとなるコントローラです。

この辺りはRailsと似ていますが,Railsとは違って,コントローラの名前としてTopという短い名前が使われています。メソッド名やクラス名に対するミニマリズムは,Merbの個性的な一面です。

次に,PATHとコントローラを結びつけるために,ルーティングの設定を行います。ルーティングの設定は,config/router.rbの中で行います。ファイルの最後の方に以下のような記述を加えましょう。

リスト2 config/router.rb

Merb::Router.prepare do
  # Change this for your home page to be available at /
  match('/').to(:controller => 'top', :action =>'index')
end

著者プロフィール

瀧内元気(たきうちげんき)

あたらし物好きのプログラマ。
2005年よりRuby on RailsやMerbの啓蒙活動に手を染める。

URLhttp://blog.s21g.com/genki

コメント

コメントの記入