Node.js とは?

Node.js

Node.js最新情報

NRIのOpenStandiaが提供するNode.js最新情報

Node.jsの保守サポートサービスの内容はこちら Node.jsの導入については、こちらのフォームからお問い合わせ下さい OSS全般の事例紹介はこちら

Node.js バージョンアップ情報

すべてを見る

更新日:2022-04-15

Node.jsの概要

Node.js(ノードジェイエス)は、Ryan Dahl(ライアン・ダール)氏によって開発され、2009年に公開されたサーバサイドJavaScript実行環境です。
Googleが提供するV8 JavaScriptエンジン上で動作し、ApacheのようなWebサーバ環境やTomcatのようなWebアプリケーション環境をJavaScriptで実現することができます。V8は自動車のV型8気筒エンジンから取られており、その名の通り高速で高性能なJavaScriptエンジンです。
Node.jsを利用する開発者は全世界で1,100万人を超え、モジュール開発も盛んに行われており、100万を超えるパッケージが無料で公開されています(※1)。

Node.jsでは、従来のサーバ関連技術(Apacheなど)で問題となっていた接続台数増加に伴う性能劣化問題(※2)を解決するために、シングルスレッド、イベントループ、ノンブロッキングI/Oモデルといった技術を採用しています。
このため、Node.jsでは同時接続台数が増えた場合においても高速な処理性能を維持することが可能です。 更に、クライアントサイド・サーバサイドの開発においてJavaScriptを共通して利用できるため、効率的に開発を進めることも可能です。
また、2014年付近からは、MEANスタックやMERNスタック(※3)の一要素としてNode.jsが取り上げられ、技術動向の調査を目的としたウェブサイト(※4)においても"ADOPT"(導入を推奨)と評価されるなど、Node.jsが技術的に優れていることを示す評価がなされました。

近年では、Netflix、PayPal、LinkedIn、Walmart、Uber、eBay、NASAといった大規模なサイトでも採用されるなどの広がりを見せています。

Node.jsは、LTS版(Long-term Support)である偶数(12.x、14.xなど)バージョンを使用することが推奨されています。

※1 npmコマンドを使用することで、世界最大のソフトウェアレジストリであるhttp://www.npmjs.com/よりモジュールを取得することが可能です。
※2 C10K問題と呼ばれています。http://www.kegel.com/c10k.html
※3  MongoDB(データベース)、Express(Webアプリケーションフレームワーク)、Angular(クライアントサイドMVCフレームワーク)、Node.js(Webサーバ)からなるウェブアプリケーション構築のためのソフトウェア群。頭文字を取ってMEANと呼ばれています。http://meanjs.org/
また、AngularでなくReact.jsを用いた場合は、こちらも頭文字をとってMERNと呼ばれています。
※4 https://www.thoughtworks.com/radar/platforms/node-js

TOPに戻る

Node.jsの機能および特徴

Node.jsは以下の1、2の特徴より、同時接続台数が増えた場合においても高速な処理性能を実現することができます。

1.シングルスレッド+イベントループ

Node.jsでは、複数のクライアントとのやり取りをシングルスレッド+イベントループの形式で行います。(JavaScript環境をベースとしているため)
シングルスレッド+イベントループの処理形式では、マルチスレッドの処理形式と比較し、以下の2点のメリットがあります。

  • スレッド単位で消費されるメモリ使用量が少ない(クライアントが増える度にスレッドが増えることがないため、スレッドに対して使用されるメモリ使用量は一定となる)
  • スレッド切替えに伴うオーバーヘッドが少ない

但し、イベントループ形式では、データベース接続などの時間がかかるI/O処理が発生した場合に処理結果が返るまで待機し続けるため、その間別の処理(プログラム実行、リクエスト応答など)が行われなくなる問題があります(ブロッキング)。

2.ノンブロッキングI/O

「1.シングルスレッド+イベントループ」で挙げたブロッキングの問題を解決するのが、ノンブロッキングI/Oとなります。
ノンブロッキングI/Oを適用したイベントループ形式では、時間のかかる処理を非同期に実行させ、スレッド自体もブロックさせないため、その間に別の処理を行うことが可能になります。
例えば、ノンブロッキングI/Oでは、データベースに問い合わせを行った際に、問い合わせ結果を待たずにリクエスト応答などの別の処理を行うことができます。

その他の特徴

その他にも以下の特徴があります。

  •  npmによる高速かつ堅牢で一貫性のあるパッケージ管理
  •  サーバサイド、クライアントサイドで処理の共通化ができる
  •  多くの開発者が利用しているJavaScriptで実装できる
  •  アクティブな開発コミュニティ
  •  JavaScriptを高速に実行できる「V8」エンジンを利用

TOPに戻る

Node.jsのユースケース

Node.jsはリアルタイムで複数人が使用するサーバでもパフォーマンスが落ちることが少ないため、主にWebサーバの構築で利用されます。

  • チャットサーバ
  • Gameサーバの一部機能
  • Webアプリ
  • スマホアプリ

TOPに戻る

Node.jsの動作環境

  • Windows
  • MacOS
  • Linux
  • SmartOS
  • Docker

TOPに戻る

Node.jsと同類のソフトウェア

Node.jsの他にも、Rhino、RingoJS、Jaxerなどのサーバーサイドスクリプトの実行環境が存在します。

TOPに戻る

Node.jsのライセンス

Node.jsのライセンスは、MITライセンスです。
MITライセンスは、X Window System (X11)などのソフトウェアに適用されていることから、X11ライセンス、またはXライセンスとも表記されます。
MITライセンスは、数あるソフトウェ アライセンスの中で最も制約が少なく、ソースコードの無償の使用のほか、改変、再配布することも認められています。

TOPに戻る

Node.jsのサポート

現在、Node.jsのサポート提供は行っておりません。

TOPに戻る

関連OSS

TOPに戻る

Node.jsのダウンロード

Node.jsのダウンロードページ

TOPに戻る

OpenStandiaに関する
資料請求・お問い合わせはこちら

  • 資料請求
  • お問い合わせ

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

  • OpenStandiaサポート対象オープンソース|50種類以上のOSSのサポートをご提供します。
  • 人気midPoint
  • 人気Keycloak
  • 注目MongoDB
  • ForgeRock AM(OpenAM)
  • ForgeRock IDM(OpenIDM)
  • MongoDB
  • Postfix
  • Apache HTTP Server
  • ZABBIX
  • PostgreSQL
  • Apache Struts
  • Apache Kafka
  • Apache Hadoop
  • Apache Spark
  • Spring Framework
  • Apache Tomcat
  • Solr
  • iBATIS
  • DRBD
  • MySQL
  • JBoss
  • Ruby on Rails
  • Jaspersoft
  • OpenLDAP
  • Apache log4j
  • Apache Subversion
  • ForgeRock DS(OpenDJ)
  • Pacemaker
  • Samba
  • Red Hat Enterprise Linux
  • Nginx
  • BIND
  • Dovecot
  • Pentaho
  • sendmail
  • Courier-IMAP
  • ForgeRock DS(OpenDJ)
  • Heartbeat
  • Hibernate
  • Hinemos
  • MyBatis
  • MySQL Cluster
  • Apache Axis2
  • Squid
  • OpenSSO