node.jsの勉強を始めた

ChainZ(クリエイター)
いろいろやってます。

node.jsって

node.jsはサーバー側アプリケーションを作るためのプラットフォームです。PHPやRubyなどと違って、node.jsは言語やフレームワークではなく、JavaScriptを利用したプラットフォームです。

PHPなどを使っている方には、最初わけわからないかもしれないが(私もそうでした)、 とりあえず「JavaScriptでアプリを作る環境」と考えればいいと思います。

なぜnode.jsを勉強するのか?

node.js一番魅力的なところと言えば、スケーラビリティでしょう。MongoDBなどのNoSQLデータベースと組み合わせて使うと、かなりスケーラビリティが高いです。大規模のアプリにも本領を発揮します。

node.jsをインストール

node.jsのインストール方法は公式サイトで詳しく説明されています。URL: http://nodejs.org/download/

Mac OS

Macなら、公式サイトからインストーラーを利用するか、homebrewなどのPackage Managerを使ってインストールできます。

Windows

Windowsのインストーラーも公式サイトで提供されています。ダウンロードしてインストールすればオッケです。

他のOS

こちらを参考してください: https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager

node.jsのコアモジュール(API)

node.jsのスタンダードライブラリー(コアモジュール)はすごい軽いです。webアプリの開発においてよく使うのは下記の五つです。

name doc
http http://nodejs.org/api/http.html
util http://nodejs.org/api/util.html
querystring http://nodejs.org/api/querystring.html
url http://nodejs.org/api/url.html
fs http://nodejs.org/api/fs.html

使用イメージをすこし説明しましょう:

http

名前通りですが、http関連の便利なメソードがいっぱい入っています。

httpのPOSTリクエストしてみる

1
2
3
4
5
6
7
8
9
10
11
12
var http = require('http');
var req = http.request({
  hostname: 'www.colormel.com',
  port: 80,
  path: '/',
  method: 'POST'
  }, function(res){
  res.setEncoding('utf-8');
  res.on('data', function(body){
    console.log('BODY:' + body);
  });
});

httpのGETリクエスト

1
2
3
4
5
6
7
8
var http = require('http');
http.get('http://colormel.com', function(res){
  console.log('respones:\n');
  res.setEncoding('utf-8');
  res.on('data', function(body){
     console.log(body);
  });
});

util

utilは便利なhelperが入ってます。

node.jsのprintf

1
2
3
var util = require('util');
util.format('[%s] %s', Success, Good response);
// [Success] Good response

querystring

querystringはurlのパラメタを作成する時に非常に便利なツールです。

1
2
3
4
5
6
7
8
9
10
var querystring = require('querystring');
querystring.stringify({
  id   : '12',
  type : 'article',
  tag  : 'node'
});
// 出力 id=12&type=article&tag=node

querystring.parse('id=12&type=article&tag=node');
// 出力 { id:'12', type:'article', tag:'node'}

url

urlはurlを解析によく使うモジュールです。

1
2
3
4
5
6
7
8
9
10
11
var url = require('url')
var u = url.parse('http://colormel.com:7777/?page=work');

console.log(u.href);
// http://colormel.com:7777/?page=work

console.log(u.host);
// colormel.com:7777

console.log(u.port);
// 7777

fs

fsはファイルの読み込みや書き込みに使うモジュールです。

ファイルを読み込む

1
2
3
4
5
var fs = require('fs');
fs.readFile(path.join(__dirname, '/data/some.csv'), {encoding: 'utf-8'}, function(err, data){
  if (err) throw err;
  console.log(data);
});

ファイルへの書き込み

1
2
3
4
fs.writeFile('message.txt', 'Hello World', function(err){
  if (err) throw err;
  console.log('done');
});

ファイルをストリームとして処理する

1
fs.createReadStream('./data/some.csv').pipe(process.stdout);

Hello World

node.jsで「Hello World」サーバーを作ってみましょう。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// httpモジュールを使う
var http = require('http')

// serverという変数に
// http.createServerで作られたServerオブジェクトを保存する
var server = http.createServer(function(err, res){
  // Responseにheaderを書き込む
  res.writeHeader(200, {'Content-Type' : 'text/plain'});

  // Hello Worldを表示させる
  res.end('Hello World\n');
});

// サーバーをlocalhost:1222
server.listen(1222, 'localhost');
console.log('サーバー稼動中: http://localhost:1222');

JSに詳しい方は、多分node.jsの使いやすさもう体感してると思います。JSは初めての方は、繰り返してるfunctionで混乱しちゃうかもしれないが、これはJSの特徴でもある、コールバックを大量使うことです。(慣れるにはコードいっぱいみるか、書くしかないですね〜)

まとめ

node.jsはJavaScriptに馴染んでいるフロントエンドデザイナーにとって、非常に便利なプラットフォームだと思います。

従来のWebアプリ開発では、JavaScriptは主にフロントエンド言語(ブラウザ側)と考えられますが、node.jsがJavaScriptをバックエンドに持ち込んで、フロントエンドとバックエンドが同じ言語での開発が可能になります。開発効率の向上に期待されるでしょう。

そして、JavaScriptはリアルタイムwebアプリの作成には得意なので、ゲーム開発などには最適だと思います