Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2019年1月.
* Some parts of this feature may have varying levels of support.
ストリーム API を使用すると、 JavaScript がネットワーク経由で受信したデータのストリームにプログラムでアクセスし、開発者の希望どおりに処理できます。
メモ: この機能はウェブワーカー内で利用可能です。
ストリーミングでは、ネットワーク経由で受信するリソースを小さなチャンク(塊)に分割し、少しずつ処理します。ブラウザーはメディア資産を受信する際にすでにこのような動作を行っています。動画はコンテンツのダウンロードが進むにつれてバッファーされ再生されますし、画像も読み込みが進むにつれて徐々に表示されることがあります。
しかし、この機能はこれまで JavaScript では利用できませんでした。以前は、ある種のリソース(動画やテキストファイルなど)を処理したい場合、ファイル全体をダウンロードして、適切な形式にデシリアライズされるのを待ち、それからすべてのデータを処理しなければなりませんでした。
ストリーム API を使えば、バッファーや文字列、blob などを生成する必要なく、利用できるようになったらすぐに、JavaScript で生のデータを少しずつ処理し始めることができます。
さらに利点もあります。 ストリームの開始または終了の検出、ストリームの連鎖、エラー処理と必要に応じたストリームのキャンセル、ストリームの読み取り速度への対応が可能です。
ストリームの使い方は、レスポンスをストリームとして利用できるかどうかにかかっています。例えば、読み取りリクエストが成功すると返されるレスポンス本体は ReadableStream となり、ReadableStream.getReader() で作成したリーダーで読み取ることができます。
より複雑な用途では、例えばサービスワーカー内でデータを処理するために、 ReadableStream() コンストラクターを使用して独自のストリームを作成することができます。
WritableStream を使用してストリームにデータを書き込むこともできます。
メモ: ストリームの理論と実践の詳細については、ストリーム API の概念、読み取り可能なストリームの使用、読み取り可能なバイトストリームの使用、書き込み可能なストリームの使用の記事をご覧ください。
読み取り可能なデータのストリームを表します。 Fetch API のレスポンスストリーム、または開発者定義のストリーム(独自の ReadableStream() コンストラクターなど)を処理するために使用できます。
ReadableStreamDefaultReaderネットワークから提供されたストリームデータ(フェッチリクエストなど)を読み取るために使用できる既定のリーダーを表します。
ReadableStreamDefaultControllerReadableStream の状態と内部キューを制御できるコントローラーを表します。既定のコントローラーは、バイトストリーム向けではないストリーム用です。
シンク (sink) と呼ばれる宛先にストリーミングデータを書き込むための標準的な抽象化を提供します。このオブジェクトには、組み込みの背圧とキューイング機能があります。
WritableStreamDefaultWriterデータのチャンクを書き込み可能なストリームに書き込むために使用できる既定の書き込み可能なストリームのライターを表します。
WritableStreamDefaultControllerWritableStream の状態を制御できるコントローラーを表します。 WritableStream を構築するとき、基になるシンクには、対応する WritableStreamDefaultController インスタンスが与えられて操作します。
ストリームオブジェクトのパイプチェーンを通して渡されるデータを変換するストリームオブジェクトの抽象化したものを表します。
TransformStreamDefaultController変換ストリームに関連付けられた ReadableStream と WritableStream を操作するためのメソッドを提供します。
ストリームを構築するときに使用できる組み込みのバイト長キューイング戦略 (byte length queuing strategy) を提供します。
CountQueuingStrategyストリームを構築するときに使用できる組み込みのチャンクカウントキューイング戦略 (chunk counting queuing strategy) を提供します。
新しい Request オブジェクトが構築されると、その RequestInit 辞書の body プロパティで ReadableStream を渡すことができます。 次に、この Request を fetch() に渡して、ストリームのフェッチを開始することができます。
Response.body成功したフェッチリクエストによって返されたレスポンスの本体で、既定で ReadableStream として取り出すことができ、リーダーを装着することができます。
開発者が提供するストリームデータの読み取りに使用できる BYOB("bring your own buffer"、独自のバッファーを持ち込む)リーダー(独自の ReadableStream() コンストラクターなど)を表します。
ReadableByteStreamControllerReadableStream の状態と内部キューを制御するためのコントローラーを表します。 バイトストリームコントローラーは、バイトストリーム用のものです。
ReadableStreamBYOBRequestReadableByteStreamController 内のプルインリクエストを表します。
ストリーム API のドキュメントに合わせてサンプルのディレクトリーを作成しました。 mdn/dom-examples/streams を参照してください。例として、次のものがあります。
他の開発者による例
| Streams # rs-class |
| Streams # ws-class |
Enable JavaScript to view this browser compatibility table.
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2024年10月15日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.