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 マーケティング」新着記事

Xに迫る新興SNS「Threads」と「Bluesky」 勢いがあるのはどっち?
Metaは最近のBluesky人気をけん制するためか、立て続けに機能アップデートを実施している...

もしかして検索順位に関係する? SEO担当者なら知っておきたい「ドメイン」の話
この記事では、SEOの観点から自社Webサイトに適したドメインの選び方を考えます。適切な...

B2Bマーケターの「イマ」――KPI・KGIはどう設定? 他部門への関与度は?
メディックスがITmedia マーケティングと共同で開催したウェビナー「2024年最新調査から...