各種スクリプト言語のMIME型

MIME 型は明示しなければならない

ご存知の通り、スクリプト言語を html 文書で使う場合、必ず MIME 型を指定する必要があります。

type = content-type [CI]
This attribute specifies the scripting language of the element's contents and overrides the default scripting language. The scripting language is specified as a content type (e.g., "text/javascript"). Authors must supply a value for this attribute. There is no default value for this attribute.

しかし、スクリプトの MIME 型として text/javascript, text/vbscript, text/tcl を用いることは、二つの意味で好ましくありません

スクリプト言語のMIME型は IANA に登録されていない

よく用いられている text/javascript などの MIME 型は、 IANA には登録されておりません。つまり、正式でないものを「あたかも正式であるかのように」記述していることになり、スクリプトの MIME 型を上記のように記述することは、インターネット上では規約違反ということになります。

text Media-types の意味

もう一つは、スクリプトの MIME として text Media-types を採用すること自体に関する問題点です。例えば XML 文書の MIME 型に関しては、「RFC 3023 (XML Media Types)について」で、次のように述べられています。

text/xml
普通のユーザがそのまま読めるXML文書。このメディアタイプに相応しいXML文書はきわめて少ない。
application/xml
普通のユーザにはそのままでは読めないXML文書。ほとんどのXML文書にはtext/xmlより、このメディアタイプが相応しい。

(中略)

なお、普通のユーザにそのまま読めるとは、スタイルシートやXML専用ブラウザなどを一切用いずに、単なるテキストとして表示されたものを、XMLに関する前提知識をいっさい持たないユーザが読めるということを意味します。これに該当するXMLは、きわめて少ないと思います。なお、 text/html, text/css な どの登録はすべて誤りであって、 application/html , application/css にしておくべきだったという合意がIETFにはあります。

スクリプトは大抵「前提知識がないと読むことが出来ない」ものであり、 text よりは、寧ろ application が好ましいと言えます。実際、 XHTML が application/xhtml+xml となったのも、素のまま(スタイル情報を介さない)で、かつ前提知識無しで読み取れる文書が皆無であることに由来しているものと思われます。

実際はどうすべきか

正式には登録されていない関係上、 x- という接頭辞が必要になります。嘗ての x-sjis などと同様の記述をする必要があるわけです。

参考として、 Opera の File Types に附属している、各種スクリプトの MIME 型の例を挙げておきます。

JavaScript
application/x-javascript
tcl script
application/x-tcl

VBScript の記述はありませんでしたが、恐らくは application/x-vbscript かと思われます。

もちろん、 text/javascript などが RFC などで正式に認められれば、そちらを優先して使用すべきであることは、言うまでもありません。