あのサービスも「node.js」!?知らないを「卒業」しよう!node.js勉強会まとめ
こんにちわ!システム担当の中村です。
またまたブログを書くことになりました!よろしければお付き合い下さいませ。
今回は、先日行いました勉強会の簡単なまとめをしたいと思います。
今回のお題はnode.js。
巷で噂のアイツです。
■node.jsって何?
まずnode.jsって何かというと、「サーバで動くJavaScript」です。
簡単に言ってしまうとそんな感じです。
実際のnode.jsのコードは以下の様な感じ。
var http = require(‘http’);
http.createServer(function (req, res) {
res.writeHead(200, {‘Content-Type’: ‘text/plain’});
res.end(‘Hello World\n’);
}).listen(1337, “127.0.0.1”);
console.log(‘Server running at http://127.0.0.1:1337/’);
ね、JavaSctriptに似てるような感じがしませんか?
また、apacheには同時接続数に制限があり、それを超えるとサイトにアクセスできなくなりますが、node.jsではapacheをはるかに超える同時アクセスを捌くことができます。
■JavaScriptがサーバで使われる?
もともとJavaScriptはクライアント側(WEBブラウザ側)で使われていたのですが、「この素晴らしい技術をブラウザだけにとどめておくのはもったいない」という考え方が広まり、サーバ側でも積極的に使われるようになりました。
普段使っているJavaScriptの記法で、サーバ側のことも制御できるって聞くと、なんだか簡単にできちゃいそう!って感じがしませんか??
■JavaScriptをサーバサイドで使う際の仕様策定
JavaScriptをサーバサイドで使う時の仕様として、現在「CommonJS」という名前で仕様が策定されています。
サーバサイドでJavaScriptを使ってプロダクトを作る際には、最低限ここで策定されている仕様に従う、というコンセプトで作成されています。
HTMLでいうW3Cのようなものですね。
■node.jsだけじゃない、サーバサイドJS
基本的にnode.jsは「サーバサイドJS」の1種として知られています。
他にもサーバサイドJSと呼ばれるものがあります。
それが「RingoJS」と呼ばれるものです。
node.jsは 言語がC++で書かれているのに対し、RingoJSはJavaで書かれています。
他にも様々な特徴があり、どちらを使うか特徴を見ながら決めていく必要があります。
今後同じようなアプリケーションが出てくる可能性もあります。ワクワクですね!
■node.jsを使用したWEBサイト、サービス
node.jsを使用したサービスを幾つかご紹介します。
◆LinkedIn(モバイル版)
上記はPC版なのですが、LinkedInのモバイル版はnode.jsを使用しています。
もともとRuby on Railsを使用していたそうなのですが、アクセスの速さに問題が有り、node.jsに移行したとのこと。
◆マルチデバイスLab. – Multi Device Lab.
以下のURLにアクセスしてみてください。
このページでは、現時点で同じページにアクセスしている他のユーザのマウスポインタの軌跡を見ることができます。
なんだか不思議な感覚ですね!
◆ピグライフ
かの有名なアメーバピグのサービスです。
ピーク時のアクティブユーザが20万人いるにもかかわらず、20台のサーバでのみ運用を行なっているとのこと。
大量のアクセスを捌けるnode.jsならではの構成ですね。
(参考:http://itpro.nikkeibp.co.jp/article/COLUMN/20120725/411427/)
■まとめ
実際に開発する際どのように開発していくのかなどの詳しい話は勉強会では触れることができませんでしたが、「こんなサービスで使ってたんだ!」というのはご理解いただけたかと思います。
また機会がありましたら、詳しい開発の話などもできたらと思います。