Twitterエンジニアって、どんなお仕事? 本人たちに聞いてきた | RBB TODAY

Twitterエンジニアって、どんなお仕事? 本人たちに聞いてきた

ブロードバンド フォトレポート

Twitterエンジニアって、どんなお仕事? 本人たちに聞いてきた
  • Twitterエンジニアって、どんなお仕事? 本人たちに聞いてきた
  • インフラストラクチャー担当のエンジニアディレクターであるRob Benson氏
  • なでしこジャパンの試合では、1秒間に7000を超えるトランザクションが発生
  • 3.11時の投稿やりとりをモデル化
  • Twitterのアイディアスケッチ
  • Twitterのインフラアーキテクチャ
  • Twitterエンジニアって、どんなお仕事? 本人たちに聞いてきた
  • 仮想化されたレイヤーで永続化ストアを分離することで、万が一障害が発生してもルーターのレイヤーで障害ノードへトラフィックが行かないようにできるという
 Twitter Japanは3日、「エンジニアオープンハウス」を開催した。この日はインフラストラクチャー担当のエンジニアディレクターであるRob Benson氏が「Twitterを支えるアーキテクチャ」としてプレゼンテーションをおこなったほか、同社のエンジニアである山本裕介氏が「Twitterとオープンソース」、蓑輪太郎氏が「Twitterエンジニアの1日」としてスピーチした。


◆Twitterの分散型システム

 Rob Benson氏は、VMwareなどでエンジニアとして働いていた経験を持ち、現在はTwitterでインフラストラクチャーグループのエンジニアディレクターを務めている。プレゼンではTwitterで分散型システムをいかに構築しているかを説明した。

 「スポーツのイベントや東日本大震災に代表されるような突発的な事象が起きた場合、急激なTPS(Transaction Per Second)が発生するが、どれくらいのトランザクションが発生するかは事前に予測できず、そのために準備することもできない。多くのI/Oが発生しても安定したサービスを提供しなければならない」とBenson氏は説明する。

 現在TwitterはJavaプラットフォームでScalaによって構築されている。以前はRubyを使っていたが、「Javaの方がスレッドモデルが効率的だから」(Benson氏)という理由で移行したという。また、Twiterにおける「Remote Procedure Call」(遠隔手続呼出)システムは「Finagle」と呼ばれており、これはNetty(Javaで非同期なイベント駆動型のネットワークアプリケーションの作るためのプラットフォーム)上においてScala(Javaで動作するプログラミング言語の一種)で記述されている。

 その結果、Rubyに比べればデバッグが難しくなったものの、分散環境でも効率的にロギングできる工夫をした。また、膨大なアクセスやリクエストの中から問題点をピンポイントで発見できるような仕組みも構築。仮想化されたレイヤーで永続化ストアを分離することで、万が一障害が発生してもルーターのレイヤーで障害ノードへトラフィックが行かないようにできるという。


◆オープンソースに支えられているTwitter

 次に、Twitter Japanのエンジニアである山本裕介氏がTwitterとオープンソースについてプレゼンテーションをおこなった。

 Twitterのエンジニアは、分散型バージョン管理システムであるgitのプロジェクトホスティングサービス「github」を活用している。現在Twitterのgithubメンバーは133名。ここで公開されているリポジトリの大半はScalaベースのプロジェクトだという。

 TwitterではCSSフレームワークとして「Bootstrap」を、JavaScriptテンプレートエンジンとしてテンプレート言語MustacheのコンパイラーであるHogan.jsをそれぞれオープンソース化している。

 Mustacheには、「HTMLに近い形で書き出すことができてデザイナーフレンドリーなこと、高度なプログラミングスキルを必要としないこと」(山本氏)というメリットがあるが、一方でパフォーマンスが出ないという問題がある。この対策としてHogan.jsでは、ランタイム時ではなくサーバサイドでコンパイルする仕組みをとったことで、ブラウザ環境にとらわれない高速化を実現した。

 Hogan.jsはツイートの埋め込みやBootstrapのビルドなど、Twitterの至る所で活用されているとのことだ。


◆英語力よりも「ちゃんとコードが書けるか」

 最後に蓑輪太郎氏が登場。2ch発の「Mona OS」を開発したことで有名な蓑輪氏が、Twitterエンジニアとして日々どのような業務に当たっているかを説明した。

 開発は国籍や人種を超えてグローバルなチームが組織されており、蓑輪氏のチームは、RtL(Right to Left:右から左に読む言語)対応や、日本のフィーチャーフォン向けモバイルサイト、また言語最適化のバックエンド対応等をおこなっている。

 同僚とのコミュニケーションにはGoogleのチャットをつかったり、バージョン管理分散開発には先に紹介したGitの他に、プロジェクト管理には「JIRA」、CI(継続的インテグレーション)には「Jenkins」、レビューツールとして「ReviewBoard」を活用。このほか、内製のツールなども利用しているとのことだ。

 必要とされる英語のスキルは、メールやドキュメントはもちろん、チャットやミーティングなど業務のほとんどで使用するが、蓑輪氏によれば「きちんとしたコードがかければ(英語力は)最低限でも大丈夫。英語力はその後で付いてくる」という。

 Twitter本社のあるサンフランシスコとも連携して業務に当たっているが、当然時差があり、「Twitterのエンジニアは17:30くらいになると帰ってしまうので、帰宅してしまうとコミュニケーションをとるのは大変。まだサンフランシスコが稼働している日本時間の8:30からチームでビデオ会議をおこない、9:00にメール処理をする」という。午後は「ひたすらコーディング、テスト、コードレビュー」で、ミーティングなどはほとんどないという。

 また、開発プロセスはTwitterだからといって特別なことはあまりなく、まずJIRAチケットを切ってもらい、ローカルで開発・テストの後、ステージング環境でテストし、他のエンジニアにコードレビューをリクエストする。レビュアーから承認(Ship it!)がもらえれば「Preflight」と飛ばれる各ブランチをマージして矛盾なく動くかを確認する直前点検を経て、めでたくデプロイ→リリースとなる。コードを書いてリリースされるまでは最短で1日だそうで「これだけ大規模なサイトで1日でリリースというのはすごいこと」と蓑輪氏は語った。
《北島友和》

関連ニュース

特集

page top