12月16日、Perlユーザーのコミュニティ「Shibuya Perl Mongers」のテクニカルトークイベント第5回が開催された。イベントでははてな取締役最高技術責任者(CTO)の伊藤直也氏が、はてなの最近のサービスにおける技術的ポイントを解説した。
■ 早ければ半日でサーバーを増設できるスピード体制
|
はてなCTOの伊藤直也氏
|
伊藤氏ははじめに、はてなのフレームワーク「はてなフレームワーク」を紹介。基本的にははてなが独自に構築したフレームワークで、「このフレームワークのおかげで新しいサービスも早ければ1日で作れる」という。
はてなのサーバーは現在約90台で、金型もはてな代表の近藤淳也氏が自ら設計したものを利用。サーバー機材は常に待機させているため、トラフィックが大幅に上昇した時でも、最短半日でサーバーを増設できるという。伊藤氏は「大きなサービスであればデータセンターを他の場所で借りたり、マシン1台を追加するのに1週間以上かかったりする場合もあるが、はてなは短時間で増設できる点が大きい」と、スピードに対するこだわりを見せた。
はてなの開発は社長を含めたエンジニア4人体制で、「朝は立ったままミーティング」「仕様書はなく、ソースそのものが仕様書」といった独特のコンセプトを持つ。プログラマー2人で共同開発する「ペアプログラミング」についても、「必ずしもペアプログラミングである必要はなく、クリエイティビティが必要な作業は1人で、セキュリティ対策といった作業は2人でなど使い分けている」という。また、サービス開発後のテストも、ある程度のテストを行なった段階でサービスを公開し、ユーザーと一緒になって実際のテストを実施する方針。「朝に仕様を決めて夕方にリリース、ユーザーの報告を受けて夜にサービスを広報する」など、ここでもサービス提供のスピードを重視する姿勢が伺えた。
|
|
はてなのサーバーは現在90台
|
はてなの開発体制。写真は朝のミーティング風景
|
■ 7万件のデータを検索しても体感速度が変わらない「はてな検索」
最近のサービス事例では、はてなのブログサービス「はてなダイアリー」でAmazon.co.jpのアフィリエイトリンクを手軽に作成できる「はまぞう」を紹介。以前に伊藤氏が個人で作成した「Amazletツール」と同様の機能を持ったはまぞうだが、Amazon Web Services(AWS) 3.0とはてなフレームワークでプログラムを書き直し、はてなダイアリーと統合している。
伊藤氏ははまぞうで利用したAWSのポイントとして「AWSは正規表現でプログラムすること」を挙げた。はてなのようにページビューが多いサイトでは速度の問題がシビアであり、PerlのXML関連モジュールはどうしても速度の面などで問題があるのだという。「Perlの正規表現はとても優秀で、モジュールと比べても桁違いに早い。(速度という観点から)XMLモジュールよりも現実的なほうを実装している」。
次に紹介されたのは、はてな内のサービスを一括して検索できる「はてな検索」。伊藤氏は「例えば『ブログ』という言葉で検索すると、有名なブログやブログ関連サービスではなく、(はてなダイアリーキーワードの)ブログという単語が一番上に表示されるなど、重要な検索結果がより上にくるようになっている」と説明。「なかなか優秀だなぁと思うが、技術者の視点でしかないのかもしれない」と前置いた上で、「アルゴリズムが結構よくできているので、これをWeb検索でも応用してみたい」との意欲を示した。
はてな検索では、はてなダイアリーのデータが入力されている検索用のデータベースをメモリ上に用意、さらに検索用のレプリケーションDBを用意することで、はてなダイアリーのパフォーマンスが下がらないよう対策を施している。伊藤氏は「メモリ上に置いてディスクは使わないことで、7万件くらいのデータを検索しても体感速度が変わらない」とした上で、「容量が1GBから2GBくらいのメモリに載せるためには、どれだけ容量を押させるかを開発段階で考えておくこともポイント」と語った。
|
|
速度重視でAWSを正規表現
|
はてな検索の取り組み
|
■ 今後はオープンソースソフトウェアへの還元が課題
|
今後の課題はオープンソースソフトウェアへの還元
|
オンラインアルバムサービス「はてなフォトライフ」では、「Image::Info」というモジュールを利用してデジタルカメラのExif情報を収集。「はてなフォトライフで人気のあるデジタルカメラ」といったデータを集計する試みも行なわれている。また、先日リニューアルしたサイト巡回サービス「はてなアンテナ」では、RSSの対応を予定する。伊藤氏は「はてなアンテナはRSSリーダーに似たサービスなので、そういったシェアも逃さないよう対応していきたい」と語った。
はてなが採用するGoogle AdSenseの広告は、自動でコンテンツを解析して最適な広告を表示するシステムだが、最適な広告がない場合には公共広告が表示される。伊藤氏は「公共広告ではその分の広告収益があがらないので機会損失になるため、代替広告を出す機能も用意されている」と説明した上で、「ブログユーザーではGoogle AdSenseの代わりにAmazonのアフィリエイトを出している人もいるようだが、はてなではもう少し変わったことをやっている」とコメント、はてなの取り組みを紹介した。
具体的には、代替広告でさらにGoogle AdSense以外のリスティング広告事業者の広告を表示、ここでも適合する広告がない場合はAmazon Web Servicesの広告を、さらに見つからなければはてなの自社広告を表示するなど、XML APIを利用して代替に次ぐ代替を繰り返している。伊藤氏は「代替広告というと地味な印象だが、Web同士が中で連携していて技術的には面白いことになっている」とコメント。一方で「実際には広告の在庫はどの事業者もほぼ重複していて、AdSenseで表示されないものは結局表示されなかったりする」という裏話も披露した。
現在では月間2億のページビューを誇るはてなだが、「技術者は実質3~4人で、この規模のサービスでも社員7人でなんとかなる」という。「むしろ少数の方がフットワークが軽く、余計なしがらみもない(伊藤氏)」。今後の課題としては、「はてなはオープンソースソフトウェア(OSS)にお世話になっているので、はてなモジュールのOSS化など、OSSコミュニティへの還元も考えていきたい」との考えを示した。
本イベントではこのほか、Shibuya.pm リーダーの宮川達彦氏による「iPod&iTunes Hacks 」など、全部で7人のスピーカーによる講演が行なわれた。なお、iPod&iTunes Hacks」については、12月8日にも単独イベントが開催されており、詳細はBroadband Watchで別途記事掲載している。
|
|
はてなフォトライフ
|
Google AdSenseに対するはてなの取り組み
|
■ URL
はてな
http://www.hatena.ne.jp/
Shibuya Perl Mongers
http://shibuya.pm.org/blosxom/
■ 関連記事
・ iPodとiTunesを使い倒そう! イベント「iPod&iTunes Hacks」が開催
・ 【Web and Internet Applications Day】 ブログサービス開発者による今後のブログ展望
(甲斐祐樹)
2004/12/17 13:16
|