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

【Node.js24.x】Stream::Duplex()メソッドの使い方

Duplexメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

Duplexクラスは、Node.jsのStreamモジュールにおいて、データの読み込みと書き込みの両方が可能なストリームを表すクラスです。このクラスは、Readableストリーム(読み込み可能なストリーム)とWritableストリーム(書き込み可能なストリーム)のインターフェースを両方とも実装しているため、一つのストリームインスタンスで双方向のデータフローを処理できる特徴を持っています。

具体的には、Duplexストリームは、あるソースからデータを読み込みながら、同時にそのデータを加工したり、変換したりした結果を別の宛先へ書き出すといった用途に非常に適しています。例えば、データの圧縮・解凍処理や、データの暗号化・復号化処理、またはプロトコルの変換処理など、入力されたデータを処理してから出力するような中間的な役割を果たすストリームとして利用されます。

システムエンジニアを目指す方にとって、Duplexストリームの理解は、データの流れを効率的に管理し、メモリ使用量を抑えつつ大規模なデータ処理を行うための重要な基礎知識となります。これにより、データパイプラインの中継点として機能するカスタムストリームを容易に構築できるようになり、非同期データ処理の柔軟性が大きく向上します。

構文(syntax)

const { Duplex } = require('stream');

class CustomDuplexStream extends Duplex {
  constructor(options) {
    super(options);
    this.dataBuffer = [];
  }

  _write(chunk, encoding, callback) {
    this.dataBuffer.push(chunk);
    callback();
  }

  _read(size) {
    if (this.dataBuffer.length > 0) {
      this.push(this.dataBuffer.shift());
    } else {
      this.push(null);
    }
  }
}

引数(parameters)

options = {}

  • options: object = {}: Duplexストリームの挙動を設定するオプションオブジェクト

戻り値(return)

Duplex

Duplexメソッドは、読み取りと書き込みの両方の操作が可能なストリームであるDuplexストリームのインスタンスを返します。

関連コンテンツ