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

【Node.js24.x】ReadableStream::ReadableStream()関数の使い方

ReadableStream関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

ReadableStream関数は、ウェブ標準のStream APIで定義されているデータストリームを読み込むための基本的なインターフェースを提供するクラスのコンストラクタ関数です。Node.js環境において、ネットワークからのデータ、ファイルからのデータ、またはその他のソースからのデータを、非同期かつ効率的に読み込むための基盤となります。

この関数を利用して生成されるReadableStreamオブジェクトは、データを一塊ずつ(チャンク単位で)順次処理することを可能にします。これにより、全てのデータが一度にメモリにロードされるのを待つ必要がなく、データが利用可能になるたびに処理を進めることができます。これは、特に巨大なファイルや、ネットワーク経由でリアルタイムに受信されるデータを扱う際に非常に重要です。アプリケーションがブロックされることなく、メモリの使用量を抑えながら効率的なデータ処理を実現します。

具体的には、Node.jsの多くの組み込みモジュール(例えば、ファイルシステムモジュールのfs.createReadStream()や、HTTPモジュールのhttp.IncomingMessageなど)が、内部的にReadableStreamを実装または利用しています。システムエンジニアにとって、ReadableStreamの概念を理解することは、Node.jsアプリケーションのパフォーマンスとスケーラビリティを向上させる上で不可欠な知識となります。これは、Node.jsの非同期I/Oモデルの中心的な要素の一つです。

構文(syntax)

new ReadableStream({
  start(controller) {
    controller.enqueue('データ1');
    controller.enqueue('データ2');
    controller.close(); // ストリームを終了する
  },
  pull(controller) {
    // データが要求されたときに呼ばれる (オプション)
  },
  cancel(reason) {
    // ストリームがキャンセルされたときに呼ばれる (オプション)
  }
});

引数(parameters)

underlyingSource = {}, strategy = {}

  • underlyingSource: object = {}: ストリームの元となるデータソースや、ストリームのライフサイクルを制御するためのメソッド(start, pull, cancelなど)を定義したオブジェクト。省略した場合、空のオブジェクトが使用されます。
  • strategy: object = {}: ストリームの読み込み戦略(highWaterMark, sizeなど)を定義したオブジェクト。省略した場合、デフォルトの戦略が使用されます。

戻り値(return)

ReadableStream

ReadableStreamクラスのコンストラクタです。新しいReadableStreamインスタンスを生成し、それを返します。

関連コンテンツ