メディアタイプとは
メディアタイプ(Media Type)は、ファイルや
インターネット上で転送されるデータの形式を識別するためのコード体系です。MIMEタイプ(
Multipurpose Internet Mail Extensions)や
コンテンツタイプ(Content Type)とも呼ばれます。メディアタイプは、データの種類を特定し、適切なアプリケーションで処理するために重要な役割を果たします。
メディアタイプの歴史
メディアタイプの概念は、RFC 1341でMIMEの仕様の一部として定義されました。当初は
電子メールの添付ファイルの形式を記述するために用いられましたが、その後、HTTPなどの
インターネットプロトコルや、HTMLのようなファイル形式でも利用されるようになりました。現在では、IANA(
Internet Assigned Numbers Authority)がメディアタイプを管理しています。
関連するRFCとしては、RFC 2046やRFC 6838などがあります。また、WHATWGのMIME Sniffing Standardでもメディアタイプに関する規定があります。
メディアタイプの名称
当初は「
コンテンツタイプの値」または「MIMEタイプ」と呼ばれていましたが、RFC 1590で「メディアタイプ」という名称が定められました。HTML関連の仕様では、CSSメディアクエリの「メディアタイプ」との混同を避けるために、MIMEタイプという用語が用いられることがあります。
メディアタイプの構造
メディアタイプは、トップレベルメディアタイプ、サブタイプ、そしてオプションのパラメーターで構成されます。例えば、`text/html; charset=UTF-8` というメディアタイプの場合、`text`がトップレベルメディアタイプ、`html`がサブタイプ、`charset=UTF-8`がパラメーターです。
サブタイプは、さらに「ツリー」または「ファセット」と呼ばれる分類がなされます。
構文は以下の通りです。
トップレベルメディアタイプ名 / サブタイプ名 [ ; パラメーター ]
トップレベルメディアタイプ名 / [ ツリー. ] サブタイプ名 [ +接尾辞 ] [ ; パラメーター ]
パラメーターは複数付与できます。例:`text/plain; charset=iso-2022-jp; format=flowed; delsp=yes`
トップレベルメディアタイプ
トップレベルメディアタイプは、メディアタイプの大分類を表します。主なトップレベルメディアタイプには、以下のようなものがあります。
`text`: テキスト情報
`image`: 画像情報
`audio`: 音声情報
`video`: 映像情報
`application`: アプリケーションで処理される情報
`model`: 3次元モデルデータ
`font`: フォントデータ
`multipart`: 複数の独立したデータ型から成る情報
`message`: カプセル化されたメッセージ
`example`: 例示用のメディアタイプ
`chemical`: 非公式なメディアタイプ
各トップレベルメディアタイプには、未知のサブタイプに対する規定があります。例えば、`text`の場合は`text/plain`、`application`の場合は`application/octet-stream`として扱われます。
サブタイプ
サブタイプは、トップレベルメディアタイプをさらに細かく分類したものです。例えば、`text/html`や`image/png`などがあります。
パラメーター
パラメーターは、メディアタイプの追加情報を指定するために使用されます。例えば、`charset`パラメーターは文字コードを指定します。
主なメディアタイプの例
以下に、インターネットで広く利用されているメディアタイプの例を挙げます。
`application/octet-stream`: 任意の
バイナリデータ
`application/javascript`: JavaScript
`application/`:
`application/x-www-form-urlencoded`: フォームデータ
`application/xml`: XML
`application/zip`: ZIPアーカイブ
`application/pdf`: PDF文書
`application/xhtml+xml`: XHTML
`audio/mpeg`: MP3音声
`audio/vorbis`: Vorbis音声
`text/css`: CSS
`text/html`: HTML
`text/plain`:
プレーンテキスト
`image/png`: PNG画像
`image/jpeg`:
JPEG画像
`image/gif`: GIF画像
`video/mpeg`: MPEG動画
`message/rfc822`: Eml形式
`multipart/alternative`: マルチパートメッセージ
`multipart/form-data`: ファイルアップロードを伴うフォームデータ
登録ツリー
メディアタイプは、IANAの登録手続きを経て登録されるべきとされています。サブタイプ名は「ツリー」に分類され、以下のツリーが存在します。
標準ツリー: 一般的なメディアタイプ
ベンダーツリー: 特定の製品に関連するメディアタイプ
パーソナルツリー: 実験的なメディアタイプ
* x.ツリー: 私的利用のメディアタイプ
登録ツリーによって登録の手続きが異なります。
標準ツリー
標準ツリーに属するメディアタイプは、原則として接頭辞を持ちません。IETFの承認が必要です。
例: `application/xhtml+xml`、`image/png`
ベンダーツリー
ベンダーツリーは、公開されている製品に関連するメディアタイプで、`vnd.`ファセットが用いられます。登録にはベンダーの名称が必要となる場合があります。
例: `application/vnd.example.document`
パーソナルツリー
パーソナルツリーは、実験的なタイプや非商業的なタイプで、`prs.`ファセットが用いられます。
例: `text/prs.example`
x.ツリー
`x.`ツリーは、私的利用や外部に公開しない環境で使用されます。登録は受け付けられておらず、使用は推奨されていません。
例: `application/x.custom`
接尾辞
接尾辞は、メディアタイプの元となるデータ形式を示すために使用されます。例えば、`+xml`や`+`などがあります。登録されている接尾辞は、IANAのStructured Syntax Suffix Registryで確認できます。
まとめ
メディアタイプは、
インターネット上でやり取りされるデータの形式を識別するための重要な仕組みです。適切なメディアタイプを使用することで、データが正しく処理され、
コンテンツが正しく表示されます。メディアタイプの知識は、Web開発や
インターネット技術において不可欠な要素です。