Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8697

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

$
0
0

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のみでサービスを作れる。


Viewing all articles
Browse latest Browse all 8697

Trending Articles