出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/12/11 00:48 UTC 版)
| |
|
| 作者 | ライアン・ダール |
|---|---|
| 開発元 | OpenJS財団 |
| 初版 | 2009年 |
| 最新版 | |
| リポジトリ | |
| プログラミング 言語 |
C++, JavaScript |
| 対応OS | macOS, Linux, Solaris, FreeBSD, OpenBSD, Windows, webOS |
| プラットフォーム | x86, x64, ARM, Power, z/Architecture |
| 種別 | イベント駆動型 |
| ライセンス | MIT License |
| 公式サイト | nodejs |
Node.js(ノード・ジェイエス) はV8 JavaScriptエンジン上に構築されたJavaScript実行環境の1つである[2]。イベント化された入出力を扱うサーバサイドJavaScript環境であり、Webサーバなどのスケーラブルなネットワークプログラムの記述を意図している[3]。ライアン・ダールによって2009年に作成され、ダールを雇用しているJoyentの支援により成長している[4] [5]。
V8 JavaScriptエンジンで動作するが、ChakraCoreバージョンやMozillaによるSpiderMonkey移植のプロジェクトも存在する。
Node.jsはPythonのTwisted、PerlのPerl Object Environment、C言語のlibevent、RubyのEventMachineと同様の目的を持つ。 ほとんどのJavaScriptとは異なり、ウェブブラウザの中で実行されるのではなく、むしろサーバサイドJavaScriptの一種である。 Node.jsはいくつかのCommonJS仕様を実装している[6]。 Node.jsは対話的なテスト用にREPL (Read-eval-print loop) 環境を含んでいる。
Node.jsを用いた構成としてはMEAN等が提唱されている。
Node.jsによるHTTPサーバ版のHello world:
const http = require('http');
http.createServer(function (request, response) {
response.writeHead(200, {'Content-Type': 'text/plain'});
response.end('Hello World\n');
}).listen(3000);
console.log('Server running at http://127.0.0.1:3000/');
3000番ポートで接続を待ち受けて、受け取ったデータをエコーバックする単純なTCPサーバ:
const net = require('net');
const server = net.createServer(function (stream) {
stream.write('hello\r\n');
stream.on('data', function (data) {
stream.write(data);
});
stream.on('end', function () {
stream.end('goodbye\r\n');
});
});
server.listen(3000, 'localhost');
Node.jsは、バイナリにコンパイルされた多くの「コア・モジュール」とともに提供される。それはネットワークの非同期ラッパーであるnetモジュールの他、パスやファイルシステム、バッファ、タイマー、より一般的なストリームなどの基本的なモジュールを含む。サードパーティー製のモジュールを使用することも可能である。それはプリコンパイルされた ".node" アドオン、または、プレーンなJavaScriptファイルのどちらの形式でもよい。JavaScriptモジュールはCommonJSモジュール仕様[7]に従って実装され、モジュールが実装する関数や変数へのアクセスにはexports変数が使われる[8]。
サードパーティーのモジュールはNode.jsを拡張または抽象レベルを提供することで、ウェブアプリケーションで使われる様々なミドルウェア実装することができる。たとえばポピュラーなフレームワークとしてconnectおよびExpress.jsがある。モジュールは単なるファイルとしてインストールすることもできるが、通常はnpmを使ってインストールされる。それは依存性の扱いも含めてモジュールの構築、インストール、更新を助けてくれる。さらに、モジュールはNodeのデフォルトであるモジュール用ディレクトリにインストールしなくても、相対的なパス名を要求することで見つけられる。Node.js wikiに利用可能なサードパーティー製のモジュール一覧がある。
Node.jsを用いたWebアプリケーションでは、Express.jsやEmber.js、Matadorのようなフレームワークを用いて開発を行うことが多い。
Node.jsはコアモジュール assertにより表明(assertion)に対応している。表明違反時にはassert.AssertionErrorインスタンスがスローされる[9]。
const assert = require('assert').strict;
assert.deepEqual(1, 2);
// Thrown:
// AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal:
//
// 1 !== 2
Node.jsは ECMAScript modules (ES module) に対応しており[10]、以下のいずれかを満たすものをES moduleとしてロードする[11]。
.mjs であるファイル.js かつ最近傍の親 package.json で "type":"module" が指定されたファイル--input-type=module フラグと共に引数として渡されたモジュール文字列Node.jsは長期サポート (LTS) リリースモデルを採用している。
各メジャーバージョンはPending → Current → (Active LTS → Maintenance LTS →) End of Life のリリース状態を経る。Currentリリースは6ヶ月間続き、奇数バージョンはその後Maintenance LTSのみを経てサポートが終了し、偶数バージョンはActive LTSを経てMaintenance LTSへ移行する。プロダクションアプリケーションは Active LTS あるいは Maintenance LTS のいずれかのみを利用しなければならない[12]。
| Release | Status | Code name | Release date | Active LTS start | Maintenance start | Maintenance end |
|---|---|---|---|---|---|---|
| v0.10.x | End-of-Life | 2013-03-11 | - | 2015-10-01 | 2016-10-31 | |
| v0.12.x | End-of-Life | 2015-02-06 | - | 2016-04-01 | 2016-12-31 | |
| 4.x | End-of-Life | Argon | 2015-09-08 | 2015-10-01 | 2017-04-01 | 2018-04-30 |
| 5.x | End-of-Life | 2015-10-29 | N/A | 2016-06-30 | ||
| 6.x | End-of-Life | Boron | 2016-04-26 | 2016-10-18 | 2018-04-30 | 2019-04-30 |
| 7.x | End-of-Life | 2016-10-25 | N/A | 2017-06-30 | ||
| 8.x | End-of-Life | Carbon | 2017-05-30 | 2017-10-31 | 2019-01-01[13] | 2019-12-31 |
| 9.x | End-of-Life | 2017-10-01 | N/A | 2018-06-30 | ||
| 10.x | End-of-Life | Dubnium | 2018-04-24 | 2018-10-30 | 2020-05-19 | 2021-04-01 |
| 11.x | End-of-Life | 2018-10-23 | N/A | 2019-05-01 | 2019-06-01 | |
| 12.x | End-of-Life | Erbium | 2019-04-23 | 2019-10-21 | 2020-11-30 | 2022-04-30 |
| 13.x | End-of-Life | 2019-10-22 | N/A | 2020-04-01 | 2020-06-01 | |
| 14.x | End-of-Life | Fermium | 2020-04-21 | 2020-10-27 | 2021-10-19 | 2023-04-30 |
| 15.x | End-of-Life | 2020-10-20 | N/A | 2021-04-01 | 2021-06-01 | |
| 16.x | End-of-Life | Gallium | 2021-04-20 | 2021-10-26 | 2022-10-18 | 2023-09-11[14] |
| 17.x | End-of-Life | 2021-10-19 | N/A | 2022-04-01 | 2022-06-01 | |
| 18.x | End-of-Life | Hydrogen | 2022-04-19 | 2022-10-25 | 2023-10-18 | 2025-04-30 |
| 19.x | End-of-Life | 2022-10-18 | N/A | 2023-04-01 | 2023-06-01 | |
| 20.x | Maintenance | Iron | 2023-04-18 | 2023-10-24 | 2024-10-22 | 2026-04-30 |
| 21.x | End-of-Life | 2023-10-17 | N/A | 2024-04-01 | 2024-06-01 | |
| 22.x | Active LTS | Jod | 2024-04-24 | 2024-10-29 | 2025-10-21 | 2027-04-30 |
| 23.x | End-of-Life | 2024-10-16 | N/A | 2025-04-01 | 2025-06-01 | |
| 24.x | Current | 2025-05-06 | 2025-10-28 | 2026-10-20 | 2028-04-30 | |
|
凡例
サポート終了
サポート中
現行バージョン
将来のリリース
|
||||||
主に2つのメーリングリスト nodejs と nodejs-dev 、そして freenode上の IRC チャンネル #node.js を中心とするとても活発な開発者コミュニティが存在する。コミュニティはNode.jsにフォーカスした開発者会議であるNodeConfに集結する[15]。
0.5.1より、Windowsネイティブ版バイナリをリリースをした[16]。Windowsネイティブ版リリースに関してはマイクロソフトの支援が行われた。Windows向けの非同期I/O環境(Input/output completion port、以下IOCP)に対応するため、libuv[17]を作成することにより抽象化を進めた。結果としてlibev、libeioが使えるUnix系プラットフォームとIOCPを利用するWindowsプラットフォーム向けのリリースが可能になった。
非同期処理のNode.jsではクライアント1万台問題は起きない[18]。
Node.jsでこの問題を解決した技術の中核は、シングルスレッドにおける非同期処理を容易に実装可能にしたイベント駆動型プログラミング環境である。
Node.js公式からDockerイメージが配布されている[19]。イメージは以下の3種類に大別され、全てのイメージでnode/npm/yarnがプリインストールされている[20]。
node:<version>: デファクトスタンダード[21]。Docker公式のbuildpack-depsを基に構築[22]node:alpine: Alpine Linuxベース[23]。イメージサイズを最小化したい際に推奨される[24]node:slim: Node.js動作に必要最低限のパッケージのみを含む[25]。サイズに制限がない限りデファクトイメージの利用を強く推奨[26]デフォルト以外の設定(例: npmアップグレード)を利用する手引き「Docker and Node.js Best Practices」や GetStarted が公式から提供されている。
assert module will be instances of the AssertionError class. Node.js .mjs extension ... Files with a .js extension when the nearest parent package.json file contains a top-level "type" field with a value of "module". ... as an argument ... with the flag --input-type=module." Modules: Packages. Node.js v16.19.1 documentation. 2023-02-19閲覧. node, npm, and yarn. [2] buildpack-deps. [4] alpine official image. [5] node. [7] 出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2018/03/07 09:25 UTC 版)
「RippleAPI」の記事における「Node.js」の解説
Node.js(ノードジェイエス)とは、「スケーラブルなネットワーク・プログラムを作成するための簡単な方法」を提供するために開発されたJavaScriptベースのWebサーバである。 RippleAPIはNode.jsをベースにしたアプリケーションである。
※この「Node.js」の解説は、「RippleAPI」の解説の一部です。
「Node.js」を含む「RippleAPI」の記事については、「RippleAPI」の概要を参照ください。