Node.js で Web アプリ開発

3,188 views

Published on

Node.jsの特徴と、開発環境についてまとめました。NSEG第15回勉強会(2011年5月21日)の発表資料。

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,188
On SlideShare
0
From Embeds
0
Number of Embeds
37
Actions
Shares
0
Downloads
15
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Node.js で Web アプリ開発

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

×