この日記はMozillaのプロダクトへの貢献者としての私の成果を中心に、気になったバグやWeb界隈の話題について書いていますが、 断り書きがある場合を除き、いかなる団体のオフィシャルな見解ではありません。あくまでも個人的なものです。 Mozilla Foundation、Mozilla Corporation、及び関連企業の公式情報ではないことに注意してください。

現在、XHTML 1.0 (もどき)から、HTML5なコンテンツに修正中です。古い日記は修正が完了していませんので表示が崩れます。 順次、修正していく予定ですのでしばらくお待ちください。

もずはっく日記(2008年1月)

2008年1月1日

ブラウザ判定(しかもダメダメ)しているYahoo! Japan 初回投稿日時: 2008年01月01日18時02分23秒
最終更新日時: 2008年01月03日10時17分37秒
カテゴリ: 雑談
固定リンク: id=2008010100
SNS: (list)

新年一発目から不愉快な話です。Yahoo! Japanがトップページをリニューアルしてmixiみたいなウインドウの横幅が広めであることを大前提とした、馬鹿丸出しなレイアウトに変更されています。個人的には、常用しないサイトなのでどうでも良いといえばどうでも良いんですが、こうもPVの多いサイトが、またやってしまった、というのは不快に感じます。

今回のリニューアルで最悪なのが、ブラウザ判定で想定外のUA名だとものすごくデキの悪いデザインのページが表示されるのみという点です。しかもそのブラウザ判定が頭悪いことに"Firefox"を見ているらしく、Nightlyビルドのように、Geckoブラウザでも弾かれてしまいます。UA名からブラウザ判定でコンテンツ振り分けるというタブーと言っても良い愚行の上に、そのブラウザ判定もいい加減で、なおかつ、想定しているUAも異様に少ないという、なんというか絶句させられてしまうレベルです。

そのフォールバックされるページはひどく簡略化されているため、リニューアルの恩恵はありません。こういうフォールバック先は本来、そのサイトのフル機能を実装しているものの、ブラウザ(のバグ等)に対する回避処理を入れていない、理想的なブラウザでは機能するようなものであるべきです。そうでなくては新しいブラウザを含む、未知のブラウザをサポートできないからです。

この設計者の無知っぷりや、日本で一、二を争うPVのサイトのトップページを請け負った人間がその程度のレベルという事実。なんか色々と悲しくなってしまいます。

統計上、多くのユーザの画面解像度がこれだけ広いとか、多くのユーザのブラウザの幅がこれだけ広いとか、そういう変な理由で横幅が決まったりするらしいですが、どちらの統計を使うにしても、所詮、統計でしか無いことを理解すべきです。デザイナ(と上層部?)の自己満足のために統計上で大半を占める部分以外のユーザを無視する、というのは商売的にどうなんだと感じます。無駄に間口を狭めているだけにしか思えません。

世の中、建築等々で、ユニバーサルデザインが求められる昨今、なぜ日本のWebデザインはこのように逆の方向にばかり向かっているのでしょうか? mixiといい、Yahoo! Japanといい、多くの日本のWebサイトからすればフラグシップとなりうるサイトのデザインがこうも悪い、というのは非常に頭の痛い問題です。こういう駄目なデザインを参考にしたサイトが出てくる可能性を考えると、こういうPVの大きいサイトはもう少し慎重に様々な角度からデザインを考慮してもらいたいです。

2008年1月2日

ブラウザ判定(しかもダメダメ)しているYahoo! Japan #2 初回投稿日時: 2008年01月02日17時17分22秒
最終更新日時: 2008年01月03日10時17分56秒
カテゴリ: 雑談
固定リンク: id=2008010200
SNS: (list)

昨日のエントリへの反応を読ませてもらいました。正月早々楽しんでます。

その中でも一番興味を引かれたのが指向性メモ::2008-01-02::ブラウザ判定に失敗した時のフォールバック先はフル機能であるべきなのかさん。

この文には議論の余地があると思う。本来という言葉を使うほど、この文が示す内容は妥当なものなのだろうか。というのも、今回Yahoo! JAPANは確かに最適とは言えないブラウザの判別方法を採用してしまったわけであるが、基本的には最新のブラウザにキャッチアップしていく姿勢で有るはずだ。作って放置するサイトならまだしも、このように最新状況にキャッチアップしていくサイトにおいては、フォールバック対象を前方互換(つまり未知のブラウザ)よりも後方互換(化石ブラウザ)に絞るのは間違った判断だとはいいきれない。

