C++、Java、Python、PHP、Rubyのコードを生成

巨大SNSを支える多言語混在RPC開発フレームワーク“Thrift”

2007/04/03

 全米で第6位のトラフィックを稼ぐ人気SNSサイト「Facebook」のコアモジュール「Thrift」がオープンソースとして公開された(公式ブログ)。ライセンスは独自の「Thrift Software License」(改変や再配布を許容している点はGPL同様のようだ)。Facebookは学生向けSNSとして2004年にスタートし、その後、学生以外にも会員を拡大。2007年2月現在の会員数は1700万人。アップロードされている写真点数は10億枚以上で、1日600万枚の画像がアップロードされるなど、画像共有サイトとして見てもFlickrよりも大きい。そんな急成長した巨大サイトを支えたのは、独自に作り上げた開発フレームワークだったようだ。

thrift01.jpg

多数の言語で開発したモジュールをシームレスに統合

 Facebookが、開発フレームワークとして自ら作成したのがThriftだ。“thrift”は「倹約」という意味で、開発コスト(労力)を最小限に抑える、というほどの意味が込められているようだ。その心は、プログラミング言語には、それぞれ向き不向きがあるので、それぞれの課題によって言語を使い分けよう、というものだ。

 マーク・スリー氏はブログの中で、「RSSをC++でパースする? 退屈だね。インメモリのサーチインデックスをPHPで構築する? 理解を超える!」と書き、「ある言語を使うと、他の開発言語よりも速く、簡単に、エレガントに書けるものというのがある」と指摘する。利用可能なライブラリの種類や機能、性能にも言語ごとに違いがある。それぞれの言語やライブラリが持つ機能的な制限や、使いづらさにイライラするよりも、その課題に適したツールを使いたい――、それがThriftを開発した動機だという。急激なサイトの成長はシンプルなLAMPのアプローチでは対応できなかった、とホワイトペーパーで述べている。

 Thriftは、シンプルで汎用的な記述言語を使って、型宣言とRPCのインターフェイス定義を行う。例えば、こんな風に:

service StringCache {
  void set(1:i32 key, 2:string value),
  string get(1:i32 key) throws (1:KeyNotFound knf),
  void delete(1:i32 key)
}

 この記述からThriftは、C++、Java、Python、PHP、Rubyといった言語のコードを生成する。それぞれの課題をこなすモジュールは、言語の違いを超えて、RPCで互いにシームレスに協調動作する。

 Facebookのコアメンバーは上記のホワイトペーパーの中で、こうしたアプローチが可能な既存の方法は、制限が多いか、型宣言の自由度が低いか、あるいはパフォーマンスが十分でなかったという。

(@IT 西村賢)

情報をお寄せください:

Coding Edge フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

キャリアアップ

- PR -

注目のテーマ

ソリューションFLASH

「ITmedia マーケティング」新着記事

天候と位置情報を活用 ルグランとジオロジックが新たな広告サービスを共同開発
ルグランとジオロジックが新たな「天気連動型広告」を共同開発した。ルグランが気象デー...

“AI美女”を広告に起用しない ユニリーバ「Dove」はなぜそう決めたのか
Unilever傘下の美容ケアブランド「Dove」は、「Real Beauty」の20周年を機に、生成AIツー...

有料動画サービス 34歳以下では過半数が利用経験、4割は1日1回以上利用
「ニールセン・ビデオコンテンツ アンド アド レポート 2024」を基に、テレビ画面での動...