Node.jsとは何だ

仕事で突然Node.jsを使えと言われた。

さらに、expressというフレームワークを使い、jQueryを使い、なんとかというライブラリを使ってjavascriptアプリをデーモンとして動かすとか言われた。さらに、今後、俺らの仕事はNode.jsが中心になってくから。よろしく。とも言われた。

かなり保守的な分野で仕事をしていて、こんなに新しい技術があっさり採用されるのを私は初めて見た。OSSを「サポートできない」という理由で排除するような職場だ。日々、車輪の再発明をしていて、ソースのバージョン管理システムですら「採用事例がない」の一言でSVNを排除して自前の劣化版システムを作るようなところである、のに。いきなりNode.jsとは恐れいった。

さて、俺は全然Node.jsとか使ったこと無い。サーバサイドJavascriptだってのは分かる。というかそれくらいしか知らない。

ざっと検索してみると、「Apacheより速い」とか、「expressが良い感じ」とか、「EJS使える」とか、あんまり本質的でない説明ばかりが並ぶ。私が新しい技術を学ぶとき辟易とするのは、なかなか本質的な説明が見つけられないからだ。一言二言でとってもよく分かるのに、その一言二言が見つからないのである。今回も同じ。

しばらくしてようやく、本質的に分かる良い説明を見つけた。

Node.js とは一体何か? | IBM DeveloperWorks

上記より私が学んだ、私的に簡潔で本質的なNode.jsの説明とは以下のようになる。

  • Node.jsはLinuxなどのOSで動作する、JavaScriptエンジンである
  • 内部的にはGoogleのV8エンジンが載っている
  • Node.jsのAPIを使ってHTTPサーバーを立てられる
  • I/O APIは非ブロッキングである
  • シングルスレッドで動作する(よって、マルチプロセス・マルチスレッドで動かすオーバーヘッドが無い)
  • イベント駆動なプログラミングモデルを使用する(JavaScriptだから)
  • npmというパッケージマネージャでだいたい何とかなる

わかった!これでなんとか出来る。頑張る。