[画像のクリックで拡大表示]

 はてなの舘野祐一氏は2006年6月11日,東京お台場で開催された「日本Rubyカンファレンス2006」で,5月下旬にサービスを開始した「はてなスクリーンショット」が,分散オブジェクトを実現するライブラリ「dRuby」とRubyのWebアプリケーション・フレームワーク「Ruby on Rails」(Rails)を使って構築されていることを明らかにした。はてなスクリーンショットは,Webページのスクリーンショットを作成/表示するサービスである。

 はてなスクリーンショットのアプリケーション・サーバー,データベース・サーバー,Webサーバーの機能は1台のサーバーに集約している。このサーバーでRailsを動かしている。静的コンテンツは,軽量なWebサーバーであるlighttpd,動的コンテンツは,Rubyで書かれたWebサーバーであるmongrelを使って表示している。データベースはMySQL 5.0。アクセス数は1週間で20万PV程度であり,これくらいのアクセスなら余裕で処理できるという。

 スクリーンショットを撮影するためにWebを巡回するサーバーには,Windowsマシンを2台使っている。撮影できるスクリーンショットは2台で毎分120枚,1日17万枚。舘野氏によると,最初はLinuxでスクリーンショットを撮ろうとしたが安定しなかったり遅かった。それでWindowsでIEコンポーネント・エンジンを使って撮影するようにしたところ,うまくいったという。

 dRubyは,Railsサーバーと巡回サーバーの間のやり取りに利用している。巡回サーバーは,RailsサーバーのサービスからdRubyオブジェクトを受け取る。そして,指定されたURLのWebページのスクリーンショットを撮る。撮った結果はdRubyオブジェクトに渡すだけでいい。これにより,モデルはRailsサーバー側,巡回や撮影は巡回サーバー側に実装を集約できる。巡回サーバーを増やすには,新しいWindowsサーバーにRubyをインストールし,巡回/撮影用のアプリケーションを起動するだけ。舘野氏はdRubyの利点を「表側のWebアプリケーション以外にも,(裏で)dRubyを使った便利な処理ができる」と語る。「dRuby最高」(舘野氏)。

 ちなみに,舘野氏がdRubyを使うようになったのは,日本Rubyの会の有志によるウェブ雑誌「Rubyist Magazine」(るびま)の1周年記念企画プレゼントで「dRubyによる分散・Webプログラミング」(著者は関将俊氏,オーム社発行)が当選したからだという。「これがなかったらはてなスクリーンショットはリリースされていなかったかも」と同氏は語る。