こんにちは、KiYOです。
システムエンジニア歴20年オーバー。製造現場に特化したシステム開発を主にやってます。
新しい物好きで色々なIT技術を勉強しては、仕事に使って行ってます。

今回はNode.jsについて紹介します。
Webサーバ上で動作するJavaScript実行エンジンのことをNode.jsと言います。正直よくわかってないので本やネットの情報を整理しつつ要点をギュギュっととまとめて行きていと思います。
- Node.jsの特徴
- Node.jsの歴史
- Node.jsの利用シーン
今回はこの本を参考に、私の独断と偏見で記事を書いています。
言語を5点中評価(JavaScriptと同じですね)
容易性 | 容易に言語習得できるか? | 4.5 |
将来性 | 将来性があるか? | 5 |
普及度 | 普及しているか? | 5 |
保守性 | 保守性が高いか? | 3 |
中毒性 | ハマるか? | 4 |
21.5 |

Node.jsの特徴

JavaScript開発では欠かせない 高速実行環境
- Node.jsはJavaScriptの実行エンジン
- Node.jsはGoogle Chromeに採用されているJavaScriptエンジンのV8を利用
- ノンブロッキングI/Oとイベントループのモデルを採用(大量のアクセスに対応するWebアプリを作成しやすい)
- Node.jsのライブラリを手軽にインストールできるパッケージマネージャのnpmは広く利用されている
- Webサーバ以外にもローカルで開発ツールを動作させるのに使える

Node.jsの歴史

開発者 | Ryan Dahl(ライアン・ダール)、OpenJS Foundation |
誕生 | 2009年にV8エンジンを利用したNode.jsが誕生 |
公式サイト | https://nodejs.org/ |
分類 | 動的型付け、プロトタイプベースのオブジェクト指向 |
影響を受けた言語 | JavaScript |
影響を与えた言語 | Deno |
言語の歴史
2009年 | V8エンジンを利用したNode.jsが誕生 |
2012年 | プロジェクトから離れる |
2018年 | V8で構築されたJavaScript /TypeScript実行環境であるDenoを発表 |
- Node.jsが採用される大きな理由の一つとして、ノンブロッキングI/Oとイベントループの仕組みがある
- 大量のアクセスによる性能劣化、「クライアント1万台問題(c10k)」がNode.jsでは起こりません。
- Node.jsのライブラリの多くは、ノンブロッキングで命令が実装されている
- ノンブロッキングとは、実行に時間がかかる処理の完了まで待たず、次の処理を次々行い、処理が完了した時点で改めて完了時の処理を実行するというもの
- ブログラム中の「待ち」の時間を減らせる
- Node.jsのパッケージマネージャがnpm
- npmには様々なライブラリが登録されている
- Node.jsだけでなく、Webフロントエンドの開発にも役立ちます
- TypeScriptやWebpackといったツールもnpmから入手可能
- yarnと呼ばれるnpm代替ソフトウェアも注目されている
Node.jsの登場以前は、JavaScriptでサーバー側のWebアプリを開発するのは無謀だと思われていた。しかしNode.jsを使うと効率よく大量のアクセスに対して応答を返せることが証明され、現在では多くのWebアプリケーション(サーバサイド)が開発されています。
Node.jsは、性能の高さ・効率の良さに加えて、ブラウザ側のプログラムとサーバー側のプログラムの両方をJavaScriptで記述できることもメリットです。
多くのライブラリも公開されています。
Node.jsの利用シーン

主にWebアプリケーション作成に用いられ、ExpressというWebフレームワークが有名。Webブラウザ向けのJavaScriptのプログラムを整形したり、圧縮したりするためのツール(CLIツール)としても利用します。TypeScriptのコンパイラの実行にもNode.jsが用いられています。
また、豊富なライブラリを活かして、バッチ処理にも利用されています。
- JavaScriptはライブラリの開発が非常に活発
- パッケージリポジトリ(※)のnpmには日々、大量のパッケージ追加、ダウンロードが行われている
- 人気ライブラリのReactはnpmでの週間インストールが600万超
※パッケージリポジトリとはオープンソフトウェアのパッケージ(ライブラリ)が集まるような図書館みたいな場所
- Webフロントエンドの開発にも欠かせないものになりつつある
- Webフロントエンドの開発では単体テストやバンドルなどのツールにNode.jsが用いられる
- WebpackやBabel(仕様を先取りして実装するJavaScript⇨JavaScriptのトランスパイラ)、TypeScriptなどが有名
- Facebookが発表したYarnというパッケージマネージャも人気
- Yarnは高速性やセキュリティに注目
- npmと同じパッケージが利用でき、フロントエンド/Webサーバーどちらの開発にも使える
まとめ:サーバサイドはNode.js

今回はNode.jsについて解説しました。
Node.jsはJavaScriptをサーバサイドで動かせる言語です。JavaScriptの需要がここまで上がってたとは知りませんでした。
- サーバで動くJavaScriptとして唯一無二の存在
- ノンブロッキングI/Oとイベントループにより、大量アクセスによる性能劣化なし
- パッケージリポジトリのnpmが活発に利用
言語を覚えたとしてもそれを使うシーンが少なければ、意味がありません。
やりたいことを実現するために、Node.jsの使い方をマスタしましょう。
以上、KiYOでした!
今回参考にさせていただいた本はこちらです。今回紹介した言語やその他言語も紹介されているので大変勉強になりました。
まとめページで、他のプログラミングも紹介していますので、ご覧ください。

コメント