Ipad

Q&A: Facebook のエンジニアリング担当副社長 Jay Parikh 氏が開発者に求めるもの (およびその他) を説明

Q&A: Facebook のエンジニアリング担当副社長 Jay Parikh 氏が開発者に求めるもの (およびその他) を説明
フェイスブックのエンジニアリング担当副社長ジェイ・パリク氏が水曜日にシアトルのエンジニアリングオフィスを訪問した。

今日、シアトルのダウンタウンにあるFacebookのエンジニアリングオフィス(開設17ヶ月)に入ったとき、まず最初に驚いたことの一つは…静寂だった。101 Stewartの8階にある、ニュースルームのような開放的な環境にもかかわらず、プログラマーたちはほとんど言葉でのコミュニケーションをとらずに作業を進めていた。ただキーを叩くだけの音だけで、おそらくFacebookのチャットを使って仕事をこなしているのだろう。

このオフィスは、Facebookにとってシリコンバレー以外では初のエンジニアリングセンターであり、現在約60名の従業員を擁しています。彼らがここに留まるのはそう長くは続かないでしょう。同社は最近、シアトルのダウンタウンにある、人員をほぼ倍増させられるより大きな施設への移転計画を発表しました。

確かにやるべき仕事は山積みだ。それが、Facebook のエンジニアリング チームが現在、全世界で約 800 人にまで膨れ上がった理由の 1 つだ (現在、総従業員数は約 3,000 人)。

世界最大のソーシャルネットワーク(会員数8億人超)を安定的に運営し続けるのは容易なことではない。Facebookのインフラチームを統括するエンジニアリング担当バイスプレジデントのジェイ・パリク氏は、直面する多くの技術的課題に対処するための戦略が存在しないことを認めている。

「これまでの常識をすべて見直さなければなりません。これらの問題は未だ解決されていません」とパリク氏は述べ、特に約1000億枚の写真のアーカイブ化というストレージの課題を指摘した。

パリク氏は、課題の特殊性ゆえに、複雑な問題を創造的に解決するにはエンジニアに頼らざるを得ないと述べた。そして、その問題は、ビデオチャットの最適な導入方法からエネルギー効率の高いデータセンターの展開まで、数え切れないほどある。

Facebookが特別なタイプのエンジニアを採用しようとしている理由の一つは、まさにこれだとパリク氏は言います。今日シアトルにいたパリク氏に、Facebookのエンジニアとして働くには何が必要か尋ねました。また、もし魔法の杖を振ることができたら、Facebookのためにどんな問題を解決したいか、尋ねてみました。

GeekWire との会話の抜粋をお読みください。

GeekWire:急速に増加しているエンジニアリングの労働力をどのように管理し、拡大するのですか?

パリク氏:「私たちは、必要な人材を見つけることに非常に力を入れなければなりません。新卒者、経験者、あるいは海外からの人材など、その人材が誰であっても構いません。優れた技術的専門知識、情熱、活力を持ち、私たちの文化に合致する人材、つまり、これほど大規模で成長を続け、多くの興味深い課題を提示する事業に携わりたいと願う人材を、常に時間をかけて探しています。採用活動だけでなく、従業員の幸福度、定着率、モチベーション向上にも注力しています。私はまさにそこに多くの時間を費やしています。」

GeekWire : 優れた Facebook エンジニアになるにはどうすればいいでしょうか?

パリク氏:いくつかあります。まず第一に、成功への情熱とエネルギー、そして偉大なことを成し遂げたいという意欲です。私たちは、あらゆる取り組みをインパクトという観点から評価し、評価しています。自分がどのようなインパクトを生み出せるかに焦点を当てれば、iPhoneアプリに新機能を追加することであろうと、エンジニアの生産性を向上させる優れたツールを開発することであろうと、キャッシュ層における非常に根深い分散システムの問題を解決することであろうと、いずれも大きなインパクトを生み出す方法となります。そして、大きなインパクトを生み出したいという野心的な人材こそが、優れたエンジニアになるための最も重要な要素です。もちろん、技術的な能力、例えばアルゴリズム、カーネルの専門家、ネットワークの専門家など、それらは間違いなく役立つでしょう。

そして3つ目はチームワークです。私たちはチームワークを重視する文化を育んでおり、様々な部門の垣根を越えて協力し合います。なぜなら、これまで解決されていない途方もなく困難な問題を解決しなければならないからです。「世界最大の写真共有サイトのために1000億枚以上の写真を保存するという課題を解決するには、これが解決策だ」と言えるような教科書はありません。そんなものは教科書にもTechCrunchにも載っていません。野心的で、実験を重ね、それを実現するアイデアを生み出せる人材が必要なのです。

GeekWire:シリコンバレーと比べてシアトルのエンジニアリングの才能はどうですか?

パリク氏:「シアトルに来た主な動機は、シアトルには大きな問題を解決したいという情熱を持った素晴らしいエンジニアの才能の宝庫があると信じていることです。そして、それは今も変わりません。」

