Newer
Older
hello-programmer-world / src / pages / nodejs / 000-introduction.mdx
@h.sakamoto h.sakamoto 7 days ago 3 KB nodejs
---
layout: "@/layouts/MarkdownLayout.astro"
---

import Toc from "../../components/Toc.astro";

export const title = "Node.jsとは?";

# {title}

## TOC

## JavaScriptでパソコンを動かす

JavaScriptはもともと、ウェブブラウザの中でだけ動くプログラミング言語として生まれました。  
HTMLのボタンをクリックしたときに何かを動かしたり、入力内容を検証したりするために使われてきました。

**Node.js**は、この「JavaScriptを実行する仕組み」をブラウザの外に取り出したものです。  
2009年にRyan Dahlによって作られ、これによってJavaScriptはパソコン上で直接動かせるようになりました。

パソコン上で動くということは、ファイルの読み書き、ネットワーク通信、他のプログラムの起動など、  
**パソコンに対するあらゆる操作をJavaScriptで書ける**ということを意味します。

## Node.jsの主な用途

Node.jsがパソコンを自由に操作できる力を持つことで、さまざまな用途に使われています。

### ① Webサーバーとして動かす

Node.jsはWebサーバーとして動作させることができます。  
PHPと同様に、ブラウザからのリクエストを受け取り、処理を行ってレスポンスを返す役割を担えます。

実際の現場では、ApacheやNginxといった既存のWebサーバーと組み合わせて、  
Node.jsが特定の処理を担う形で使われることが多いです。

### ② ブラウザを自動操作してテストする

Node.jsはChromeなどのブラウザをプログラムから操作することができます。  
実際にブラウザを動かしながら「このボタンをクリックしたら正しく動くか」といったテストを自動で行えます。

`Playwright`や`Puppeteer`といったツールがこの用途に使われており、  
人の手では追いきれない大量のテストを効率よく実行できます。

### ③ 別の言語をJavaScriptに変換する

Node.jsは、開発者が書いたコードをブラウザが読める形に変換する「ツール」としても広く使われています。

- **TypeScriptのコンパイル** — 人間が書きやすいTypeScriptを、ブラウザが理解できるJavaScriptに変換する
- **ファイルのバンドル** — 開発のために分割した複数のファイルを1つにまとめる
- **コードの最適化** — 空白やコメントを取り除き、ブラウザが素早く読み込めるように圧縮する

実はこのドキュメントサイト自体もその一例です。  
このサイトは`Astro`という独自の書き方で作られており、JavaScriptとは異なる文法を使っています。  
それを`Vite`というNode.js上で動くツールが処理し、ブラウザが読めるHTMLやJavaScriptに変換しています。  
あなたが今見ているページも、そうして生成されたものです。

## npmとエコシステム

Node.jsには**npm**(Node Package Manager)というパッケージ管理ツールが付属しています。  
世界中の開発者が作ったツールやライブラリを、コマンド一つでインストールして使えるようになる仕組みです。

```bash
npm install パッケージ名
```

先ほど例に挙げたPlaywright、TypeScriptのコンパイラ、ViteやAstroも、  
すべてnpmを通じてインストールして使います。

Node.jsを学ぶことは、こうした開発ツールの使い方を理解することにもつながります。