Node.js(ノード・ジェイエス)は、JavaScriptで書かれたプログラムを、ブラウザの外でも動かすためのソフトウェアです。Webサービスの裏側や、自分のPCで使う開発用の道具などを動かします。
JavaScriptは「プログラムを書く言語」、Node.jsは「それを動かす環境」、npmは「必要な部品を管理する道具」。一緒に出てくる名前ですが、役割が違います。
AIにアプリ作りを頼んだり、セキュリティのお知らせを読んだりして、初めてNode.jsという名前を見た人もいるでしょう。インストールや操作を始めなくても、まずこの3つの役割から理解できます。
Node.jsとは、ブラウザの外で動かす環境
JavaScriptは、コンピューターに処理の手順を伝えるための言語の一つです。たとえばWebページでボタンを押したときに、説明を開いたり、表示を切り替えたりする処理を書けます。
ただし、書かれた手順は、文字として保存するだけでは動きません。その手順を読み取り、計算や通信といった仕事につなぐ仕組みが必要です。
ChromeやSafariなどのブラウザには、JavaScriptを動かす仕組みが備わっています。Node.jsを使うと、ブラウザを開いてページの中で動かす形に限らず、JavaScriptのプログラムを動かせます。
こうした、プログラムを動かすための仕組みを「実行環境」といいます。英語ではruntime(ランタイム)と書かれることもあります。Node.js公式の入門資料も、Node.jsをJavaScriptの実行環境として説明しています。
Node.js自体が、書いた文章からアプリを考えて作ってくれるわけではありません。人やAIが用意したプログラムを、動かす役割を担います。
Node.jsとJavaScript・ブラウザの違い
「どれを選ぶか」と考えるより、「それぞれ何の係か」と考えると、名前の関係が見えてきます。
| 名前 | 役割 | 身近な場面にすると |
|---|---|---|
| JavaScript | 処理の手順を書くための言語 | ボタンを押したら何をするかを書く |
| ブラウザ | Webページを受け取り、表示や操作をするソフト | 受け取ったページを表示し、その中のJavaScriptも動かす |
| Node.js | ブラウザの外でJavaScriptを動かす環境 | サービスの裏側で、返す情報を用意する |
ブラウザとNode.jsの両方がJavaScriptを動かせても、使える道具まで同じとは限りません。ブラウザには、表示中のページの文字やボタンを操作するための機能があります。Node.jsには、ファイルを扱ったり、サービスへの依頼を受け取ったりするための機能が用意されています。
表示中のページやボタンを操作する機能がある
ファイルを扱ったり、依頼を受け取ったりする機能がある
役割を比べた模式図です。機能が一部共通していても、全プログラムをそのまま移せるわけではありません。
たとえば、ラボで同じ書き方の作業メモを使っていても、画面を扱う机と、保存したファイルを並べる机では、置いてある道具が違います。実際のJavaScriptでも、同じ言語だからといって、すべてのプログラムがどこでもそのまま動くわけではありません。
また、Node.jsを使うプログラムが、PCのどのファイルでも自由に触れるとは限りません。動かした人に与えられた権限などの制限を受けます。「動かせる場所が広がること」と「許される操作が無制限になること」は別です。
言語そのものの役割を知りたいときは、JavaScriptとは何をするものかから、Webページの動きと結びつけて読めます。
Node.jsとnpmは何が違う?
Node.jsの説明で一緒に出てきやすいのが、npm(エヌピーエム)です。npmは、プログラムを作るときに使う部品を取り寄せたり、版を管理したりする道具です。
プログラムのすべてを毎回一から書く代わりに、ほかの人が作った処理を部品として使えます。日付を扱う、画像を加工する、画面を作るための準備をする、といった部品があります。このような配布用のまとまりを「パッケージ」と呼びます。
Node.jsとnpmは一緒に入ることがあるため、一つのものに見えやすいのですが、次のように分けられます。
- Node.jsは、プログラムを動かす。
- npmは、必要な部品を管理し、登録された作業を呼び出す。
- パッケージは、取り寄せて使う部品そのもの。
処理を書くための言語
ブラウザの外で動かす環境
部品を取り寄せて管理する道具
npmは登録した作業の呼び出しにも使われます。3つが一緒に出てきても、同じものではありません。
npmという道具は、ブラウザ向けのプログラムを作るときにも使われます。「npmが出てきたから、完成したページもNode.jsで動く」とは限りません。ページを作るための準備と、完成後に動く場所が異なる場合があるからです。
また、部品を管理する道具があることと、その部品が安全だと確認されていることも別です。知らない部品や操作をすすめられたら、何を追加し、何を動かすのかを確認する必要があります。用語を理解するために、今すぐ何かを取り寄せる必要はありません。
Node.jsを使うのは自分のPC?サービス側?
どちらでも使われます。何を動かすために使うかで、置かれる場所が変わります。
一つは、サービスを提供する側です。たとえば予約サイトでは、ブラウザから「この日の空き状況を見たい」と依頼が届きます。裏側のコンピューターが情報を用意して返す、このような処理にNode.jsが使われることがあります。
依頼を受け取り、情報や機能を提供する側を「サーバー」といいます。Node.jsはサーバーそのものの名前ではなく、そこでプログラムを動かすために使えるソフトの一つです。ほかの仕組みで動くサーバーもあります。
もう一つは、作る人のPCです。Webページを公開できる形にまとめる、複数のファイルを整える、AIから使う道具を動かすなど、画面の裏で進む作業にNode.jsが使われる場合があります。
| 場所 | Node.jsが担当する例 | ページを見る人が入れる必要は? |
|---|---|---|
| 提供元のサーバー | 予約情報などを用意して返す | そのサービスを見るためだけなら不要 |
| 制作する人のPC | 公開するファイルを作る | 完成したページを見る人には不要 |
| 自分のPC | 自分で導入した道具を動かす | その道具の導入方法による |
この違いは、更新のお知らせを読むときにも役立ちます。手元のPCで使っているものなら自分の導入方法を確かめ、サービス側なら提供元の対応を確かめる、というように確認先が変わります。
ニュースやAIの説明でNode.jsという名前が出てきたら、まず「何を動かしていて、どのコンピューターにあるのか」を見てください。名前を全部覚えるより、書く言語・動かす環境・部品を管理する道具のどれを指しているかが分かれば、次の説明を追いやすくなります。
サーバーの場所がまだつかみにくいときは、サーバーとは何をするコンピューターかで、手元のブラウザから依頼が届く流れを確認できます。