GeekWire:チームベースの文化だとおっしゃいましたが、シアトル、そして間もなくニューヨークにも進出される中で、どのようにそれを維持しているのでしょうか?

パリク氏:シアトルオフィスが完全所有し、運営するプロジェクトがいくつかあります。つまり、チームとリーダーはここにいて、すべての構築作業はここで行われます。インフラ整備作業の一部は、チームの半分がシアトルに、残りの半分がメンロパークにいます。システムの一部をシアトルのエンジニアが所有し、残りの部分をメンロパークのチームが所有することで、問題解決におけるオーナーシップが適切に確保されるように努めています。そのため、日帰りで済むため、ビデオ会議やSkypeを活用し、頻繁にやり取りしています。社内では電子通信、IRC、メールチャットを多用し、エンジニア同士が積極的にコミュニケーションを取り、可能な限りコラボレーションできるよう努めています。ニューヨークでも同様です。

GeekWire : シアトルとシリコンバレーではどちらの方が採用しやすいですか?

パリク氏:「どちらが簡単かは分かりません。私たちにとって重要なのは、適切な人材を獲得することです。どこに行っても、質の高いチームを作りたいと思っています。…今の市場は全体的に非常に競争が激しく、エンジニアにとって素晴らしいチャンスがたくさんあります。ですから、私たちは現地に拠点を置き、自分たちの仕事ぶりをアピールできるようにしたいと思っています。」

GeekWire:シアトルのオフィスでは何が構築されましたか?

パリク氏:「私たちが取り組んだことの一つはビデオ通話です。サイト上の8億人のアクティブユーザーに対してビデオ通話を処理するには、負荷をどう処理するか、正確なユーザーエクスペリエンスはどのようなものかなど、様々な興味深い課題が伴います。バックエンドのインフラが確実に接続され、高品質なエクスペリエンスが確保されるようにするにはどうすればよいか、といった点です。これは、スムーズで快適なユーザーエクスペリエンスを実現するために、コアとなるメッセージングチャット機能に統合する必要がありました。」

GeekWire : その製品の売れ行きは好調ですか?

パリク氏:「統計データは公表していませんが、この機能の現状には非常に満足しています。Facebookは機能開発において常に改善を重ねており、一度きりで終わりということはありません。新しい機能をリリースし、ユーザーがどのように利用しているかを観察し、その機能をさらに強化し、ユーザーを惹きつけ、面白く、ワクワクさせ続けるよう努めています。」

GeekWire : 新しい機能を追加しながらサイトを拡大し、ユーザーの増加に対応する上で、他にどのような課題に直面していますか?

パリク氏:「2つの例を挙げましょう。最近、従来のFacebookプロフィールに代わるタイムラインという機能をリリースしました。タイムラインを実際に使ったことがある方や、実際に見たことがある方は、Facebook上でのその人が行ったすべてのこと、つまり何をシェアしたか、どのようなアクティビティを行ったか、何について投稿したかなど、すべてを長期間にわたって見ることができることにお気づきでしょう。これにより、実際に共有し、理解し、より深くその人のことを知ることができるようになります。ここでの課題は非常に興味深いものです。1つは、タイムラインに表示されるデータが大幅に増加し、指1本で何年もかけてFacebook上でその人がどのように自分自身を表現してきたかの履歴をスクロールできるようになったことです。これはこれまでになかったことです…。タイムラインでは、いわば無限に遡ることができるようになりました。そこでの課題は、まず、このユーザーエクスペリエンスにおいて、アクセスしやすく、迅速に提供できるデータ量が大幅に増加したことです。もう1つは、ユーザーエクスペリエンス、つまりタイムライン上での表示方法を確実に向上させたいということです。ブラウザとサイトのナビゲーションは簡単で直感的で、混乱したり乱雑になったりしません。そのため、興味深い課題があります。1つは開発プロセスを階層化することでした。フロントエンドのユーザーエクスペリエンスに取り組んでいるスタッフが、コンテンツの洗練とレイアウト方法を理解し、この膨大な量のデータをスケーリングして保存し、高速かつ効率的に処理する方法を模索している人々と並行して作業し、それを基本的に6か月の期間で完了させました。ほとんどの場合、これは1年から1年半かかる連続プロジェクトですが、システムのレイヤー開発を「並列化」したため、6か月で実現しました。これは、私たちがいかに迅速に行動し、これらの機能の開発について大胆に考え、全体的な機能のさまざまな部分に取り組むチームをどのようにまとめ、チームをどのように並行して作業できるかを示す最近の例です。

GeekWire : 提携やアウトソーシングではなく、Prineville データ センターなどの一部のシステムをゼロから構築することを選択したのはなぜですか?

オレゴン州にあるFacebookのプリンビルデータセンター

