Nodemonガイド:Node.js開発を効率化する自動再起動ツール

Claude の支援を受けて作成したチュートリアルです。セキュリティ上の理由により、zipファイルの添付は許可していません。サンプルファイルが必要なメンバーは、Teams にて私まで連絡をください。


Node.js開発において、コードを変更するたびに手動でサーバーを再起動するのは面倒ですよね。Nodemonは、この問題を解決する開発者必須のツールです。この記事では、Nodemonの基本から応用まで、実践的な例を交えて詳しく解説します。

目次

  1. Nodemonとは?
  2. インストール方法
  3. 基本的な使い方
  4. 実践例
  5. 高度な設定
  6. トラブルシューティング
  7. ベストプラクティス

1. Nodemonとは?

Nodemonは、Node.jsアプリケーションの開発時に使用する監視ツールです。ファイルの変更を自動的に検出し、アプリケーションを再起動してくれます。

主な特徴

  • 🔄 自動再起動: ファイル変更時に自動的にNode.jsプロセスを再起動
  • ⚙️ カスタマイズ可能: 監視対象や無視するファイルを細かく設定可能
  • 🎯 軽量: 最小限のオーバーヘッドで動作
  • 🚫 設定不要: デフォルト設定ですぐに使用開始可能

2. インストール方法

Nodemonは、グローバルまたはプロジェクトローカルにインストールできます。

グローバルインストール

システム全体で使用する場合:

npm install -g nodemon

ローカルインストール(推奨)

プロジェクト単位で管理する場合:

npm install --save-dev nodemon

package.jsonへのスクリプト追加

{
  "scripts": {
    "start": "node app.js",
    "dev": "nodemon app.js"
  }
}

3. 基本的な使い方

コマンドラインでの使用

通常のNode.js実行:

node app.js

Nodemonを使用した実行:

nodemon app.js

NPMスクリプトでの使用

npm run dev

基本的なコマンドラインオプション

# 詳細モードで実行
nodemon --verbose app.js

# 特定の拡張子を監視
nodemon --ext js,json app.js

# 特定のディレクトリを監視
nodemon --watch src --watch config app.js

# 再起動の遅延を設定(ミリ秒)
nodemon --delay 2500 app.js

4. 実践例

例1: シンプルなNode.jsアプリケーション

app.js

console.log('Nodemonチュートリアルへようこそ!');
console.log('現在時刻:', new Date().toLocaleString('ja-JP'));

// このファイルを編集して保存すると、自動的に再実行されます!
const message = 'ここを編集してみてください';
console.log('メッセージ:', message);

実行方法:

nodemon app.js

例2: Express.jsサーバー

server.js

const express = require('express');
const app = express();
const PORT = process.env.PORT || 3000;

app.get('/', (req, res) => {
  res.json({
    message: 'Nodemon + Express.js サーバー',
    timestamp: new Date().toISOString(),
    tip: 'このファイルを編集すると自動的に再起動します!'
  });
});

app.listen(PORT, () => {
  console.log(`サーバーが http://localhost:${PORT} で起動しました`);
});

例3: 環境変数を使用した開発

.env

NODE_ENV=development
PORT=3000
DEBUG=app:*

app.js

require('dotenv').config();

console.log('環境:', process.env.NODE_ENV);
console.log('ポート:', process.env.PORT);

5. 高度な設定

nodemon.json設定ファイル

プロジェクトのルートディレクトリにnodemon.jsonを作成:

{
  "watch": ["src", "config"],
  "ext": "js,json,html",
  "ignore": ["*.test.js", "node_modules/*"],
  "delay": "1000",
  "env": {
    "NODE_ENV": "development"
  },
  "execMap": {
    "js": "node",
    "ts": "ts-node"
  },
  "events": {
    "restart": "echo 'アプリケーションが再起動されました'",
    "start": "echo 'アプリケーションが開始されました'"
  }
}

設定オプションの詳細

オプション説明
watch監視するディレクトリ["src", "lib"]
ext監視する拡張子"js,json,ts"
ignore無視するパターン["*.test.js", "logs/*"]
delay再起動の遅延(ミリ秒)"2500"
env環境変数{"NODE_ENV": "dev"}
exec実行コマンド"node --inspect"
legacyWatch古いファイルシステム用true

TypeScriptプロジェクトの設定

{
  "watch": ["src"],
  "ext": "ts,json",
  "ignore": ["*.spec.ts"],
  "exec": "ts-node",
  "env": {
    "NODE_ENV": "development"
  }
}

デバッグモードの設定

{
  "exec": "node --inspect",
  "ext": "js,json",
  "env": {
    "DEBUG": "*"
  }
}

6. トラブルシューティング

よくある問題と解決方法

1. Nodemonが変更を検出しない

原因: ファイルシステムの監視制限
解決方法:

{
  "legacyWatch": true,
  "pollingInterval": 1000
}

2. 再起動が頻繁すぎる

原因: 一時ファイルやログファイルの変更
解決方法:

{
  "ignore": ["*.log", "temp/*", ".git/*"],
  "delay": "2500"
}

3. 特定のファイルが監視されない

原因: デフォルトの拡張子設定
解決方法:

nodemon --ext js,json,html,css app.js

4. ENOSPC エラー(Linux)

原因: ファイル監視の上限
解決方法:

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

7. ベストプラクティス

1. package.jsonスクリプトの活用

{
  "scripts": {
    "dev": "nodemon",
    "dev:debug": "nodemon --inspect",
    "dev:verbose": "nodemon --verbose",
    "test:watch": "nodemon --exec 'npm test'"
  }
}

2. 適切な無視設定

{
  "ignore": [
    ".git",
    "node_modules/**/node_modules",
    "*.log",
    "logs/*",
    "coverage/*",
    ".nyc_output/*"
  ]
}

3. 環境別設定

nodemon.development.json

{
  "env": {
    "NODE_ENV": "development",
    "DEBUG": "*"
  },
  "verbose": true
}

nodemon.production.json

{
  "env": {
    "NODE_ENV": "production"
  },
  "verbose": false
}

4. プロジェクト構造の例

project/
├── src/
│   ├── index.js
│   ├── routes/
│   └── models/
├── config/
├── tests/
├── nodemon.json
├── package.json
└── .gitignore

まとめ

Nodemonは、Node.js開発の生産性を大幅に向上させる素晴らしいツールです。基本的な使い方から高度な設定まで、プロジェクトのニーズに合わせて柔軟にカスタマイズできます。

重要なポイント

  • ✅ 開発環境でのみ使用(本番環境では使用しない)
  • ✅ プロジェクトごとにローカルインストール推奨
  • ✅ 適切な無視設定で不要な再起動を防ぐ
  • ✅ package.jsonスクリプトで統一的な開発環境を構築

参考リンク


サンプルコードのダウンロード: この記事で使用したすべてのサンプルコードは、下記のリンクからダウンロードできます。

📥 サンプルコードをダウンロード(nodemon-tutorial-samples.zip)

このチュートリアルが、あなたのNode.js開発をより効率的にする助けになれば幸いです。Happy Coding! 🚀

Comments

No comments yet. Why don’t you start the discussion?

コメントを残す