image/pjpeg とは?[Windows]
(2009-04-08 19:29:12) by shinoda


ま、当然、progressive JPEG のことなんでしょうが・・・

ファイルアップロードのある CGI の話。
画像ファイル以外のアップは駄目だということで、FORM データの Content-Type を見て、

image/jpeg
image/gif
image/png

の、3つ以外はエラーにしてたんだけど、InternetExplorer7 から JPEG 画像をアップすると必ずエラーになる。
FireFox3 から同じ画像を上げたら問題ないのに。

で、FORM データの中身を見ると、IE7 は JPEG の Content-Type を image/pjpeg で上げてきてますよ・・・
どうも、2005年頃から問題になっているようで、RFC への記載も無いお得意の「Microsoft の独自実装」ってヤツみたいですね。

なんでもかんでも JPEG ファイルなら(baseline JPEG でも)image/pjpeg をセットしているみたいなので、わざわざ pjpeg にしている意味がまったくない。百害あって一利無し。なのに、なんで Micorosoft はこういうことをするんでしょうか?
Microsoft 信者は、なぜ Microsoft がこんな訳のわからんことをしているのかちゃんと説明しなさい。でないと、Microsoft 信者というだけで、あんたたちが馬鹿者扱いされるのも致し方ないことですぞ。

ちなみに、Windows2000 の InternetExplorer6 SP1 でも image/pjpeg をセットします。
(そういえば、Outlook 等、メールの添付ファイルではちゃんと image/jpeg を使っていたはずです。ま、InternetExplorer の開発チームが馬鹿だった・・・ということなんでしょう)

Microsoft が巨大企業なので、多くの「素人さん(IT業界の中にも、Microsoft 信者という形で存在します)」は Microsoft を「高い技術力を持った会社」と誤解しています。確かに限られた部分では、高い技術力を持っていると思いますが、例えばわしらのように The Internet の世界を商売ネタにしている技術者からすると「Microsoft はメジャー企業の中では最低の技術力の会社」にしか見えませんな。

よく、Microsoft は RFC を無視した独自実装を導入して、周りから「シェアにものを言わせた横暴な行為」と非難されてますが、俺に言わせれば、確かに半分は「わかってて無視した結果」なんでしょうが、残り半分は単に「技術的理解力不足による過った実装」でしかないと思うね。
今回の image/pjpeg もそうでしょう?まったく意味をなしてないんだから。
なんか、Microsoft としては狙いがあったんだろうけど、結局まったく意味がなかった。つまり、完全に技術者の「理解力不足」からくるバグだったってわけ。

面倒くさいことに、IE ファミリーのためだけに、ファイルタイプをチェックするのが、

$type eq 'image/jpeg'

ではなく、

$type =~ /image\/p*?jpeg/

と書かなくちゃいけなくなっちゃう。
正規表現がわからないプログラマだと、

$type eq 'image/jpeg' || $type eq 'image/pjpeg'

のような不細工なコードになっちゃう。

Microsoft が「理解不足」からやっちゃった過った実装は、こうして広く、プログラマに迷惑をかけるのであります。

<追記>
Windows の FireFox 3.0.8 も、Mac OS-X の Safari 3.1.1 も、JPEG 画像の Content-Type は image/jpeg をセットします。
image/pjpeg をセットする狂ったブラウザは、IE ファミリーだけでありましょう。


コメント(1)
トラックバック(2)
次の記事へ >
< 前の記事へ
TOPへ戻る

Powered by
MT4i 3.0.8