パリク氏:ユーザーやデータ量、アプリケーションのリアルタイム性、そしてあらゆるデータの接続性に対応できる柔軟性を実現するために、あらゆる要素を見直す必要がありました。なぜなら、標準的なソリューションに頼ることはできないからです。市販されている多くの標準的なソリューションは、コスト削減やパフォーマンス向上、エネルギー効率の高いインフラストラクチャを実現する上で制約となるからです。そして正直なところ、私たちはこうした多くの問題に対して、シンプルさを第一に考えています。私たちのサーバーは…その哲学が無駄を省いたものだったことがお分かりいただけるでしょう。不要なものはすべてサーバーから排除し、必要なコンポーネントだけを搭載したシンプルな構造に仕上げました。

GeekWireの以前の記事:「ビデオ:Facebookの超高効率サーバー、ガイドツアー」

GeekWire:プリーンビルのデータセンターはゼロから構築されていますね。しかし、データセンター全体の占有面積はかなり小さいですね(ノースカロライナ州とスウェーデンにも拠点があります)。Facebookが今後、自社データセンターをさらに構築していく予定はありますか?

パリク氏:「確かに、現在も両方の選択肢を検討し続けています。しかし、電力効率とコスト削減を実現するためには、オープンコンピューティング設計を採用することで、これらの成果を実現できると考えています。そして、この設計はより広範なコミュニティにも共有しています。」

GeekWire : インフラストラクチャ エンジニアリング チームを監督していますが、Facebook は大きな問題なく拡張できたと感じていますか?

パリク氏:「私たちはサイトのパフォーマンスと品質を非常に重視しています。これは常に改善に取り組んでいます。私たちが成長し、成功し続ける限り、より迅速かつ効率的に、そしてより柔軟に機能させるよう、常に努力を続け、その上でよりクールで魅力的な製品を開発していきます。」

GeekWire:以前はAkamaiとNingで働いていたそうですね。なぜFacebookに入社したのですか?

パリク氏:「一つは、世界をよりオープンで繋がったものにするという目標に向かって、全社員が情熱を注いでいることです。全員が一つのミッションに一心に取り組んでおり、その一翼を担うことは本当に刺激的で楽しいことです。もう一つは、私たちが驚くほどのスピードで物事を進め、意思決定を行い、構築していくことです。8億人を超えるユーザーを抱える規模で、毎日新しいバージョンのサイトをリリースできるのは、まさに喜びです。物事が完璧に進まないと、確かに神経をすり減らすこともありますが、私たちはこれを真剣に受け止めており、迅速に行動できることが重要です。そして、それが私たちの楽しい部分です。ただ速く動くだけでなく、そのスピードを維持し続けることなのです。」

GeekWire:毎日新しいバージョンのサイトをリリースされていますね。これはどういう意味ですか?

パリク氏:「私たちは基本的に毎日、サイトのフロントエンドのコードをリリースしています。スマートフォンやデスクトップで目にするフロントエンドのコードは、毎日変更されています。私たちは非常に積極的なリリースプロセスを採用しており、エンジニアが作業して提出すれば、文字通りその日か翌日にはリリースされます。これは、主要な機能追加、バグ修正、最適化、あるいはユーザーが新しい機能を見つけやすくするためのフローの合理化など、多岐にわたります。」

Facebookにはタイムマシンが必要か?写真:Wikipedia

GeekWire : 魔法の杖を持っていて、エンジニアリング面で 3 つのことを修正できるとしたら、何を修正しますか?

パリク氏:「フラックス・キャパシターが必要ですね(笑)。魔法の杖かどうかは分かりませんが、Facebookではまさにこの点に注力しています。一つは、デスクトップ、モバイル、スマートフォン、タブレットなど、あらゆるデバイスにおけるサイトのパフォーマンス向上です。サイトが滑らかで、高速かつレスポンシブであることが重要です。リアルタイム体験とは、まさにこのことです。つまり、非常に高速で、ダイナミックで魅力的なユーザー体験を提供しなければなりません。つまり、スピードこそが私たちが常に追求しているものです。もう一つは、インフラを柔軟にし、Facebookのフロントエンドを構築するアプリ開発者が自由に創作できるような形で構築していくことです。開発者には想像力を働かせてほしい。『これは保存方法が間違っているからできない』『速度が遅すぎる』『コストが高すぎる』『信頼性が低い』といった制約はかけたくないのです」ですから、私たちは常に、製品エンジニアの創造的な思考を妨げる摩擦や障害が最小限に抑えられるように努めています。柔軟で強力なプラットフォームとインフラストラクチャを構築し、彼らがアイデアを練り上げている間に、非常に迅速に反復処理を実行できるようにしたいと考えています。通常は少数のユーザーを対象としていますが、魔法のようなアイデアが浮かび、「わあ、これだ。これを8億人のユーザーにリリースしよう」と思えば、一夜にして8億人のユーザーにまでスケールアップできるのです。