Node.js

Node.js
Node.js
作者 ライアン・ダール
開発元 Node.js Developers
初版 2009年 (15年前) (2009)
最新版
Maintenance LTS18.20.4 / 2024年7月8日 (2か月前) (2024-07-08) [1]
Maintenance21.7.3 / 2024年4月10日 (5か月前) (2024-04-10) [2]
LTS20.17.0 / 2024年8月21日 (41日前) (2024-08-21) [3]
Current22.9.0 / 2024年9月17日 (14日前) (2024-09-17) [4]
リポジトリ ウィキデータを編集
プログラミング
言語
C++, JavaScript
対応OS macOS, Linux, Solaris, FreeBSD, OpenBSD, Windows, webOS
プラットフォーム x86, x64, ARM, Power, z/Architecture
種別 イベント駆動型
ライセンス MIT License
公式サイト nodejs.org
テンプレートを表示

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

概要

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

Node.jsはPythonTwistedPerlPerl Object Environment英語版C言語libevent英語版RubyEventMachine英語版と同様の目的を持つ。 ほとんどのJavaScriptとは異なり、ウェブブラウザの中で実行されるのではなく、むしろサーバサイドJavaScriptの一種である。 Node.jsはいくつかのCommonJS仕様を実装している[9]。 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モジュール仕様[10]に従って実装され、モジュールが実装する関数や変数へのアクセスにはexports変数が使われる[11]

サードパーティーのモジュールはNode.jsを拡張または抽象レベルを提供することで、ウェブアプリケーションで使われる様々なミドルウェア実装することができる。たとえばポピュラーなフレームワークとしてconnectおよびExpress.jsがある。モジュールは単なるファイルとしてインストールすることもできるが、通常はnpmを使ってインストールされる。それは依存性の扱いも含めてモジュールの構築、インストール、更新を助けてくれる。さらに、モジュールはNodeのデフォルトであるモジュール用ディレクトリにインストールしなくても、相対的なパス名を要求することで見つけられる。Node.js wikiに利用可能なサードパーティー製のモジュール一覧がある。

Node.jsを用いたWebアプリケーションでは、Express.jsEmber.js英語版Matador英語版のようなフレームワークを用いて開発を行うことが多い。

表明

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

const assert = 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) に対応しており[13]、以下のいずれかを満たすものをES moduleとしてロードする[14]

  • 拡張子が .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 のいずれかのみを利用しなければならない[15]

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[16] 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[17]
サポート終了:17.x サポート終了:End-of-Life 2021-10-19 N/A 2022-04-01 2022-06-01
サポート中:18.x サポート中:Maintenance 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 サポート中:Active LTS Iron 2023-04-18 2023-10-24 2024-10-22 2026-04-30
現行バージョン:21.x 現行バージョン:Current 2023-10-17 N/A 2024-04-01 2024-06-01
将来のリリース:22.x 将来のリリース:Pending 2024-04-23 2024-10-29 2025-10-21 2027-04-30
将来のリリース:23.x 将来のリリース:Pending 2024-10-15 N/A 2025-04-01 2025-06-01
将来のリリース:24.x 将来のリリース:Pending 2025-04-22 2025-10-28 2026-10-20 2028-04-30
凡例
サポート終了
サポート中
現行バージョン
最新プレビュー版
将来のリリース

   

コミュニティ

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

Windows版

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

クライアント1万台問題

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

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

Docker Image

Node.js公式からDockerイメージが配布されている[22]。イメージは以下の3種類に大別され、全てのイメージでnode/npm/yarnがプリインストールされている[23]

  • node:<version>: デファクトスタンダード[24]。Docker公式のbuildpack-depsを基に構築[25]
  • node:alpine: Alpine Linuxベース[26]。イメージサイズを最小化したい際に推奨される[27]
  • node:slim: Node.js動作に必要最低限のパッケージのみを含む[28]。サイズに制限がない限りデファクトイメージの利用を強く推奨[29]

デフォルト以外の設定(例: npmアップグレード)を利用する手引き「Docker and Node.js Best Practices」や GetStarted が公式から提供されている。

脚注・出典

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

関連項目

外部リンク

Read other articles:

Saphir-class submarine of the French Navy Diamant, date unknown History France NameDiamant NamesakeDiamond OperatorFrench Navy BuilderArsenal de Toulon Laid down21 July 1930 Launched18 May 1933 Commissioned21 June 1934 FateScuttled at Toulon on 27 November 1942 to prevent her capture by German forces, then refloated by the Italians on 29 March 1943. Bombed and sunk at Toulon by Allied aircraft on 22 June 1944. General characteristics Class and typeSaphir-class submarine Displacement 761 long ton…

