process は、現在の Node.js プロセスに関する情報を提供し、それを制御するためのグローバルオブジェクトです。環境、コマンドライン引数、I/O ストリーム、ライフサイクル、シグナルへのインターフェースとなります。
環境変数の読み取り
js
process..;
process..;
port = process.. || ;
process.env は(コードの外で設定される)設定やシークレットを読み取る標準的な方法であり、twelve-factor の設定管理の中心となります。
// node script.js --name=Ann
process.argv; // ["node", "/path/script.js", "--name=Ann"]
const args = process.argv.slice(2); // 最初の2つをスキップ
process.stdout.write("output\n"); // console.log はここに書き込む
process.stderr.write("error\n"); // console.error はここに書き込む
process.stdin.on("data", (chunk) => { /* 入力を読み取る */ });
process.exit(0); // 成功コードで終了 (1 = エラー)
process.exitCode = 1; // 推奨: コードを設定し、プロセスを自然に終了させる
process.pid; // プロセス ID
process.cwd(); // 現在の作業ディレクトリ
process.uptime(); // プロセスが稼働している秒数
process.on("SIGTERM", () => { /* クリーンアップしてから終了 — 例: コンテナ停止時 */ });
process.on("SIGINT", () => { /* Ctrl+C */ });
process.on("uncaughtException", (err) => { log(err); process.exit(1); });
process.on("unhandledRejection", (reason) => { log(reason); });
SIGTERM/SIGINT をリッスンすることは、グレースフルシャットダウン(処理中のリクエストを完了させ、終了前に DB 接続をクローズする)を実装する方法であり、キャッチされない例外のハンドラは最終手段としてのセーフティネットです。
process.memoryUsage(); // ヒープ統計(リーク検出)
process.nextTick(cb); // 次のイベントループのフェーズより前にコールバックをスケジュール
process.platform; // "linux" | "darwin" | "win32"
process は、プログラムとその実行環境をつなぐものです。
process.env による設定/シークレットの読み取り、CLI 引数の処理、そして — 本番環境にとって重要な — グレースフルシャットダウンのためのシグナルキャッチや最終手段のエラーハンドラなど、常に利用します。
これを理解することは、設定可能で堅牢な、本番環境対応の Node アプリケーションを構築するうえで不可欠です。