Node.jsはJavaScriptをサーバーサイドで実行できる実行環境で、2026年現在も多くのエンジニアに使われています。本記事では、Node.jsの基本概念・インストール・npm/pnpm・Express・API構築・デプロイまでを完全解説します。
Node.jsとは?
Node.jsはChrome V8 JavaScriptエンジン上に構築されたJavaScriptランタイムです。非同期I/O・イベント駆動アーキテクチャにより、高いスループットを実現します。フロントエンド開発者がサーバーサイドもJavaScriptで開発できることから、フルスタック開発に非常に適しています。
Node.jsの主な用途
- REST API / GraphQL APIサーバー構築
- WebSocketによるリアルタイム通信
- CLIツール開発
- フロントエンドのビルドツール(Webpack/Vite/ESLint等のバックエンド)
- BFF(Backend for Frontend)
Node.jsのインストール
Node.jsのバージョン管理にはnvm(Node Version Manager)またはVoltaの使用を推奨します。
# nvmのインストール(Mac/Linux)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
# LTS版Node.jsのインストール
nvm install --lts
nvm use --lts
# バージョン確認
node -v # v22.x.x(2026年時点のLTS)
npm -v # 10.x.x
npmとpnpm – パッケージ管理
2026年現在、パッケージマネージャーはpnpmが最も効率的です。npmに比べてディスク使用量が少なく、インストール速度も高速です。
# pnpmのインストール
npm install -g pnpm
# プロジェクト作成
mkdir my-node-app && cd my-node-app
pnpm init
# パッケージインストール
pnpm add express
pnpm add -D typescript ts-node nodemon @types/node @types/express
Expressで最初のAPIサーバーを構築
import express, { Request, Response } from 'express';
const app = express();
const PORT = process.env.PORT || 3000;
app.use(express.json());
// GETエンドポイント
app.get('/api/hello', (req: Request, res: Response) => {
res.json({ message: 'Hello from Node.js API!', timestamp: new Date().toISOString() });
});
// POSTエンドポイント
app.post('/api/users', (req: Request, res: Response) => {
const { name, email } = req.body;
// バリデーション
if (!name || !email) {
return res.status(400).json({ error: 'name and email are required' });
}
res.status(201).json({ id: Date.now(), name, email });
});
app.listen(PORT, () => {
console.log(`Server running on http://localhost:${PORT}`);
});
非同期処理:async/await の徹底活用
import { readFile } from 'fs/promises';
import fetch from 'node-fetch';
// ファイル読み込み
async function readConfig() {
const data = await readFile('./config.json', 'utf-8');
return JSON.parse(data);
}
// 外部API呼び出し
async function fetchUserData(userId: number) {
const response = await fetch(`https://api.example.com/users/${userId}`);
if (!response.ok) throw new Error(`HTTP error: ${response.status}`);
return response.json();
}
// エラーハンドリング
async function main() {
try {
const config = await readConfig();
const user = await fetchUserData(1);
console.log({ config, user });
} catch (error) {
console.error('Error:', error);
}
}
Node.jsアプリのデプロイ
Dockerコンテナ化
FROM node:22-alpine
WORKDIR /app
COPY package.json pnpm-lock.yaml ./
RUN npm install -g pnpm && pnpm install --frozen-lockfile
COPY . .
RUN pnpm build
EXPOSE 3000
CMD ["node", "dist/index.js"]
おすすめデプロイ先
- Vercel:無料枠あり・サーバーレス関数対応
- Railway:Dockerfile対応・コスパ優秀
- Fly.io:グローバルエッジデプロイ
- AWS ECS/Lambda:スケーラブルな本番運用向け
まとめ
Node.jsはJavaScript/TypeScript開発者にとって必須の知識です。Express × TypeScriptでREST APIを構築し、Dockerでコンテナ化してデプロイする流れをマスターすれば、フルスタックエンジニアとして活躍できます。