Node.jsはJavaScript向けのサーバサイド開発用の実行環境です。2011年にリリースされ、
サーバーサイドのJavaScript誕生の瞬間として世間を騒がせました。その高い注目度と人気はます一方で度重なるアップデートを繰り返し今ではJavaScriptにおいて最も使用される開発用実行環境として親しまれております。この記事ではNode.jsを理解するために初心者でも分かる特徴・メリット、基礎知識などを簡単に解説していきます。
Node.jsとは2009年にライアン・ダール氏によって作成されたJavaScript向けのサーバサイド開発用の実行環境です。JavaScriptを用いてサーバサイド開発を行う際の代表的な開発用実行環境として人気を集めております。JavaScriptは元々フロントエンドの開発に用いられるために誕生しました。それがNode.jsの登場によってPHPやRubyのようにJavaScriptをサーバーサイドの開発に用いれるようになりました。
Node.jsを活用することによって他のサーバーサイド言語では実現できなかったアクセスされたURLを識別し、URLごとにユニークな要素を表示させるなど、データベースで行う作業も合わせて実装出来るようになりました。他にもNode.jsは特徴として『リアルタイム通信』『シングルスレッド』『ノンブロッキングI/O方式』などが挙げられます。Node.jsはRubyの『Event Machine』や Pythonの『Twisted』のシステムに影響を受けて、同様の設計で開発されました。
JavaScriptのメリット・デメリット、基礎知識などを解説している記事はこちら>>
Node.jsの読み方は『ノードジェーエス』です。Node.jsの名前の由来については生みの親であるライアン・ダール氏が登壇した基調講演にて「グラフ理論のノードが由来。今はまだNode.jsをノードとしたノードは少ないけど,これからそれらがどんどん多くなるのを期待している」と打ち明けているようです。
Node.jsはライアン・ダール氏によって2009年に開発が始められました。約2年間の開発期間を経て2011年に待望の初期バージョンがリリースされます。これがJavaScriptの歴史にも刻まれる『サーバーサイドのJavaScript誕生』といわれる瞬間となります。2012年に開発者であるライアン・ダール氏はカルフォルニアに拠点を構える『Joyent社』に入社します。
これと同時に同社がNode.jsの開発支援をすることになりました。2014年になるとNode.jsの開発が停滞したことがキッカケとなり、一部の推進者によって新団体『Node Forward』を設立されます。2016年になると韓国の最大手コンピューター企業である『サムスン電子株式会社』がJoyent社を買収します。Node.jsは以下の表の通り、数々のバージョンアップを繰り返し、今も尚、改良と成長を続ける開発環境として親しまれております。
年代 | バージョン | 備考 |
2009年 | Node.js | 開発着手 |
2011年 | Node.js 0.1.14 | 初期バージョンリリース |
2015年1月 | Node.js 1.0 | Node.jsのfork版 |
2015年5月 | Node.js 2.0 | V8 4.2へ更新 |
2015年8月 | Node.js 3.0 | io.jsプロジェクトからリリースされる最後のバージョン |
2015年9月 | Node.js 4.0 | Node.jsとio.jsの最初の統合版 |
2015年10月 | Node.js 5.0 | 「buffer」からrawとrawsのエンコーディングタイプが削除 |
2016年4月 | Node.js 6.0 | ES2015 |
2016年10月 | Node.js 7.0 | ECMAScript 6に98%対応 |
2017年5月 | Node.js 8.0 | V8 5.8へ更新 |
2017年10月 | Node.js 9.0 | |
2018年4月 | Node.js 10.0 | Node.js API(N-API)が正式サポートとなる |
2018年10月 | Node.js 11.0 | V8 7.0へ更新 |
2019年4月 | Node.js 12.0 | ECMAScript 6のModule機能が実験的に実装 |
2019年10月 | Node.js 13.0 | AsyncLocalStorageの追加 |
2020年4月 | Node.js 14.0 | V8 8.1へ更新 |
Node.jsの特徴・メリットを見ていきましょう。
Node.jsは『リアルタイム通信』の実装が可能という特徴があります。「Socket.io」というライブラリを活用することによってブラウザ・モバイルデバイスなど全ての環境でリアルタイム通信を可能とすることが可能です。
Node.jsは『シングルスレッド』を採用しているという特徴があります。シングルスレッドとはプログラム処理の流れが一本のみでの状態であることを表します。対の意味を持つ言葉に『マルチスレッド』というものがあります。シングルスレッドであることによって設計がシンプルに構築しやすいというメリットがあります。
Node.jsは『ノンブロッキングI/O方式』を採用しているという特徴があります。ノンブロッキングI/O方式とはコンピュータ内部のCPUと周辺装置のデータ入出力(I/O)において、データの送受信の完了を待たずに他の処理を開始することです。これにより軽量で様々なデバイスにまたがるリアルタイムアプリケーションに適した開発を実現することが出来ます。
Node.jsで開発された代表的なサービスを見ていきましょう。
AbemaTVはサイバーエージェント社が手掛ける国内最大の無料インターネットテレビ局です。こちらのAbemaTVは開発環境にNode.jsを採用しております。用途としては主にアプリケーションサーバーと組み合せて開発されているようです。
AbemaTVの公式サイトはこちら>>
タップルはサイバーエージェントグループが手掛ける国内最大級のマッチングアプリです。こちらのタップルでも開発環境にNode.jsを採用しております。用途としては主にWebサーバーとアプリケーションサーバーに組み合せて開発されているようです。
タップルの公式サイトはこちら>>
LinkedInはLinkedIn社が手掛ける世界最大級のビジネス特化型SNSです。こちらのサービスのモバイル版にてNode.jsが採用しております。モバイル版の実行速度を高めるためにNode.jsを使用していると言われております。
LinkedInの公式サイトはこちら>>
Node.jsを理解するために初心者でも分かる特徴・メリット、基礎知識などを簡単に解説させていただきました。Node.jsを一言で表すと『JavaScript向けのサーバサイド開発用の実行環境』です。Node.jsには特徴として『リアルタイム通信』『シングルスレッド』『ノンブロッキングI/O方式』が挙げられます。2011年のリリース後、度重なるアップデートを重ねて2020年時点でバージョン14を迎えております。Node.jsについてこの記事にかかれてい最低限の内容は理解しておくようにしましょう。