HackLog

ゆるーく書いてるブログです。

Node.jsについて知っておきたい4つの真実

f:id:js1220:20140709215251j:plain

Node.js 耳にした事はありますが触れた事はなかった。

そんなNode.jsを少し知ってみよう。と思い軽く調べてみた。

そんな内容です。

Node.jsってなに?

通常Javascriptはクライアント、要はブラウザ上で実行されます

しかし、このNode.jsはPHPのようにサーバサイドで実行されるJavascript

その程度しか知りませんでした。

なぜNode.js?


元々Node.jsはあったっぽいです。

最近ではブラウザやPCの進化に伴い、Javascriptも流行りだし、Javascriptを使える技術者が増えてきました。

しかしサーバーサイトスクリプトPHPJavaは使えない。Javascriptなら。

そんなユーザにとって好都合なものがNode.jsだったそう。

なら、PHPを覚えればいいのでは?


ぶっちゃけ、Javascriptなどプログラミング経験があるひとは、ある程度勉強すればPHPでもJavaでも、Objective-cでもなんでも書けるようになるのでは?とも思いました。

そこでNode.jsの利点があったのです。

Socket.IO

Facebookメッセージのようなリアルタイムに相手と通信するもの

リロードが必要のない処理をNode,jsのSocket.IOを使うとできるとのこと。

これによって、ブラウザ上でリアルタイムに情報を共有できるようになりました。

ノンブロッキングI/O

通常はデータベースからデータを取得し、取得完了したらページを表示するため、データ量が多ければ多いほどページ表示速度が遅くなります。

しかし、Node.jsはノンブロッキングI/Oというモデルを利用しているらしく

データベースへのアクセスと、ページの表示を非同期に行ってくれるとのこと。

これによってストレスの少ないページ生成が可能となります。

Node.jsのデメリットってなに?


なら、Node.jsでやる方が良いじゃん。デメリットってないの?

デメリットが無いものなんでありません(筆者の感覚)

調べてみたら結構デメリットがあったので少しだけ。

Javascriptであること

Javascriptなので、オブジェクト指向が微妙です。

もしかしたら、ユニットテストについても微妙かも?JavascriptユニットテストではJasminを利用していましたが、テストに限界がありました。

安定していない

今はどうか不明ですが、開発者も少なく、本体も改善を繰り返しているため、安定していないそう。

実用化としてはまだ微妙なんて声もありました。

重い処理があると全体に影響する

重い処理でCPUが使われるようなアプリケーションには向かないそう。

簡単なメッセージのやり取りのようなアプリケーションで使うのが良さそう。


以上、かんたんなNode.jsについて知っておくべき事でした。