Development

Node.jsのprocessを完全攻略!processオブジェクトの使い方チートシート

こんにちは
町田商店のラーメンを食べすぎて1年間で8キロ太った尾崎です。
おすすめはネギラーメン大盛り 硬め濃いめ多め チャーハンセット トッピングほうれん草

真面目に記事書きます。

Node.jsでサーバーサイド開発をしていると度々使う`process`オブジェクト。

他にどんなのがあるのかなぁと調べたら割と開発に便利なものが多かったのでまとめてみます。

公式ドキュメント:https://nodejs.org/api/process.html#process_process

チートシート

API/プロパティ説明値の例備考
process.env環境変数を取得・設定する。{ NODE_ENV: "production", ... }すべて文字列として扱われる。
Dockerやクラウド環境で要確認。
process.argvコマンドライン引数の配列。["/usr/local/bin/node","/path/app.js","--port=3000"]最初の2つはnode実行時のパス関連。
引数パースにはライブラリ(yargsなど)推奨。
process.cwd()プロセスの現在の作業ディレクトリを返す。例:/home/ubuntu/myapp__dirnameとの違いに注意。
DockerコンテナではWORKDIR設定に依存。
process.exit(code?)現在のプロセスを終了させる。指定しない場合は0(正常終了)非同期処理を待たずに終了する場合があるので乱用注意。
優雅なシャットダウン時はシグナルハンドリング推奨。
process.uptime()起動してからの経過時間(秒)を返す。例:123.4567デバッグや監視に有用。
再起動の頻度チェックにも活用可。
process.memoryUsage()プロセスが使用中のメモリ情報を返す。{ rss: 12345678, heapTotal: 567890, ... }メモリリーク疑い時のデバッグに。
本番は監視ツール連携推奨。
process.version現在のNode.jsバージョンを文字列で返す。"v18.12.0"などバージョン差を吸収するより、
Dockerイメージ等で固定するのが安定。
process.versionsNode.jsやV8等の詳細バージョン情報。{ node: "18.12.0", v8: "10.x.x", ... }依存ライブラリとの相性チェック用。
process.platform実行環境のプラットフォーム名。"linux", "darwin", "win32"などOSごとの挙動分岐に使えるが、
条件分岐が増えると可読性が下がる可能性。
process.archNode.jsが動作しているアーキテクチャ名。"x64", "arm", "arm64"などCPUやバイナリ依存のライブラリ使用時に注意。
process.pid現在のプロセスID。例:12345ログ出力やモニタリングに使える。
process.ppid親プロセスのID。例:2345上位のプロセス追跡に。
process.on("SIGTERM", ...)
など
シグナル受信時の動作を定義。
Docker停止、Ctrl+Cなどに反応。
優雅なシャットダウンを実装する際に必須。
キャッチしないと強制終了される可能性。


公式ドキュメント見るとめちゃくちゃ多いんですよね
覚える必要はないので良く使うやつだけこんなのあったなーって頭に入れとくのがいいかなと思います。



おすすめ記事

Recommend