コンテンツにスキップ

開発者のためのファイル形式クイックリファレンス

カテゴリ:リファレンス

Webアプリケーションの開発では、ファイルのバリデーション、MIME タイプの判定、アップロード制限の設計など、ファイル形式に関する知識が頻繁に求められます。この記事では、開発現場でよく扱うファイル形式を一覧にまとめます。ブックマークしておけば、いつでも参照できるクイックリファレンスとしてご活用ください。

画像形式

拡張子 MIME タイプ 圧縮 透過 主な用途
.png image/png 可逆 対応 スクリーンショット、ロゴ、アイコン
.jpg / .jpeg image/jpeg 非可逆 非対応 写真、サムネイル
.gif image/gif 可逆 対応(1bit) アニメーション、シンプルな図
.webp image/webp 両方 対応 Web全般(PNGの後継候補)
.avif image/avif 両方 対応 次世代Web画像
.svg image/svg+xml なし(XML) 対応 ベクター画像、アイコン

注意:SVG はXMLベースのため、XSS(クロスサイトスクリプティング)のリスクがあります。ユーザーからアップロードされた SVG をそのまま表示するのは危険です。サニタイズ処理を必ず行いましょう。

ドキュメント形式

拡張子 MIME タイプ 内部構造 主な用途
.pdf application/pdf バイナリ 印刷用ドキュメント、帳票
.docx application/vnd.openxmlformats-officedocument.wordprocessingml.document ZIP(XML) Word 文書
.xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet ZIP(XML) Excel スプレッドシート
.pptx application/vnd.openxmlformats-officedocument.presentationml.presentation ZIP(XML) PowerPoint プレゼンテーション

アーカイブ形式

拡張子 MIME タイプ 特徴 注意点
.zip application/zip 最も普及、OS標準対応 日本語ファイル名の文字化け(UTF-8 vs CP932)
.tar.gz application/gzip Unix/Linux 標準 Windows では展開ツールが必要な場合あり
.7z application/x-7z-compressed 高圧縮率 専用ツール(7-Zip)が必要
.rar application/vnd.rar 分割アーカイブ対応 プロプライエタリ形式

テキスト・データ形式

拡張子 MIME タイプ 用途 よくある問題
.csv text/csv データ交換、インポート/エクスポート 文字コード、改行コード、BOM
.json application/json API通信、設定ファイル UTF-8 必須(RFC 8259)
.xml application/xml 設定ファイル、データ交換 エンコーディング宣言との不一致
.txt text/plain ログ、メモ、README 文字コードの自動判定が不安定

MIMEタイプのバリデーション

ファイルアップロード機能を実装する際、拡張子だけでなく MIME タイプも検証することが重要です。ただし、MIME タイプはクライアント側で偽装できるため、サーバー側でのマジックバイト(ファイルヘッダー)チェックも併用しましょう。

// PHP でのマジックバイトによる判定
$finfo = new finfo(FILEINFO_MIME_TYPE);
$mimeType = $finfo->file($_FILES['upload']['tmp_name']);

$allowedTypes = [
    'image/png',
    'image/jpeg',
    'image/webp',
    'application/pdf',
];

if (!in_array($mimeType, $allowedTypes, true)) {
    throw new Exception('許可されていないファイル形式です');
}
// Node.js での file-type ライブラリを使った判定
import { fileTypeFromFile } from 'file-type';

const type = await fileTypeFromFile('upload.png');
console.log(type);
// { ext: 'png', mime: 'image/png' }

テスト用ファイルのダウンロード

各形式のバリデーション処理やアップロード機能のテストには、DevLab のテストファイルをご活用ください。

まとめ

ファイル形式の正しい理解は、安全で堅牢なアップロード機能を実装するための基礎です。拡張子だけでなく MIME タイプとマジックバイトの両方で検証し、適切なバリデーションを行いましょう。このリファレンスをブックマークして、開発時にいつでも参照できるようにしておくことをおすすめします。

📚 関連記事

PNG vs WebP vs AVIF|画像フォーマットの選び方と変換方法

PNG / JPEG / WebP / AVIF の特徴・用途・ブラウザ対応状況を比較。picture 要素での出し分け、DevLab の画像フォーマット変換ツールの使い方も解説。

2026-04-18

Whois でドメイン情報を調べる方法|有効期限・ネームサーバー・登録者

Whois でわかること (登録者・有効期限・レジストラ・NS)、GDPR によるプライバシー保護の影響、ドメイン管理の実務的な使い方を解説。

2026-04-18

HTTP ステータスコード完全ガイド|よくあるエラーの原因と対処法

開発者が頻出する HTTP ステータスコード (200/301/302/400/401/403/404/413/422/429/500/502/503/504) の意味・原因・対処法を解説。301 vs 302 の SEO 影響、400 vs 422 の使い分けも。

2026-04-18

cURL コマンドを JavaScript fetch・Python requests に変換する方法|DevTools 連携

Chrome DevTools の Copy as cURL を fetch / axios / Python requests / PHP cURL / Go net/http に変換する手順を解説。主要 cURL オプション (-X / -H / -d / -F / -u / -b / -L) の変換パターン、認証トークンの扱い、注意点まで。

2026-04-16

Cookie のセキュリティフラグ完全ガイド|Secure / HttpOnly / SameSite / __Host-

Cookie のセキュリティ属性 Secure / HttpOnly / SameSite (Strict/Lax/None) / __Host- __Secure- プレフィックス / 4096 バイト制限を解説。CSRF / XSS / セッションハイジャック対策と、Laravel / Express の実装例。

2026-04-16

JWT のセキュリティベストプラクティス|alg none 攻撃 / 有効期限 / 署名検証

JWT (JSON Web Token) の代表的な脆弱性 6 種類 (alg none 攻撃 / 鍵混同 / 無期限トークン / payload への機密情報 / 失効不可 / 弱いシークレット) と対策。リフレッシュトークンパターン、失効リスト、HttpOnly Cookie 格納まで。

2026-04-16