Node.js 組み込みモジュール

Node.js 組み込みモジュールは、Node.js ランタイムに標準で含まれ、追加インストールなしで使用できるコア機能モジュールです。これらのモジュールは、ファイル操作、ネットワーク通信、プロセス管理などの基本的なシステム機能を提供し、Node.js 開発の基盤ツールです。

npm でインストールする必要があるサードパーティモジュールとは異なり、組み込みモジュールは直接require()関数でロードして使用します。例えば:

const fs = require('fs'); // ファイルシステムモジュール
const http = require('http'); // HTTP モジュール

よく使われる組み込みモジュールの紹介

以下は、Node.js の主要な組み込みモジュールの詳細と機能概要です。

モジュール名 説明 よく使われるクラス/メソッド 代表的な用途
fs (File System) ファイルシステム操作 readFile, writeFile, mkdir, readdir, createReadStream, createWriteStream ファイルの読み書き、ディレクトリ操作
path ファイルパスの処理 join, resolve, dirname, basename, extname クロスプラットフォームのパス処理
http HTTP サーバー/クライアント createServer, request, get Webサーバー/クライアントの作成
https HTTPS サーバー/クライアント createServer, request 安全なWebサービスの作成
url URLの解析と処理 parse, format, URL类 URLの解析と構築
querystring クエリ文字列の処理 parse, stringify URLクエリパラメータの処理
os オペレーティングシステム情報 cpus, freemem, totalmem, homedir, hostname システム情報の取得
events イベント処理 EventEmitter, on, emit, once カスタムイベントシステム
stream ストリーム操作 Readable, Writable, Duplex, Transform, pipe データストリームの処理
crypto 暗号化機能 createHash, createCipher, createDecipher, randomBytes 暗号化/復号化/ハッシュ
zlib 圧縮/解凍 createGzip, createGunzip, createDeflate, createInflate データの圧縮・解凍
util ユーティリティ promisify, inherits, format, types ツール関数
child_process 子プロセス管理 exec, execFile, spawn, fork 子プロセスの作成
cluster クラスタ管理 fork, isMaster, isWorker マルチプロセス負荷分散
dns ドメイン名解決 lookup, resolve, reverse ドメイン名解決
domain 複数の非同期操作のエラーを処理するモジュール create , run, add 複数の異なるI/O操作をグループ化し、そのエラーを統一的に処理するメカニズムを提供します。
net ネットワーク操作 createServer, connect, Socket TCPサーバー/クライアント
dgram UDPデータグラム createSocket, send, bind UDP通信
readline 行単位の読み取り createInterface, on('line') コマンドライン対話
repl 対話型インタプリタ start, context REPL環境の作成
vm 仮想マシン runInContext, createContext, Script JavaScriptコードの実行
assert アサーションテスト equal, strictEqual, deepEqual, throws ユニットテストのアサーション
buffer バイナリデータの処理 Buffer, alloc, from, concat バイナリデータの処理
console コンソール出力 log, error, time, timeEnd デバッグ出力
timers タイマー setTimeout, setInterval, setImmediate, clearTimeout 定期タスク
perf_hooks 性能監視 performance, PerformanceObserver 性能測定
worker_threads ワーカースレッド Worker, isMainThread, parentPort マルチスレッドプログラミング

1. fs (ファイルシステムモジュール)

fsこのモジュールは、ファイルシステムと対話する API を提供し、同期と非同期の2つの操作方法をサポートします。

主な機能:

  • ファイルの読み書き
  • ディレクトリの作成/削除
  • ファイル変更の監視
  • ファイル情報の取得

サンプルコード:

例

const fs = require('fs');

// 非同期でファイルを読み込む
fs.readFile('example.txt', 'utf8', (err, data) => {
  if (err) throw err;
  console.log(data);
});

// 同期でファイルを書き込む
try {
  fs.writeFileSync('output.txt', 'Hello Node.js');
  console.log('文件写入成功');
} catch (err) {
  console.error(err);
}

2. path (パスモジュール)

