江島健太郎氏へのインタビューの後編です。
premature optimization
宮川:Railsというと、タイムリーなのがスケーラビリティの話…Twitterとか。Lingrはどうしてるんですか?
江島:Lingrの場合はちょっと特殊なんですよ。Cometを使ってて、スケールの問題はどっちかというとJava側、Jettyでやっているほうに出ている。Railsのほうでは全然問題になってないというか。トランザクションに影響する部分も小さいしね。
宮川:画面側はJavaScriptでJettyにアクセスしているんですか?
江島:そう、裏でね。そういう意味でいうと、Javaがコネクション張りっぱなしにしてるところだけという感じで、全体的では5%ないくらい。いちおう全部Railsで動いてるけど、技術的に核な部分っていうのはたった5%。こないだ梅田さんがやってたやつ[8]でも、コケたのはJetty側のセッティング。
宮川:何回かやってみながら徐々に改善していくっていう感じですよね?
江島:うん。理想的なアーキテクチャのイメージは初めからあるけど、それを最初にやってしまうとガチガチになるから。運営しつつ、本当のボトルネックを順番につぶしていくほうがムラがない。最適化の余地があってもいきなりやらないというのはDannyから学んだ点で。やつは問題起きるまで手動かさないですよ。先にやっときゃスケーラビリティ出るよって提案するんだけど。
宮川:premature optimization(不必要な最適化)?
江島:そう、そういう風にあっさり切られちゃう。諸悪の根源と言われる(笑)。
宮川:うちも結構そうかな、特にVoxの開発。買収したLiveJournalのアーキテクチャをベースにやるって始めから決まっていて、問題が発生してもそれは過去にLiveJournalで乗り越えているからある程度わかるというのもあったんだけれど。最初から複雑なテーブルの構造を考えるより、一番シンプルなのをやって、多くなったらキャッシュ入れる、分割するって、そういう考え方をする。
江島:プラクティカルというか、技術的アプローチをLiveJournalの資料で勉強したんだよ(笑)。
Lingr、今後の展望
宮川:これからLingrをどうしていきたいですか?
江島:最初から考えてた機能はほぼ全部できちゃったので、これからは暖めてきたフューチャースペックをやっつけていく感じですね。チャットの枠組みを超えるしくみに段々なっていくっていうことなんだけど。いわゆるチャッターだけじゃなくてオフライン状態でもあるという、グループ機能みたいな…これまだ言わないほうがいいのかな(笑)。あとは、今までのSNSって人が主の、自分の友達をリストするモデル。一度友達にしたら切れないじゃない。僕はあれはあまり好きじゃなくて、主体は“場”のほうにしたい。入りたい人はいつでも入れて、出て行きたければいつでも出て行くっていう感じにすると、もっと有機的な人のつながりができるんじゃないかな。
宮川:大きくなるといろんなグループ系のサービスができて、シンプルさが失われたり…。
江島:そう。だからすぐにはやらないし、基本的に見た目上機能が増えたという風には絶対に感じさせない。表には出さず、隠し隠し…(笑)。ただ、手に馴染んで使ってくれてるコアユーザは掘っていけばどんどん新しい機能を見つけるという作りにしたい。それから、新規ユーザを増やすためには、ネタ提供機能みたいなものも考えてます。もうすでにできているコミュニティがチャットを使うならいいんだけど、それってすごい時間がかかる。2ちゃんねるでいえば「1」みたいに、これについて今話し合ってますってのが画面の一番上にガーンって表示されて、みんなそれについて話したり。とにかくバランスのいい仕様を心がけてます。あんまり拙速にやると矛盾とか出てくるから。いろんなコンテンツに対応できるようにFlashとかも入れたいね。
宮川:Twitterは競合じゃないけど、似たようなとこ結構ありますよね?
江島:そうだね。Twitterはぶっちゃけ本当にいい。ただ、あれはやっぱりCometでなくてもできるというか。厳密に言うとCometではないし、そうする必要もないサービスなんだよね。だからやっぱり直接は競合ではないなと。少なくとも僕らの専門は活きないと思う。
宮川:TwitterはSNSやIMとシームレスにつながっていて、仕様もシンプル。そこがウリですよね。
江島:そうだね。Lingrも自分がすでに持っているコミュニケーションデバイスは選べるようにしたい。ping by e-mailとかping by IMとか。
宮川:会社はLingrにずっとコミットしていく予定ですか?
江島:今年度くらいにある程度目処を付ける。Lingr自体は長期的にみれば絶対にいけるプロダクトだと思っているんだけど、開発しているリソースをずっとくっ付けとくかっていうとまた別の話で。プロダクトという筆は置き所が難しくて、目の前にあったらずっといじっちゃう。でも、どんな名作も上塗りしていくといい作品じゃなくなるから。そのエネルギーをくっ付けられる場所は、今からまた作らなきゃいけないなと…なんか事業計画話してるみたいだけど(笑)。とにかく、今はまだLingrのアイディアがいっぱいあるから作っていきます。そのあとはCometの基盤をテコにしていろいろやってみようかなと思っています。