関連記事:プログラミング言語人気ランキング2026|需要・年収・学びやすさで比較もあわせてご覧ください。
JavaScriptといえばブラウザで動く言語というイメージを持つ方も多いですが、Node.jsの登場によりサーバーサイドでもJavaScriptが使えるようになりました。フロントエンドとバックエンドを同じ言語で開発できることから、Web開発の現場で広く採用されています。
この記事では、Node.jsの基本概念からインストール、実際のコード例、学習の進め方までを体系的に解説します。
Node.jsとは何か
Node.jsは、GoogleのV8 JavaScriptエンジンをベースに構築されたJavaScriptの実行環境(ランタイム) です。ブラウザの外でJavaScriptを実行できるようにしたもので、サーバーサイドのアプリケーション開発に使われています。
Node.jsの主な特徴は以下の3つです。
ノンブロッキングI/O
Node.jsはシングルスレッド・ノンブロッキングI/Oモデルを採用しています。ファイルの読み書きやデータベースへの問い合わせといったI/O処理を「待たずに次の処理に進む」ことで、少ないリソースで多くのリクエストを処理できます。
イベント駆動
Node.jsはイベントループと呼ばれる仕組みでリクエストを処理します。リクエストを受け取るたびに新しいスレッドを作成するのではなく、イベントループが効率的に処理を振り分けます。
npm(パッケージマネージャー)
Node.jsにはnpmという巨大なパッケージエコシステムが付属しています。npmレジストリに公開されているパッケージの数は非常に多く、Webフレームワーク、ユーティリティ、テストツールなどを簡単に導入できます。
Node.jsが使われている場面
主なユースケース
Node.jsは幅広い用途で使われています。
| 用途 | 具体例 |
|---|---|
| Webアプリケーション | Express.js、Fastify等でのAPI構築 |
| リアルタイム通信 | チャットアプリ、通知システム |
| BFF(Backend for Frontend) | フロントエンドとバックエンドの中間層 |
| CLIツール | npm scripts、各種開発ツール |
| フルスタック開発 | Next.js、Nuxt.jsのサーバーサイド |
| バッチ処理 | データの定期処理、ファイル変換 |
大手企業での採用実績
NetflixやPayPal、LinkedInなどの大手企業がNode.jsをプロダクション環境で採用していることが各社の技術ブログ等で公開されています。
Node.jsのインストールと環境構築
インストール方法
Node.jsのインストール方法はいくつかありますが、初心者には以下の2つがおすすめです。
方法1:公式サイトからインストール
Node.js公式サイトからLTS(長期サポート)版をダウンロードしてインストールします。最も手軽な方法です。
方法2:バージョン管理ツールを使う
複数のプロジェクトで異なるNode.jsバージョンを使い分ける場合は、バージョン管理ツールの利用が便利です。
- nvm(macOS / Linux)
- nvm-windows(Windows)
- Volta(クロスプラットフォーム)
# nvmでのインストール例
nvm install --lts
nvm use --lts
# バージョン確認
node -v
npm -v
初めてのNode.jsプログラム
ファイルを作成して実行してみましょう。
// hello.js
console.log("Hello, Node.js!");
node hello.js
# 出力: Hello, Node.js!
ブラウザのコンソールではなく、ターミナル上でJavaScriptが実行されていることがわかります。
Node.jsの基本的なモジュールと使い方
Node.jsには標準で多くのモジュール(ライブラリ)が組み込まれています。代表的なものを紹介します。
httpモジュール(Webサーバー)
const http = require("http");
const server = http.createServer((req, res) => {
res.writeHead(200, { "Content-Type": "text/plain; charset=utf-8" });
res.end("Hello, Node.js Server!");
});
server.listen(3000, () => {
console.log("サーバーがポート3000で起動しました");
});
fsモジュール(ファイル操作)
const fs = require("fs");
// ファイルの読み込み(非同期)
fs.readFile("example.txt", "utf-8", (err, data) => {
if (err) {
console.error("読み込みエラー:", err);
return;
}
console.log(data);
});
// ファイルの書き込み
fs.writeFile("output.txt", "Node.jsから書き込み", (err) => {
if (err) console.error(err);
});
pathモジュール(パス操作)
const path = require("path");
const filePath = path.join(__dirname, "data", "users.json");
console.log(filePath); // 実行環境に応じた正しいパスを生成
Express.jsでWeb APIを構築する
Node.jsの標準httpモジュールでもWebサーバーは作れますが、実務ではExpress.jsなどのフレームワークを使うのが一般的です。
Express.jsの導入
mkdir my-api
cd my-api
npm init -y
npm install express
基本的なAPIサーバー
const express = require("express");
const app = express();
const PORT = 3000;
// JSONリクエストを解析
app.use(express.json());
// サンプルデータ
let todos = [
{ id: 1, title: "Node.jsを学ぶ", done: false },
{ id: 2, title: "Express.jsでAPI作成", done: false },
];
// 一覧取得
app.get("/api/todos", (req, res) => {
res.json(todos);
});
// 新規作成
app.post("/api/todos", (req, res) => {
const newTodo = {
id: todos.length + 1,
title: req.body.title,
done: false,
};
todos.push(newTodo);
res.status(201).json(newTodo);
});
app.listen(PORT, () => {
console.log(`サーバーがポート${PORT}で起動しました`);
});
ミドルウェアの仕組み
Express.jsの強みの一つがミドルウェアです。リクエストの前処理(認証チェック、ログ出力、CORS設定等)をシンプルに追加できます。
// ログ出力ミドルウェア
app.use((req, res, next) => {
console.log(`${req.method} ${req.url}`);
next();
});
Node.jsの学習ロードマップ
ステップ1:JavaScriptの基礎を固める(目安:2〜4週間)
Node.jsを学ぶ前に、JavaScriptの基礎は必須です。特に以下の知識は重要です。
- ES6以降の構文(アロー関数、分割代入、テンプレートリテラル)
- コールバック関数
- Promise / async-await(非同期処理)
- 配列メソッド(map、filter、reduce)
ステップ2:Node.jsの基本を学ぶ(目安:1〜2週間)
標準モジュール(fs、http、path等)の使い方、npmの基本操作、CommonJSとES Modulesの違いなどを学びます。
ステップ3:Express.jsでAPI開発(目安:2〜3週間)
Express.jsを使ったREST APIの構築を学びます。ルーティング、ミドルウェア、エラーハンドリングの仕組みを理解しましょう。
ステップ4:データベース連携(目安:2〜3週間)
MongoDBやPostgreSQLとの接続方法を学びます。ORMとしてはPrismaやSequelizeがよく使われています。
Prisma ORM入門も参考にしてください。
ステップ5:認証・セキュリティ(目安:1〜2週間)
JWT認証、パスワードハッシュ化、CORS設定、環境変数管理など、本番運用に必要なセキュリティ対策を学びます。
ステップ6:ポートフォリオとしてアプリを作る
学んだ知識を活かして、ToDoアプリ、ブログAPI、簡易ECサイトのバックエンドなどを作成しましょう。
技術メモ:CommonJSとES Modulesの違い
Node.jsでモジュールを扱う際、2つの方式があることを知っておく必要があります。
CommonJS(従来の方式)
// エクスポート
module.exports = { add, subtract };
// インポート
const { add, subtract } = require("./math");
ES Modules(モダンな方式)
// エクスポート
export { add, subtract };
// インポート
import { add, subtract } from "./math.js";
ES Modulesを使うには、package.jsonに"type": "module"を追加するか、ファイル拡張子を.mjsにします。Node.js v16以降ではES Modulesが安定サポートされているため、新規プロジェクトではES Modulesの採用が増えています。
ただし、npmパッケージの中にはCommonJSのみ対応のものもあるため、既存パッケージとの互換性には注意が必要です。実際に手を動かして、両方の書き方を試しておくと実務で混乱しにくくなります。
Node.jsを使う際の注意点
シングルスレッドの制約
Node.jsはシングルスレッドで動作するため、CPU負荷の高い処理(画像処理、大量の数値計算等)には向いていません。こうした処理が必要な場合は、Worker Threadsの活用やマイクロサービスとして別の言語(Go、Python等)に分離する設計が検討されます。
コールバック地獄への対策
Node.jsの初期はコールバック関数のネストが深くなる「コールバック地獄」が課題でした。現在はPromiseやasync/awaitが標準的に使えるため、この問題は大幅に改善されています。新しいコードではasync/awaitの使用が推奨されます。
セキュリティ
npmパッケージは膨大な数がありますが、中にはメンテナンスが止まっているものや脆弱性を含むものもあります。npm auditコマンドで依存パッケージの脆弱性をチェックする習慣をつけましょう。
よくある質問(FAQ)
Q. Node.jsでフロントエンドとバックエンドの両方を開発できますか?
A. はい。Node.jsでバックエンドAPI(Express.js等)を構築し、フロントエンドはReactやVue.jsで開発する構成が一般的です。Next.jsを使えば、1つのプロジェクト内でフロントエンドとバックエンドの両方を扱えます。
Q. Node.jsとDenoの違いは何ですか?
A. DenoはNode.jsの作者であるRyan Dahl氏が開発した新しいJavaScript/TypeScriptランタイムです。TypeScriptをネイティブサポートし、セキュリティモデルが強化されています。ただし、npmエコシステムとの互換性やコミュニティの規模ではNode.jsが依然としてリードしています。
Q. Node.jsのバージョンはLTSと最新版のどちらを使うべきですか?
A. 安定性を重視する場合はLTS(長期サポート)版がおすすめです。LTS版は偶数バージョン(18、20、22等)で、長期間のセキュリティアップデートが提供されます。最新版は新機能を試したい場合に適しています。
Q. Node.jsの求人状況はどうですか?
A. バックエンドエンジニアやフルスタックエンジニアの求人でNode.jsスキルを求めるケースは多くあります。特にスタートアップやWeb系企業で需要が高い傾向です。
Q. PythonとNode.jsのどちらを学ぶべきですか?
A. 目的によって異なります。AI・データ分析に興味があるならPython、Web開発を中心に学びたいならNode.jsが適しています。フロントエンドのJavaScript経験がある場合は、Node.jsのほうが既存知識を活かしやすいメリットがあります。
まとめ
Node.jsは、JavaScriptの知識をサーバーサイド開発に拡張できるランタイムです。ノンブロッキングI/Oによる高い同時接続処理能力、npmによる豊富なパッケージエコシステム、フロントエンドとの言語統一による開発効率の向上が主なメリットです。
学習を始めるなら、まずJavaScriptの基礎(特に非同期処理)を固め、次にNode.jsの標準モジュール、Express.jsによるAPI構築と段階的に進めましょう。実際に動くアプリを作ることが理解を深める近道です。