node.jsの勉強を始めた
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リクエストしてみる
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リクエスト
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
var util = require('util');
util.format('[%s] %s', Success, Good response);
// [Success] Good response
querystring
querystring
はurlのパラメタを作成する時に非常に便利なツールです。
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を解析によく使うモジュールです。
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
はファイルの読み込みや書き込みに使うモジュールです。
####ファイルを読み込む
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);
});
ファイルへの書き込み
fs.writeFile('message.txt', 'Hello World', function(err){
if (err) throw err;
console.log('done');
});
ファイルをストリームとして処理する
fs.createReadStream('./data/some.csv').pipe(process.stdout);
Hello World
node.jsで「Hello World」サーバーを作ってみましょう。
// 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アプリの作成には得意なので、ゲーム開発などには最適だと思います。