PR





はてなの舘野祐一氏は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プログラミング」（著者は関将俊氏，オーム社発行）が当選したからだという。「これがなかったらはてなスクリーンショットはリリースされていなかったかも」と同氏は語る。