(中略)

もし(判別を正しく行ったとして)、旧ブラウザが多い場合、後方互換性に重きを置くという選択肢は十分あり得ると考えられる。

またそのような対象外ブラウザを使用するユーザのスキルについても考慮する必要がある。一般に、未知のブラウザを使うようなユーザと、古いブラウザを使い通い続けているユーザの事を考えた場合、前者のほうが問題発生時の対応力が高いと期待できる。問題が発生すると完全にお手上げ状態になる後者のユーザに、サイト側が歩み寄るのは対策としてはアリなのではないだろうか。

また、このような古いブラウザを使わざるを得ない環境を考えた場合、ユーザが取れる対応が著しく制限されている状況が考えられる。つまり、ハードウェアのスペックや社内規定による制限で、「動かない物は動かないのだ」とユーザがサイトの利用を諦めざるを得ない状況である場合だ。逆に未知のブラウザを利用できる環境ならば、旧バージョンを利用するなり何かしら対応を取る余地があると考えることが出来るだろう。

Flashオンリーのページが環境によっては困るように、ブラウザによっては動かない機能バリバリのページも困るものだ。そういう場合、フォールバック先をよりシンプルなページにすることは必ずしも間違っているとは言えないのではないだろうか。

ということで後方互換ページにフォールバックするのは良いことだという主張がなされているが、私はこれは違うと考えています。

まず、サイト側からすると、コンテンツを見る対象を有名ブラウザを経由した人間に限定しています。つまり、様々なクローラもYahoo! Japanが配慮してくれない限り、嘘のUA名でアクセスしないと、本来、欲しいコンテンツを取得できません。ブラウザによって表示可能な内容を変更していると、IEに偽装して得た情報がFirefoxで検索した時に表示され、その情報にアクセスすると全然違うものが表示される、そういう事態が発生してしまいます。もちろん、Yahoo! Japanの様に有名なサイトではこれは問題にならないかもしれませんが、こんな不作法を他のサイトが真似するとどうなるでしょうか?

そして古い環境への配慮、ということですが、サポートが終わっている古い環境のことを指しているのだとすれば、ネットワーク上にそれらで接続する行為、もしくはそれを促す行為自体が間違っています。Webサイト側はそもそもそれらをサポートすべきではありません。多数のWebサイトによるレガシーUAのサポート破棄は、その間違った利用者を安全なプロダクトに導く、良いキッカケになるでしょう。

そもそも、そのような古いUAをサポートしたい、という点でフォールバック先が「その他」であることが間違っています。古いUAをサポートしたいのであれば、古いUAをifで切り、elseを使うべきではありません。

私は、最初に仕様書の知識のみでサイトを作り、まずは理想的なバージョンを完成させ、実際のブラウザのバグで動作しない部分は、それぞれのブラウザ用のQuirksを入れていく、というのが正攻法だと考えています。つまり、未知のブラウザではブラウザ対策のコードが動かないので、理想的なバージョンが見ることができる、そういう形です。

それに対して、古いUAや携帯電話のフルブラウザのように、極端に環境がモダンブラウザとは異なるものを対象に加えるのであれば、それは専用のページを作り、誘導すべきです。決して同じURLでやるべきことではありません。

私は(特にひとつのURLで)ブラウザによってコンテンツを変更するというのはタブーであると考えています。なぜなら、フォールバックされていることに想定外のUAの利用者は気づかない可能性も高いからです。例えば今回のY!Jのトップページでも、Yahoo! JAPANトップページの全機能をご利用いただくには、以下の環境が必要となります。Windows:Internet Explorer 5.5以上、6.x、7.x / Firefox 2.0以上 Macintosh:Safari 2.xと書かれるのみで、コンテンツそのものが違うことを一切注意していません。

ブラウザ判定(しかもダメダメ)しているYahoo! Japan #3 初回投稿日時: 2008年01月02日22時50分46秒
最終更新日時: 2008年01月04日01時37分03秒
カテゴリ: 雑談
固定リンク: id=2008010201
SNS: (list)

色々と反響があり、嬉しい限りです。やっぱり過激な書き方した方が人が来ますね(笑)

