辞書: Node.js

投稿日: 更新日:

Node.jsとは

イベント駆動のサーバサイドJavaScript環境です。

本質

Node.jsを紹介する時に真っ先に「サーバサイドJavaScript」と 紹介されている記事が目立ちますが、それは大きな誤解です1。 なぜかというと、順番が異なるからです。

C10K(クライアント1万台)問題

まず重要なのは、クライアントが1万台接続する環境が必要になったことです。 従来はプロセスやスレッドで対応していましたが、 この仕組みではリソースを食いつぶしてしまいます。

イベント駆動

そのために採用されたのがイベント駆動という方式でした。 I/O待ちが起きる可能性があるときにブロックするのではなく、 ハンドラを登録して待つ方法です。

JavaScriptを選ぶのが自然

イベント駆動で書こうとすると、既存の言語だといろいろとめんどくさいです。 普通にファイルを書こうとするだけでアウトです。 一方で、JavaScriptはイベント駆動ネイティブと言ってもいいくらいです。 なので、サーバ側の開発言語としてJavaScriptを選ぶのは自然です。

ただし、これが唯一の解ではなく、 元々はスレッドが使うメモリが多すぎるのが原因なので、 軽量化したスレッドを使う手もあります2


  1. なぜ強く言うのかというと、これで自分が被害にあったからです。 ↩︎

  2. coroutine, goroutine, fiberあたりがキーワード ↩︎

公式サイト