Facebook テイラーCTOインタビュー:開発体制、システム、モバイルを語る

岩本有平 (編集部) 別井貴志 (編集部)2012年06月07日 09時00分

 世界で約9億人が利用する巨大サービスへと成長したFacebook。日々膨大なトラフィックをさばき、新しいサービスを提供していく同社は、どのような開発体制を敷いているのだろうか。FacebookのCTO(最高技術責任者)であるBret Taylor氏に聞いた。

--Facebookの開発体制について教えてください。

 エンジニアは大体1000人程度で、1人のエンジニアが100万人に影響を与えているという計算ですね。これだけの人数のエンジニアを抱えていることには誇りを持っています。我々はエンジニアリングの文化を重視しており、何か問題があった際に対処できる状況を作っています。

 1人のエンジニアが100万人に影響を与える状況なので、細かいことにこだわるというよりは、最重要なレベルの問題に対して適宜対応できる体制にしています。


Facebook CTOのBret Taylor氏

--新しい機能の開発や全体のマネジメントについてどのような工夫をしているのでしょうか。

 これだけの人数はいますが、チームは非常に小さい単位で稼働しています。たとえば、iPhone向けのカメラアプリの「Facebook Camera」(日本では現時点では未公開)については、開発チームは6~7人でした。

 また我々はバックエンドのテクノロジーを重要視しており、既存のインフラをベースに作業しています。ですので、アプリの開発は数人のチームで行いましたが、バックエンドには、もともとあったフォトストレージのインフラを利用しています。

 我々が新しいサービスを考える際、2つのやり方があります。1つは、「Open Graph」のように全社戦略として開発するものです。この場合、Mark(CEOであるMark Zuckerberg氏)が言ったことに対して、全社でその内容を共有し、開発を進めていきます。

 2つめは個々のエンジニアが主導するものです。我々は社内で「Hackathon(ハッカソン:開発イベント)」を行っています。あるエンジニアが1つのアイデアを持ってきた際、そのプロトタイプを作ってもらい、それを社内に紹介した上で、ローンチするかを判断します。社内で人気が高ければ、Markの承認を得た上でリリースするという流れです。「Facebook Video Calling」なども、ここから生まれました。

--イベントなどで、Zuckerberg氏も最近またプログラミングを再開したと話しています。

 Markを含め、我々エグゼクティブもいまだにコーディングをしていますが、エンジニアがそれらをローンチさせてくれることはないでしょう(笑)。ですがもちろん、プロトタイプ作りやアイデアの提案は行っています。

--Facebookでは細かな仕様変更なども頻繁に行われています。実際どのようなスケジュールで新サービスや新機能をリリースしているのですか。

 小さいフィーチャーについては、ウィークデーであれば毎日更新しています。というのも、我が社のエンジニアリング文化として、「常に細かなアップデートをすることで(サービスの)レベルを向上させ、世界のユーザーに提供していく」と考えているからです。

 一方で、タイムラインのような大きなフィーチャーについては少し時間をかけます。いきなり大きな変更をすると、マイナスな意見も出ます。以前、大きな変更を実施した際に「まるで家に誰かが忍び込んで、いきなり居間のレイアウトを変えられてしまった」と言われたこともあります。

 ですので、何カ月かの猶予を持って更新するというスケジュールにしています。その期間内にもユーザーからフィードバックをもらって、内容をアップデートしていきます。約9億人のユーザーがいる状況ですので、びっくりさせないよう、段階を追って更新するという具合です。

--その9億人が利用する環境ですが、システムはどのようになっているのでしょうか。

 細かな数字は公開していませんが、データセンターについては、効率性の向上に努めています。電力消費や冷却コストをいかに低く抑えるか、これが重要です。

 また、オープンソースについても重視しています。さまざまなものをオープンにして、皆さんに提供できるようにしたい。たとえばHewlett-Packard(HP)などとは「Open Compute Project」という(データセンターのノウハウに関する)プロジェクトを行っています。より多くの人に我々のデータセンターの仕組み作りを提供し、各社がオープンな状況でデータセンターを構築できるようにという試みです。

--IPOの目論見書では約9億人が利用する、毎日約3億枚の写真がアップロードされる、といった内容がありましたが、そのような膨大なトラフィックを処理するためにどのような工夫をしているのでしょうか。

 我々はもともとオープンソーステクノロジーを使っています。言語にはPHP、データベースにはMySQL、メモリキャッシュにはmemcached、フォトストレージには独自にカスタムしたストレージを利用しています。

 このように伝統的なテクノロジーを使いつつ、新たにオープンソーステクノロジーを提供しています。たとえば、PHPの高速化をする「HipHop for PHP」などです。オープンソースのインフラをより改善することで、ほかの企業にも影響を与えています。

--あなたはGoogleで働き、その後FriendFeedを立ち上げたのちにFacebookのCTOをされています。自身の経験を踏まえて、Facebookで技術者として働くために必要な要素をどのように考えていますか?

 私自身の経験を言えば、Googleで、大きなシステム作りをさせてもらえたり、あるインフラをより多くの人に提供するためにはどうすべきかということを学びました。そしてFriendFeedでは、少人数でより大きなことを行う可能性について学びました。

 Facebookで求められるのは、技術者として有能なだけでなく、世界に何かしら影響を与える人物であるということです。製品デザインに長けていることはもちろん重要ですが、人々に影響を与えるという意味では心理学的な要素も必要ですし、技術的な要素も必要になります。

 たとえばFacebookの写真共有機能では、友人をタグ付けして紹介することができます。ですがこれを開発する際、技術やデザインだけでなく、プライバシーについても同時に考える必要がありました。

--日本人のエンジニアはいますか?

CNET Japanの記事を毎朝メールでまとめ読み(無料)

-PR-企画特集

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]