pathこのモジュールは、ファイルとディレクトリのパスを処理するツール関数を提供し、クロスプラットフォームで使用できます。

よく使われるメソッド:

  • path.join()- パスを結合する
  • path.resolve()- 絶対パスに解決する
  • path.basename()- ファイル名を取得する
  • path.extname()- ファイル拡張子を取得する

サンプルコード:

例

const path = require('path');

const fullPath = path.join(__dirname, 'files', 'example.txt');
console.log(fullPath); // 出力例: /home/user/project/files/example.txt

const ext = path.extname('index.html');
console.log(ext); // 出力: .html

3. http (HTTPモジュール)

httpこのモジュールにより、Node.js は HTTP サーバーまたはクライアントとして動作できます。

主な機能:

  • HTTPサーバーの作成
  • HTTPリクエストの発行
  • HTTPリクエストとレスポンスの処理

サンプルコード:簡易サーバーの作成

例

const http = require('http');

const server = http.createServer((req, res) => {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello Node.js Server');
});

server.listen(3000, () => {
  console.log('Server running at http://localhost:3000/');
});

4. events (イベントモジュール)

eventsこのモジュールは、イベント駆動型のプログラミングインターフェースを提供し、Node.js の非同期プログラミングの基礎です。

中核となる概念:

  • EventEmitter クラス
  • イベント監視 (on)
  • イベント発火 (emit)

サンプルコード:

例

const EventEmitter = require('events');

class MyEmitter extends EventEmitter {}

const myEmitter = new MyEmitter();

// イベントを監視する
myEmitter.on('event', () => {
  console.log('イベントがトリガーされました!');
});

// イベントを発火する
myEmitter.emit('event');

5. os (オペレーティングシステムモジュール)

osこのモジュールは、オペレーティングシステムに関連するユーティリティメソッドとプロパティを提供します。

よく使われる機能:

  • CPU情報の取得
  • メモリ情報の取得
  • ネットワークインターフェース情報の取得
  • システムの一時ディレクトリの取得

サンプルコード:

例

const os = require('os');

console.log(os.platform()); // オペレーティングシステムのプラットフォーム
console.log(os.totalmem()); // システムの総メモリ
console.log(os.freemem()); // システムの利用可能なメモリ
console.log(os.cpus()); // CPU情報

その他の重要な組み込みモジュール

1. util (ユーティリティモジュール)

utilこのモジュールは、さまざまな実用的な機能を提供します。以下を含みます:

  • 型チェック
  • 文字列のフォーマット
  • コールバック関数を Promise に変換
  • 継承ユーティリティ

2. crypto (暗号モジュール)

cryptoこのモジュールは暗号化機能を提供します。以下を含みます:

  • ハッシュアルゴリズム
  • HMAC
  • 暗号化/復号化
  • デジタル署名

3. stream (ストリームモジュール)

streamこのモジュールは、ストリームデータを処理する抽象インターフェースであり、Node.js の多くのモジュールはストリームに基づいて実装されています。

4. child_process (子プロセスモジュール)

child_processこのモジュールは、子プロセスの作成と制御を可能にし、システムコマンドや他のプログラムを実行できます。

5. url (URL 処理モジュール)

urlこのモジュールは、URL の解析とフォーマットのためのツールを提供します。


組み込みモジュールの使用方法

すべての組み込みモジュールは、require()関数で直接ロードできます:

例

const moduleName = require('module_name');

注意事項:

  1. モジュール名にパスを付ける必要はありません
  2. モジュール名は大文字と小文字を区別します
  3. インストール不要で、Node.js に標準搭載
  4. Node.js のバージョンによって、含まれる組み込みモジュールが異なる場合があります

組み込みモジュールの利点

  1. 高性能:Node.js ランタイムと緊密に統合
  2. 安定性:厳格なテストを経ており、信頼性が高い
  3. インストール不要:すぐに使える
  4. クロスプラットフォーム:異なるオペレーティングシステムでも一貫した動作
  5. ドキュメントが充実:公式ドキュメントが詳細
その他の拡張