Movatterモバイル変換


[0]ホーム

URL:


コンテンツにスキップ
Wikipedia
検索

Node.js

出典: フリー百科事典『ウィキペディア(Wikipedia)』
Node.js
Node.js
作者ライアン・ダール
開発元Node.js Developers
初版2009年 (16年前) (2009)
最新版23.8.0[1] ウィキデータを編集 -2025年2月13日 (31日前) [±]
リポジトリウィキデータを編集
プログラミング
言語
C++,JavaScript
対応OSmacOS,Linux,Solaris,FreeBSD,OpenBSD,Windows,webOS
プラットフォームx86,x64,ARM,Power,z/Architecture
種別イベント駆動型
ライセンスMIT License
公式サイトnodejs.org
テンプレートを表示

Node.js(ノード・ジェイエス) はV8 JavaScriptエンジン上に構築されたJavaScript実行環境の1つである[2]イベント化された入出力を扱うサーバサイドJavaScript環境であり、Webサーバなどのスケーラブルネットワークプログラムの記述を意図している[3]ライアン・ダールによって2009年に作成され、ダールを雇用しているJoyentの支援により成長している[4][5]

概要

[編集]

V8 JavaScriptエンジンで動作するが、ChakraCoreバージョンやMozillaによるSpiderMonkey移植のプロジェクトも存在する。

Node.jsはPythonTwistedPerlPerl Object Environment英語版C言語libevent英語版RubyEventMachine英語版と同様の目的を持つ。ほとんどのJavaScriptとは異なり、ウェブブラウザの中で実行されるのではなく、むしろサーバサイドJavaScriptの一種である。Node.jsはいくつかのCommonJS仕様を実装している[6]。Node.jsは対話的なテスト用にREPL (Read-eval-print loop) 環境を含んでいる。

Node.jsを用いた構成としてはMEAN等が提唱されている。

[編集]

Node.jsによるHTTPサーバ版のHello world:

consthttp=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サーバ:

constnet=require('net');constserver=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.jsEmber.js英語版Matador英語版のようなフレームワークを用いて開発を行うことが多い。

表明

[編集]

Node.jsはコアモジュールassertにより表明(assertion)に対応している。表明違反時にはassert.AssertionErrorインスタンスがスローされる[9]

constassert=require('assert').strict;assert.deepEqual(1,2);// Thrown:// AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal://// 1 !== 2

ECMAScript modules

[編集]

Node.jsは ECMAScript modules (ES module) に対応しており[10]、以下のいずれかを満たすものをES moduleとしてロードする[11]

  • 拡張子が.mjs であるファイル
  • 拡張子が.js かつ最近傍の親package.json"type":"module" が指定されたファイル
  • --input-type=module フラグと共に引数として渡されたモジュール文字列

リリース

[編集]

Node.jsは長期サポート (LTS) リリースモデルを採用している。

各メジャーバージョンはPendingCurrent → (Active LTSMaintenance LTS →)End of Life のリリース状態を経る。Currentリリースは6ヶ月間続き、奇数バージョンはその後Maintenance LTSのみを経てサポートが終了し、偶数バージョンはActive LTSを経てMaintenance LTSへ移行する。プロダクションアプリケーションはActive LTS あるいはMaintenance LTS のいずれかのみを利用しなければならない[12]

ReleaseStatusCode nameRelease dateActive LTS startMaintenance startMaintenance end
サポート終了:v0.10.xサポート終了:End-of-Life2013-03-11-2015-10-012016-10-31
サポート終了:v0.12.xサポート終了:End-of-Life2015-02-06-2016-04-012016-12-31
サポート終了:4.xサポート終了:End-of-LifeArgon2015-09-082015-10-012017-04-012018-04-30
サポート終了:5.xサポート終了:End-of-Life2015-10-29N/A2016-06-30
サポート終了:6.xサポート終了:End-of-LifeBoron2016-04-262016-10-182018-04-302019-04-30
サポート終了:7.xサポート終了:End-of-Life2016-10-25N/A2017-06-30
サポート終了:8.xサポート終了:End-of-LifeCarbon2017-05-302017-10-312019-01-01[13]2019-12-31
サポート終了:9.xサポート終了:End-of-Life2017-10-01N/A2018-06-30
サポート終了:10.xサポート終了:End-of-LifeDubnium2018-04-242018-10-302020-05-192021-04-01
サポート終了:11.xサポート終了:End-of-Life2018-10-23N/A2019-05-012019-06-01
サポート終了:12.xサポート終了:End-of-LifeErbium2019-04-232019-10-212020-11-302022-04-30
サポート終了:13.xサポート終了:End-of-Life2019-10-22N/A2020-04-012020-06-01
サポート終了:14.xサポート終了:End-of-LifeFermium2020-04-212020-10-272021-10-192023-04-30
サポート終了:15.xサポート終了:End-of-Life2020-10-20N/A2021-04-012021-06-01
サポート終了:16.xサポート終了:End-of-LifeGallium2021-04-202021-10-262022-10-182023-09-11[14]
サポート終了:17.xサポート終了:End-of-Life2021-10-19N/A2022-04-012022-06-01
サポート中:18.xサポート中:MaintenanceHydrogen2022-04-192022-10-252023-10-182025-04-30
サポート終了:19.xサポート終了:End-of-Life2022-10-18N/A2023-04-012023-06-01
サポート中:20.xサポート中:Active LTSIron2023-04-182023-10-242024-10-222026-04-30
現行バージョン:21.x現行バージョン:Current2023-10-17N/A2024-04-012024-06-01
将来のリリース:22.x将来のリリース:Pending2024-04-232024-10-292025-10-212027-04-30
将来のリリース:23.x将来のリリース:Pending2024-10-15N/A2025-04-012025-06-01
将来のリリース:24.x将来のリリース:Pending2025-04-222025-10-282026-10-202028-04-30
凡例
サポート終了
サポート中
現行バージョン
最新プレビュー版
将来のリリース

  

