[AD] Railsが自社Webサービス開発に向く10+1の理由

MOONGIFTではRailsによる受託開発、教育を行っております。そして今回、なぜRailsが良いのかという理由について挙げてみましたのでRails開発に迷いを感じられている方は参考にしていただければと思います。書いてあることは前々から言われているようなことばかりですが…。
まず第一前提としてよく「Railsは生産性が高い」と言われますが、今回は書かないようにしています。目に見えづらく、経験則によるものなのでかえって怪しく見えてしまうからです。数字にまで落とし込めれば良いのですが、正確性がないので今回は省きます。
詳細は以下より。
Amazon EC2でmod_rails環境を構築するサンプル
Amazon EC2でmod_railsを使ってサーバ構築を行う記事をOpenServiceにて記述しました。mod_railsに興味のある方はぜひご覧ください。
元々はCentOSを使おうと思ったのですが、Rubyが1.8.5であったため+色々あったので断念しました。そこでUbuntuを使って構築を行っています。所用時間は待つ時間を入れても20〜30分あれば完了できます。ごく手軽です。
mod_railsを使った場合、HTMLやJavaScript、CSSファイルなどの静的ファイルにはApacheからレスポンスを返してくれます。この点がごく気軽に使えていいですね。レスポンスもそこそこです。
Open Service » Blog Archive » Amazon EC2を使ってWebサービスを公開する「インスタンス編」
http://openservice.jp/2008/04/using_amazon_ec2_2/
ホスティングサービスでもRailsが利用できるようになるかも、な「Passenger」
MOONGIFTでも紹介したmod_railsと呼ばれるPassenger。Creative Commonsによるオープンソース・ソフトウェアです。
今回はその導入方法を書きたいと思います。インストールは簡単で、gemを使って行えます。
$ sudo gem install passenger
Password:
Bulk updating Gem source index for: http://gems.rubyforge.org
Building native extensions. This could take a while...
Successfully installed passenger-1.0.1
Installing ri documentation for passenger-1.0.1...
Installing RDoc documentation for passenger-1.0.1...
次に、Apacheに組み込むためのコマンドを実行します。詳細は以下にて。
Atom.builderもキャッシュするxmlcacheプラグイン
RailsでRSSやAtomを出力する際に利用するAtomFeedHelperがあると思いますが、これは通常のキャッシュが使えません。普通にcacheを使うと、
undefined local variable or method `_erbout' for #<ActionView::Base:0x24dde68>
というエラーが出てしまいます。
そこで利用するのがxmlcacheプラグインです。インストールは、
ruby script/plugin install http://xmlcache.googlecode.com/svn/trunk/xmlcache
と行います。これをインストールした状態で、
cache_xml "cache name" do
hogehoge
end
とすれば、通常のキャッシュ(フラグメントキャッシュ)同様の処理が可能になります。これでフィード生成が高速化されるようになりますね。ちなみにcaches_pageはアクションごとの設定なので、フォーマットによってキャッシュする、しないといった設定ができない模様…。これはこれで面倒だ。
Railsで開発するときにはキャッシュを予め想定に入れておく
via En attendant Jérémie on Flickr – Photo Sharing!
今回、まともにキャッシュを使おうと思い始めたのですが、ある程度組み上げた段階でキャッシュを組み入れようとすると色々問題が起こることが分かりました。まず知識としては、Railsのキャッシュは3パターンあります。
- Page
- Action
- Fragment
があります。Pageは一番強力で、一度生成後はApacheやlighttpdなどのWebサーバレベルでレスポンスを返してくれます。アプリケーションサーバを通さない分、高速です。が、逆に言えば生成した後はRails側で制御できない状態になるので、表示を細かに変更することはできません。
次にAction Cacheがあります。これはPageアクション同様に生成されるページ全体をキャッシングしますが、Railsのアクションは実行するという点が異なります。アクションを通るので、DBにアクセスして情報を取得することが可能というメリットはありますが、DBへのアクセスがボトルネックになっている場合は使えません。
最後にFragmentキャッシュです。これはViewの中で細かく利用できます。言わば部品を定義していくことで、一部分だけの表示をキャッシングしていくことができます。細かく制御できる利点はありますが、裏を返せば多数使うと管理が大変になります。
では次に問題点や解決策を挙げてみたいと思います。
iTunesをRailsで動かす「iTunesRails」
これは面白い。RubyCocoaとRailsを組み合わせることで、WebブラウザからiTunesを操作できるようになっています。ベースはRails2.0.2を使って開発されています。RubyCocoaは大きな可能性を秘めていますので、OSXとRubyの組み合わせで新しいアプリケーションが次々と生まれていきそうです。
RubyはOSX標準のものではなく、MacPortsのものを使っていたのですが、この場合RubyCocoaが使えません。その場合はrequire ‘osx/cocoa’ができない。 – Hirameki InspirationとBuild – RubyCocoa wiki を参考にしてインストールします。
2008年4月7日時点でのコマンドは、
$ tar xfz RubyCocoa-0.13.2.tgz
$ cd RubyCocoa-0.13.2
$ ruby install.rb config --prefix=/opt/local --build-universal=no
$ ruby install.rb setup
$ sudo ruby install.rb install
です。バージョンは変わっても、他は同じかと思います。後は通常のRailsアプリケーションのように起動すればOKです。
そしてこちらがiTunesRailsの画面です。
ローカルでAmazon S3を使った開発をParkPlaceを利用して行う
Amazon S3はAmazonによるストレージサービスです。1バイト〜5GBまでのオブジェクトを自由に作成し、取り出し、更新、削除することができます。データベースに保存しないような、画像やファイルなどを保存するのに最適なソリューションです。
Amazon S3を使う場合、RubyにはAWS::S3という便利なライブラリがあります。これを使うとごく簡単にAmazon S3を利用することができます。Ruby on Railsでの開発の際にももちろん利用します。
問題はローカル環境で開発している時です。ネットワーク接続が必須なのは非常に面倒ですし、何よりAmazon S3は有料のWeb APIなので、開発しているだけで課金されてしまうのは問題です。
そこで使うのがAmazon S3クローンであるParkPlaceです。このソフトウェアはクローンとは言っても置き換えを目指すのではなく、Amazon S3を利用したソフトウェア開発を便利にするために提供されているソフトウェアになります。ここではこのParkPlaceを使った開発方法を書きたいと思います。




