ひとことで言うと
MIMEタイプとは、ファイルの種類をHTTPヘッダーでブラウザに伝えるための識別子です。`Content-Type: text/html; charset=utf-8` はHTMLファイル、`text/css` はCSSファイル、`image/png` はPNG画像というように、サーバーが返すヘッダーの種類によってブラウザがコンテンツをどう扱うかが変わります。
ファイルの拡張子とMIMEタイプは必ずしも一致しません。拡張子が `.html` でも、サーバーが `application/octet-stream` を返せばブラウザは「ダウンロードすべきバイナリ」と判断します。MIMEタイプはブラウザとサーバーの間での「コンテンツ種別の共通言語」であり、ファイル名では変えられません。
- 相手がログインなしで開ける状態か確認する
- PCとスマホで最低1回ずつ表示を確認する
- 内部情報・個人情報・不要な外部送信が残っていないか見る
- レビュー期限と修正時の差し替え方を決めておく
HTML共有で関係する場面
AI生成HTMLをZIP形式で固めてアップロードし、共有サービスが展開して配信するケースでは、サービス側がどのMIMEタイプを各ファイルに付けているかが重要です。`.css` ファイルに `text/plain` が付いていると、Chromeは「MIMEタイプが間違っている」としてスタイルシートの適用を拒否します。その結果、HTMLは表示されるもののレイアウトが崩れて見える状態になります。
JavaScript ファイルは `text/javascript` または `application/javascript` が正しいMIMEタイプです。古いサーバー設定で `text/plain` が返ると、スクリプトが実行されずページのインタラクティブな機能がすべて止まります。共有後に「ボタンが押せない」「アニメーションが動かない」という状態になったら、開発者ツールのネットワークタブで `.js` ファイルのContent-Typeを確認してください。
よくある誤解
「拡張子さえ正しければMIMEタイプは自動で合う」という誤解は根強いですが、拡張子はあくまでヒントであり、最終的な判断はサーバーの設定に依存します。Nginx や Apache の設定ファイルに `.css` の MIME タイプが登録されていない場合、デフォルトの `application/octet-stream` が返ることがあります。
「ブラウザがMIMEタイプを無視して賢く判断してくれる」という期待もあります。過去にはブラウザがMIMEタイプを無視してコンテンツの中身からファイル種別を推測する「MIMEスニッフィング」を行っていましたが、これはセキュリティリスクになるため現代のブラウザでは `X-Content-Type-Options: nosniff` ヘッダーにより無効化されることが多く、MIMEタイプの設定が正確でないとスニッフィングにも頼れません。
安全に使うための注意点
AI生成HTMLを共有前にローカルでテストする際は、ファイルをダブルクリックして直接ブラウザで開くのではなく、ローカルHTTPサーバー(例: `npx serve .` や Python の `python3 -m http.server`)を使って開くことを推奨します。ダブルクリックで開くと `file://` プロトコルになりMIMEタイプが関与しませんが、実際の共有URLは `https://` 配信なのでMIMEタイプの影響を受けます。
複数の静的ファイルを含むプロジェクトを共有する場合、フォントファイル(`.woff2` など)のMIMEタイプが `font/woff2` で配信されているか確認してください。誤ったMIMEタイプだとフォントが読み込まれず、レイアウトが大きく崩れることがあります。サービスのヘルプページに「対応ファイル形式」が記載されていれば、事前に確認しておきましょう。
よくある質問
AI生成HTMLをアップロードしたらCSSが当たりませんでした。MIMEタイプが原因の確認方法は?
ブラウザの開発者ツール「ネットワーク」タブでCSSファイルを選択し、レスポンスヘッダーの Content-Type を確認します。text/css でなく text/plain や application/octet-stream が返っていれば MIMEタイプが原因です。
MIMEタイプはHTML側のコードで変更できますか?
HTMLのメタタグでは変更できません。MIMEタイプはHTTPレスポンスヘッダーでサーバーが指定するもので、HTMLコードからは制御できません。共有サービスの設定か、サービス選定で対応する必要があります。
よく使うファイルの正しいMIMEタイプを教えてください。
HTML: text/html、CSS: text/css、JavaScript: text/javascript、PNG: image/png、JPEG: image/jpeg、SVG: image/svg+xml、woff2フォント: font/woff2 が基本です。不明なときは MDN の MIME タイプ一覧を参照してください。