トップページ | HTML5編・目次

●HTML5におけるMIMEタイプ

 MIMEタイプはWebサーバとWebブラウザの間でやり取りされるデータの中でファイル形式を示す識別子のことである。拡張子とファイルのタイプを関連付けるものといえばわかりやすいだろうか。(拡張子のないMIMEタイプも結構ありますが)MIMEタイプを指定するのはブラウザが拡張子を付けたファイルをサポートしていない場合にMIME タイプを指定しないとブラウザはなんのファイルかわからずにファイルのダウンロードを開始する場合があるからである。主にMIMEタイプはそれを回避するために利用しますが、実際は思い通りにいかないブラウザもあるようです。一般的に、MIMEタイプが有効か否かはブラウザ、または、サーバに影響されます。なお、type属性で指定するMIMEタイプは必須ではありませんが、推奨属性ですので指定しておくようにしましょう。特に特定のファイルタイプをサポートしないブラウザがある場合は必須となります。また、デフォルトの属性値で構わない場合を除き、MIMEタイプの指定が必須となる場合もあります。

 HTML文書に書く場合の書式は、type=”MIMEタイプ”と記述し、MIMEタイプは「ファイルの分類/ファイルの種類」というように間にスラッシュが入ります。ファイルの種類によってMIMEタイプは決まっています。bmpファイルやgifファイルといった画像ファイルなら「image/bmp」、「image/gif」、cssファイルなら「text/css」のMIMEタイプ、HTMLファイルなら「text/html」、XHTMLファイルなら「application/xhtml+xml」、XMLファイルなら「text/xml」といった具合です。

 type属性は、a、area、link、script、style、object、param、input、button、ul、ol、liなどの各要素、HTML5で変更されたmenu要素、および、HTML5の新要素であるsource要素、embed要素、command要素などに指定できますがこのうち、HTML5ではli要素, ol要素, ul要素のtype 属性とparam要素のtype属性は廃止されました。また、input要素やbutton要素はそれぞれフォームの各部品とボタンの種類を指定する属性、新要素のmenu要素、command要素はそれぞれメニューの種類、命令の種類を指定する属性ですからMIMEタイプを指定できるのは前述のそのほかの要素となります。いずれにしろ、type属性によるMIMEタイプの指定は、HTML5文書をWeb上に公開して閲覧してもらうのとは別の話となります。

 Web上に公開して閲覧してもらうHTML5文書はMIMEタイプが何であるかによって、HTML構文のHTML5文書かXML構文のHTML5文書の2種類に区別されます。HTML構文のHTML5文書はHTTPヘッダによって、"text/html"のMIMEタイプに判別され、各種ブラウザで問題なく表示されるので問題ないのですがXML構文のHTML5文書、すなわちXHTML5文書は、"application/xhtml+xml"のMIMEタイプとしてブラウザとサーバ間でやり取りされます。そして、XHTML5文書の拡張子が「.xhtml」ですから、厳密なXHTML5文書のMIMEタイプがそれであるならばそれに合わせるしかないのですがそうしますと現実問題として困ったことが起ります。

 ここでWebサーバとWebブラウザでやり取りされるデータについて簡単におさらいしておきます。MIMEタイプといったデータはWebサーバとWebブラウザのHTTPヘッダ(HTTPヘッダー)といわれる通信規格でやり取りされます。HTTP(HyperText Transfer Protocol)そのものはWebサーバとクライアント間でデータのやり取りするために使われるプロトコル(通信接続手順、通信規約)ですが、実際にはクライアントが利用するWebブラウザとWebサーバとのやり取りで行われます。クライアントの要求に応じて、ブラウザがこのページを見たいとWebサーバに頼む通信を「HTTPリクエスト」、そのリクエストに応えてサーバがブラウザに返す通信を「HTTPレスポンス」ということもあります。HTTPは主にHTML文書やXML文書を転送することを目的としていますが画像や音声データを含め、様々なデータを送ることができます。WebサーバとWebブラウザでやり取りされるデータのすべてがHTTPヘッダというわけではありませんがやり取りされるデータの中にHTTPヘッダ情報もあるというわけです。HTTPヘッダのデータには数多くのデータがありますがその中に“Content-Type”の種類を示すデータがあり、MIME Typeの仕様で定義されているコンテンツタイプがそのデータに指定されています。このときブラウザがレスポンスされた“Content-Type”を正しく解釈してくれれば問題ないのですがブラウザによっては解釈できないContent-Typeがあります。それが"application/xhtml+xml"のMIME Type で20011年6月21日にわが国で自動配信されたIE9は対応していますが、IE(v8以下)のブラウザはなんのファイルだかわからず、ほかのブラウザとは異なる解釈、振る舞いをします。もし、文法に沿ったXHTML5文書をWeb上に公開したければ"application/xhtml+xml"に非対応のブラウザ対策としてサーバサイドの設定を行います。必要なサーバ環境は、Apacheで.htaccessファイルが設置できる環境です。(.htaccessファイルを使います。別項にて記載。)

Key words:MIMEタイプ一覧表 MIME Type HTTP header

■用語補足

・メディアタイプ(media type)
 MIMEタイプは初期にインターネットメディアタイプと呼ばれていた時期があったようでそのため、名残りなのか今でもMIMEタイプのことをメディアタイプと使われる場合がありますがCSSやHTMLの世界にメディアタイプの用語があるので紛らわしいと思います。当サイトは区別して使います。MIMEタイプも文書で指定するものはMIMEタイプとしますがWebサーバとWebブラウザ間でやり取りされるHTTPヘッダのMIME Typeは“Content-Type”とした。なお、“Content-Type”とMIME Typeは同義語とした。

 CSSやHTMLで使われているメディアタイプ(media type)とはリンク先のリソースのデータ形式を指定するものです。具体的にはHTML文書のhead要素内にlink要素やstyle要素を指定し、それにmedia属性を配置して、その値にscreen(パソコン画面)、print(プリンター)、handheld(携帯電話などモバイル端末向け)といった出力メディアを指定するものです。

例)
<link rel="stylesheet" type="text/css" href="sample.css" media="screen, tv" />

※パソコン画面やテレビ用のCSSファイルを指定しています。実際のスタイルの設定はCSSファイル内に指定します。

■参考

オリジナルお気に入りアイコンの作り方
 http://www.xml.vc/pandora/favicon/book-mark.html

media属性を使った媒体別のスタイルシート
 http://www.xml.vc/kiso/media.html

既存のIE(v8以下)にXHTML5文書を読み込ませる
 http://www.xml.vc/HTML5/kiso/IE-read.html

サイト・目次 | HTML5編・目次

Copyright (C) 2011 http://www.xml.vc/ All Rights Reserved.