アンケートご協力のお願いgihyo.jpでは,2010年度に向けて豪華プレゼントが当たる読者属性アンケートを実施しております。ご協力ください。

gihyo.jp » DEVELOPER STAGE » 連載 » Ruby Freaks Lounge » 第13回 モジュラーなWebアプリケーションフレームワーク,Merb

Ruby Freaks Lounge

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

はじめに

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

コメント

コメントの記入

パスサポ

多数の情報処理技術者試験対策書籍の発行実績を誇る技術評論社がお届けする,資格試験合格サイト「めざせ! 情報処理試験 パスサポ」が開設されました。

ピックアップ

サクセスストーリーに続く,快適サーバー運用管理のヒント!

データの増大,煩雑な管理,システムダウン,セキュリティなど,迫りくる課題からシステム管理者の負担を軽くするポイントを解説します。

gihyo.jp インフラエンジニア情報局

ネットワークやITにかかわるあらゆる業種で必要とされるインフラエンジニアに向けた技術情報や心構え,その魅力について多角的に紹介。

テストエンジニア ステーション

いま,ITに関わるあらゆる開発業務で注目されつつあるテスト系エンジニアをターゲットにしたコンテンツサイトを展開します。

一行クイックアンケート

gihyo.jpで取り上げてほしいネタは?

※検索はページ右上の検索ボックスをご利用ください。

その他の連載

キーパーソンが見るWeb業界

本連載はWeb Site Expert/gihyo.jpとの連動企画です。阿部淳也, 長谷川敦士, 森田雄のお三方による,Web業界をテーマにした座談会です。

きたみりゅうじの聞かせて珍プレー

ソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。みなさんからの投稿もお待ちしてます!

ActionScript 3.0で始めるオブジェクト指向スクリプティング

野中文雄氏が,簡単なスクリプトは書いたことがあるという初級者を対象に,ActionScript 3.0の基本からクラス定義までを解説します。

まだ間に合う「ITパスポート」受験対策 原山先生の短期合格塾

この連載では,4月18日のITパスポート試験の受験に向けて,短い期間で効率良く受験対策を行う方法や,確実に得点するための裏ワザなどを伝授していきます。

Ubuntu Weekly Recipe

Ubuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。

C/C++プログラマのためのDTrace入門

よくカーネルのチューニングや解析で活用されるDTraceですが,実はユーザプログラムの開発においても非常に有用です。連載ではC/C++プログラマやテストに関わる方向けにDTraceの使い方を解説します。

Blogopolisから学ぶ計算幾何

計算幾何学は,図形に関するアルゴリズムを研究するコンピュータサイエンスの一分野です。本連載では,ビジュアルブログ検索エンジン「Blogopolis」で採用されている計算幾何のアプローチを例に取り上げながら,計算幾何の初歩を実践的に学習します。

検索エンジンはいかにして動くのか?

本連載では, 今や誰もが利用している検索エンジンの中身を,全体の仕組みやデータ構造,アルゴリズムから分散インデックスまで,最近の研究事例も交えて紹介します。

連載一覧

gihyo.jp

  • DEVELOPER STAGE
  • ADMINISTRATOR STAGE
  • WEB+DESIGN STAGE
  • LIFESTYLE STAGE
  • SCIENCE STAGE
  • NEWS & REPORT

書籍案内

  • 新刊書籍
  • 書籍ジャンル一覧
  • 書籍シリーズ一覧
  • 新刊ピックアップ
  • ロングセラー
  • 電脳会議

定期刊行物一覧

  • Software Design
  • WEB+DB PRESS
  • Web Site Expert
  • 組込みプレス