2011-09-22

github and Facebook

ぼくの仕事は基本的にリラックスしている。朝は10時すぎに出社することもしょっちゅうだし、緊急のバグフィックスなどがない限り、6時には家に帰れる。ただ一つだけ大変なことがあって、それは

日進月歩のテクノロジーについていかなきゃいけない
まあどんな職業もそうなんだろうが、ウェブの技術は毎年どんどん進化するので、うかうかしていられない。ぼくも仕事で時間が空いた時は、なるべくオンラインで情報を漁るように心がけている。

今日もちょっと時間が空いたのでネットをうろうろしていたら、githubのディレクター・オブ・デザインをやっているKyle Neath氏のスライドに辿りついた。

githubは、ソーシャルコーディングと言われるサービスで、プログラマーたちが、お互いの書いたプログラムを共有したり、オープンソースのソフトウェアに参加したりするのを手助けするのが目的だ。社名にも含まれている"git"は、数多くのサーバやアンドロイドにも搭載されているLinuxを生み出したLinus Torvalds氏によって書かれたソフトウェア1で、ソフトウェアの開発状況を記録・管理するものだ。テレビゲームのセーブ機能みたいなものだと思ってくれればいい2。gitはgithubのサービスの心臓だ。gitのハブだからgithubというわけだ。

Neath氏の主張をまとめると「無限スクロール最高!」と「でもおまいらの無限スクロールの実装は間違っている!」となる。無限スクロールというとFacebookやTwitterが思い当たる。どんどん下の方にスクロールしていくと、ニューズフィードやTwitterのタイムラインがビヨーンと伸びるやつだ。Neath氏に言わせれば、これらは全部実装がクソだということ。代替案として彼が提案しているのがHTML5の新機能、History APIだ。

実際の彼の主張は、フロントエンドのエンジニア向けのテクニカルな話なのでおいておく。もっと興味深いのは彼のスタンスの方だ。確かにHistory APIを使った方が、無限スクロールがシンプルに実装できる。じゃあなんでFacebookもTwitterもそうしないんだろうか?これにはgithubとFacebook/Twitterの間でのユーザー層の差が絡んでいる。

githubのユーザーは基本的にみんなプログラマーだ。プログラムを共有するためのサービスだから当然のことだが、ここで肝心なのは、プログラマーの9割は基本的にFirefoxかGoogle Chromeをブラウザとして使っているということ。これにはいろいろと技術的・社会的な理由があるのだが、まあそういうものだと思ってほしい。もちろんMicrosoftのInternet Explorer(以下IE)を使うプログラマー3もいるだろうが、IEを基本ブラウザにしているプログラマーはほとんどいないだろう。プログラマーがIEを使うのは、IEを使う顧客のことを考えて、ウェブアプリの挙動をテストするためと相場が決まっているのだ。

その一方でFacebook/Twitterのユーザーはどうだろうか。8億人のユーザーがいるFacebookのユーザー層というのは、ウェブ全体のユーザー層と言っても過言でもない。そこでウェブ全体にまで視野をひろげてみると、なんと4割近いユーザーがIEを使っているのだ。Facebookの4割のユーザーといえば、8億×0.4=3.2億人だからバカにならないユーザーの数だ。

なんでこんなブラウザの話をしたのか?実はIEにはHistory APIが実装されていないのだ

当然のことながら、実装されてない機能は動くはずがない。よって、History APIを使って実装した無限スクロールは、IEを使っているユーザーにとっては全く意味のないものになってしまう。これはユーザーのほとんどがIE以外のブラウザを使っているgithubには関係ないことだが、IEユーザーの多いFacebookやTwitterにとっては大問題だ。FacebookもTwitterも数多くの優秀なフロントエンドエンジニアがいるので、Histroy APIを応用するというアイデアが思いつかなかったわけではなかろう。ただ、たくさんいるIEユーザーのことを考えるとビジネス的に論外だったわけだ。

ぼくの結論は「History APIを使おう」でも「History APIのように全てのブラウザに対応していない機能はダメだ」でもない。それよりも、エンジニアとして、あるいはプロダクト・デザイナー/マネージャーとして、自分たちのユーザー層をきちんと理解・考慮することを忘れてはいけないということだ。今日は、流行りのフロントエンド技術を漁っていたつもりが、いつのまにかもっと本質的な問題を考えさせられることになった。



  1. もちろんgitもLinuxと同様、その後多くの協力者を得て現在に至っている。

  2. ただしゲームのセーブ機能よりも遥かに高性能だ。すでに上書きしてしまった昔のセーブ地点に戻ったり、一つのセーブデータからもう一つに好きな武器や防具を引っ張ってくるなんてこともできてしまう。

  3. ちなみにぼくはWebKit Nightlyというブラウザを使っている。昔から他人と違うことをやって目立ちたがった癖の名残。

Creative Commons License