- - PR -
「Twitter Open House」はTwitter社のエンジニアと直接情報交換ができるオフラインイベントで、すでにサンフランシスコの本社では何度か開催している。
先日、日本では初めてとなる「Twitter Tokyo Open House」がTwitter Japanのオフィスで開催された。季節外れの大型低気圧により天候は荒れ、開催すら危ぶまれたが、結果としては多くのエンジニアが集まり盛況なイベントとなった。
Twitter Japanのオフィス |
OpenJDKにも参加するTwitterのアーキテクチャ
最初に講演を行ったのはTwitterのアーキテクチャのディレクターであるロブ・ベンソン氏。なでしこジャパンや天空の城ラピュタを例に挙げ、予測不可能で急激な負荷上昇がいつでも発生し得るというTwitterのサービスの性質と、それに耐えうるシステムをいかに構築しているかを語った。
Twitterのアーキテクチャを支えるロブ・ベンソン氏 |
鍵となるのは処理の非同期化とバックエンドシステムの疎結合化だ。莫大なI/O、そして、ほとんどを占める参照系の処理と、ごくわずかな永続化処理をスケールさせるため、いかに分散させているか詳細に解説した。
当初TwitterはRuby Enterprise Edition上で動くRuby on Rails(以下、Rails)ベースのモノリシックなアプリケーションだったという。大規模な分散型システムを効率良く運用するため、現在はフロントエンド部分にRailsのレイヤを残したままバックエンドのロジック部分はサービスとして分離しており、OpenJDKをランタイムにしているという。
■ オープンなJDKに参加するTwitter
OpenJDKといえば、Twitter Tokyo Open Houseが開催された後のJava One Tokyo 2012の基調講演にもベンソン氏はゲストとして登壇し、TwitterのOpenJDKへの参加や、今後のJavaへの期待などを語った。また、「Learn how the JVM is fundamental to our architecture」という講演でも、Twitterのアーキテクチャについて語った。
Java One Tokyo 2012の基調講演に登壇したベンソン氏(左)とオラクル Product Management Senior DirectorのHenrik Stahl氏(右) |
講演の様子は、Togetterで確認してほしい。
■ ハイパフォーマンスなTwitterを支える「Finagle」
Twitterでは開発言語にJavaやScalaを多用しており、多数のサービス群を独自のRPCフレームワークであるFinagleを使って疎結合にしたTwitterならではのユニークなアーキテクチャになっている。
FinagleはTwitterが独自に開発したRPC(Remote Procedure Call)フレームワークで、ハイパフォーマンスのネットワークサーバ/クライアント基盤である「Netty」の上に構築されている。
Netty: Home via kwout
FinagleはHTTPやMemcached、Kestrel、Thriftといったマルチプロトコルをサポートしているだけではなく、リモートメソッドの非同期呼び出しを簡単に実現できるのが特徴だ。つまり、複数のサービス呼び出しが必要なロジックのパイプライン化(多重同時処理)を簡単に実現してパフォーマンスの向上を図れるわけだ。
Scalaで書かれているためJVM系の多言語(JavaやGroovy、Scala)もサポートしている。
Twitter4Jの中の人が語るTwitterとオープンソース
2つ目の講演はTwitter Japanのエンジニアである本稿の筆者だ。筆者はTwitter APIのオープンソースJavaライブラリである「Twitter4J」の開発もしている。
Twitterでは多数のオープンソースソフトウェアを利用していることに触れるとともに、内部で開発したプロダクトをオープンソース化することにも熱心に取り組んでいる。
個人的にも多数のオープンソースプロジェクトを抱える筆者 |
■ 話題のCSSフレームワーク「Bootstrap」
例えば、TwitterのリリースするCSSフレームワークである「Bootstrap」はGitHub上で最も人気のある(Fork数の多い)プロジェクトだ。
Bootstrapは、いま非常に話題のプロジェクトなので、ご存じの方も多いのではないだろうか。WebデザインやCSSに明るくなくても見栄えの良いサイトを作れるフレームワークで、最近ローンチしたWebサービスでもBootstrapをデザインのベースにしたものは多い。またWordPressやDrupalといった人気のCMSもすでに対応済みだ。
■ コンパイル型テンプレートエンジン「Hogan.js」
また、今後注目のプロジェクトとしてTwitterが開発した高速なテンプレートエンジン「Hogan.js」を紹介した。Bootstrapほど注目されてはいないが、デスクトップブラウザからモバイルブラウザまで使えて、すでにTwitterでも多くの場所で使っている。
Hogan.jsは数多くあるテンプレートエンジンの中ではやや異色で、テンプレートを動的に解釈して値を埋め込んでいくのではなく、事前にテンプレートをAOT(Ahead Of Time)コンパイルしてJavaScriptに変換する仕組みになっている。よって、実行時にはテンプレートの解釈が不要で動作が高速になる。
Hogan.jsのテンプレート表記方法は独自のものではなく、やはりオープンソースの「Mustache」の文法に沿っている。Mustache記法は多数の言語でパーサが用意されていて、JavaScriptやRuby、Node.jsまで広くサポートしている。
{{ mustache }} via kwout
Mustacheは一般的な動的テンプレートエンジンなので、テストデータさえ用意しておけばデザイナがHTML/CSSコーディングをしながらレンダリング結果をプレビューできる。つまり、デザインの効率性と実行時のパフォーマンスを兼ね備えたのがHogan.jsといえる。
■ リアルタイム分散処理基盤「Storm」
Twitterは2011年9月にリアルタイム分散処理基盤「Storm」をオープンソースとして公開している。Twitterのツイートを解析するシステムとしてBackType社が作ったものを買収して公開した。今後も、Twitterが買収したものがオープンソースとして公開されるということが続くかもしれない。
■ MySQLの独自ツール公開、Apacheの公式スポンサーに
またTwitterではMySQLを使っているが、先日さまざまなMySQL用のツールを公開したのも注目だ。詳細は、記事「Twitter、MySQLの独自ツールをGitHubで公開」を参照してほしい。
さらにTwitterは、著名なオープンソース団体Apache Software Foundation(ASF)に出資することも発表するなど、オープンソースへの接近に勢いを増している。
Mona OSの中の人が語るTwitterエンジニアの1日
フルスクラッチで独自のOS「Mona OS」を開発していることで有名な「ひげぽん」こと蓑輪太郎氏は、1月にTwitterに入社したばかり。
現在は主にフロントエンドの日本市場向け機能の開発を担当している。本社サンフランシスコと東京という地理的・時間的な壁を越えながら、どのように仕事をしているかを説明した。例えば、朝はビデオ会議を行い本社と打ち合わせをし、午後はコーディングに没頭できる「幸せエンジニア」になれる時間を確保できているとのこと。
「幸せエンジニア」蓑輪太郎氏 |
Twitterの今後、日本とオープンソース
3人のエンジニアの講演の後は、ピザやビールをつまみながらの懇親会が行われた。
質問責めにあう蓑輪氏 |
これまで、いわばベールに包まれていた「Twitterの中」についての情報を渇望していた技術者たちは矢継ぎ早に質問を繰り出し、3人は1つ1つ丁寧に答えていた。特に、ベンソン氏は日本語は話せないながらも質問に対してホワイトボードを使いながら事細かに解説していたのが印象的だ。
ホワイトボードを使って解説するベンソン氏 |
これからもOpen Houseは定期的に開催していくとのことだ。先日はCEOのディック・コストロが来日し、日本でのエンジニア採用や震災・防災関連の機能開発も表明している(参考:Twitter CEOのコストロ氏来日、「Twitterが距離を近づける」)。本格始動したTwitter Japanの今後に期待してほしい。
またTwitterは、ほかにもScalaのシャーディング・フレームワーク「Gizzard」やHadoopのMapReduceジョブをScalaで簡単に書くためのライブラリ「Scalding」など、面白そうなオープンソースプロジェクトを持っている。気になる方は、TwitterのGitHubをフォローしてみてはいかがだろうか。
■ @IT関連記事
LESSやTwitter Bootstrapで簡単デザイン D89クリップ(41) LESSやTwitter Bootstrapなどのツールを利用した、スマートなデザイン方法など、デザイン面にフォーカスされたHTML5とか勉強会レポート |
JavaでTwitterをOAuth認証して使えるTwitter4Jとは クラウドとフレームワークで超簡単ケータイ開発(2) APIを利用するための設定をし、つぶやいたりタイムラインを取得する方法やAPIの回数制限対策について解説します 「Smart & Social」フォーラム 2011/2/8 |
Twitter4J開発者が語る、Twitterアプリ開発のコツ 晴読雨読@エンジニアライフ 『Twitter API ポケットリファレンス』書評。Twitter4J開発者ならではの分かりやすいAPI技術解説が見所だ。アプリ開発に興味がある人は必読 |
UnityでAndroidのBluetooth制御&Twitter4J連携 Unityで楽々スマホ用3Dアプリ開発入門(3) Unityが提供しているネイティブコードとの連携手法の応用編として、デバイスやJavaライブラリとの連携について解説します 「Smart & Social」フォーラム 2011/7/29 |
Twitterと連携するFacebookアプリをPHPで作る 無料クラウドでできるFacebookアプリ開発入門(特別編) Windows Azure上で動くPHPアプリの開発方法を複数パターンの開発環境の構築とともに順を追って解説します 「Smart & Social」フォーラム 2011/9/2 |
OAuthでバーコード情報Twitter投稿iPhoneアプリ Web技術でネイティブアプリを作れるTitanium(3) iPad/iPhone開発も解禁になって再び要注目のTitanium。拡張「モジュール」を使ったアプリの作り方を解説します |
はてブ+Twitterコメントをブログに表示するとこうなる これ、俺ならこう使う(3) はてブやTwitterのコメントをサイトに表示させたらどうなるか? ソーシャルサービスとの連携方法と著者作のTwitterと連携できるTweet Me!も紹介 「Smart & Social」フォーラム 2008/9/8 |
Adobe AIRでiTunes×Twitterクライアントを作った これ、俺ならこう使う(2) iTunesで再生されている楽曲のタイトルを、Twitterアカウントに「いま聴いている曲」として投稿するAIRアプリケーション「音ログAIR」を作ってみました 「Smart & Social」フォーラム 2008/8/11 |
話題の「ライフストリーム」、ここが面白い これ、俺ならこう使う(1) TwitterやFacebookミニフィードの登場で、盛り上がるライフストリーム。かなり効率的なコミュニケーションツールでもある、これらの魅力をひも解く 「Smart & Social」フォーラム 2008/7/7 |
Smart&Social フォーラム トップページへ |
- 夏休みの自由研究にマイコンボードで「電子サイコロ」を作ったり、音楽プログラミングをしたりしてみよう (2017/7/24)
子ども向け電子工作&プログラミング用マイコンボード「chibi:bit」の基本的な使い方を紹介する企画。夏休みの自由研究に「電子サイコロ」を作ったり、音楽プログラミングをしたりしてみよう - 子ども向け電子工作&プログラミング用マイコンボード「chibi:bit」の基本的な使い方 (2017/7/20)
子ども向け電子工作&プログラミング用マイコンボード「chibi:bit」の基本的な使い方を紹介する。夏休みの子どもの自由研究などに役立てつつ、プログラミングを始めるきっかけにしてみてはいかがだろうか - 3DゲームのAIをiOSのSceneKitとGameplayKitで作る基本 (2017/7/10)
3Dゲーム用のフレームワークSceneKitを使った簡単なアプリ制作を通して、3Dゲーム用の人工知能(AI)について学ぶ - UnityアプリをWebGL、UWP、Android、iOS用としてビルドしてみた (2017/6/27)
アプリをWebで実行できるように書き出す方法やWindows上でUWP、Android、iOS用などにビルドする方法について解説する【Windows 10、Unity 5.6に対応】
|
|