Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【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)

戻り値なし

戻り値はありません

関連コンテンツ