コミュニティ

[編集]

主に2つのメーリングリストnodejsnodejs-dev 、そしてfreenode上のIRC チャンネル #node.js を中心とするとても活発な開発者コミュニティが存在する。コミュニティはNode.jsにフォーカスした開発者会議であるNodeConfに集結する[15]

Windows版

[編集]

0.5.1より、Windowsネイティブ版バイナリをリリースをした[16]。Windowsネイティブ版リリースに関してはマイクロソフトの支援が行われた。Windows向けの非同期I/O環境(Input/output completion port英語版、以下IOCP)に対応するため、libuv[17]を作成することにより抽象化を進めた。結果としてlibev、libeioが使えるUnix系プラットフォームとIOCPを利用するWindowsプラットフォーム向けのリリースが可能になった。

クライアント1万台問題

[編集]

非同期処理のNode.jsではクライアント1万台問題は起きない[18]

Node.jsでこの問題を解決した技術の中核は、シングルスレッドにおける非同期処理を容易に実装可能にしたイベント駆動型プログラミング環境である。

Docker Image

[編集]

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 が公式から提供されている。

脚注・出典

[編集]
  1. ^"Release 23.8.0"; 閲覧日: 2025年2月25日; 出版日: 2025年2月13日.
  2. ^Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.Node.js
  3. ^http://www.readwriteweb.com/hack/2011/01/wait-whats-nodejs-good-for-aga.php
  4. ^http://mashable.com/2011/03/10/node-js/
  5. ^Alex Handy (2011年6月24日). “Node.js pushes JavaScript to the server-side”. SDTimes. 2011年6月24日閲覧。
  6. ^http://wiki.commonjs.org/wiki/Implementations/node.js
  7. ^CommonJS Implementations”. 2011年5月15日閲覧。
  8. ^Ryswyck, Jan. “Taking Baby Steps with Node.js – CommonJS and Creating Custom Modules”. 2011年5月15日閲覧。
  9. ^All errors thrown by theassert module will be instances of theAssertionError class.Node.js
  10. ^"Node.js fully supports ECMAScript modules"Modules: ECMAScript modules. Node.js v16.19.1 documentation. 2023-02-19閲覧.
  11. ^"Node.js will treat the following as ES modules ... Files with an.mjs extension ... Files with a.js extension when the nearest parentpackage.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閲覧.
  12. ^Production applications should only useActive LTS orMaintenance LTS releases.Node.js
  13. ^Node 8 reschedule”. 2019年1月22日閲覧。
  14. ^Bringing forward the End-of-Life Date for Node.js 16”. 2023年2月15日閲覧。
  15. ^http://www.readwriteweb.com/hack/2011/04/nodeconf-schedule-announced.php
  16. ^http://blog.nodejs.org/2011/07/14/node-v0-5-1/
  17. ^https://github.com/joyent/libuv
  18. ^福田崇男 (2012年7月31日). “スタバ方式で「C10K問題」を解消”. 日経コンピュータ. 日経BP社. 2017年2月20日閲覧。
  19. ^The official Node.js docker image, made with love by the node community.[1]
  20. ^All of the images contain pre-installed versions ofnode,npm, andyarn.[2]
  21. ^This is the defacto image.[3]
  22. ^This tag is based off ofbuildpack-deps.[4]
  23. ^This image is based on the popular Alpine Linux project, available in thealpine official image.[5]
  24. ^This variant is highly recommended when final image size being as small as possible is desired.[6]
  25. ^This image does not contain the common packages contained in the default tag and only contains the minimal packages needed to runnode.[7]
  26. ^Unless you are working in an environment whereonly the Node.js image will be deployed and you have space constraints, we highly recommend using the default image of this repository.[8]

関連項目

[編集]
ウィキメディア・コモンズには、Node.jsに関連するカテゴリがあります。

外部リンク

[編集]
概念
エンジン
コンパイラ
デバッガ
エディタ
サーバーサイド
フレームワーク
ライブラリ
ユニットテスト
Docジェネレータ
コード解析
パッケージ管理
アプリケーション
バンドラー
関連技術
人物
プラットフォーム
フレームワーク
ライブラリ
言語
ホスト
全般
国立図書館
https://ja.wikipedia.org/w/index.php?title=Node.js&oldid=103778680」から取得
カテゴリ:
隠しカテゴリ:

[8]ページ先頭

©2009-2025 Movatter.jp