Node.jsとは?JavaScript・ブラウザ・npmとの違いをやさしく解説

同じ言語の手順を、ブラウザ内と画面の外の異なる道具で動かす模型

30秒でわかる答え

Node.jsとは?

Node.js(ノード・ジェイエス)は、JavaScriptで書かれたプログラムを、ブラウザの外でも動かすためのソフトウェアです。Webサービスの裏側や、自分のPCで使う開発用の道具などを動かします。

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

ファイルを扱ったり、依頼を受け取ったりする機能がある

役割を比べた模式図です。機能が一部共通していても、全プログラムをそのまま移せるわけではありません。

たとえば、ラボで同じ書き方の作業メモを使っていても、画面を扱う机と、保存したファイルを並べる机では、置いてある道具が違います。実際のJavaScriptでも、同じ言語だからといって、すべてのプログラムがどこでもそのまま動くわけではありません。

また、Node.jsを使うプログラムが、PCのどのファイルでも自由に触れるとは限りません。動かした人に与えられた権限などの制限を受けます。「動かせる場所が広がること」と「許される操作が無制限になること」は別です。

言語そのものの役割を知りたいときは、JavaScriptとは何をするものかから、Webページの動きと結びつけて読めます。

Node.jsとnpmは何が違う?

Node.jsの説明で一緒に出てきやすいのが、npm(エヌピーエム)です。npmは、プログラムを作るときに使う部品を取り寄せたり、版を管理したりする道具です。

プログラムのすべてを毎回一から書く代わりに、ほかの人が作った処理を部品として使えます。日付を扱う、画像を加工する、画面を作るための準備をする、といった部品があります。このような配布用のまとまりを「パッケージ」と呼びます。

Node.jsとnpmは一緒に入ることがあるため、一つのものに見えやすいのですが、次のように分けられます。

  • Node.jsは、プログラムを動かす。
  • npmは、必要な部品を管理し、登録された作業を呼び出す。
  • パッケージは、取り寄せて使う部品そのもの。
名前を「書く・動かす・集める」で整理
JavaScript

処理を書くための言語

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という名前が出てきたら、まず「何を動かしていて、どのコンピューターにあるのか」を見てください。名前を全部覚えるより、書く言語・動かす環境・部品を管理する道具のどれを指しているかが分かれば、次の説明を追いやすくなります。

サーバーの場所がまだつかみにくいときは、サーバーとは何をするコンピューターかで、手元のブラウザから依頼が届く流れを確認できます。

内容の最終確認日: