Node js 入門
-
Upload
satoshi-takami -
Category
Technology
-
view
5.689 -
download
0
description
Transcript of Node js 入門
入門Satoshi Takami
@tikemin
1
Agenda
■ Hello Node.js
■ Node.jsを使ったWebサーバ構築【演習】
■ Node.jsとMySQLとの連携【演習】
■ Node.jsを使ったWebアプリケーション開発【演習】
■ Node.jsの開発をより便利に
2
はじめに
■ この資料はNode.jsに上級者向けの資料ではありません
■ Node.jsという言葉は知ってるけど、詳しい事はよく知らない初心者向けです
■ この資料を見てNode.jsが完璧に出来るようになるような魔法の資料ではありません
■ 間違いや誤解している点があると思うので指摘して頂ければと思います
3
Hello Node.js
4
Node.jsとは?
■ 一言でいうと
□ C10K問題
□ イベントループ
□ ノンブロッキングI/O
□ Google V8エンジン
Server Side js
5
Node.js の歴史
■ 2009年頃に生まれる
□ 「Scalable Network」/「Easily Building Fast」
□ 規模が大きく、高速なネットワークを手軽に構築
Concept
Node’s goal is to make non-blocking network programmingaccessible to users who are not well-versed in server development.
(Ryan Dahl)
6
Node.js の歴史
■ Web2.0の登場と共に...
□ C(クライアント)10K(1万台)問題
□ 大規模なI/Oが発生する処理の需要が高まる
□ Apacheなどは1HTTPリクエストに1プロセス(つまりポート数の32767が限界)
□ マルチスレッドだとメモリの消費が激しい
C10K問題
7
Node.js の歴史
■ そこで...
□ 1つのスレッドでイベントを管理(シングルスレッド)
□ スレッドが増えるのを抑えることができる
□ ブロックが発生する(大容量のDB参照,ロジック自体の処理が長いetc.)
イベントループ
8
Node.js の歴史
□ ブロックの無いイベントループ(Ryan Dahl)
□ ノンブロッキングを強制する
□ Google V8 エンジンにより実現
ノンブロッキングI/O
9
つまり
10
Node.jsとは
■ C10K問題
■ イベントループ
■ Google V8エンジン搭載
■ ノンブロッキングI/O
■ Server Side js(Java Script)
11
Node.jsのアーキテクチャ
出典:http://www.iij.ad.jp/company/development/tech/activities/nodejs/
c-ares
OS
non-blocking I/O system cal l
z l ib
l ibev
Node Core Module V8
Node User Module
l ibeio
l ibuv
openssl
http-parser
epol l kqueue event port IOCPLinux BSD Solaris(SmartOS) Windows
12
演習
13
Node.jsを使ったWebサーバ構築【演習】
14
環境構築
■ WindowsでのNode.js
□ 資料のダウンロード
□ http://ad-da.jp/download/nttdata/study/nodejsstudy.zip
15
Node.jsとMySQLとの連携【演習】
16
Node.jsを使ったWebアプリケーション開発
【演習】
17
Node.jsのフレームワーク【演習】
18
Node.jsのFW
■ Express(http://expressjs.com/)
□ Sinatra ライクなWebアプリケーションFW
■ Salis.js(http://sailsjs.org/)
□ フルスタックなMVC FWhttp://nantokaworks.com/?p=1101
19
Node.jsとJava FW
DAO
DB
BuisnessLogic
JSP
Struts
Struts+
Spring
プレゼンテーション層 サービス層 永続化層
Bean
20
Expressのアーキテクチャ
出典:http://www.slideshare.net/dbloete/expressjs
Connect
Session ProviderSession Cookie
ErrorHandling
Helper
Connection
Jade(Template Engine)
+EJS
View Controller/Model
21
Expressに関するリンク
■ https://github.com/balderdashy/sails/blob/master/README.md
■ http://expressjs.com/
■ https://github.com/senchalabs/connect
■ http://embeddedjs.com/
22
では、実際につかってみましょう
23
Node.jsの開発をより便利に
24
TypeScript
■ Micorosoftが提供するNode.js用のオブジェクト指向言語
□ jsには型が無い(動的型付け)
□ オブジェクト指向でないのでチーム開発に向かない
・静的型付け・オブジェクト指向・IDEによる開発サポート(VSで可能)・オープンソース
http://www.typescriptlang.org/
25
TypeScript Sample
■ 「Hello, World!!」「Type Script!!」
1 // モジュール定義 2 module TSSample{ 3 // クラスの定義 4 export class Sample{ 5 // コンストラクタ 6 constructor(private text : string){ 7 } 8 // メソッド 9 display(_InAddText : string) : void{10 console.log(this.text + ' ' + _InAddText);11 }12 }13 }14 var sample : TSSample.Sample = new TSTest.Sample('Hello, World !!!');15 sample.display('TypeScript!');
26
References
■ Nodeの歴史
□ http://d.hatena.ne.jp/badatmath/20101020/1287587240
■ Web2.0の先にあるもの
□ http://www.atmarkit.co.jp/news/analysis/200701/09/c10k.html
■ npm をproxy経由で使えるようにする設定by makits
□ http://p.tl/GQCK
■ Node.js開発者(Ryan Dahl)の話
□ http://www.publickey1.jp/blog/11/nodejs_node.html
□ http://www.publickey1.jp/blog/11/nodejsnodejs.html
27