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

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

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

作成日: 更新日:

基本的な使い方

writevメソッドは、複数のバッファに格納されたデータを一度に効率的に書き込むことを実行するメソッドです。これは、Node.jsの入出力操作において、特にネットワークソケットやファイルストリームに対して、複数の不連続なデータチャンク(断片)を単一の操作として処理する際に利用されます。

このメソッドを使用することで、システムが繰り返し呼び出されるI/O操作のオーバーヘッドを削減し、アプリケーションの全体的なパフォーマンスを向上させることが可能です。例えば、HTTPレスポンスのヘッダとボディ、またはファイルのメタデータと実際のコンテンツなど、複数の異なる情報がそれぞれ別のバッファに存在する場合でも、writevメソッドを使うことでそれらをまとめて、指定された宛先(例えばソケットやファイルディスクリプタ)へ順序通りに書き出すことができます。

writevメソッドは通常、書き込み対象となるストリームオブジェクトやファイルディスクリプタと、書き込みたいデータを含むバッファの配列を引数として受け取ります。Node.jsの他の多くのI/O操作と同様に非同期で動作するため、書き込み処理が完了した後に結果を受け取るためのコールバック関数やPromiseを併用することが一般的です。これにより、アプリケーションのメインスレッドをブロックすることなく、バックグラウンドで効率的なデータ転送を実現します。

構文(syntax)

1const fs = require('node:fs');
2
3const fileDescriptor = 1; // 例: 標準出力
4const dataBuffers = [
5  Buffer.from('Hello, Node.js '),
6  Buffer.from('writev example!')
7];
8
9fs.writev(fileDescriptor, dataBuffers, (error) => {
10  // エラーハンドリングや書き込み完了後の処理はここで行われます
11});

引数(parameters)

fd, buffers, position, callback

  • fd: file descriptor: 書き込み対象となるファイルディスクリプタを指定する数値
  • buffers: Buffer[]: 書き込むデータを含むBufferオブジェクトの配列
  • position: number | null: 書き込みを開始する位置を指定する数値。nullの場合は現在のファイルポインタ位置から書き込みます。
  • callback: (err: Error | null, written: number, buffers: Buffer[]) => void: 書き込み完了後に実行されるコールバック関数。errはエラーオブジェクト、writtenは書き込んだバイト数、buffersは書き込まれなかったBufferオブジェクトの配列です。

戻り値(return)

戻り値なし

戻り値はありません

関連コンテンツ

関連プログラミング言語