MIMEタイプとは、任意のテキストファイルやバイト列のフォーマットを示すために使われるラベルのようなものである。主にWebでデータをやり取りする際に使われる。
概要
MIMEタイプは、元々は電子メールで使うために、IETF(Internet Engineering Task Force)のワーキンググループによって定義・標準化された。Multipurpose Internet Mail Extensionsという正式名称はその名残だ。直訳すると「多目的なEメール用の拡張子」となる。
拡張子とは、ファイル名のお尻につく.txt
のような文字列を指す。MIMEタイプはファイルの拡張子ではないが、人やソフトウェアにファイル(あるいは任意のテキストブロック)の種類を伝えるという趣旨は同じである。
MIMEタイプの構造
MIMEタイプは、type/subtype
のように、タイプとサブタイプで構成される。これらは必ずセットでなければならず、片方だけでは意味をなさない。
タイプとサブタイプはスラッシュ(/
)で区切られ、空白は入らない。
また、;=parameter=value
を付けて、任意の情報を追加することもできる。
MIMEタイプは大文字小文字を区別しない。ただ、慣習的に小文字が用いられる。一方で、パラメータの値は大文字小文字を区別する。注意が必要だ。
タイプの種類
タイプは、個別タイプとマルチパートタイプに分けられる。
個別タイプは、単一のテキストファイルやメディアファイルを対象とする。マルチパートタイプは、複数のMIMEタイプを持つ要素で構成される単一のドキュメントを対象とする。
個別タイプの種類 | 概要 |
---|---|
application | 何らかの方法で実行されるバイナリデータを示す。 |
audio | 音声あるいは音楽データを示す。 |
font | フォント(タイプフェイス)データを示す。 |
example | プレースホルダとして使うためのタイプ。 |
image | 画像データを示す。 |
message | 電子メールなどの電子メッセージを示す。 |
model | 3Dオブジェクトのためのモデルデータを示す。 |
text | テキストデータを示す。 |
video | 映像データを示す。 |
マルチパートタイプの種類 | 概要 |
---|---|
multipart | 複数の異なるMIMEタイプから構成される単一のドキュメントを示す。 |
だいたい読んだままの意味だった。
サブタイプの種類
タイプもサブタイプも、基本的にはIANAにより管理される。
ただ、サブタイプはツリーという概念でまとめられており、この枠組みの中でベンダーや個人開発者が任意に追加することもできる。
ツリーの種類 | 概要 |
---|---|
標準ツリー (Standards Tree) |
IANAが管理する、つまり標準化されたタイプのツリー。よく目にするMIMEタイプはほぼこれ。 |
ベンダツリー (Vendor Tree) |
ソフトウェアベンダーが扱えるツリー。vnd. という接頭辞がつく。 |
個人用ツリー (Personal or Vanity Tree) |
個人が任意に扱えるツリー。prs. という接頭辞がつく。 |
未登録 x. ツリー (Unregistered x. Tree) |
ローカル環境で使われるツリー。x. という接頭辞がついたサブタイプを持つ。ただしベンダツリーや個人用ツリーが用意されたため、現在使用は推奨されない。 |
追加登録ツリー (Additional Registration Trees) |
特定の業界や分野で標準的に使われるMIMEタイプを扱うツリー。 |
主な使われどころ
MIMEタイプは、主にWebサイトやメールでのデータ通信に使われる。前者はHTTP、後者はSMTP、IMAP、POP3などのプロトコルで、データの種類を受け手のプログラムに伝える役目を担う
また、<object>
、<embed>
、<video>
、<audio>
といったHTMLタグのtype
属性に指定して、ブラウザにテキストブロックの種類を伝えたりもする。
主な使い方
MIMEタイプは、データを送信する側が、データの種類を受け手に伝えるために使う。具体的な組み込み方は、構築するサーバの種類や使用する言語、及びそのフレームワークによって異なる。
ただ、基本的には以下の流れを踏襲する。
- 扱うデータのMIMEタイプを決める。
- ケースバイケースに応じて、送信データにMIMEタイプを指定する。
終わり。MIMEタイプの一覧は、IANAのMIMEタイプレジストリで確認できる。
HTMLのコーディングもおおよそ同じで、適切なMIMEタグをtype
属性を持つHTMLタグに指定する。
古くは、<script>
タグにはtype="text/javascript"
、<style>
タグにはtype="text/css"
を指定するのが一般的だった。HTML5になった現在では省略されることの方が多い。
とはいえ、画像や動画などメディアを読み込むタグでは以前としてMIMEタイプの利用は必須である。
type="module"はMIMEタイプか?
<script>
タグに、type="module"
を指定することがある。これは、そのスクリプト中でコードをインポートしたり、エクスポートしたりするケースに使われる。
一見するとMIMEタイプのようだが、これはスクリプトタグの振る舞いを操作するためのもので、MIMEタイプとは異なる。
参考資料
RFC 6838 – Media Type Specifications and Registration Procedures