Buffer の利用(Node.js) — Buffer.from('text')
Node.js には Buffer という特別なオブジェクトがあります。
これは「バイナリデータ(生のデータ列)」を扱うための仕組みで、ファイル読み書きやネットワーク通信などでよく使われます。初心者がまず覚えるべきは「文字列を Buffer に変換する」ことです。
基本のコード例
// 文字列を Buffer に変換
const buf = Buffer.from('Hello');
// Buffer の中身を確認
console.log(buf);
// → <Buffer 48 65 6c 6c 6f>
// Buffer を文字列に戻す
console.log(buf.toString());
// → "Hello"
JavaScriptBuffer.from('文字列')→ 文字列をバイト列に変換。- 表示例:
<Buffer 48 65 6c 6c 6f>は 16進数で表したバイト列。
よく使うテンプレート集
文字列 ↔ Buffer
const buf = Buffer.from("こんにちは", "utf8");
console.log(buf); // バイト列
console.log(buf.toString("utf8")); // "こんにちは"
JavaScriptファイル読み込みと Buffer
const fs = require("fs");
const data = fs.readFileSync("hello.txt"); // Bufferで取得
console.log(data.toString("utf8")); // 文字列に変換
JavaScriptBase64 変換
const buf = Buffer.from("Hello World");
console.log(buf.toString("base64")); // "SGVsbG8gV29ybGQ="
JavaScriptバイナリデータを直接操作
const buf = Buffer.alloc(4); // 4バイト確保
buf[0] = 0x41; // 'A'
buf[1] = 0x42; // 'B'
buf[2] = 0x43; // 'C'
buf[3] = 0x44; // 'D'
console.log(buf.toString()); // "ABCD"
JavaScript例題: 簡易的なファイルコピー
const fs = require("fs");
// ファイルを Buffer として読み込み
const data = fs.readFileSync("source.txt");
// Buffer をそのまま書き込み
fs.writeFileSync("copy.txt", data);
console.log("コピー完了!");
JavaScript- 効果: ファイルを Buffer で読み込み、そのまま別ファイルに書き込む。
実務でのコツ
- 文字コード指定:
Buffer.from(str, 'utf8')のように文字コードを指定できる。 - 効率的: ネットワークやファイル操作では Buffer が高速。
- Base64やHex:
.toString('base64')や.toString('hex')で変換可能。 - 固定サイズ:
Buffer.alloc(size)で指定サイズのバッファを確保できる。
ありがちなハマりポイントと対策
- 文字化け:
- 原因: 文字コードを指定しないと環境依存。
- 対策: 常に
'utf8'を指定する。
- BufferとArrayの違い:
- Bufferはバイナリ専用。普通の配列とは別物。
- ブラウザでは使えない:
- BufferはNode.js専用。ブラウザでは
Uint8Arrayを使う。
- BufferはNode.js専用。ブラウザでは
練習問題(文字列をBase64に変換して戻す)
const buf = Buffer.from("秘密のメッセージ", "utf8");
// Base64に変換
const b64 = buf.toString("base64");
console.log("Base64:", b64);
// Base64から復元
const back = Buffer.from(b64, "base64").toString("utf8");
console.log("復元:", back);
JavaScript- 効果: 文字列を Base64 に変換し、再び元の文字列に戻せる。
直感的な指針
- Buffer = Node.js の「バイナリデータ箱」。
Buffer.from('文字列')で文字列をバイト列に変換。.toString()で文字列に戻す。- ファイルやネットワーク通信で必須。
これを覚えれば「文字列をバイナリ化」「ファイルを読み書き」「Base64変換」など、Node.js の低レベル処理を自在に扱えるようになります。
