sakana

Your awesome Tagline

0 notes

ある QCon の講演 で, Facebook の Nick Schrock が Facebook コードベースの進化を, Eric Evans の言葉を借りるなら “しなやか/supple” になる様を紹介している. 技術的面倒とアプリケーションの面倒の双方をねじふせるデザイン, そして理解にいたるプロセスをよく伝えている.

Facebook の技術的面倒はまずなんといっても scalability だろう. 巨大かつ多様なデータをかきあつめて一刻も早くページを返したい. データベースは当然のように分割されており, live なデータが多いのでキャッシュの効き目は弱く, クエリーは並列に投げなければならず, けれどよりよって PHP なので非同期のコードを書きづらい.

アプリケーションの難しさはデーターソースの数と細かなプライバシ指定に由来する. 誰に何を見せていいのかを常に気にしなければいけない. きわどいデータを扱う割に機能はガンガン増えていく.

技術的制約が厳しいのでナイーブなモデリングはできない. ザッカーバーグ先生のひどいレガシーを何とか立てなおす必要もある. PHP はうんざりだけどユーザも開発者も機能も増えすぎちゃった上に サーバがモジュラーじゃないせいで違う言語に書き直す暇もない. (半分くらい誇張なので正確な内容はビデオで確認ください.)

そんなハードコアデスマの中から Preparable と呼ばれる擬似非同期プログラミングフレームワークと プライバシーを組み込んだオブジェクトグラフトラバサール DSL の Ent が生まれる. どうみても Facebook 以外では使い道がなさそうな API にしびれる. それは少しずつ問題を理解し, 無念なコードを飼い馴らしてきた獣使いの証だ.

質疑応答の中で “なんで PHP なんですか?” なんて聞いてるやつがいたので, おもわず “おまえは何もわかってない! Twitter で Scala でも書いてろ!!” と 恫喝したくなったが個人の見解ですし私も Scala の方がいいですがそういう話じゃねーんだよ!

半年くらい前に投稿された Facebook Engineering の Note が説く残念なコードに対する心構えも Nick Schrock のストーリーに符合している. 彼らのたたかう問題が垣間みれるようで面白かった.

steps to phantasien(2011-10-15)