前の記事 ≪:色調を様々に変えてくれるPhotoshopアクション80
次の記事 ≫:効果音付きでアニメーションするクールなダイアログ実装jQueryプラグ...

フェイスブックの作ったオープンソース色々

2011年01月17日-はてなブックマーク

スポンサード リンク
[PR] 英単語を忘却曲線アプリを使って超効率よく記憶する方法


公開初日に早速フェイスブックの映画、ソーシャルネットワークを見てきました。
サービスを作ってる人は、\1,800はらうだけでやる気を200%ぐらいにしてくれる映画だと思うので費用対効果は安いと思います。

映画の中で、ハーバード大学は2時間で22000アクセスのトラフィックを集めただけで落ちちゃうの?とかナップスターの作者さん遊び上手すぎじゃない?とか、新機能の実装に家かえってから1、2分とか早すぎない?等の、ツッコミどころなんかも楽しめます。

映画の中ではコーディングに関することは殆ど出てこなかったわけなんですが、膨大なトラフィックをさばくためにfacebook自体、多くのオープンソースを公開しているのでdevelopers.facebook.comから紹介してみます。
もうすぐ6億人に届くほどのユーザを扱うためには、想像を絶するインフラや高速化、サーバ間連携の仕組みが必要になるわけですが、どうやって開発しているのか?何を使って実現されているのか?どうやって負荷に耐えているのか?というところにも映画以上のドラマがあるはずです。

開発者ツール
開発用のライブラリや開発支援ツール等

codemod
大規模なコードのリファクタリング支援・ライブラリツール。pythonで書かれています
 
Facebook Animation
DOMやCSSの操作でアニメーションを作成できるJavaScriptライブラリ
 
flvtool++
FLVファイルのメタデータを操作するためのC++ライブラリ。
 
Online Schema Change for MySQL
クラスターをオフラインにせずMySQLテーブルに変更(Alter)を加えられる解説
 
PHPEmbed
C++のコードの中からPHPファイルを読み込みPHP関数をそのまま呼べます。
PHPで作ったコードをC++ベースのプログラムから直接呼び、返り値も受け取れるのでPHP資産をそのまま利用できます
C++等でデーモンを組む際にもPHPで作ったコードをそのまま使えるので便利みたいです (解説)
 
phpsh
phpが使えるシェル環境。 php> というシェルプロンプトにphpのコードを入れていくとそのまま実行できるというもの。
ブラウザにあるJavaScriptコンソールのPHP版みたいなものです。なぜかPythonで書かれています
 
Three20
沢山のUIエレメント等を含むObjective-Cのライブラリ。既にThree20を使ったアプリが大量にあります
 
XHP
PHPをよりセキュアに使うための文法を拡張するPHPエクステンション。
 
XHProf
PHPプログラムを解析して何処が重いか?がブラウザ上で簡単に分かる「XHProf」
 というエントリで以前紹介しましたが、ブラウザ上でプログラムのプロファイルを行えるライブラリです。
ソフトウェアの規模が大きくなると、どこが重いかなんていうのはよく見ないと突き止められませんが、XHProfで一発で分かってすぐ改善できます

インフラソフトウェア
膨大なトラフィックを捌いたり、大量のデータを扱うための基本的なシステムを支えるためのインフラソフトウェアも多くオープンソース公開されています。

Apache Cassandra
ご存じ、Twitterが採用というニュースで大いに盛り上がったNoSQLのオープンソース。

Apache Hive
Hadoop上のデータをHiveQLというSQLっぽい言語で操作できるもの。こちらもFacebookが開発。

FlashCache
ファイルシステムへのデータ同期を高速化するLinuxのカーネルモジュール.「Flashcache - フツーな日常」の解説が分かりやすい。

HipHop for PHP
PHPのコードをC++にコンパイルして2倍以上の高速化を図る仕組み。これまでの資産そのままに、CPU負荷を半分にして2倍のスループットを実現できます。
単純計算で2万台のサーバが1万台になりますね。
 
Scribe
大量のサーバからのログをリアルタイム集計するための仕組み。

Thrift
C++,Java,Python,PHP,Ruby 等の言語間での通信を実現するフレームワーク。言語ごとに向き不向きがあるけど、これで機能ごとに言語を使い分けられる

Tornado
Pythonベースのwebサーバフレームワーク。1000クライアントからの同時接続を扱うためのデザインされています。

コントリビュート
他にも有名なオープンソースにもコントリビュートしてます。
6億人のユーザを抱え、そのノウハウをオープンソースに戻してくれるというのは素晴らしい限りですね。

Apache Hadoop, Apache HBase
ご存じHadoop、HBase。ユーザ数6億だけを扱うだけでも大変そうなのですが、それらユーザの作るデータを扱うわけなのでクラスター数も想像を絶するものになりそうですね。

Cfengine
サーバ群の設定をオートメートする仕組み。ここが詳しい

jemalloc
高速なmallocを実現するメモリアロケートのためのライブラリ

memcached, MySQL, PHP
ご存じのこれらソフトウェアにもコントリビュートしてるみたいです。PHPにはFacebookの技術も入ってくる、ということですね。

Varnish
コンテンツキャッシュのためのリバースプロキシ。毎日何10億というユーザの写真等をキャッシュして高速に配信するために用いられてます。

Facebook連携用の各種言語用SDK
facebook をアプリケーションに組み込む際に使えるSDKキットも多くの環境で使えるように公開されています。

PHP
Python
Android(Java)
C#
iPhone

JavaScript

数億人という利用者を捌ききって、ノウハウを社内だけにとどめておくのではなく、オープンソースとしてこれだけ多くを公開するというところも好感が持てますね。
モバゲー、グリー、mixiといった日本のSNSも熾烈なシェア争いを繰り広げていますが、ここにfacebookが加わって、今映画が公開されてますますシェアが上がるんじゃないかというところで、リアルタイムなドラマを楽しみたいと思います。

訂正)Tree20ではなくThree20でした

関連の記事検索:facebook, オープンソース, まとめ, Facebook
スポンサード リンク

By.KJ : 2011年01月17日 09:11 livedoor Readerで購読 Twitterに投稿

間違いの指摘をしていただける方はメール、あるいはTwitter/FBでお願いします(クリック)