WebアプリケーションにおけるBlob URLとObject URL
URL.createObjectURL()で作成されるblob: URLを理解し、その仕組み、ライフサイクル、メモリ管理、ファイルアップロード、ダウンロード、メディアストリーミングでの実用的な使い方を学びます。
Special Formats
詳細な説明
Blob URL(Object URL)
Blob URLはブラウザ内のインメモリデータオブジェクトを参照する一時的なURLです。URL.createObjectURL()を使用して作成され、blob:origin/uuidの形式に従います。
Blob URLの作成
// Fileインプットから
const file = document.getElementById("upload").files[0];
const blobUrl = URL.createObjectURL(file);
// "blob:https://example.com/550e8400-e29b-41d4-a716-446655440000"
// Blobから
const blob = new Blob(["Hello, World!"], { type: "text/plain" });
const textUrl = URL.createObjectURL(blob);
構造
blob:https://example.com/550e8400-e29b-41d4-a716-446655440000
\__/ \_________________/ \____________________________________/
| | |
スキーム オリジン UUID
メモリ管理
Blob URLは基になるデータへの参照をメモリに保持します。メモリを解放するには明示的に取り消す必要があります:
const url = URL.createObjectURL(blob);
// ... URLを使用 ...
URL.revokeObjectURL(url); // メモリを解放
重要な特性
- Blob URLは同一オリジンのみ — クロスオリジンでは使用不可
- 一時的 — ドキュメントのライフタイムの間のみ存続
- 共有不可 — 他のユーザーやタブからはアクセスできない
- ページリフレッシュで失われる
- ほとんどのブラウザで
new URL()では解析できない
ユースケース
Blob URLはプレビュー付きファイルアップロードインターフェース、クライアントサイドファイルジェネレーター(PDF、CSV、ZIP)、MediaSourceを使用したビデオ/オーディオプレーヤー、canvasからの画像エクスポートの構築に不可欠です。ライフサイクルの理解は、多くのファイルを扱う長時間実行アプリケーションでのメモリリーク防止に役立ちます。