SP2を導入するとIEのユーザーエージェント名が変化
Windows XP SP2導入後、私のWindowsXP HOME Edition+IE6のユーザーエージェント名(正確な表現ではありませんが、本稿では、Internet Explorerなどの「WWWブラウザ」の名称を指しています。)は、
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; (R1 1.5); .NET CLR1.1.4322)
↓
↓
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; (R1 1.5);.NET CLR 1.1.4322)
のようになりました。
| アクセスログに見るSP2導入率 |
| 2004年10月3日 | → | 2004年10月18日 |
XPユーザ 全体(A) | SP2導入 済み(B) | 割合 | XPユーザ 全体(A) | SP2導入 済み(B) | 割合 |
| サイト1 | 12,500 | 3,155 | 25.2% |
16,227 | 9,448 | 58.2% |
| サイト2 | 14,744 | 3,759 | 25.4% |
18,472 | 10,610 | 57.4% |
| サイト3 | 17,098 | 4,524 | 26.4% |
10,924 | 6,508 | 59.5% |
| サイト4 | 8,666 | 1,890 | 21.8% |
11,427 | 6,171 | 54% |
| total | 53,008 | 13,328 | 25.1% |
57,050 | 32,737 | 56.1% |
| 2004年10月18日現在。快適Net.com調べ
|
要は、「SV1」という文字列が追加になったようです。そのため、私が作成した某プログラムの中でユーザーエージェント名をデータベースに格納するものがあったのですが、データベースにあらかじめ確保していた領域からあふれることとなり、エラーが発生し、動かなくなったものがありました。これはすぐに修正しました。もちろん、今後もユーザーエージェント名が長くなる可能性はありますので、それにも対応できるようにしました。
ちなみに、このユーザーエージェント名を使って、アクセスログからSP2導入率を簡易計算してみました。「MSIE 6.0;」「Windows NT 5.1;」という文字列を持つユーザーエージェント(=
A)のうち、「SV1;」もしくは「SV1)」という文字列を持つユーザーエージェント(=
B)の割合(= B÷A×100)を計算してみました。
結果は上の表のようになったのですが、2004年10月18日現在、SP2の導入率は56.1%で、ほぼ5人に3人が導入していると言えます。逆に言えば、SP2を導入していない人が5人に2人もいることになります。ただ、10月3日の導入比率は約25%でしたから、着実に増えているとも言えます。
(
※ サイト4だけ導入率が低いですが、これはサイト4がホームページ運営者やプログラマーのためのサイトであり、SP2導入を見送る方法を知っている人が比較的多いためと思われます。このようにサイトの性格によって導入率は多少異なることが予想できます。最新のアクセスログ解析に基づくSP2導入率の推定値はこちらを参照してください。)
ちなみに「SV1」とは「Security Version 1」を意味します。(参照:
マイクロソフトのIE開発チームのBlog(英語))。今のところ、この「SV1」なる称号?(文字列)をユーザーエージェントに持つのはXPだけですが、他のOSにも順次適用していきたいと同Blogでは述べられています。
プログラマーの方にとって、このユーザーエージェント名の変化は非常に重要なはずです。SP2でのみ発生する事例について対処するためには、まずアクセスしているユーザーのユーザーエージェント名を取得し、そこからSP2適用済みブラウザとそうでないブラウザを判別する必要があるケースも、まま出てくるからです。サイト開発者側でない方には、ほとんど関係の無い話なのですが・・・。
ユーザーエージェントをJavascriptで調べるには、「
navigator.userAgent」から「
indexOf()関数」で「
SV1」を検索し、判別するだけです。例えば、Javascriptでユーザーエージェントをこの場で調べてみますと、あなたの利用しているユーザーエージェントは、
▼ 下記がその判定プログラムのソースになります。
もちろん、Javascriptによる判定では、ユーザーがJavascriptをoffにしている場合は判定できません。一方、PHPやPerlなどのサーバサイド・プログラミングの場合は、ユーザーの設定に依存することなく判定が可能になります。PHPのサンプルプログラムをこちらに準備しました。
次のページでは、「私的なブックマーク・サイト(インターネット)からローカルファイルにアクセスできなくなった」という事例を取り上げます。



