Node.js完全ガイド【2026年版】Express・API構築・Dockerデプロイまで

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でコンテナ化してデプロイする流れをマスターすれば、フルスタックエンジニアとして活躍できます。

関連記事

投稿者 kasata

IT企業でエンジニアとして勤務後、テクノロジー情報メディア「Tech Athletes(テック・アスリート)」を運営。プログラミング、クラウドインフラ(AWS/GCP/Azure)、AI活用、Webサービス開発を専門とする。エンジニア・ビジネスパーソン向けに、実際に使ってみた経験をもとに信頼できる技術情報を発信中。資格:AWS認定ソリューションアーキテクト、Python 3 エンジニア認定試験合格。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です