情報アイランド

「情報を制する者は世界を制す」をモットーに様々な情報を提供することを目指すブログです。現在はプログラミング関連情報が多めですが、投資関連情報も取り扱っていきたいです。

ウェブ開発者なら必ず知っておくべき基礎知識(5)メディアタイプ(MIMEタイプ)

メディアタイプ(MIMEタイプ)とは

メディアタイプ(MIMEタイプ)はデータの種類を表すために用いられる文字列です。

メディアタイプは下のような構成要素から成ります。

  • トップレベルメディアタイプ・・・データの大まかな種類を表します。
  • サブタイプ・・・データの形式を表します。
  • パラメータ・・・データの特性を表します。

トップレベルメディアタイプが大分類となっており、サブタイプが小分類となっています。また、パラメータはトップレベルメディアタイプとサブタイプの両方に存在します。

メディアタイプはトップレベルメディアタイプ、/、サブタイプ、;、パラメータを順番に並べることによって記述し、パラメータはパラメータの名称、=、パラメータの値を順番に並べることによって記述します。

また、複数のパラメータは;で区切ります。

使用できる文字

パラメータの値に使用できるのは英数字と下の文字のみです。

  • !
  • #
  • $
  • %
  • &
  • '
  • *
  • +
  • -
  • .
  • ^
  • _
  • `
  • {
  • |
  • }
  • ~

ただし、下の文字はパラメータの値全体を"で囲むことによって使用することができます。ただし、"で囲んだパラメータの値の中で"を使用することはできませんので注意してください。

  • (
  • )
  • <
  • >
  • @
  • ,
  • ;
  • :
  • \
  • /
  • [
  • ]
  • ?
  • =

トップレベルメディアタイプ

トップレベルメディアタイプには下のようなものがあります。

  • text・・・テキストデータを表します。
  • image・・・画像データを表します。
  • audio・・・音声データを表します。
  • video・・・動画データを表します。
  • application・・・アプリケーションのデータを表します。
  • multipart・・・複数のデータから成るデータを表します。
  • message・・・通信プロトコルのメッセージデータを表します。

textトップレベルメディアタイプ

textトップレベルメディアタイプのデータは改行をキャリッジリターンとラインフィードで行わなければなりません(キャリッジリターンとラインフィードを順番に続けることによって行わなければなりません)。

textトップレベルメディアタイプには下のようなサブタイプがあります。

  • css・・・CSSを表します。
  • csv・・・CSVを表します。
  • html・・・HTMLドキュメントを表します。
  • markdown・・・Markdownドキュメントを表します。
  • plain・・・フォーマットのないテキストデータを表します。
  • xml・・・XMLドキュメントを表します。

textトップレベルメディアタイプには下のようなパラメータがあります。

  • charset・・・テキストデータの文字コードを指定します。デフォルトはus-asciiです。

文字コードには下のようなものがあります。

  • euc-jp・・・EUC-JPです。
  • shift_jis・・・SHIFT_JISです。
  • us-ascii・・・ASCIIです。
  • utf-8・・・UTF-8です。

imageトップレベルメディアタイプ

imageトップレベルメディアタイプには下のようなサブタイプがあります。

  • bmp・・・BMG画像を表します。
  • gif・・・GIF画像を表します。
  • jpeg・・・JPEG画像を表します。
  • png・・・PNG画像を表します。
  • svg+xml・・・SVG画像を表します。

applicationトップレベルメディアタイプ

applicationトップレベルメディアタイプには下のようなサブタイプがあります。

  • atom+xml
  • ecmascript・・・ECMAScriptのソースコードを表します。
  • gzip・・・Gzip圧縮されたデータを表します。
  • javascript・・・JavaScriptのソースコードを表します。
  • json・・・JSON形式のデータを表します。
  • octet-stream・・・バイナリデータを表します。
  • pdf・・・PDF形式のデータを表します。
  • soap+xml
  • wsdl+xml
  • x-www-form-urlencoded・・・URI(URL)エンコードしたフォームデータを表します。

multipartトップレベルメディアタイプ

multipartトップレベルメディアタイプにおいては複数のデータを区切り行で区切って1つのデータにします。ただし、最初のデータの直前と最後のデータの直後にも区切り行を挿入する必要があります。

また、データはヘッダ領域とボディ領域に分かれ、空行で区切って順番に記述します。

ヘッダ領域には下のようなヘッダフィールドを格納することができます。

  • Content-Type・・・データのMIMEタイプを指定します。デフォルトはtext/plain;charset=us-asciiです。
  • Content-Transfer-Encoding・・・データの形式を指定します。7bit8bitbinaryでなければなりません。デフォルトは7bitです。7bitはコードポイントが1以上127以下の文字から成るテキストデータを表します。ただし、1行の文字数は998文字以下でなければなりません。8bitはコードポイントが1以上255以下の文字から成るテキストデータを表します。ただし、1行の文字数は998文字以下でなければなりません。binaryはバイナリデータを表します。
  • Content-ID・・・データの識別子を指定します。
  • Content-Description・・・データに対する説明を指定します。

multipartトップレベルメディアタイプには下のようなパラメータがあります。

  • boundary・・・区切り行を指定します。ただし、70文字以下でなければならず、空白で終わってはなりません。また、実際の区切り行は最後の区切り行以外については--とこのパラメータの値と改行を結合したものとなり、最後の区切り行については--とこのパラメータの値と--を結合したものとなります。

なお、boundaryヘッダフィールドの値として使用できるのは英数字と下の文字のみです。

  • '
  • (
  • )
  • +
  • _
  • ,
  • -
  • .
  • /
  • :
  • =
  • ?

また、改行はキャリッジリターンとラインフィードで行います(キャリッジリターンとラインフィードを順番に続けることによって行います)。

multipartトップレベルメディアタイプには下のようなサブタイプがあります。

  • alternative・・・複数のデータが1つのデータを別々の形式で表したものであることを表します。
  • byteranges
  • form-data・・・フォームデータを表します。
  • mixed・・・複数のデータが独立していることを表します。
pizyumi
プログラミング歴19年のベテランプログラマー。業務システム全般何でも作れます。現在はWeb系の技術を勉強中。
スポンサーリンク

-web