Node.js・React:Node.js とは
初めに
本記事では、Node.js がどのような特徴を持ち、なにができるのか、まとめます。
Index
Node.js とは
Node.js は、クロスプラットフォームに対応した JavaScript 実行環境であり、サーバーサイドのプログラムを実行するために使用されるオープンソースのプラットフォームです。通常、ブラウザ内で実行される JavaScript はクライアントサイドでのみ動作しますが、Node.jsを使用することで、サーバーサイドで JavaScript を実行できるようになります。
要するに、クライアントサイドとサーバーサイドの両方の処理を JavaScript で書くための実行環境だという認識でよいでしょう。
Node.js の特徴
非同期の I/O 処理
Node.js は非同期の I/O 処理に対応しています。I/Oとは、Input/Outputの略で「入出力」を意味しています。タスクが終わっていない状態でも、次のタスクを進められるため情報の処理がスムーズになります。
シングルスレッドによるメモリ消費の効率化
通常のWebサーバーは、マルチスレッドであり、リクエストごとに新しいスレッドを作成して処理します。しかし、スレッドの作成や管理にはコストがかかり、大量の同時接続を処理するには限界があります。
「C10K問題」がよく言われます。C10K とは、Client 10k(10 * 10^3 = 10000)すなわちクライアント10000台のことです。Apache HTTP Server などの Web サーバソフトウェアとクライアントの通信において、クライアントが約1万台に達すると、Web サーバーのハードウェア性能に余裕があるにもかかわらず、レスポンス性能が大きく下がることが問題になりました。
Node.js はシングルスレッドモデルを採用していますが、このスレッドは非同期 I/O 処理を得意とします。つまり、1つのスレッドが大量のリクエストを非同期に処理できるため、従来のマルチスレッドモデルよりも高い性能を発揮でき、C10K問題を回避することができます。
高速
Google V8 JavaScript エンジンを使用しています。従来の実行エンジンと違い、JavaScriptを即座にコンピュータが理解できる機械語に変換して処理を行うため非常に高速です。
npm(Node Package Manager)
npm(Node Package Manager)を通じてパッケージのインストールや管理を行います。npm は世界中の開発者が作成した数多くのパッケージを提供し、開発効率を向上させます。
Node.js ができること
Node.js はフレームワークが多く、様々なことができます。例えば、下記のようなことが可能です。
Webアプリケーション開発
Express のような Web アプリケーション・フレームワークを使って Web アプリケーションを作ることが最も定番の使い方です。
Socket.IO というリアルタイムでの双方向通信を可能にするライブラリを併用して、チャットアプリやゲームアプリを作成することが可能です。
socket.io
デスクトップアプリ開発
Electron というフレームワークを使って、デスクトップアプリケーションを作ることができます。JavaScript、HTML、CSS を使って Windows、macOS、Linux で動作するクロスプラットフォームアプリを作成できます。