InfoQ

InfoQ

News

マイブックマーク

ブックマークするためにログイン または 会員登録 する

ブックマークされました!

ブックマークがエラーになりました。もう一度お願いします。

Ruby on RailsがMetalに本腰を入れて取り掛かる

作者 Robert Bazinet , 翻訳者 編集部 投稿日 2008年12月28日

セクション
デベロップメント
トピック
Ruby ,
Ruby on Rails ,
Webフレームワーク
タグ
Rails

Ruby on Rails(リンク)チームは、Rack(リンク)を導入して、Railsを次のレベルに移行するのに忙しくしている。Rackの実装により、デベロッパがアプリケーションで多くの利用可能なミドルウェアを使用することができる。この追加により、RailsチームがRails Metalを作成することができる。それは、Railsセッションへのアクセスにより、Rails要求の前にある汎用Rackミドルウェアに関するラッパーである。Metalは、非常に高速で、1秒に何百ものアプリケーションを処理する必要があるアプリケーションに向いている。

David Heinemeier Hansson氏(リンク)は、RailsのブログでRails Metal on the Ruby(リンク)を発表し、その使用例を説明している。

このシナリオでは、汎用Rackミドルウェアについてシンラッパーを構築し「Metal」という名前と一緒に階層に場所を与えた。Rails Metalは、Campfire(リンク)ポーリングプログラムサービスのようなものに向いている。それは、1秒につき数百の要求を処理し、非常に高速でなければならないのと同時に、非常にシンプルである必要がある(2度のデータベースコールで、ストリングを返す)。現在このサービスはCで記述されているが、代わり にRails Metalに変換することを検討する予定である。

またJesse Newland氏は、ブログ記事でRails MetalをRailsの性能を備えたマイクロフレームワーク(リンク)として説明し、以下のように述べた。

Railsの要求処理コードをRack(リンク)と交換し、そのミドルウェアサポート(リンク)を統合するという最近の作業が終わった後で、Rails MetalはRailsアプリケーションがRackミドルウェアの性能を利用し、超高速アクションを作成することができるようにする論理的な進歩である。

Jesse氏は、通常のRailsコントローラと比較し、Metalを使用して、典型的な「Hello World」アプリケーションの例を提供している。

class Poller < Rails::Rack::Metal
    def call(env)
      if env["PATH_INFO"] =~ /^\/poller/
        [[200], {"Content-Type" => "text/html"}, "Hello, World!"]
      else
        [[404], {"Content-Type" => "text/html"}, "Not Found"]
      end
    end
end

通常のRailsコントローラ

class OldPollerController < ApplicationController
      def poller
        render :text => "Hello World!"
      end
end

コードは明らかに全く異なっている。シンプルなベンチマークは、Metal 25xがコントローラコードより高速なことを示している。

InfoQは、Rails CoreチームのJoshua Peek氏(リンク)およびRails Metal関係のデベロッパと意見交換をし、この有望な新テクノロジーについて詳細を得た。

Rails MetalについてJoshua氏は以下のように話した。

Rails Metalアプリケーションは、速度を目的に構築された、非常に小さなアプリケーション固有のエンドポイントである。同様のプロセスで、Railsと併用することができる。 それは、つまり開発が実に簡単であること、言い換えればスタンドアロンでデプロイ可能であることを意味する。

Rails Metalがどんな問題を解決しようかを決める際には、以下のように話している。

Metalは、1秒につき数百の要求に対処する必要がある、小さなサービスを構築するように意図されている。

Rails Metalは新しく、万人向けではないので、一般的なRailsデベロッパにとって、Metalはどんな意味を持つのかという質問が生じる。

Metalアプリケーションの構築を開始するのは、Railsデベロッパにとって実に容易であるが、非常に賢いツールである。Railsデベロッパは、いまでもいつものようにRailsを使い続けるべきであるが、特定のアクションが特別なパフォーマンスが必要だと確信できれば、そのツールを利用することが できる。

Metalは、最新のRack実装を普通に使用するようなものかもしれないが、その作成理由は、そうではないとJosh氏は以下のように説明する。

両方の世界の最も良い部分をデベロッパに提供したかった。Railsは、実アプリケーションの構築に必要なすべてを備えたフルスタックMVCフレームワークを提供するが、それでも可能な限りのスピードを必要とする場合は「Metal」を利用することができる。

