プロジェクト Wassr 挑戦者たち

第2回 Wassr開発の舞台裏

この記事を読むのに必要な時間:およそ 1.5 分

モバイルファクトリーの技術者の松野です。

今回はWassr(ワッサー)の技術的な側面についてのお話をさせていただきます。

フレームワーク

Wassr開始以来,「WassrってRailsでできてるんですか?」とよく聞かれるのですが,WassrはRailsではなくSledgeというフレームワークでできています。Sledgeはlivedoorが公開しているフレームワークで,弊社では創業以来一貫してSledgeを使いつづけています。Sledgeの魅力はその柔軟性にあり,公開されてから数年たった今の現状でも十分実用に耐えるフレームワークです。

サーバ構成

Wassrは2007年6月20日現在,16台構成で動いています。詳細は図1を参照してください。使用しているソフトウェアはすべてオープンソースです。これは,何か問題が起きたときや,そのソフトウェアについていない機能を追加したいときなどに,自分で対応したいからです。

図1 Wassrのシステム構成

図1 Wassrのシステム構成

実際,弊社で利用しているロードバランサのPerlbalには,2のプラグインを追加して運用しており,両方ともオープンソースで提供しています。

アプリケーションサーバはApache 1.3+mod_perl,静的コンテンツの配信にApache 2,ロードバランサにPerlbalを使って配信しています。ごくごくありふれた構成です。

データベースにはMySQL 5を使っています。弊社では初の5系の採用でしたが,とくに問題なく運用できています。

キャッシュ用のサーバとしてmemcachedを使っています。かなり高速に動き,複数アプリケーションサーバでキャッシュを共用できるため便利に使っています。非常に高速に動くので,セッションの保存用サーバとしても利用しています。

非同期な処理を行うためにTheSchwartzというライブラリを用いています。これはSixApartがオープンソースとして提供しているJobQueueシステムです。MySQLを使用した素朴な実装となっているため非常に扱いやすいです。

Wassrでは,RSSの生成やIMでの通知,ブログパーツ用の画像の合成などに利用しています。これらのものはほぼ静的なコンテンツなので,アプリケーションサーバで毎回生成するのも馬鹿馬鹿しいですし,キャッシュするにしても初回はアプリケーションサーバで処理することになってしまうため,ヒトコトが更新されるタイミングでJobQueueにenqueueして,TheSchwartzの常駐プロセスが随時処理する構成にしています。

API

WassrはAPIをサービス開始時から備えています。APIを用意することにより,クライアントソフトやマッシュアップサービスの登場を期待することができます。すでにいくつかのサービスで利用されています。

JSONP,JSON,RSS,CSVの各フォーマットに対応しており,Webサービスで使いやすい仕様になっています。

また,一部APIにおいては,Twitterとの互換性を持っています。これにより,Twitter向けのアプリケーションの移植はAPIのURLを変えるだけで良いので,非常に容易になっています。

絵文字

Wassrでは絵文字を非常に重視しています。

絵文字は3キャリア+ウィルコムに対応しています。絵文字は3キャリアで,同じ意味の絵文字があるものは相互変換しています。

この処理にはEncode::JP::MobileというPerlのライブラリを使っています。これはSixApartのmiyagawaさんが開発されたライブラリですが,相互変換機能は私が追加してcommitした機能です。

図2 Wassrで絵文字を活用

図2 Wassrで絵文字を活用

SLのAPI

SecondLife用のAPIも用意しています。SecondLifeでは,RSSなどを読むことはできませんので,SecondLifeで扱いやすいCSV形式でフィードを配信しています。

また,そのAPIを利用した公式のSecondLife用HUD(ヘッドアップディスプレイ)も配布しています。一般ユーザに提供しているAPIをそのまま使っていますので,一般ユーザも同等のものを作成することができます。

SecondLife用APIに機能を追加する場合には,APIのほうを先にリリースし,公式HUDへの機能追加を少し時間を空けて行うことにより,API開発者のモチベーションアップを図っています。

図3 SecondLifeとWassrの連携

図3 SecondLifeとWassrの連携

著者プロフィール

松野徳大(まつのとくひろ)

株式会社モバイルファクトリー システム開発部所属。携帯向けアフィリエイトサービスの開発運用,PodCastingサービスの開発運用,ブログ広告システムの開発運用を経て,ワッサーの開発を行った。フレームワーク関連の技術に興味があり,日本で最初にRailsによるオープンソースの掲示板システムイナモデレーダー6を開発公開した。

ブログはhttp://d.hatena.ne.jp/tokuhirom/など。

コメント

コメントの記入