2010-03-30

How NOT to write a good javascript code

これでできる! クロスブラウザJavaScript入門:第2回 完全版:ブラウザとデバッグ環境|gihyo.jp … 技術評論社

この記事では、いかにして、バージョンの古いブラウザ環境を構築するかに、紙面の大半を割いている。有害すぎる。

そもそも、バージョンの古いブラウザは、規格を正しく実装せず、必ずセキュリティホールを含んでいるのである。このようなworkaroundは、何も生み出さない。ただ、問題をややこしくするだけである。この記事は、クロスブラウザのための環境構築という大義名分のもと、その実、自分自身が、クロスブラウザに多大な労力をつぎ込まなければならない環境構築の片棒を担いでいるのである。本末転倒も甚だしい。

何のためにWeb標準が策定されているのか。何のために、各ブラウザベンダーは、ブラウザをアップデートしているのか。クロスブラウザなどということを、考えなくても済むようにするためである。この記事は、それらの、より良い未来への努力を、蔑ろにする行為である。もしそれ、真にWebの将来を信じているならば、ブラウザのアップデート方法にこそ、紙面を割くべきである。

今や、ブラウザは、自動的かつ静かにアップデートするのが、主流になりつつある。Chromeは、すでに、この両方を達成している。FirefoxやSafariやOperaやIEは、まだ、ユーザーの許可を求める。これは問題がある。今一歩をあえて進めて、静かにして、かつ、強制的にアップデートするべきである。

クロスブラウザが必要不可欠であるという状況も、変わりつつある。マイクロソフトも、ようやく本腰を上げて、Web標準に追随しだした。現在の発表を信じれば、IE9で、ようやく、他のブラウザの尻に追いつくぐらいのことは、できるだろう。

今や、最大の障害であった、IEですら、変わっていこうとしているのである。それを、このような有害、邪悪な記事でもって、妨げるというのか。

もちろん、実際に、ブラウザのアップデートをしないアホどものために、対応しなければならないという現実がある。それはある。しかし、そのような汚い小手先のworkaroundのための、古い環境の構築方法を公開して、何になるというのだ。

この記事が公開される否や、即座に、はてなブックマークの数字となって、反響が現れていた。そのタグに曰く、「ノウハウ」と。何がHowだ、何が。ユーザーはもとより、Web開発者すら、その心境で、どうしてWeb標準などが普及するというのか。このままでは、Web標準の将来は暗い。

この記事の筆者は、ブログにて、「とくに、Safari/ChromeのWeb Inspector*1や、OperaのDragonflyとかは知らない人も多いと思うので、この機会に試してもらえたら良いなぁと思います。」などと言っている。馬鹿げているにもほどがある。

もし、現段階で、Web InspectorやDragonflyを知らないWeb開発者がいるとすれば、そいつには、開発をさせるべきではない。

嘆かわしいかな、Webの未だにかくあるを。憂うべきかな、ユーザーはもとより、Web開発者の心境すら、旧世紀に異ならざるを。さりとて、吾人、何らの解決策をも持たざるなり。また、やんぬる哉。

こういう記事をありがたがる浅はかなWeb開発者の典型的な例:clear sky source - とてもCSSハックが面倒ですので、何か用意してください

6 comments:

  1. > こういう記事をありがたがる浅はかなWeb開発者の典型的な例
    「何のためにCSSでブラウザを判別する必要がある(あった)のか」というところがすっぽりと抜け落ちて、手段が目的と化してるわけですね。

    ReplyDelete
  2. ブラウザは強制的にアップデートするべきというのは同意です。
    しかし、「何のためにWeb標準が策定されているのか」は少なくともIE6などのレガシーな環境を切り捨てるためではありません。特にHTML5ではレガシーな環境との互換性を最大限に配慮されています。逆に、互換性を考えなかったXHTML2は消え去りました。
    件の連載は、レガシーな環境に100%対応するという話ではなく、レガシーな環境でもユーザーが困らない程度に対応するべきという話です。そのために、レガシーな環境での確認も必要だと考えています。その部分はもっと強調するべきだったと思います。後で追記しようと思います。

    ReplyDelete
  3. それにしても、このようなバッドノウハウは、積極的に公開すべきものではありません。

    ReplyDelete
  4. 私はバッドノウハウこそ積極的に公開(もちろん、それがバッドノウハウであることを書いた上で)するべきだと考えています。
    例えば、新人プログラマーが件の記事のレベルの環境を用意するのにどれくらいの時間がかかるでしょうか。おそらく1日で済めば良い方で、そもそも同じレベルまで持っていくことは難しいでしょう。件の記事を参考にすることで1,2時間で済むなら、差分の時間は他のもっと有意義なこと(HTML5について勉強するとか)に使うことができます。
    # 実際には早く帰れる、でしょうね
    で、今回の環境構築はバッドノウハウの序の口でしかありません。本番はこれからです。そこでは、ここに書いたようにバッドノウハウであることを明記し、標準仕様はどうなっているのかを極力補足していくつもりです。
    今回のツッコミを頂いたことで、この辺りの前提をしっかり書いたほうが良いと認識したので、参考にさせて頂こうと思います。というわけで、お礼を。ありがとうございます。

    ReplyDelete
  5. >差分の時間は他のもっと有意義なこと(HTML5について勉強するとか)に使うことができます。

    難しいところです。
    まあ、もう数十年は、Web標準というのは、理想の物語になるでしょうね。

    ReplyDelete
  6. Chromeの自動更新は「デフォルトで」有効なのではありませんよ。Chromeに自動更新の設定は(少なくともGUIでは)存在しません。Chromeに限って言えば旧バージョンのインストールと動作確認なんかしてる暇があったらそれこそ他のもっと有意義なことに使うべきで、有害といいたくなる気持ちもわからなくはないです。
    その上であえて蛇足しておくと、記事に書かれた方法ではGoogleのダウンロードサーバーには2つくらい前までのバージョンしか置かれていませんが、
    http://build.chromium.org/buildbot/symbols/?C=N;O=D
    に全バージョンあります(chromium.orgですがここにあるのはChromeです。Chromiumは別の場所にあります)。

    ReplyDelete

You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.