今日見かけた記事。
iPhoneを見捨てた Facebookデベロッパの告白
http://jp.techcrunch.com/archives/20100430joe-hewitt-web-development/
2010年にCocoaでできることをWebでやろうとしたら、2020年まで待たなければいけないみたいな、Webの進歩の遅さへの苦情とか対応方法の提案(?)とかが載っている記事。
確かにWebの進みは遅い。特にPCサイトは酷い状況だ。
新しい仕様を発案した後、ベンダー同士があーだこーだ言うのに1年、決まったことがW3Cの勧告に至るのに2年、その技術が市場に出回っている大半のブラウザで使えるようになるまで5年と、計8年も待てば使えるかなぁくらいに考えておいた方がいい。
私が「そろそろSVGは来る」と思ったのは2006年頃のことだ。ああ、ようやく使えるようになりそうだよ。IE9が来年リリースされて十分なシェアを持つようになるまで、あと3年も待てば……
iPhoneはSafariが更新されればブラウザの普及は済むのでPCサイトよりはマシな状況だが、それでも10年遅れと言われているわけだ。1つの会社の製品を意識したCocoaと、Webというクロスプラットフォームを比較するのはかわいそうな部分はあるにしても、この速度の遅さはちょっとひどい。
ちなみにここで言うWebは、HTMLとかブラウザなどのクライアントサイドを指しているものと思われる。HTTPやWebサーバなどのサーバサイドに対する苦情はそれほど聞こえてこない。もっとマシなプロトコルがあるっていう発言はたまに聞くけど、なんだかんだいって秒間120万ツイートを処理できるような仕組みが出来ているのだし。
Webのクライアントサイドがそんなにダメなら、バックエンドはWebのままでフロントエンドはまったく別の代物にしてしまうっていうのも全然アリだとは思うけど、とりあえずAirはそんなに流行っちゃいないよね。
で、冒頭の記事ではその状況をどうすれば良いかについて、こう書いている。
ではどうすべきか: ブラウザは勝手にイノベーションする。ユーザはベストのブラウザを選ぶ。その後、ユーザが選んだものをW3Cが標準化する。敗者(そのほかのブラウザ)は勝者に従う。
これは出現当時は優れていたはずのIE6が持つ技術をW3Cが無視し続けたという歴史を加味した上での発言だ。確かに出現当時は、IE6はもっとも良いブラウザだった。その仕様を標準に取り入れていれば、今ほどクロスブラウザで苦労することはなかったかもしれない。
iPhoneなどのネイティブアプリとの競合が激しい端末では、この動きを進めてしまわないと勝てないのだろう。スマートフォンのユーザビリティはPCとは違う。そしてスマートフォンはちょうど今、イノベーションを必要としている時期だ。W3Cの判子やら他のベンダーとの調整なんて待ってられない。
しかし当時のIE6はライバルを排他するために仕様を変えていた節もある。標準化を無視したとして、先行するブラウザが他のブラウザを振るい落とそうとする危険性はある。
そういえばブラウザが勝手にイノベーションするという行為は既に行われているような気もする。たとえばGoogleはGearsという「勝手なこと」をやって、そこでの実績をHTML5の仕様にフィードバックしている。Fireofxも3.6で傾き検知という面白いことをやっている。各ベンダーは自分たちがやったことをWHATWGで仕様にしてW3Cに判を押させている。その上、最近はW3Cが判を押す前に先に実装してしまうのが流行りだ。
GearsでオフラインWebが作られるようになったのが2007年。で、2010年の現在、FirefoxにもOperaにもある程度オフライン機能が搭載されている。普及するまで3〜4年ってとこか。
「ユーザはベストのブラウザを選ぶ」という考えは、あまりうまくいかないだろう。現実問題として、ベストのブラウザは選ばれていない。ユーザは「最初に入っていたブラウザ」を選ぶ。そして最初に入っているそのブラウザは、イノベーションに対して積極的でないブラウザかもしれない。IEが積極的だとは今のところは言えないし、Safariがこれからも積極的かどうかはスティーブ・ジョブズのインスピレーションにかかっている。
サイトを作成する側の人間もまた、優れたブラウザを選ぶことはできない。「この優れたサービスを使いたければOperaをインストールしたまえ」という札を掲げておくと、ユーザは「わかった、IEで見れる他のサイトを使う」と答える。iPhoneを使っているユーザなら「わかった、Opera miniを入れよう」と言ってくれる確率が少し高いかもしれないけど。
PC用ブラウザを想定しての話だけど、もしブラウザが勝手にイノベーションを生み出すという仕組みをうまく実行したいなら、著名なHTMLレンダリングエンジンと JavaScriptエンジンがすべて動くブラウザを流行らせないといけないんじゃないだろうか。で、各サイトはmetaタグかヘッダに、使用するエンジンとバージョンを書いて、ブラウザ側はそれに従ってエンジンを選択するという仕組みを普及させる。
そうすればユーザは何も意識しないうちに、サイトの作成者が指定したエンジンを使用してくれる。
そういうブラウザが流行ると、各ブラウザベンダーは真似をして、TridentやGecho、Webkitを全部搭載したブラウザを開発し始める。これでせめてエンジンについては最新のものが選べるようになる。
複数のエンジンを装備してるSleipnirやLunascape、FirefoxのIE Tab、Google Chrome Frameなどなど、上っ面と中身を入れ替えてるものは既にけっこう存在している。それに対してサイト側で「これ使え」って指定できるようにすることは難しい話じゃない。それができれば、古いサイトの動作だって守れる。
もしこの仕組みが作れないなら、いっそこうしよう。metaタグに指定してあるエンジンが自分が今使っているブラウザで使用できない場合は、レンダリングをWebで行うのだ。GoogleならきっとWebkitでレンダリングした結果をスムーズに返すサービスくらい作ってくれるさ。
妄想はこの辺にしておいて、そういうわけでクライアントサイドのWebの進歩は遅い。不条理に遅い。ヨーゼフ・Kへの裁判くらい遅い。
その遅さを解消するのは、W3CやらWHATWGやらではなく、Webを塗り替える新しいイノベーションか、Webを加速させるイノベーションか、どちらかの力が必要になるんじゃないだろうか。
そういう意味では、ある程度、各ブラウザの勝手な行動というものにも期待したいという気持ちもなくもない。でも、標準という言葉が持つ甘美な響きをそれによって否定できるかと聞かれると、けしてそういうわけでもない。標準仕様が持つWebらしさが失われることは避けて欲しいという気持ちも弱くはない。