ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
Node.js とは
Node.js は、Google 製の V8 JavaScript エンジンを OS 上で直接動かすためのランタイム環境です。2009 年に Ryan Dahl が公開し、それまでブラウザでしか動かなかった JavaScript をサーバサイドで動かす道を開きました。
非同期 I/O ライブラリ libuv を組み合わせたシングルスレッド + イベントループで、少数のスレッドで何万もの同時接続を捌けるのが強みです。
アーキテクチャ
+---------------------------------------+
| JavaScript アプリケーションコード |
+---------------------------------------+
| Node.js Standard Library (fs/http/…) |
+---------------------------------------+
| Node Bindings (C++) |
+---------------------+-----------------+
| V8 エンジン | libuv |
| (JIT / GC) | (Event Loop) |
| | (Thread Pool) |
+---------------------+-----------------+
| OS Kernel |
+---------------------------------------+
イベントループ
Node.js のイベントループは 6 フェーズで構成されます:
| フェーズ | 処理対象 |
|---|---|
| 1. Timers | setTimeout / setInterval のコールバック |
| 2. Pending callbacks | I/O の延期コールバック (TCP エラー等) |
| 3. Idle, prepare | 内部処理 |
| 4. Poll | 新しい I/O イベントを取得 / コールバック実行 |
| 5. Check | setImmediate のコールバック |
| 6. Close callbacks | socket.on("close", …) など |
各フェーズ間で process.nextTick と Promise (microtask) が優先実行されます。
最小 HTTP サーバ
// server.mjs (ESM)
import http from 'node:http';
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ message: 'Hello, Node.js' }));
});
server.listen(3000, () => {
console.log('Listening on http://localhost:3000');
});
// 実行
// node server.mjs
npm エコシステム
Node.js とセットで配布される npm (Node Package Manager) は、世界最大のパッケージレジストリです。
# パッケージ初期化
npm init -y
# 依存追加
npm install express # 本番依存
npm install -D typescript @types/node # 開発専用
# スクリプト実行 (package.json の "scripts")
npm run dev
npm run build
npm test
# 監査
npm audit
npm audit fix
# パッケージ更新
npm outdated
npm update
# グローバルインストール
npm install -g pm2
主要フレームワーク
| フレームワーク | 特徴 | 用途 |
|---|---|---|
| Express | 2010 -。事実上の標準。ミニマル / ミドルウェア型 | REST API 全般 |
| Fastify | Express より 2-3 倍速い。スキーマバリデーション内蔵 | 高負荷 API |
| NestJS | Angular 風 DI / デコレータ / モジュール | エンタープライズ |
| Koa | Express 作者の後継。async/await ベース | モダンな API |
| Hono | エッジ / Cloudflare Workers 対応の超軽量 | エッジ API |
| tRPC | 型安全な RPC。React と相性◎ | フロント+バックの型共有 |
Express の例
import express from 'express';
const app = express();
app.use(express.json());
app.get('/users/:id', async (req, res) => {
const user = await db.user.findById(req.params.id);
res.json(user);
});
app.post('/users', async (req, res) => {
const created = await db.user.create(req.body);
res.status(201).json(created);
});
app.listen(3000);
NestJS の例
@Controller('users')
export class UsersController {
constructor(private readonly users: UsersService) {}
@Get(':id')
findOne(@Param('id') id: string) {
return this.users.findOne(id);
}
@Post()
create(@Body() dto: CreateUserDto) {
return this.users.create(dto);
}
}
用途別の Node.js 使い所
- API サーバ: REST / GraphQL / gRPC のサーバ実装
- BFF (Backends for Frontends): フロント特化の中間サーバ
- SSR: Next.js / Nuxt / Remix のサーバ部
- ビルドツール: Webpack / Vite / esbuild / Rollup の実行基盤
- CLI ツール: ESLint / Prettier / npm-scripts
- WebSocket / リアルタイム: Socket.IO / ws ライブラリ
- バッチ / 定期処理: cron-like なスケジューラ
- Discord/Slack bot: 公式 SDK が Node 対応
TypeScript との組み合わせ
# TypeScript + tsx (高速実行)
npm install -D typescript tsx @types/node
npx tsc --init
# 開発時実行
npx tsx watch src/server.ts
# 本番ビルド
npx tsc
# Node 22+ なら .ts を直接 (実験的)
node --experimental-strip-types src/server.ts
Deno / Bun との比較
| 項目 | Node.js | Deno | Bun |
|---|---|---|---|
| エンジン | V8 | V8 | JavaScriptCore |
| 初版 | 2009 | 2020 | 2022 |
| TS 対応 | 要トランスパイル (v22 で実験) | ネイティブ | ネイティブ |
| セキュリティ | 制限なし | デフォルト拒否 / 明示許可 | 制限なし |
| npm 互換 | ○ | ○ (v1.25+) | ○ |
| パッケージ管理 | npm/yarn/pnpm | URL import / npm | bun install |
| 速度 (起動) | 普通 | 普通 | ★★ 最速 |
| エコシステム | ★★★ 最大 | ★ | ★ |
バージョン管理 (nvm / Volta)
# nvm (Linux/macOS)
nvm install 22
nvm use 22
nvm alias default 22
# Windows は nvm-windows
nvm install 22.0.0
nvm use 22.0.0
# Volta (推奨。プロジェクト単位でピン留め)
curl https://get.volta.sh | bash
volta install node@22
volta pin node@22.0.0 # package.json に記録
# fnm (Rust 製 / 軽量)
fnm install 22
fnm use 22
FAQ
Q: Node はシングルスレッドというが CPU が複数あれば?
A: cluster モジュールや worker_threads、PM2 / Node Cluster で複数プロセス / 複数スレッド化できます。
Q: LTS と Current の違いは?
A: 偶数番号は LTS (Long Term Support, 30 ヶ月サポート)。奇数番号は短命 (Current 6 ヶ月)。本番は LTS のみ使用。
Q: Express で十分か NestJS が必要か?
A: ルーティング数百以下・小規模 → Express で十分。チーム開発・モジュール構造重視・テスト容易性 → NestJS。
📸 参考画像
※ 旧バージョンから引き継いだ参考画像です。手順・図解の補助としてご覧ください。

ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
同階層のページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- 【django】ログイン 認証機能 2026-09-08 03:22:09
- MySQL ERROR 1063 Incorrect column specifier for column|原因と直し方 2026-09-08 03:11:09
- 【PHPエラー】Object of class stdClass could not be converted to string 2026-09-07 07:46:04
- Julia Genie ローカル開発サーバ起動完全ガイド 2026-09-07 07:46:04
- Wi-Fi とは|規格と世代(Wi-Fi 4〜7)・周波数帯・CSMA/CA・WPA3 NEW 2026-09-07 07:45:13
- set コマンドでシェルオプションと位置パラメータを操作 | bash 2026-09-07 07:45:13
- JPEG(.jpg/.jpeg)画像形式の完全ガイド — 仕様・マジックナンバー・他形式との比較・EXIF 2026-09-07 07:45:13
- UE5 Get Overlapping Actorsで特定クラスだけ処理|Class Filter・Cast To 2026-09-07 07:45:13
- Linuxで特定拡張子のファイルを再帰削除|find -deleteの安全手順 2026-09-07 07:45:13
- Django CBVでテンプレートに値を渡す|get_context_data・extra_context 2026-09-07 07:45:13
- Linuxで複数ファイルの文字列を一括置換|find・sed・xargsの安全手順 2026-09-07 07:45:13
- Laravelルートグループ|prefix・middleware・nameで一括管理 2026-09-07 07:45:13
- Linux whichコマンドの使い方|絶対パス取得とtype・command -vの違い 2026-09-07 07:45:13
- Linux catコマンドの使い方|行番号表示・複数ファイル連結 2026-09-07 07:45:13
- unable to execute 'gcc': No such file or directory 2026-09-07 07:45:13
コメントを削除してもよろしいでしょうか?