Node.jsとは何か?できることと基本構造を初心者向けに解説
Node.jsは、ブラウザの外でJavaScriptを動かすための実行環境です。Webページに動きを付けるためのJavaScriptを、そのままサーバー処理や自動化スクリプト、CLIツール開発にも使えるようにしたもの、と考えるとつかみやすいです。
「JavaScriptはフロントエンドの言語」という印象を持っている人でも、Node.jsを使えばAPIサーバー、ファイル処理、バッチ、ログ整形まで書けます。特に、Webまわりの処理と自動化をひとつの言語でまとめたい場面で強みがあります。
- できること: Webサーバー、API、CLI、ファイル操作、定期実行、JSON処理
- 向いている場面: フロントエンドとバックエンドを同じJavaScript系でそろえたいとき
- 初心者が最初に押さえる点: 「実行環境」「非同期処理」「npm」「モジュール」の4つ
- 確認時点: 2026年4月21日。Node.js公式のReleasesページでは、
v24.15.0がLatest LTS、v25.9.0がLatest Releaseとして案内されています
ここがポイント: Node.jsは「JavaScriptの文法を覚えたあとに、サーバーや自動化まで広げるための土台」です。Web制作だけで終わらず、実務の処理範囲を一気に広げられます。
Node.jsの前提環境とバージョンの見方
まずは前提を短く整理します。Node.jsはライブラリではなく、PCやサーバーに入れて使う実行環境です。
- 対象言語: JavaScript
- 主な実行場所: Windows、macOS、Linux
- よく一緒に使うもの:
npm、package.json - 実行例: ターミナルで
node app.js
公式ドキュメントでは、Node.jsはオープンソースでクロスプラットフォームなJavaScriptランタイムと説明されています。さらに本番利用では、CurrentよりもActive LTSまたはMaintenance LTSの系統を選ぶのが基本です。
LTSとCurrentの違い
初心者が迷いやすいのがここです。
- LTS: 長期サポート版。業務や学習用で選びやすい
- Current: 新機能を早めに試せる版。検証向け
業務で新規導入するなら、まずはLTS系で始めるのが無難です。記事や教材の手順もLTS前提のものが多く、エラー切り分けもしやすくなります。
Node.jsとは何か
Node.jsの核心は、Google ChromeのV8エンジンをブラウザ外で使い、JavaScriptでサーバー側の処理を動かせることです。
これだけだと抽象的なので、実務目線で言い換えると次のようになります。
- ブラウザではできないローカルファイルの読み書きができる
- HTTPサーバーを立ててAPIを返せる
- CSVやJSONを加工するバッチを作れる
- コマンドラインから動く社内ツールを作れる
Node.js公式の紹介ページでは、単一プロセスで動きつつ、非同期I/Oによってネットワークやファイル処理の待ち時間で全体を止めにくい設計が特徴とされています。これが、アクセス待ちやファイル待ちが多い処理と相性がよい理由です。
ブラウザのJavaScriptとの違い
同じJavaScriptでも、できることはかなり違います。
- ブラウザJavaScript: HTML操作、DOM操作、画面表示、ユーザー操作への反応
- Node.js: サーバー処理、ファイル操作、CLI、API連携、バッチ処理
たとえば、ブラウザで document.querySelector() は使えても、Node.jsでは通常そのまま使いません。逆にNode.jsでは fs でファイルを読み込めますが、ブラウザでは直接同じ形では扱えません。
Node.jsでできること
ここは実務に直結する部分です。Node.jsは「何となくサーバーを書くもの」ではありません。
1. WebサーバーやAPIを作る
Node.jsにはHTTPまわりの仕組みがあり、Expressのようなフレームワークを組み合わせればAPIサーバーを作れます。
使う場面はわかりやすいです。
- フォーム送信データを受け取る
- フロントエンドからのAPIリクエストにJSONで返す
- 社内システム向けの小さなバックエンドを用意する
2. ファイルやデータを処理する
Node.jsはファイルシステム操作ができるため、データ整形にも向いています。
- CSVを読み込んでJSONに変換する
- ログファイルを集計する
- 複数ファイルの名前を一括変更する
- MarkdownやHTMLを自動生成する
この種の処理は、毎回手作業でやると時間がかかります。Node.jsでスクリプト化しておくと、同じ作業を何度でも再現できます。
3. CLIツールを作る
ターミナルで動く社内ツールや補助コマンドも作れます。
node script.jsで定型処理を実行する- 引数を受け取って対象ファイルを切り替える
- APIから取得したデータを整形して保存する
Web画面を作るほどではないが、人手では面倒な処理を減らしたい。そんなときにNode.jsはかなり実用的です。
4. npmでパッケージを活用する
Node.jsを語るうえで外せないのがnpmです。公式ドキュメントでも、npmはNode.jsの標準パッケージマネージャーと説明されています。
できることは次の通りです。
- 必要なライブラリを追加する
- プロジェクトごとの依存関係を管理する
npm runで開発用コマンドをまとめる
たとえば、HTTPクライアント、日付処理、テスト、整形などをゼロから書かずに導入できます。実務ではこの差が大きいです。
Node.jsの基本構造
Node.jsを使い始めると、次の4つが何度も出てきます。
node: JavaScriptファイルを実行するコマンドpackage.json: プロジェクト情報や依存関係を書くファイル- モジュール: ファイルを分けて読み込む仕組み
- 非同期処理: 時間のかかる処理を待ちながら全体を止めにくくする書き方
package.json は何のためにあるのか
package.json は、そのプロジェクトの設計図に近いファイルです。
{
"name": "nodejs-sample",
"version": "1.0.0",
"type": "module",
"scripts": {
"start": "node app.js"
}
}
ここに書かれる代表項目は次の通りです。
name: プロジェクト名version: バージョンtype: モジュール方式。moduleならES Modulesscripts: 実行コマンドの別名
モジュールは「部品分割」の仕組み
Node.jsにはCommonJSとECMAScript Modulesの2系統があります。現在の公式ドキュメントでも、Node.jsにはこの2つのモジュールシステムがあると案内されています。
初心者はまず、ES Modulesで覚えると整理しやすいです。
// math.js
export function add(a, b) {
return a + b;
}
// app.js
import { add } from './math.js';
console.log(add(2, 3));
出力例:
5
1ファイルに全部を書くと、少し機能が増えただけで読みにくくなります。モジュールを使うと、計算、通信、設定、ファイル処理を分けて保守しやすくなります。
非同期処理はなぜ重要か
Node.jsの説明でよく出る「非同期」は、待ち時間のある処理をうまく扱うための考え方です。
たとえば次の処理は、結果が返るまで少し待つ可能性があります。
- APIへのアクセス
- ファイル読み込み
- データベース問い合わせ
この待ち時間で処理全体が止まりにくいのが、Node.jsの強みです。初心者はまず async / await を使った形を覚えると扱いやすくなります。
最小サンプルで動きをつかむ
細かい理屈より、まずは最小例を見るほうが早いです。
例1: 文字を表示する
console.log('Hello Node.js');
実行コマンド:
node app.js
出力例:
Hello Node.js
これは最小の確認用です。Node.jsが正しく入っていて、JavaScriptファイルを実行できるかを見ます。
例2: JSONファイルを読む
入力例 data.json:
{
"name": "Tanaka",
"role": "sales",
"active": true
}
コード例 app.js:
import { readFile } from 'node:fs/promises';
const text = await readFile('./data.json', 'utf-8');
const data = JSON.parse(text);
console.log(data.name);
console.log(data.role);
出力例:
Tanaka
sales
この時点で、Node.jsが「画面のない裏側の処理」を書くためのものだと見えてきます。JSON読込、CSV変換、APIレスポンス整形などの入り口は、だいたいこの延長線です。
例3: 小さなHTTPサーバーを立てる
import http from 'node:http';
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' });
res.end('Node.js server is running');
});
server.listen(3000, () => {
console.log('http://localhost:3000');
});
ブラウザで http://localhost:3000 にアクセスすると、テキストが表示されます。これが、Node.jsがWebサーバーの土台として使われる理由の最小形です。
実務でよくある使いどころ
ここでは、初心者が仕事で触れやすい場面に絞ります。
フロントエンド開発の周辺処理
ReactやVue、Next.jsなどを使う現場では、Node.jsは裏方として頻繁に登場します。
- 開発サーバーを起動する
- ビルドを実行する
- パッケージを追加する
- テストやLintを走らせる
つまり、Node.jsを直接アプリ本体に書かなくても、現代のWeb開発環境を動かす基盤として触れる機会が多いです。
バッチや定型作業の自動化
毎日同じ作業をするなら、Node.jsでまとめる価値があります。
- 売上CSVを読み込んで整形する
- APIから情報を取ってレポート化する
- フォルダ内ファイルを規則的に整理する
Excelで頑張ると手作業が増えやすい処理でも、Node.jsなら履歴を残しやすく、再実行しやすくなります。
API連携の試作
業務APIのたたき台を作るときも便利です。
- 認証付きAPIの疎通確認
- レスポンスJSONの整形
- 複数エンドポイントの連続呼び出し
ただし、APIキーやトークンをコードに直書きしないことは重要です。環境変数や.envを使い、Git管理対象に含めない運用が基本になります。
初心者がつまずきやすいポイント
Node.jsは便利ですが、最初に混乱しやすい箇所がはっきりあります。
node と npm を同じものだと思う
これはかなり多いです。
node: JavaScriptを実行する本体npm: パッケージ管理やスクリプト実行の道具
役割が違うので、エラーが出たときも「Node.js本体の問題か」「依存関係の問題か」を切り分けて考える必要があります。
import と require が混ざる
Node.jsにはモジュール方式が2つあります。ここを曖昧にするとエラーになりやすいです。
- ES Modules:
import/export - CommonJS:
require()/module.exports
初心者は、package.json の "type": "module" を入れてES Modulesでそろえると理解しやすいです。
非同期処理を同期処理の感覚で書く
APIやファイル読込では、結果がすぐ返るとは限りません。await を付け忘れると、値が取れないまま後続処理が進むことがあります。
NG例:
const text = readFile('./data.json', 'utf-8');
console.log(text);
改善例:
const text = await readFile('./data.json', 'utf-8');
console.log(text);
バージョン差を見ない
記事どおりに書いたのに動かないとき、原因がNode.jsのバージョン差ということは珍しくありません。
確認しておきたい項目:
node -vnpm -vpackage.jsonのtype- 使用しているライブラリの対応Node.jsバージョン
Node.js以外の選択肢と使い分け
Node.jsが常に最適とは限りません。用途で見分けると判断しやすくなります。
- Python: データ分析、機械学習、表計算処理が強い
- PowerShell: Windows管理や社内端末操作に強い
- GAS: Google Workspace連携をすぐ始めやすい
- PHP: WordPress周辺や既存Webサーバー環境で扱いやすい
Node.jsが向くのは、JavaScript資産を活かしながら、Web・API・自動化を横断したい場面です。特にフロントエンド経験者が次の一歩を踏み出すには、学習コストに対して得られる範囲が広い言語基盤です。
まず何から始めればいいか
最後に、初学者向けの最短ルートを整理します。
- LTS版のNode.jsを入れる
node -vとnpm -vで確認するconsole.log()の最小コードを実行するpackage.jsonを作るimportを使った2ファイル構成を試す- JSON読込か簡単なHTTPサーバーを動かす
ここまでできれば、Node.jsを「何となく知っている」状態から、「手元で処理を書ける」状態に進めます。次に見るべきポイントは、非同期処理の理解と、npmで必要なパッケージを安全に管理することです。
