【Node.js24.x】ReadableStreamBYOBReader::ReadableStreamBYOBReader()関数の使い方
ReadableStreamBYOBReader関数の使い方について、初心者にもわかりやすく解説します。
基本的な使い方
ReadableStreamBYOBReader関数は、ReadableStreamからデータを読み込むためのBYOB (Bring Your Own Buffer) リーダーのインスタンスを生成する関数です。この関数は、Web標準のStreams APIに準拠しており、特にNode.js環境におけるストリーム処理において、効率的なデータ読み込みを実現するために設計されています。
BYOBリーダーの主な目的は、データソースからデータを読み込む際に、読み込み側が用意した(BYOB)メモリバッファをストリームに提供することです。これにより、システムが内部的に新しいバッファを割り当てたり、データを別のバッファにコピーしたりする手間を省きます。結果として、メモリの使用効率を大幅に向上させ、ガベージコレクションの頻度を低減できるため、特に大量のバイナリデータや、リアルタイム性が求められるデータを扱うアプリケーションにおいて、高いパフォーマンスと低レイテンシを実現できます。
このBYOBリーダーは、開発者がデータの読み込みプロセスに対してより詳細な制御を可能にします。アプリケーションは、自身の要件に合わせて最適なサイズのバッファを準備し、それをストリームに渡すことで、データが直接そのバッファに書き込まれるように指示できます。例えば、ネットワークから受信したメディアデータやファイルの内容を直接処理する場合などに有効です。ReadableStreamBYOBReader関数を使用することで、システムエンジニアを目指す皆様は、メモリ効率が高く高性能なストリーム処理を実装するための強力なツールを扱えるようになります。
構文(syntax)
1// Web標準のReadableStreamを作成します。 2// これはファイル、ネットワーク、または手動で作成できます。 3const myReadableStream = new ReadableStream({ 4 start(controller) { 5 controller.enqueue(new Uint8Array([1, 2, 3, 4, 5])); 6 controller.close(); 7 } 8}); 9 10// ReadableStreamBYOBReaderのインスタンスをストリームから取得します。 11// getReaderメソッドに { mode: 'byob' } オプションを渡します。 12const byobReader = myReadableStream.getReader({ mode: 'byob' }); 13 14// 読み込み用のバッファ(TypedArray)を準備します。 15const myBuffer = new Uint8Array(10); 16 17// readメソッドを使ってストリームからバッファにデータを読み込みます。 18byobReader.read(myBuffer) 19 .then(({ value, done }) => { 20 // value: 読み込まれたデータを含むTypedArrayの部分ビュー、またはnull 21 // done: ストリームが終了したかどうかを示す真偽値 22 }) 23 .catch(error => { 24 // 読み込み中にエラーが発生した場合 25 }) 26 .finally(() => { 27 // リーダーのロックを解放します。 28 // 同じストリームに対して別のリーダーを使用できるようになります。 29 byobReader.releaseLock(); 30 });
引数(parameters)
stream
- stream: ReadableStream: BYOB (Bring Your Own Buffer) リーダーとして使用する ReadableStream インスタンス
戻り値(return)
戻り値なし
戻り値はありません