1.Node.jsとは何ですか?
Node.js は Chrome の V8 エンジン上に構築された JavaScript ランタイムで、サーバー側で JavaScript を実行できます。 2009 年に Ryan Dahl によって発表された Node.js は、JavaScript に対する世界の考え方を完全に変えました。
| 成分 | 役割 |
|---|---|
| V8エンジン | JSコンパイル → マシンコード、メモリ管理 |
| リブブ | イベントループ、非同期I/O、スレッドプール、クロスプラットフォーム |
| C++ バインディング | JS をシステムレベル API (fs、net、crypto) に接続する |
| Node.js API | JavaScript API (http、パス、イベント、ストリームなど) |
2. Node.js アーキテクチャ
┌─────────────────────────┐
│ Your JavaScript │
├─────────────────────────┤
│ Node.js APIs │
│ (http, fs, crypto…) │
├─────────────────────────┤
│ C++ Bindings │
├──────────┬──────────────┤
│ V8 │ libuv │
│ Engine │ (event loop)│
└──────────┴──────────────┘
│ Operating System │
3. Node.js vs Deno vs Bun
| 特長 | Node.js | デノ | バン |
|---|---|---|---|
| エンジン | V8 | V8 | JavaScriptコア |
| 言語 | C++ | さび | ジグ |
| TypeScript | --experimental-strip-types | ネイティブ | ネイティブ |
| パッケージマネージャー | npm/pnpm/糸 | での追加 | バンインストール |
| 生態系 | 最大 (300 万以上のパッケージ) | npm互換 | npm互換 |
| セキュリティ | フルアクセス | 権限 | フルアクセス |
4. インストールとセットアップ
# Cài Node.js qua nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
nvm install 22
nvm use 22
node --version # v22.x.x
# Cài pnpm
corepack enable
corepack prepare pnpm@latest --activate
# Khởi tạo project
mkdir my-node-project && cd my-node-project
pnpm init
5. V8 エンジンのフラグ
# Xem tất cả V8 flags
node --v8-options | head -50
# Giới hạn memory
node --max-old-space-size=4096 app.js
# Inspect debugger
node --inspect app.js # Chrome DevTools tại chrome://inspect
node --inspect-brk app.js # Break ở dòng đầu tiên
# V8 profiling
node --prof app.js
node --prof-process isolate-*.log > processed.txt
6. ハローワールドとREPL
// hello.ts
const message: string = 'Hello from Node.js!'
console.log(message)
console.log(`Node.js version: ${process.version}`)
console.log(`Platform: ${process.platform}`)
console.log(`Architecture: ${process.arch}`)
console.log(`PID: ${process.pid}`)
console.log(`Memory: ${JSON.stringify(process.memoryUsage())}`)
# Chạy TypeScript trực tiếp (Node.js 22+)
node --experimental-strip-types hello.ts
# Hoặc dùng tsx
npx tsx hello.ts
次の記事: イベントループと非同期パターン — フェーズ、マイクロタスク、マクロタスク。