Salah satu bangunan di Kentwood, Michigan Kentwood adalah sebuah kota di Kent County di negara bagian Michigan, AS. Populasi adalah 54.304 pada sensus 2020. Kota ini berbatasan di barat laut dengan Grand Rapids dan merupakan munisipalitas terpadat ketiga di wilayah metropolitan Grand Rapids. Sejarah Kota ini tergabung pada tahun 1967 dari apa yang tersisa dari Paris Township untuk mencegah aneksasi tanah lebih lanjut dari kota terdekat Grand Rapids dan Wyoming. Kota itu dinamai Kent County, yang…

Questa voce sull'argomento contee dell'Illinois è solo un abbozzo. Contribuisci a migliorarla secondo le convenzioni di Wikipedia. Contea di Hamiltoncontea LocalizzazioneStato Stati Uniti Stato federato Illinois AmministrazioneCapoluogoMcLeansboro Data di istituzione1821 TerritorioCoordinatedel capoluogo38°04′48″N 88°32′24″W / 38.08°N 88.54°W38.08; -88.54 (Contea di Hamilton)Coordinate: 38°04′48″N 88°32′24″W / 38.08°N 88.54…

Artikel ini tidak memiliki referensi atau sumber tepercaya sehingga isinya tidak bisa dipastikan. Tolong bantu perbaiki artikel ini dengan menambahkan referensi yang layak. Tulisan tanpa sumber dapat dipertanyakan dan dihapus sewaktu-waktu.Cari sumber: Zhwe Kiril – berita · surat kabar · buku · cendekiawan · JSTOR Huruf Kiril Zhwe Alfabet KirilHuruf SlaviaАА́А̀А̂А̄ӒБВГҐДЂЃЕЕ́ÈЕ̂ЁЄЖЗЗ́ЅИИ́ЍИ̂ЙІЇЈКЛЉМНЊОŌ…

ام 198 M 198 الهاوتزر عيار 155 مم، M 198 النوع مدفع قذف ميدان متوسط مقطور بلد الأصل  الولايات المتحدة فترة الاستخدام 1979 إلى الوقت الحاضر تاريخ الصنع صمم 1968-1977 المصنع Rock Island Arsenal (US) الكمية المصنوعة 1600 + المواصفات الوزن 7163 كجم الطول 11 م العرض 2.794 م الارتفاع 2.9 م الطاقم 10 أفراد العيار 155 …

Закрыть гештальт Жанр драмеди Режиссёр Максим Пежемский Сценарист Дмитрий Лемешев В главных ролях Александр Ильин Денис Власенко Анна Зайкова Юлия Ауг Фёдор Лавров Анастасия Крылова Николай Шрайбер Павел Майков Глафира ТархановаДмитрий Лысенков Композитор Руслан Мура…

Protected area in Maricopa County, Arizona, US Hummingbird Springs WildernessIUCN category Ib (wilderness area)LocationMaricopa County, Arizona, USANearest cityTonopah, AZ–Aguila, AZCoordinates33°40′39″N 113°05′14″W / 33.67756°N 113.08736°W / 33.67756; -113.08736Area31,200 acres (12,626 ha)Established1990Governing bodyBureau of Land Management The Hummingbird Springs Wilderness is a 31,200-acre (12,626 ha) wilderness administered by the B…

Thin ornaments for a type of low brickwork vault Guastavino tile vaulting in the City Hall station of the New York City Subway Guastavino ceiling tiles on the south arcade of the Manhattan Municipal Building The Guastavino tile arch system is a version of Catalan vault introduced to the United States in 1885 by Spanish architect and builder Rafael Guastavino (1842–1908).[1] It was patented in the United States by Guastavino in 1892.[2] Description Guastavino vaulting is a t…

  「俄亥俄」重定向至此。关于其他用法,请见「俄亥俄 (消歧义)」。 俄亥俄州 美國联邦州State of Ohio 州旗州徽綽號:七葉果之州地图中高亮部分为俄亥俄州坐标:38°27'N-41°58'N, 80°32'W-84°49'W国家 美國加入聯邦1803年3月1日,在1953年8月7日追溯頒定(第17个加入联邦)首府哥倫布(及最大城市)政府 • 州长(英语:List of Governors of {{{Name}}}]]) • …