以下はKurumaさんのご意見

Yahoo! Japanが導入したブラウザ振り分けについて中野さん石川さんのやりとりを拝見しました。理想は中野さんのおっしゃる通り、原則として標準仕様へ沿ったコンテンツを返す、という方式でしょう。しかしながら、古い環境の為に用意したのであろう、制限されたトップページはより多くの環境で表示可能であると期待されます。未知の環境に対してとりあえず表示できるコンテンツを返すという判断は、適当であるように感じます。従って、このように最新状況にキャッチアップしていくサイトにおいては、フォールバック対象を前方互換(つまり未知のブラウザ)よりも後方互換(化石ブラウザ)に絞るのは間違った判断だとはいいきれないという主張を支持します。理想的ではないけれど、現実的な解であることは確かです。

私も後方互換に関しての言いたいことは分かります。理解も納得もできます。

ですが、後方互換へのフォールバックを好ましい、または現実的と考えるのであれば、そのような複雑な設計のものをトップページ(多くのユーザにとっては入り口)に採用してしまうことが間違いで、非現実的な手法だと思います。今回の新しいトップページは個人によるカスタマイズすら念頭に置いています。つまりトップページがWebアプリケーションそのものになってしまっています。

アプリケーションとしての(複雑な)機能と万人へのアナウンス、両立しないものを両立させようとしている時点でとても難しい調整が必要なことが分かります。そしてYahoo! Japanは今回、見事に失敗していると思います。アプリケーションとしての機能が死んだ状況でも、トップページの本来の内容は全て表示するべきなのです。つまり、フォールバックされた先にあるものはフル機能版と比べて、そのトップページとしての機能を果たせていません。

それはさておき、フォールバックされた時に表示されるページはCSSはガリガリと使ってますので(中途半端にテーブル混じってるのが気になりますが)、CSSブラウザしか相手にしていないと思います。であれば、Javascriptで提供している機能のみを殺した、もっとマシなものが作れそうなものですが……

異なるURIで代替コンテンツを提供、つまり一部環境を転送するという手法には一つの難点があります。アドレス表示欄からコピーされてしまう時、意図しないコンテンツを取得されてしまう可能性があるのです。

この段落の実例をよく理解できなかったのですが、URIを異なるものにしておくと、どちらのコンテンツにもどのUAからでも柔軟にアクセス可能になります。その場合、明確に二つのコンテンツがあることが理解、もしくは説明可能です。今回の様に事実上無言で全く異なるコンテンツを返されるのであれば、URIは変わるべきです。そうでなければ、トップページにアクセスしたものの、本来とは別のページが表示されていることに気付きようがありません。たとえば、別々のブラウザを使っている人同士がYahoo! Japanのリニューアルについてチャットでやりとりしようとすると、おそらくコミュニケーションはしばらく混乱するでしょう。Debianユーザのように、すぐにIEやSafariで確認できないユーザならなおさらです。URIが異なっていれば、リダイレクトを使われない限りはこのようなことは起きません。原則としてURIはコンテンツを示す一意のものであるべきです。

私は異なるURIに自動で移動するようにすべきであるとは言いません。むしろ、壊れたページを見せて、対応できないなら簡易版を使うように誘導するのが本筋だと思います。

もちろん、そのように壊れたページを見せることがマーケティング上、よろしくないことは理解できます。で、あるならば、上述のように複雑かつ特定のブラウザしか受け入れないクローズドなサービスをオープンであるべきトップページに採用すること自体が間違いだと言えます。

2008年1月3日

2008年1月13日

もずはっく日記の若干の仕様変更 初回投稿日時: 2008年01月13日16時44分31秒
カテゴリ: WebStudio
固定リンク: id=2008011300
SNS: (list)

二つほど修正を入れました。

まず、yahooドメインのリファラを全てブラックリストに入れていたため、Yahoo! blogからのリファラが参照元として登録されないバグを修正しました。

もう一つ。IE等のapplication/xhtml+xml非対応ブラウザのために強制的にtext/htmlで再送信される機能をつけました。acceptのチェックに失敗した場合に選択肢として表示されます。なお、警告文が表示される以外は同じ内容のものが送信されるため、XHTML文書をHTML文書にサーバサイドで変換している、という訳ではありません。

2008年1月30日