【のーどじぇいえす】

Node.js とは?

最終更新:
💡 JavaScriptをブラウザの外で走らせる実行環境

JavaScriptをブラウザの外(サーバーやPC上)で動かすための実行環境。フロントエンドとバックエンドを同じ言語で書けるようになる。

📌 このページのポイント
待つ処理と、JavaScriptの実行を分ける JavaScriptの実行 イベント ループ コールバックは 順に実行 非同期I/O OS ネットワーク ワーカー プール ファイル等 依頼 完了通知 待つ間に、別の処理を進められる 長い計算はイベントループを止め得る
非同期I/Oを依頼し、完了後のコールバックを実行する概念図です。ネットワークI/OにはOSの仕組みを、非同期ファイルI/Oなどにはワーカープールを使います。実際の処理順や構成はAPIに依存します。
ひよこ ひよこ
Node.jsって何をするものなの?
ペンギン先生 ペンギン先生
JavaScriptをブラウザの外で実行するための環境だよ。サーバーや自分のPCで、ファイルを扱う処理やWebサーバー、コマンドラインのツールなどを作れるんだ。
ひよこ ひよこ
サーバーで動くと何がうれしいの?
ペンギン先生 ペンギン先生
ブラウザ側もサーバー側もJavaScriptで書けるよ。ただし、同じ言語でも使えるAPIは環境によって違う。画面を扱うブラウザの機能と、Node.jsのファイルやネットワークの機能を使い分けるんだ。
ひよこ ひよこ
npmってよく聞くけど何?
ペンギン先生 ペンギン先生
パッケージを導入し、依存関係やバージョンを管理するツールだよ。npm install reactのようなコマンドで必要なパッケージを追加できる。package.jsonに登録したビルドなどのタスクをnpm runで実行する使い方もあるんだ。
ひよこ ひよこ
ペンギン先生 ペンギン先生
処理の完了などに応じて、JavaScriptのコールバックを実行する仕組みだよ。非同期の読み書きを待つ間に別の処理を進められる。一つのイベントループで実行するコールバックは順に動くけれど、Node.js全体にスレッドが一本しかないわけではないんだ。
ひよこ ひよこ
重い計算も、非同期にすれば速くなる?
ペンギン先生 ペンギン先生
長い計算を同じイベントループで実行すると、他のコールバックも待たされるよ。asyncと書くだけで計算が別の場所へ移るわけではない。時間のかかる処理をどう分けるか考える必要があるんだ。
もっと詳しく知りたい人へ

非同期I/Oは、どこで処理される?

ネットワークI/OにはOSの非同期の仕組みを使い、非同期のファイルI/Oなどにはlibuvのワーカープールを使います。全てのI/Oが同じ場所で動くわけではありません。処理の完了後、JavaScriptのコールバックはイベントループで実行されます。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Node.js」って出てきたら「JavaScriptをサーバーや自分のPCで動かすための環境」と思えばだいたいOK!
📖 おまけ:英語の意味
「Node.js」 = JavaScript実行環境の名前
💬 ブラウザの外でV8エンジンを使ってJavaScriptを実行する環境だよ。「実行環境」と、そこで使う言語やライブラリを区別すると分かりやすいんだ。

参考資料

← 用語集にもどる