Node.jsの特徴はなにか。イマイチ、よくわからんー。

わからないままやるより、ちょっと立ち止まって、アタマを整理したほうがたぶんいいと思う。

Node.jsはライアン・ダールというひとが開発したらしく、

さいわい、本人によるプレゼンテーションがYiutubeにアップされている。

こんなことを言っているみたいだ。

Node.jsは、グーグルの開発したChromeにもつかわれているV8というJavaScriptエンジンの上に構築されている。

 V8にたくさんのライブラリをのせたのがNodeで(そしてたくさんのライブラリを管理するのがnpmで..鶴巻)、ネットワークの処理を効率よくおこなうことに焦点をあてている。

では、Node.jsとphpをくらべてみよう。

まずNode.jsネ。

 SetTimeout(function(){
      console.log(“world”);
},2000)
 console.log(“hello”)

 SetTimeoutはコールバック関数をとっていて、worldは2000ミリ秒後に表示されるようになっている。したがってhelloの方が早く表示され、結果的に、hello worldというふうになる。

一方のPHP。

echo(“hello”)
sleep(2)
echo(“world”)
setTimeout(function(){
      console.log(“world”)
}),2000)
console.log(“world”)

こちらも、同様にhello worldという出力がなされる。

では、両者のちがいは、なにか。

phpはsleepし、Node.jseの方はTimeoutしている。

前者は文字どおり眠ってしまう(止まってしまう)が、後者のNode.jsは(使えるのに、何もしていない)アイドルの状態になっている。

つまりNode.jsがなにもしていないあいだ、OSはほかの仕事ができるわけ。

これについてはサーバーサイドでも言え、Node.jsがアイドル状態のあいだ、サーバーのcpuはほかの作業を行なうことができる。

JavaScriptの非同期の作業をサーバーでも実現できるというみたいな(鶴巻)。

Etherium(イーサリアム)にPHPでhなく、Node.jsが選ばれているのは、この点にありそう(鶴巻)。