Node.jsを利用するための環境構築
- Node.jsとは,サーバサイドのJavaScript実行環境
- npm(Node Package Manager)
- Node.jsのツールやパッケージ(モジュール)をインストール,管理するシステム
- リポジトリ機能も有り,必要とするパッケージ(モジュール)の検索,ダウンロード,インストール,アップデートが行える
- このサイトを参考しています:
nodebrewのインストール
Node.jsを一般ユーザ権限で,かつバージョン管理するために,まずはnodebrew
を入れる.
$ curl -L git.io/nodebrew | perl - setup
$ wget git.io/nodebrew
$ perl nodebrew setup
ファイル群は$HOME/.nodebrew
以下に展開されるので,~/.nodebrew/current/bin
にPATHを設定しておく.
$ echo "export PATH=$HOME/.nodebrew/current/bin:$PATH" >> ~/.bashrc
$ source ~/.bashrc
以下ではこのnodebrewを利用する.
Node.jsのインストール
はじめにインストール可能なnode.jsのバージョンを確認.(山ほど表示されるので注意)
$ nodebrew ls-remote
v0.0.1 v0.0.2 v0.0.3 v0.0.4 v0.0.5 v0.0.6
v0.1.0 v0.1.1 v0.1.2 v0.1.3 v0.1.4 v0.1.5 v0.1.6 v0.1.7
...(snip)
v8.9.1 v8.9.2 v8.9.3 v8.9.4 v8.10.0
v9.0.0 v9.1.0 v9.2.0 v9.2.1 v9.3.0 v9.4.0 v9.5.0 v9.6.0
v9.6.1 v9.7.0 v9.7.1 v9.8.0 v9.9.0
io@v1.0.0 io@v1.0.1 io@v1.0.2 io@v1.0.3 io@v1.0.4 io@v1.1.0 io@v1.2.0 io@v1.3.0
io@v1.4.1 io@v1.4.2 io@v1.4.3 io@v1.5.0 io@v1.5.1 io@v1.6.0 io@v1.6.1 io@v1.6.2
io@v1.6.3 io@v1.6.4 io@v1.7.1 io@v1.8.1 io@v1.8.2 io@v1.8.3 io@v1.8.4
io@v2.0.0 io@v2.0.1 io@v2.0.2 io@v2.1.0 io@v2.2.0 io@v2.2.1 io@v2.3.0 io@v2.3.1
io@v2.3.2 io@v2.3.3 io@v2.3.4 io@v2.4.0 io@v2.5.0
io@v3.0.0 io@v3.1.0 io@v3.2.0 io@v3.3.0 io@v3.3.1
適当なバージョンのnode.jsをインストールする.
$ nodebrew install-binary latest (vX.X.Xとかでも良い)
最後に使用するnodeのバージョンを指定する.(複数のバージョンがインストールされている場合は切り替えて使える)
$ nodebrew use latest
use v9.9.0
以上でnode
コマンドとnpm
コマンドを使えるようになる.ちなみに,(ローカルPCで)利用可能なNode.jsのバージョンを調べるには以下.
$ nodebrew ls
Node.jsでWebサーバを起動する
テストも兼ねて,webサーバを立ち上げてみよう.まずは以下のようにtest_server.js
を作る.
var http = require('http');
http.createServer( function(request, response) {
response.end('Hello, world!');
}).listen(6002);
これをNode.jsで動かす.
$ node test_server.js
ブラウザで6002につないでみて,以下のように表示されればOK.
このように,非常に簡単にWebサーバを作ることができる!.なお,終了するには,nodeコマンドを入力した端末ウィンドウでCTRL+Cを押せば良い.
Node.jsの特徴
Node.jsには次のような特徴がある.
- JavaScriptでサーバサイド処理を実装できる
- 非同期I/O,ノンブロッキングI/Oモデルを採用している
- イベント駆動型である(シングルスレッドのデメリットを解消できる)
- Googleの「V8」エンジンで動作する(ので非常に高速)
Node.jsは,リアルタイムで大量データを扱うサービス(例えばチャットとか)には向いているが,CPUリソースが大量に必要だったり,あまりイベントが発生しないような場合にはそれほどメリットは無いともいえる.