EastEnders characters introduced in 1991 EastEnders logo The following is a list of characters that first appeared in the BBC soap opera EastEnders in 1991, by order of first appearance. Eibhlin O'Donnell Eibhlin O'DonnellEastEnders characterPortrayed byMary ConlonFirst appearanceEpisode 62222 January 1991Last appearanceEpisode 69119 September 1991ClassificationFormer; recurringIn-universe informationOccupationTourist Board representativeSistersMaureen O'Donnell Eibhlin O'Donnell,…

 烏克蘭總理Прем'єр-міністр України烏克蘭國徽現任杰尼斯·什米加尔自2020年3月4日任命者烏克蘭總統任期總統任命首任維托爾德·福金设立1991年11月后继职位無网站www.kmu.gov.ua/control/en/(英文) 乌克兰 乌克兰政府与政治系列条目 宪法 政府 总统 弗拉基米尔·泽连斯基 總統辦公室 国家安全与国防事务委员会 总统代表(英语:Representatives of the President of Ukraine) 总理…

 烏克蘭總理Прем'єр-міністр України烏克蘭國徽現任杰尼斯·什米加尔自2020年3月4日任命者烏克蘭總統任期總統任命首任維托爾德·福金设立1991年11月后继职位無网站www.kmu.gov.ua/control/en/(英文) 乌克兰 乌克兰政府与政治系列条目 宪法 政府 总统 弗拉基米尔·泽连斯基 總統辦公室 国家安全与国防事务委员会 总统代表(英语:Representatives of the President of Ukraine) 总理…

  关于与「內閣總理大臣」標題相近或相同的条目页,請見「內閣總理大臣 (消歧義)」。 日本國內閣總理大臣內閣總理大臣紋章現任岸田文雄自2021年10月4日在任尊称總理、總理大臣、首相、阁下官邸總理大臣官邸提名者國會全體議員選出任命者天皇任期四年,無連任限制[註 1]設立法源日本國憲法先前职位太政大臣(太政官)首任伊藤博文设立1885年12月22日,​…

I AmEP của (G)I-dlePhát hành2 tháng 5 năm 2018 (2018-05-02)Thu âm2018Thể loạiK-poptropical househip hopR&BThời lượng21:12Ngôn ngữHàn QuốcHãng đĩaCube EntertainmentThứ tự album của (G)I-dle ''I Am''(2018) I Made(2019) Đĩa đơn từ I Am LatataPhát hành: 2 tháng 5 năm 2018 I Am là mini album đầu tay của nhóm nhạc nữ Hàn Quốc (G)I-dle. Album được phát hành kỹ thuật số vào ngày 2 tháng 5 nă…

Национальное аэрокосмическое агентство Азербайджана Штаб-квартира Баку, ул. С. Ахундова, AZ 1115 Локация  Азербайджан Тип организации Космическое агентство Руководители Директор: Натиг Джавадов Первый заместитель генерального директора Тофик Сулейманов Основание Основ…

Multi-server queueing model In queueing theory, a discipline within the mathematical theory of probability, the M/M/c queue (or Erlang–C model[1]: 495 ) is a multi-server queueing model.[2] In Kendall's notation it describes a system where arrivals form a single queue and are governed by a Poisson process, there are c servers, and job service times are exponentially distributed.[3] It is a generalisation of the M/M/1 queue which considers only a single s…

Dawenkou cultureGeographical rangeNorth ChinaPeriodNeolithic ChinaDatesc. 4300 – c. 2600 BCPreceded byBeixin cultureFollowed byLongshan cultureChinese nameChinese大汶口文化TranscriptionsStandard MandarinHanyu PinyinDàwènkǒu wénhuà The Dawenkou culture was a Chinese Neolithic culture primarily located in the eastern province of Shandong, but also appearing in Anhui, Henan and Jiangsu. The culture existed from 4300 to 2600 BC, and co-existed with the Yangshao culture. Turquoise, jade a…

American journalist (1858-1918) This article is about the American magazine editor. For the English radical journalist, see Benjamin Flower. Benjamin Orange FlowerBorn(1858-10-19)October 19, 1858Albion, Illinois, United StatesDiedDecember 24, 1918(1918-12-24) (aged 60)Boston, Massachusetts, United StatesOther namesB. O. FlowerAlma materKentucky UniversityOccupation(s)Journalist, authorKnown forMuckraking journalism, founder of The ArenaSpouseHattie CloudParent(s)Alfred Flower…

يفتقر محتوى هذه المقالة إلى الاستشهاد بمصادر. فضلاً، ساهم في تطوير هذه المقالة من خلال إضافة مصادر موثوق بها. أي معلومات غير موثقة يمكن التشكيك بها وإزالتها. (ديسمبر 2018) 35°02′28″N 36°04′58″E / 35.04114°N 36.08266°E / 35.04114; 36.08266 قلعة الكهفمعلومات عامةنوع المبنى قلعةالمكان القد…

وايتوريكي Waitoreke هو حيوان غير مؤكد الوجود (Cryptid) يشبه القضاعة أو القندس ويقال أنه يعيش في نيوزيلندا. ويوصف غالبا بأنه حيوان صغير يشبه القضاعة يعيش في الجزيرة الجنوبية من نيوزيلندا. هناك عدة فرضيات حول ماهية الحيوان، كأن يكون قضاعة أو قندس أو كائن زعنفي الأقدام. أصل الاسم لم يتم …