IE10 における新しい Blob コンストラクター

Windows 8 Release Preview の IE10 では Blob コンストラクター (英語) のサポートが追加されています。File API: Writer W3C 草案 (英語) で進行中のインターフェイスである BlobBuilder インターフェイス (英語) の IE10 におけるサポートについては、以前に紹介し、デモで確認 (英語) していただきました。このインターフェイスを使用すると、開発者はクライアント PC 上のファイルを処理できます。最近、W3C ワーキング グループは新しい Blob コンストラクター (英語) を支持し、BlobBuilder インターフェイス (英語) を非推奨扱いとしました。この記事では、これら 2 つの違いについて説明します。

Blob コンストラクターと BlobBuilder インターフェイスの比較

Blob コンストラクターと BlobBuilder インターフェイスのどちらを使っても、Web 開発者はクライアント上にファイルを作成できます。違いは構文です。BlobBuilder では、append メソッドを別に呼び出すときに BLOB の各部分を追加する必要があるのに対し、Blob コンストラクターは引数の配列を取ることができます。それでは、BlobBuilderBlob の両方を使って、単純なテキスト ファイルを作成する方法を見てみましょう。

// using the Blob constructor

var textBlob1 = new Blob(["Hello", " world!"], { type: "text/plain", endings: "transparent" });

 

// using the MSBlobBuilder interface

var bb = new MSBlobBuilder();

bb.append("Hello");

bb.append(" world!");

var textBlob2 = bb.getBlob("text/plain");

Blob コンストラクターは、BLOB に挿入するコンテンツの配列とオプションの辞書オブジェクトという 2 つの引数を取ります。辞書オブジェクトには、typeendings の 2 つのメンバーを含めることができます。BLOB のコンテンツの配列には、BLOB オブジェクト、テキスト文字列または配列バッファーを含めることができます。

Firefox および Chrome の最新バージョンも Blob コンストラクターをサポートしています。IE10 では、新しい Blob コンストラクターに加えて、プレフィックスが付いた MSBlobBuilder も引き続きサポートしています。現時点では、Firefox と Chrome もそれぞれのベンダー プレフィックスが付いた BlobBuilder インターフェイスをサポートしています。

Blob コンストラクター機能検出

すべての新しい機能をお勧めするのと同様に、コードを実行しているブラウザーで Blob コンストラクターを利用できるかどうかを確認するために、機能検出を使用することをお勧めします (英語)。次のように使うことができます。

if (typeof Blob !== "undefined") {

// use the Blob constructor

} elseif (window.MSBlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder) {

// use the supported vendor-prefixed BlobBuilder

} else {

// neither Blob constructor nor BlobBuilder is supported

}

F12 開発者ツールのコンソール ウィンドウを開いたまま BlobBuilder テスト ドライブ デモ (英語) を実行すると、BLOB が Blob コンストラクターを使って構築されているか、BlobBuilder を使って構築されているかがログ記録されます。

Blob コンストラクターを IE10 に追加すると、ブラウザーが異なっても動作する標準準拠のコードを記述できます。

— Internet Explorer 担当グループ プログラム マネージャー Sharon Newman