2009-05-28

バージョンの確認方法について

余、ひそかに思ひたりし、優れたプログラマといふのは、バージョンナンバーの確認コードを、正しく書けるプログラマではないかと。

いや、もちろん、優れたプログラマというのはたくさんいるし、どうやって実現しているのかさっぱり分からないような優れたプログラムを書いている。しかし、世の中には、バージョン確認のコードを正しく書けないプログラマが多すぎる。

Changes in Opera’s user agent string format - Opera Developer Community

Operaというブラウザは、とうとうバージョン10になるにあたり、当初、Opera/10.00というUser-Agentに変更しようと考えていた。ところが、これはいくつかのWebサイトで、動かなかった。理由は簡単で、そのWebサーバーは、バージョンを確認し、バージョンに合わせたコンテンツを返していたからだ。そこで色々考えたあげく、Operaとしては、結局10という文字列は使わず、その代わりに、バージョンを表す、別の文字列を付け加えることにしたらしい。気の毒なことだ。

これらの、バージョンナンバーのチェックが正しく行えていないために起こる問題というのは、類挙にいとまがない。たとえば、Windows 95のバージョンナンバーでも一騒動あったと聞くし、Flash Player 10がリリースされた時も、バージョンナンバーのために動かなくなったクソなFlashがたくさんあった。nVidiaですら、Windows向けのGPUのドライバのバージョンを100にあげたとき、ドライバのバージョンを確認して挙動を変えていたゲームが、いくつか動かなくなるという問題に見舞われた。ブラウザでいえば、MSIEは、未だに、Mozilla/4.0という文字列をUser-Agentに使用している。

もっとも、最初からバージョンの確認コードなんて書かないに越したことはない。したがって、最も優れたプログラマというのは、最初からこんなクソコードなど書かないプログラマのことだろう。とくに、バージョン確認コードをかくプログラムの大半が、互換性のないバージョンで実行できないようにするものである。互換性がなかったら、最初から動かないに決まっているのだから、わざわざ自分で確認するのは、愚と言わざるべからず。

No comments: