0
1

More than 3 years have passed since last update.

Node.jsについて調べたことまとめ

Posted at

Node.jsとは

サーバーサイドのJavascript実行環境である。

PHP、Ruby、Python、Java等の言語と同様に、サーバー側で動作するJavaScript。

Google Chromeに搭載されたJSエンジンV8をサーバーで実行できるようにしたというイメージ。

V8の処理は、他のPHP/Perl/Ruby/Pythonなどのスクリプト言語の処理エンジンよりも速い。

Node.jsでできること

  • サーバーサイドアプリケーション

    • Webアプリ
    • Node.js + Express
  • クライアントサイドアプリケーション

    • Visual Studio Code
    • GitHub Decktop
    • Slack

などが利用例である。
Node.js + Electron

  • IoT
    • Node.js + Raspberry Pi

Node.jsの特徴

  • シングルスレッド

  • ノンブロッキングI/O(非同期処理)

  • イベントループ

シングルスレッド

プログラムの処理単位を表す用語。
一連の処理を一つずつ順番に行う。

他にマルチスレッドがある。
複数の処理を並行して行う。

ノンブロッキングI/O

シングルスレッドで複数の処理を捌く為の仕組みがノンブロッキングI/Oである。
データの送受信(I/O)を待たず(ノンブロック)並行して処理を行う。

マルチスレッドでも並行処理が可能だが、この場合リクエストの度にThreadという処理が発生する。
Threadにはメモリを消費する為、限界を超える大量のリクエストを捌き切れなくなってしまう。

このことをC10K問題(クライアント1万台問題)という

イベントループ

リクエストやコールバックをイベントとして扱い、
そのイベントに関する処理が終わった際に次のイベントを処理する仕組みのこと。

他にスレッドモデルがある。
スレッドモデルはスレッドが増えるほどメモリを消費するが。
イベントループはシングルスレッドの為、メモリの消費は少ない。

Node.jsのメリット

  • サーバーからクライアントまで1言語で記述できる

    • 学習コストが低い
  • C10K問題に対応できる

  • 活発なコミュニティーサポート

  • ライブラリが豊富

Node.jsのデメリット

  • Node.jsとフロントエンドのJavaScriptには、同じJavaScriptでも処理上の互換性がない。
  • Node.jsに対応しているサーバが少ない(VPS(仮想プライベートサーバ)などを利用してインストールする必要がある)

まとめ

  • Node.jsはノンブロッキングI/O、イベントループの仕組みにより軽量で効率的に多くの処理を捌くことができる。

  • サーバーサイドからクライアントサイドまでJavascriptのみでサービスを作れる。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1