Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

Buffer

最終更新 Markdown で表示Agent セットアップ

Node.js の Buffer API は、バイナリデータを操作するための、よく使われる Node.js API の 1 つです。すべての Buffer インスタンスは標準の Uint8Array クラスを拡張しつつ、組み込みの base64 / hex エンコードとデコード、バイト順の操作、エンコーディングを意識した部分文字列検索など、独自の機能を追加します。

import { Buffer } from "node:buffer";

const buf = Buffer.from("hello world", "utf8");

console.log(buf.toString("hex"));
// Prints: 68656c6c6f20776f726c64
console.log(buf.toString("base64"));
// Prints: aGVsbG8gd29ybGQ=

Buffer は Uint8Array を拡張しています。そのため、新しい Response の作成など、現在 Uint8Array を受け付ける任意の Workers API で使えます。

const response = new Response(Buffer.from("hello world"));

ストリームと連携するときにも、Buffer API を使えます。

const writable = getWritableStreamSomehow();
const writer = writable.getWriter();
writer.write(Buffer.from("hello world"));

Workers の Buffer 実装と Node.js の実装との主な違いは、Node.js ではパフォーマンス最適化として、一部の作成方法がグローバルなメモリプールから Buffer を割り当てる点です。Workers の実装はメモリプールを使わず、すべての Buffer インスタンスを個別に割り当てます。

さらに、Node.js では Buffer.allocUnsafe() メソッドで未初期化メモリの Buffer を割り当てられます。Workers ではこれはサポートされません。Buffer インスタンスは常に初期化され、割り当て時は必ずヌルバイト(0x00)で埋められます。

詳細は Node.js の Buffer ドキュメント を参照してください。

役に立ちましたか?