Node.js 組み込みモジュール
Node.js 組み込みモジュールは、Node.js ランタイムに標準で含まれ、追加インストールなしで使用できるコア機能モジュールです。これらのモジュールは、ファイル操作、ネットワーク通信、プロセス管理などの基本的なシステム機能を提供し、Node.js 開発の基盤ツールです。
npm でインストールする必要があるサードパーティモジュールとは異なり、組み込みモジュールは直接require()関数でロードして使用します。例えば:
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つの操作方法をサポートします。
主な機能:
- ファイルの読み書き
- ディレクトリの作成/削除
- ファイル変更の監視
- ファイル情報の取得
サンプルコード:
例
// 非同期でファイルを読み込む
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 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 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)
サンプルコード:
例
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();
// イベントを監視する
myEmitter.on('event', () => {
console.log('イベントがトリガーされました!');
});
// イベントを発火する
myEmitter.emit('event');
5. os (オペレーティングシステムモジュール)
osこのモジュールは、オペレーティングシステムに関連するユーティリティメソッドとプロパティを提供します。
よく使われる機能:
- CPU情報の取得
- メモリ情報の取得
- ネットワークインターフェース情報の取得
- システムの一時ディレクトリの取得
サンプルコード:
例
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()関数で直接ロードできます:
例
注意事項:
- モジュール名にパスを付ける必要はありません
- モジュール名は大文字と小文字を区別します
- インストール不要で、Node.js に標準搭載
- Node.js のバージョンによって、含まれる組み込みモジュールが異なる場合があります
組み込みモジュールの利点
- 高性能:Node.js ランタイムと緊密に統合
- 安定性:厳格なテストを経ており、信頼性が高い
- インストール不要:すぐに使える
- クロスプラットフォーム:異なるオペレーティングシステムでも一貫した動作
- ドキュメントが充実:公式ドキュメントが詳細