はじめてのNode.js完全入門ガイド – インストールから実践まで初心者向け解説
![]() |
20万件以上の案件から、副業に最適なリモート・週3〜の案件を一括検索できるプラットフォーム。プロフィール登録でAIスカウトが自動的にマッチング案件を提案。市場統計や単価相場、エージェントの口コミも無料で閲覧可能なため、本業を続けながら効率的に高単価の副業案件を探せます。フリーランスボード |
| |
週2〜3日から働ける柔軟な案件が業界トップクラスの豊富さを誇るフリーランスエージェント。エンド直契約のため高単価で、週3日稼働でも十分な報酬を得られます。リモートや時間フレキシブルな案件も多数。スタートアップ・ベンチャー中心で、トレンド技術を使った魅力的な案件が揃っています。専属エージェントが案件紹介から契約交渉までサポート。利用企業2,000社以上の実績。ITプロパートナーズ |
| |
10,000件以上の案件を保有し、週3日〜・フルリモートなど柔軟な働き方に対応。高単価案件が豊富で、報酬保障制度(60%)や保険料負担(50%)など正社員並みの手厚い福利厚生が特徴。通勤交通費(月3万円)、スキルアップ費用(月1万円)の支給に加え、リロクラブ・freeeが無料利用可能。非公開案件80%以上、支払いサイト20日で安心して稼働できます。Midworks |
目次
- 1 Node.jsとは?初心者にもわかりやすく解説
- 2 Node.jsのインストール方法
- 3 はじめてのNode.jsプログラム
- 4 Next.jsとの連携
- 5 パッケージ管理の基本
- 6 よく使われるNode.jsライブラリ
- 7 実践的なプロジェクト例
- 8 デバッグとテスト
- 9 本番環境への展開
- 10 パフォーマンス最適化
- 11 まとめ
- 12 ■らくらくPython塾 – 読むだけでマスター
- 13 ■AI時代の第一歩!「AI駆動開発コース」はじめました!
- 14 ■テックジム東京本校
- 15 <短期講習>5日で5万円の「Pythonミニキャンプ」開催中。
- 16 <月1開催>放送作家による映像ディレクター養成講座
- 17 <オンライン無料>理系出身者向けのPython爆速講座
Node.jsとは?初心者にもわかりやすく解説
Node.jsは、JavaScriptをサーバーサイドで実行できる実行環境です。従来、JavaScriptはブラウザ上でのみ動作していましたが、Node.jsの登場により、サーバー開発やコマンドラインツールの作成が可能になりました。
Node.jsの特徴
非同期処理による高いパフォーマンス Node.jsは非同期I/O処理を採用しており、大量のリクエストを効率的に処理できます。これにより、リアルタイムアプリケーションやAPIサーバーに最適です。
豊富なライブラリエコシステム npmパッケージマネージャーを通じて、50万を超えるライブラリにアクセスできます。開発効率が大幅に向上し、車輪の再発明を避けられます。
JavaScript統一開発環境 フロントエンドとバックエンドで同じ言語を使用できるため、フルスタック開発が容易になります。開発チームの学習コストも削減できます。
Node.jsのインストール方法
Windows環境でのインストール
-
公式サイトからダウンロード Node.js公式サイト(nodejs.org)にアクセスし、LTS版をダウンロードします。LTS版は長期サポート版で、本番環境での使用に推奨されています。
-
インストーラーの実行 ダウンロードしたmsiファイルを実行し、ウィザードに従ってインストールを完了させます。
-
インストール確認 コマンドプロンプトで以下のコマンドを実行し、バージョンが表示されることを確認します。
node --version
npm --version
Mac環境でのインストール
Homebrewを使用した方法(推奨)
# Homebrewのインストール(未インストールの場合)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Node.jsのインストール
brew install node
# バージョン確認
node --version
npm --version
Linux環境でのインストール
Ubuntu/Debian系の場合
# パッケージリストの更新
sudo apt update
# Node.jsとnpmのインストール
sudo apt install nodejs npm
# バージョン確認
node --version
npm --version
はじめてのNode.jsプログラム
Hello Worldの作成
最初のNode.jsプログラムを作成してみましょう。
// hello.js
console.log('Hello, Node.js!');
このファイルをターミナルで実行します。
node hello.js
Webサーバーの作成
Node.jsの組み込みモジュールを使用してWebサーバーを作成できます。
// server.js
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
res.end('<h1>はじめてのNode.jsサーバー</h1>');
});
const PORT = 3000;
server.listen(PORT, () => {
console.log(`サーバーが http://localhost:${PORT} で起動しました`);
});
Next.jsとの連携
Next.jsプロジェクトの作成
Next.jsは、React.jsベースのフレームワークで、Node.js上で動作します。
# Next.jsプロジェクトの作成
npx create-next-app@latest my-nextjs-app
cd my-nextjs-app
# 開発サーバーの起動
npm run dev
API Routes の実装
Next.jsでは、Node.js APIを簡単に作成できます。
// pages/api/hello.js または app/api/hello/route.js
export default function handler(req, res) {
if (req.method === 'GET') {
res.status(200).json({
message: 'Hello from Next.js API!',
timestamp: new Date().toISOString()
});
} else {
res.setHeader('Allow', ['GET']);
res.status(405).end(`Method ${req.method} Not Allowed`);
}
}
データベース連携例
// lib/database.js
const mysql = require('mysql2/promise');
const dbConfig = {
host: process.env.DB_HOST || 'localhost',
user: process.env.DB_USER || 'root',
password: process.env.DB_PASSWORD || '',
database: process.env.DB_NAME || 'myapp'
};
export async function connectDB() {
try {
const connection = await mysql.createConnection(dbConfig);
return connection;
} catch (error) {
console.error('データベース接続エラー:', error);
throw error;
}
}
// pages/api/users.js
import { connectDB } from '../../lib/database';
export default async function handler(req, res) {
if (req.method === 'GET') {
try {
const connection = await connectDB();
const [rows] = await connection.execute('SELECT * FROM users');
await connection.end();
res.status(200).json({ users: rows });
} catch (error) {
res.status(500).json({ error: 'データベースエラーが発生しました' });
}
}
}
パッケージ管理の基本
npmの基本コマンド
# パッケージのインストール
npm install express
# 開発依存関係としてインストール
npm install --save-dev nodemon
# グローバルインストール
npm install -g typescript
# パッケージの更新
npm update
# パッケージの削除
npm uninstall express
package.jsonの理解
{
"name": "my-node-project",
"version": "1.0.0",
"description": "はじめてのNode.jsプロジェクト",
"main": "index.js",
"scripts": {
"start": "node index.js",
"dev": "nodemon index.js",
"test": "jest"
},
"dependencies": {
"express": "^4.18.0",
"mysql2": "^3.6.0"
},
"devDependencies": {
"nodemon": "^3.0.0",
"jest": "^29.0.0"
}
}
よく使われるNode.jsライブラリ
Express.js(Webフレームワーク)
const express = require('express');
const app = express();
// ミドルウェアの設定
app.use(express.json());
app.use(express.static('public'));
// ルーティング
app.get('/', (req, res) => {
res.send('Express.jsサーバーが動作中!');
});
app.post('/api/users', (req, res) => {
const { name, email } = req.body;
// ユーザー作成処理
res.json({ message: 'ユーザーが作成されました', user: { name, email } });
});
app.listen(3000, () => {
console.log('Express サーバーが port 3000 で起動しました');
});
Lodash(ユーティリティライブラリ)
const _ = require('lodash');
const users = [
{ id: 1, name: '田中', age: 25 },
{ id: 2, name: '佐藤', age: 30 },
{ id: 3, name: '鈴木', age: 28 }
];
// 年齢でソート
const sortedUsers = _.sortBy(users, 'age');
// 特定の条件でフィルタリング
const youngUsers = _.filter(users, user => user.age < 30);
console.log('年齢順:', sortedUsers);
console.log('30歳未満:', youngUsers);
実践的なプロジェクト例
RESTful APIの作成
// app.js
const express = require('express');
const cors = require('cors');
const app = express();
// ミドルウェア設定
app.use(cors());
app.use(express.json());
// メモリ内データストア(実際の開発ではデータベースを使用)
let todos = [
{ id: 1, title: 'Node.jsを学ぶ', completed: false },
{ id: 2, title: 'APIを作成する', completed: true }
];
// 全てのTODOを取得
app.get('/api/todos', (req, res) => {
res.json(todos);
});
// 新しいTODOを作成
app.post('/api/todos', (req, res) => {
const { title } = req.body;
const newTodo = {
id: Date.now(),
title: title,
completed: false
};
todos.push(newTodo);
res.status(201).json(newTodo);
});
// TODOの完了状態を更新
app.put('/api/todos/:id', (req, res) => {
const id = parseInt(req.params.id);
const todo = todos.find(t => t.id === id);
if (!todo) {
return res.status(404).json({ error: 'TODOが見つかりません' });
}
todo.completed = !todo.completed;
res.json(todo);
});
// TODOを削除
app.delete('/api/todos/:id', (req, res) => {
const id = parseInt(req.params.id);
const index = todos.findIndex(t => t.id === id);
if (index === -1) {
return res.status(404).json({ error: 'TODOが見つかりません' });
}
todos.splice(index, 1);
res.status(204).send();
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`APIサーバーが http://localhost:${PORT} で起動しました`);
});
デバッグとテスト
デバッグ方法
// console.logを使用したデバッグ
console.log('デバッグ情報:', variable);
console.error('エラー:', error);
console.table(arrayData);
// VS Codeでのデバッグ設定(launch.json)
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch Program",
"program": "${workspaceFolder}/app.js",
"request": "launch",
"skipFiles": [
"<node_internals>/**"
],
"type": "node"
}
]
}
Jestを使用したテスト
// math.js
function add(a, b) {
return a + b;
}
function multiply(a, b) {
return a * b;
}
module.exports = { add, multiply };
// math.test.js
const { add, multiply } = require('./math');
describe('Math Functions', () => {
test('add function', () => {
expect(add(2, 3)).toBe(5);
expect(add(-1, 1)).toBe(0);
});
test('multiply function', () => {
expect(multiply(3, 4)).toBe(12);
expect(multiply(0, 5)).toBe(0);
});
});
本番環境への展開
PM2を使用したプロセス管理
# PM2のインストール
npm install -g pm2
# アプリケーションの起動
pm2 start app.js --name "my-app"
# プロセスの監視
pm2 monit
# ログの確認
pm2 logs
# アプリケーションの停止
pm2 stop my-app
# 自動起動設定
pm2 startup
pm2 save
環境変数の管理
// .env ファイル
PORT=3000
DB_HOST=localhost
DB_USER=myuser
DB_PASSWORD=mypassword
JWT_SECRET=your-secret-key
// アプリケーションでの使用
require('dotenv').config();
const port = process.env.PORT || 3000;
const dbHost = process.env.DB_HOST;
パフォーマンス最適化
メモリ使用量の監視
// メモリ使用量の確認
setInterval(() => {
const memUsage = process.memoryUsage();
console.log('Memory Usage:', {
rss: `${Math.round(memUsage.rss / 1024 / 1024)} MB`,
heapTotal: `${Math.round(memUsage.heapTotal / 1024 / 1024)} MB`,
heapUsed: `${Math.round(memUsage.heapUsed / 1024 / 1024)} MB`
});
}, 5000);
キャッシュ実装
const NodeCache = require('node-cache');
const cache = new NodeCache({ stdTTL: 600 }); // 10分間キャッシュ
app.get('/api/users/:id', async (req, res) => {
const userId = req.params.id;
const cacheKey = `user_${userId}`;
// キャッシュから確認
const cachedUser = cache.get(cacheKey);
if (cachedUser) {
return res.json(cachedUser);
}
// データベースから取得
try {
const user = await getUserFromDatabase(userId);
cache.set(cacheKey, user);
res.json(user);
} catch (error) {
res.status(500).json({ error: 'ユーザー取得エラー' });
}
});
まとめ
Node.jsは現代のWeb開発において欠かせない技術です。この記事で紹介した内容を基に、実際にコードを書いて経験を積むことが重要です。
学習のポイント
- 小さなプロジェクトから始めて徐々に機能を追加する
- npmパッケージを積極的に活用する
- エラーハンドリングとテストを意識する
- 実際のWebアプリケーション開発でNext.jsと組み合わせる
Node.jsの学習を継続することで、フルスタック開発者としてのスキルが大幅に向上します。今日から実際にコードを書いて、Node.jsの世界を探求してみてください。
■らくらくPython塾 – 読むだけでマスター
■AI時代の第一歩!「AI駆動開発コース」はじめました!
テックジム東京本校で先行開始。
■テックジム東京本校
「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。
<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。
<月1開催>放送作家による映像ディレクター養成講座
<オンライン無料>理系出身者向けのPython爆速講座
![]() |
20万件以上の案件から、副業に最適なリモート・週3〜の案件を一括検索できるプラットフォーム。プロフィール登録でAIスカウトが自動的にマッチング案件を提案。市場統計や単価相場、エージェントの口コミも無料で閲覧可能なため、本業を続けながら効率的に高単価の副業案件を探せます。フリーランスボード |
| |
週2〜3日から働ける柔軟な案件が業界トップクラスの豊富さを誇るフリーランスエージェント。エンド直契約のため高単価で、週3日稼働でも十分な報酬を得られます。リモートや時間フレキシブルな案件も多数。スタートアップ・ベンチャー中心で、トレンド技術を使った魅力的な案件が揃っています。専属エージェントが案件紹介から契約交渉までサポート。利用企業2,000社以上の実績。ITプロパートナーズ |
| |
10,000件以上の案件を保有し、週3日〜・フルリモートなど柔軟な働き方に対応。高単価案件が豊富で、報酬保障制度(60%)や保険料負担(50%)など正社員並みの手厚い福利厚生が特徴。通勤交通費(月3万円)、スキルアップ費用(月1万円)の支給に加え、リロクラブ・freeeが無料利用可能。非公開案件80%以上、支払いサイト20日で安心して稼働できます。Midworks |