Merb-Core(リンク)を見るのは、面白く、できればMetalと比較するとそのことがよく分かる。その両者は互いにかなり異なっている。

Merbは、フルMVCフレームワークである。しかしながら、Metalビットは極めて必要最小限である。それは、単なるRack APIである。ローリクエスト環境ハッシュを与えられ、ステータスコード、ヘッダーおよび応答のボディを返す必要がある。コントローラーやビューなどの概 念はない。それに適合する最小限のコードを実装するかどうかは、デベロッパ次第である。

マイクロフレームワークおよびそれらが満たすニッチについて、よく耳にする。Jesse Newland氏が別の「マイクロフレームワーク」に触れ、Metalについて話している。Joshua氏にMetalが他のマイクロフレームワークの必 要性をなくすかどうかについて尋ねた。

それはない。Sinatraのようなマイクロフレームワークにはまだ余地がある。それは、非常にシンプルにして、単純なAPIハンドラを手早く作成する。 実際、MetalアプリケーションとしてSinatraを使用することができる。SinatraはRackにビルドされるので、ほとんど動作する。

最後に、Metalの取得方法に関してである。

すでにEdge Railsで利用可能になっている。さもなければ、2.3である次のRailsのgemのリリースを待ってもよいかもしれない。

Rails Metalは、その発表時、おおいに注目を集めた。スピードを必要としているRailsアプリケーションに対して、約束を示している。Rails Metalに関する詳細は、Ruby on Railsブログ(リンク)およびRailsが利用可能になったGitHubリポジトリ(リンク)で、参照することができる。

 

原文はこちらです:http://www.infoq.com/news/2008/12/rails-metal

特集コンテンツ一覧

GAE開発の落とし穴

Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します

イベントレポート:「Coqチュートリアル#1」

去る1月12日、定理証明支援系ツールCoqの初心者向けチュートリアルが開催さ れた(http://kokucheese.com/event/index/23667/)。今後も2月2日 (http://kokucheese.com/event/index/23744/)、2月9日、2月16日と引き続き開 催されていく予定である。本記事では、開催の様子をレポートする。

Javaの未来についてのNeal Gafter氏とのディスカッション

Choosing Options

Neal Gafter氏はOracleによるJava買収の影響に関する議論、Javaにセグメンテッドスタックやメタオブジェクトプロトコルを追加することについての主張、そしてJavaとC#との比較について話をしてくれた。

Google Dartのエッセンス:アプリケーションの構築、スナップショット、Isolate

GoogleはVMをともなう新しい言語であり、JSコンパイラでもあるDartをプレビューした。 InfoQはDartのアプリの構築に貢献する文法の裏側を探った:スナップショット、Isolate、モジュール方式

CSPベースのモデル検査ツール「Process Analysis Toolkit」

本記事ではCSPベースの「マルチドメイン・モデル検査ツール」である、PAT(Process Analysis Toolkit)について紹介する。モデル検査は、形式手法(Formal Method)という方法論を基礎とする技術であり、複雑さが増大しながらも安全性を求められる、現在のソフトウェア開発の状況に対する処方箋の1つとして注目されている手法である。

Jenkinsによる継続的インテグレーションのススメ(4) ~CloudBeesでJenkinsをサービスとして使う~

前回まで、Jenkinsの幾つかの側面に注目して解説をしてきました。シリーズ最後の今回は、Jenkinsをサービスとして使う方法を紹介します。

書籍『抽象によるソフトウェア設計-Alloyではじめる形式手法-』の紹介

Alloyは、MITにて開発された仕様記述言語であり、ツールによる自動解析を使い、インクリメンタルに形式仕様が書けることが特長である。筆者らはAlloy開発者による、Alloyを使った形式手法入門書を翻訳、今夏にオーム社より刊行した。本記事では、Alloyの簡単な概要と、翻訳書『抽象によるソフトウェア設計』(「Alloy本」)を紹介する。

Windows デバイスで開発するタッチユーザーインターフェイス

スマートフォンを中心としたマルチデバイスにおけるタッチユーザーインターフェイスへの対応は、既に必須の項目となりつつある。本記事では、Windows デバイスにおける UX のベースとなっている「メトロ」というデザイン言語を掘り下げながら、既存環境を意識しつつもどのようにタッチユーザーインターフェイス開発に取り組んでいくべきであるかについて解説していく。