Upload
tatsumi-naganuma
View
2.159
Download
7
Embed Size (px)
DESCRIPTION
Node.jsの特徴と、開発環境についてまとめました。NSEG第15回勉強会(2011年5月21日)の発表資料。
Citation preview
Node.js で Web アプリ開発
NSEG #15
ながぬまたつみ
普通のサーバー
マルチプロセス(スレッド)サーバー
Node.js
Evented I/O for V8 JavaScript
( V8 JavaScript を用いたイベント駆動 I/O の実現)
イベント駆動 I/O とは• なにか起こったらデータ入出力処理をする
oなにか → イベントo起こったら → 駆動oデータ入出力処理をする → I/O
ファイルソケットデーターベースネットワーク標準入出力etc...
イベント駆動 I/O とは
要するに
イベント駆動 I/O
ずくなし のこと。
イベント駆動 I/Oというと人聞きが悪いので ... 朝食の準備を考えてみよう
• パンをトースターにセット• 牛乳をグラスに入れ、電子レンジであたため• フライパンに卵を入れてコンロへ• まいん!を見る• 電子レンジがチーン → 牛乳を取り出す• 0655を見る• 目玉焼き完成 → お皿に盛る• シャキーン!を見る• トースト完了
o いただきます
イベント駆動じゃないと ...(マルチスレッド)3 人で朝食の準備をする!
• A さん:パンをトースターにセットoトースト完了を待つ!
• B さん:牛乳をマグに入れ、電子レンジでスタート oあたため完了を待つ!
• C さん:フライパンに卵を入れてコンロへo目玉焼き完了を待つ!
• それぞれできたところで、みなさんご一緒にo いただきますo キッチンに 3 人もいたら狭い ...
マルチプロセス(スレッド)サーバー
イベント駆動サーバー
イベント駆動は何がいいのか
• イベントが起こるまで何もしないo イベントが起こらなければリソースを消
費しない
• 処理が終わったらすぐリソースを開放o イベントを大量にさばける
• 必要なイベントの処理のみ書けば良いo 処理が独立して見通しが良くなるo 自動テストしやすい
Node.js
Evented I/O for V8 JavaScript
( V8 JavaScript を用いたイベント駆動 I/O の実現)
なぜ JavaScript なのか
• JavaScript は イベント駆動
element.onclick = function() { alert("Hello, world!"); }
• JavaScript はシングルスレッドo イベント駆動は基本的にシングルスレッドo ライブラリもシングルスレッド
つまり Node.js とは• JavaScript で書ける!
oクライアントもサーバーも同じ言語oWeb アプリ開発者なら使えるはず
• ハイパフォーマンスなアプリが書ける!o同期不要
• HTML5 & NoSQL と相性がいい!oWeb Socket
利用例• リアルタイム チャット• リアルタイムお絵かき• Kinnect とつなげてゲーム• 音声通話
o HTML Audio API + Web Socket• プレゼンツール• WebOS
o Developing JavaScript Services https://developer.palm.com/content/api/dev-guide/js-services/overview.html
いいことばかりでもないけど ...
• イベント駆動はちょっと面倒o 無名関数のネスト ... 読みづらいo エラー処理が書きづらい
• マルチコア対応o シングルプロセス&シングルスレッドで性能が
出る?o 対応中 ...
• まだまだ発展途上!o 2009/2 → 2011/4 v0.4.7
Node.js 開発環境
もちろん
vinode
Web ブラウザ
でもいいのですが ...
Web ブラウザですべて開発!
http://cloud9ide.com/https://github.com/ajaxorg/cloud9
Cloud9 IDE
• ブラウザ上でコーディング• ブラウザ上で実行&確認• ブラウザ上でデバッグ
Cloud9 IDE
デモ
Node.js を拡張する• モジュール
oJavaScript で書くo require('module');
• C ( C++ )モジュールoCowscriptonode-waf configure build
Node.js 関連プロダクト• npm ... Node Package Manager
o http://npmjs.org/o npm install <package>o package.json
• CoffeeScript ... better JavaScripto http://jashkenas.github.com/coffee-script/o コンパイルすると JavaScript のコードが得られ
るo Rails 3.1 でもサポートされるらしい
• Jison ... JavaScript parser generatoro http://zaach.github.com/jison/
今後の Node.js
• マルチプロセス対応onode 自体が対応 ... node 起動オプションで
指定oマルチプロセス対応モジュールoアプリケーションレベル( Web Workers )
おしまい
ありがとうございました。