Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

MIME(マイム)とは | 意味や読み方など丁寧でわかりやすい用語解説

MIME(マイム)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

エムアイエムイー (エムアイエムイー)

英語表記

MIME (マイム)

用語解説

MIMEとは、Multipurpose Internet Mail Extensions(多目的インターネットメール拡張)の略称であり、電子メールがテキストデータ以外の多様な種類の情報、例えば画像、音声、動画、実行ファイル、あるいは国際文字セット(非ASCII文字)などを含むコンテンツを扱えるようにするための規格である。インターネットにおける情報流通の基盤技術の一つとして、電子メールだけでなく、ウェブ(HTTP)などの他のプロトコルでも広く利用されている。

初期の電子メールシステムは、主に7ビットのASCII(American Standard Code for Information Interchange)文字コードで書かれたプレーンテキストのメッセージしか送受信できないという制約を持っていた。これは、当時のネットワーク環境やシステムの制約から生まれたもので、英数字と記号のみで構成されるシンプルなメッセージのやり取りには十分であった。しかし、インターネットの普及とともに、電子メールで日本語や中国語のような多言語のテキストを送りたい、あるいは写真や文書ファイルを添付して送りたいといったニーズが急速に高まった。MIMEは、こうした従来の電子メールシステムが抱えていた根本的な課題を解決するために考案された。MIMEを導入することで、電子メールは単なるテキスト通信手段から、リッチコンテンツを扱う総合的な情報交換プラットフォームへと進化を遂げたのである。MIMEは、メッセージの内容に関する詳細な情報(コンテンツタイプ、エンコーディング方法など)をメッセージヘッダに記述することで、受信側のメールクライアントがその内容を適切に解釈し、表示・処理することを可能にする。

MIMEの機能は、メッセージヘッダに特定のフィールドを追加することで実現される。最も基本的なものは「MIME-Version」ヘッダであり、MIMEのバージョンを示すことで、メッセージがMIME規格に準拠していることを宣言する。これにより、受信側のシステムはメッセージをMIMEとして処理する準備を整える。

次に重要なのが「Content-Type」ヘッダである。これは、メッセージやその一部がどのような種類のデータであるかを示すもので、MIMEタイプとも呼ばれる。Content-Typeは「タイプ/サブタイプ」の形式で記述され、例えば「text/plain」はプレーンテキスト、「text/html」はHTML形式のテキスト、「image/jpeg」はJPEG形式の画像、「application/pdf」はPDF文書といった具合に、データの種類を明確に区別する。このヘッダには、さらに文字エンコーディングを指定する「charset」パラメータを含めることができ、例えば「text/plain; charset=utf-8」と記述することで、そのテキストがUTF-8エンコーディングであることを示す。これにより、異なる環境のシステム間でも文字化けせずに正しく表示されるようになる。

もう一つ重要なのが「Content-Transfer-Encoding」ヘッダである。これは、メッセージ本文のデータがどのようにエンコード(符号化)されているかを示す。前述の通り、初期のメールシステムは7ビットASCIIデータしか安全に転送できないという制約があったため、8ビットデータ(日本語の文字コードやバイナリデータなど)をそのまま送ろうとすると、途中でデータが破損する可能性があった。この問題を解決するため、MIMEは8ビットデータを7ビットASCII文字の範囲で表現するいくつかのエンコーディング方式を定義している。主なエンコーディング方式には以下のものがある。

  • 7bit: メッセージが元々7ビットASCII文字のみで構成されている場合に指定される。特別なエンコーディングは不要である。
  • 8bit: メッセージが8ビット文字を含むが、改行コード以外の制御文字を含まず、各行の長さが制限を満たす場合に指定される。ただし、すべてのメール転送エージェントが8bitデータを安全に扱えるとは限らないため、注意が必要である。
  • quoted-printable: 主にテキストデータで、ごく一部の非ASCII文字や制御文字を含む場合に効率的である。エンコードされた文字は「=XX」(XXは16進数)の形式で表現されるため、元のテキストに近い可読性を保ちつつ、安全に転送できる。例えば、日本語の「あ」のような文字は、この方式でエンコードされると「=E3=81=82」のようになる。
  • base64: バイナリデータ(画像、音声、実行ファイルなど)をASCII文字列に変換する際に広く用いられる。3バイトのバイナリデータを4バイトのASCII文字に変換するため、データサイズは約33%増加するが、すべての文字がASCIIの印字可能文字となるため、どのような環境でも安全に転送できる。これは、添付ファイルの送受信において最も一般的に利用されるエンコーディング方式である。

さらに、「Content-Disposition」ヘッダも利用される。これは、メッセージの各部分がどのように表示されるべきか、あるいはどのようなファイル名で保存されるべきかを示す。主に「inline」と「attachment」の二つの値が使われる。「inline」は、メッセージ本文の一部として直接表示されるべきであることを示し、例えばHTMLメールに埋め込まれた画像などに使われる。「attachment」は、添付ファイルとして扱われ、ユーザーがダウンロードして別途開くべきであることを示す。このヘッダには「filename」パラメータを含めることで、添付ファイルの元のファイル名を指定できる。

MIMEの強力な機能の一つに、単一のメッセージ内に複数の異なるコンテンツを含めることを可能にする「マルチパートメッセージ」の概念がある。これは、Content-Typeが「multipart/…」で始まるタイプ(例: multipart/mixed, multipart/alternative, multipart/relatedなど)として表現される。例えば、テキストと画像を同時に送る場合や、複数のファイルを添付する場合に利用される。マルチパートメッセージでは、メッセージ本文が特別な「boundary(境界線)」文字列によって複数のパートに区切られる。それぞれのパートは独立したヘッダとボディを持ち、それぞれが異なるContent-TypeやContent-Transfer-Encodingを持つことができる。

  • multipart/mixed: 複数の独立したパートを順に結合する際に用いられる。最も一般的なマルチパートタイプで、複数の添付ファイルを送る場合などに使われる。
  • multipart/alternative: 同じ内容を複数の異なる形式で提供する際に用いられる。例えば、メールの本文をプレーンテキスト形式とHTML形式の両方で送信し、受信側のメールクライアントが対応する最もリッチな形式を選択して表示できるようにする。
  • multipart/related: あるパートが他のパートと関連している場合に用いられる。代表的な例は、HTMLメールとそのHTML内で参照される画像ファイルなどをまとめる場合である。

MIMEは当初、電子メールの拡張として開発されたが、その汎用性の高さから、現在ではHTTP(Hypertext Transfer Protocol)をはじめとする他の多くのインターネットプロトコルでも広く利用されている。例えば、ウェブサーバーがクライアントにファイルを送信する際、HTTPレスポンスの「Content-Type」ヘッダでMIMEタイプを指定することで、ブラウザはそのファイルがHTML文書なのか、画像ファイルなのか、あるいはダウンロードすべき実行ファイルなのかを判断し、適切に処理する。このように、MIMEは単なるメール拡張にとどまらず、インターネット上の多様なデータ形式を識別し、適切に処理するための標準的な枠組みとして、現代のITシステムにおいて不可欠な役割を果たしているのである。システムエンジニアを目指す者にとって、MIMEの基本的な概念と主要なヘッダフィールドを理解することは、ネットワーク通信やアプリケーション開発の多くの側面で役立つ知識となる。

関連コンテンツ

関連プログラミング言語