結論
- Node.jsとはJavaScriptを実行する環境などを提供するプログラム
- Node.jsを利用することで、npmによるライブラリ管理やTypeScriptの変換、Angularの開発用サーバーの起動などブラウザだけではできないことも実行できるため開発環境では活躍してくれる
詳細
JavaScriptってどこでどう動く?
- JavaScriptプログラムを実行できる専用プログラム(=JavaScriptエンジン)が実行してくれる
- JavaScriptエンジンはChromeなどのブラウザに搭載されている
- JavaScriptプログラムが渡されると、その環境に搭載されたJavaScriptエンジンがプログラムを実行する
- 例:
<script>
const message = "こんにちは";
console.log(message);
</script>
ChromeでこのHTMLを開くと、以下のような流れになる:
- ChromeがHTMLを読み込む
- JavaScriptのコードを見つける
- 自身のJavaScriptエンジン(V8)に処理を渡す
- V8がJavaScriptを実行する
- console.log() によってコンソールに「こんにちは」と表示される
Node.jsが必要になるとき
Chromeなどのブラウザは、基本的にWebページを読み込んで表示し、そのページ上のJavaScriptを実行するためのもの
→開発にあたり、できないこともけっこうある
例えば、Angularで以下のようなTodoアプリを作るとする:
TodoApp/
├── src/
│ ├── app/
│ │ ├── todo.component.ts
│ │ ├── todo.component.html
│ │ └── todo.component.css
│ └── main.ts
├── package.json
└── angular.json
→これらの開発用ファイルは、ChromeでそのままAngularアプリとして動かせるわけではない
→ブラウザがそのまま理解できないものも含まれているから
例① Angularのライブラリを利用する
- Angularの機能を使うにはAngularのライブラリをダウンロードして、使えるように準備する必要がある
- 例:
import { Component } from '@angular/core'; - この準備にnpmなどNode.jsのもつプログラムの一種が必要になる
例② TypeScriptをJavaScriptに変換する
AngularではTypeScriptを使うことが多い
const age: number = 20;
- しかし、ブラウザが通常実行するのはJavaScript
→TypeScriptを実行できないし、TypeScriptに変換もできない - この変換処理にNode.jsがもつTypeScriptコンパイラなどのツールが必要になる
例③ 開発中の画面をローカルで配信する
- 変換・ビルドしたファイルをブラウザから見たい
→開発用サーバーを起動する(http://localhost:4200) - ブラウザでこのURLにアクセスするとAngularプログラムファイルで作られた画面を表示させることができ
- また、ファイルの変更を監視して、自動で再ビルドしたり、ブラウザに変更を反映したりしたい
→これにもNode.jsが必要
Node.js上で動くツール
※「〇〇上で動く」とは、基本的に「〇〇という実行環境を利用して、そのプログラムが動く」

npm
主に次の2つの機能を提供するツール
- ライブラリ(他の人が作ったプログラム)をインストールする
- プロジェクトに登録されたコマンドを実行する
例:npm start
- start に登録された処理を実行するコマンド
- プロジェクトの package.json:
{
"scripts": {
"start": "ng serve"
}
}
この場合、ターミナルでnpm startと入力すると、npm が package.json の scripts にある start を探し、設定された ng serve を実行してくれる
脆弱性発覚
2026/10/21、世間を騒がせたPHP・Node.jsの脆弱性は簡単にまとめるとこんな感じ:

- Node.jsは単にJavaScriptを実行するだけではなく、サーバーを起動したり、ファイルを操作したりできる実行環境
- つまり、Node.jsが動いているサーバーで攻撃者に遠隔で任意のコードを実行されると、そのサーバーが持っている権限の範囲で、ファイルやデータなどにアクセスされる危険がある
- こういう攻撃者が遠隔地から、攻撃対象のコンピューター上で任意のプログラムを実行できてしまう脆弱性のことをリモートコード(RCE)という
- また、Node.jsは開発者のPCでAngularを動かすためだけではなく、本番環境のWebサーバーとしても利用できる
→Node.js自体に脆弱性が見つかれば、本番環境にも影響する可能性がある
脆弱性発覚後のエンジニアのTodoフロー
エンジニアが普段からやっている対策
→先輩や上司から「バージョンアップして」「アップデートして」と言われた場合、それは単に新機能を使いたいという理由だけではなく、セキュリティ上の問題を解消する目的かもしれないため軽く捉えずちゃんとやるべし!



