SlideShare una empresa de Scribd logo
1 de 27
Descargar para leer sin conexión
入門
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 programming
accessible 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 call
zlib
libev
Node Core Module V8
Node User Module
libeio
libuv
openssl
http-parser
epoll kqueue event port IOCP
Linux 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 FW
http://nantokaworks.com/?p=1101
19
Node.jsとJava FW
DAO
DB
Buisness
Logic
JSP
Struts
Struts
+
Spring
プレゼンテーション層 サービス層 永続化層
Bean
20
Expressのアーキテクチャ
出典:http://www.slideshare.net/dbloete/expressjs
Connect
Session Provider
Session 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

Más contenido relacionado

La actualidad más candente

이승재, 일정대로 출시하기 왜 & 어떻게: 개발자를 위한 제작진행개론, NDC2017
이승재, 일정대로 출시하기 왜 & 어떻게: 개발자를 위한 제작진행개론, NDC2017이승재, 일정대로 출시하기 왜 & 어떻게: 개발자를 위한 제작진행개론, NDC2017
이승재, 일정대로 출시하기 왜 & 어떻게: 개발자를 위한 제작진행개론, NDC2017
devCAT Studio, NEXON
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
devCAT Studio, NEXON
 

La actualidad más candente (20)

MediaPipeを使ったARアプリ開発事例 ~カメラをかざして家䛾中で売れるも䛾を探そう~
MediaPipeを使ったARアプリ開発事例 ~カメラをかざして家䛾中で売れるも䛾を探そう~MediaPipeを使ったARアプリ開発事例 ~カメラをかざして家䛾中で売れるも䛾を探そう~
MediaPipeを使ったARアプリ開発事例 ~カメラをかざして家䛾中で売れるも䛾を探そう~
 
webエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのrediswebエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのredis
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
 
実践 Git - 低レベルに知る Git
実践 Git - 低レベルに知る Git実践 Git - 低レベルに知る Git
実践 Git - 低レベルに知る Git
 
ClickHouse導入事例紹介
ClickHouse導入事例紹介ClickHouse導入事例紹介
ClickHouse導入事例紹介
 
Unity用ビジュアルノベルツール「宴3」開発帰還報告書
Unity用ビジュアルノベルツール「宴3」開発帰還報告書Unity用ビジュアルノベルツール「宴3」開発帰還報告書
Unity用ビジュアルノベルツール「宴3」開発帰還報告書
 
ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 ( Redmine of one plant 2022 ...
ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 (  Redmine of one plant 2022 ...ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 (  Redmine of one plant 2022 ...
ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 ( Redmine of one plant 2022 ...
 
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
아마존 클라우드와 함께한 1개월, 쿠키런 사례중심 (KGC 2013)
 
Redmine 5.0 + RedMica 2.1 新機能評価ガイド
Redmine 5.0 + RedMica 2.1 新機能評価ガイドRedmine 5.0 + RedMica 2.1 新機能評価ガイド
Redmine 5.0 + RedMica 2.1 新機能評価ガイド
 
View customize pluginを使いこなす
View customize pluginを使いこなすView customize pluginを使いこなす
View customize pluginを使いこなす
 
이승재, 일정대로 출시하기 왜 & 어떻게: 개발자를 위한 제작진행개론, NDC2017
이승재, 일정대로 출시하기 왜 & 어떻게: 개발자를 위한 제작진행개론, NDC2017이승재, 일정대로 출시하기 왜 & 어떻게: 개발자를 위한 제작진행개론, NDC2017
이승재, 일정대로 출시하기 왜 & 어떻게: 개발자를 위한 제작진행개론, NDC2017
 
これからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきことこれからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきこと
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
 
Redmineとgitの 連携利用事例
Redmineとgitの 連携利用事例Redmineとgitの 連携利用事例
Redmineとgitの 連携利用事例
 
PHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作ったPHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作った
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
 
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
 
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
 

Destacado

Destacado (11)

TypeScriptへの入口
TypeScriptへの入口TypeScriptへの入口
TypeScriptへの入口
 
Node.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないときNode.js を選ぶとき 選ばないとき
Node.js を選ぶとき 選ばないとき
 
Node Foundation Membership Overview 20160907
Node Foundation Membership Overview 20160907Node Foundation Membership Overview 20160907
Node Foundation Membership Overview 20160907
 
Node.js Tutorial at Hiroshima
Node.js Tutorial at HiroshimaNode.js Tutorial at Hiroshima
Node.js Tutorial at Hiroshima
 
Node.js入門
Node.js入門Node.js入門
Node.js入門
 
Nodeについて
NodeについてNodeについて
Nodeについて
 
Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2Node.js基礎の基礎 - Miyazaki.js vol.2
Node.js基礎の基礎 - Miyazaki.js vol.2
 
JMeter入門
JMeter入門JMeter入門
JMeter入門
 
CloudwatchをGrafana+Graphiteで見るようにしたら幸せになった件
CloudwatchをGrafana+Graphiteで見るようにしたら幸せになった件CloudwatchをGrafana+Graphiteで見るようにしたら幸せになった件
CloudwatchをGrafana+Graphiteで見るようにしたら幸せになった件
 
AWS Black Belt Techシリーズ AWS Lambda
AWS Black Belt Techシリーズ AWS LambdaAWS Black Belt Techシリーズ AWS Lambda
AWS Black Belt Techシリーズ AWS Lambda
 
Gulp入門 - コーディングを10倍速くする
Gulp入門 - コーディングを10倍速くするGulp入門 - コーディングを10倍速くする
Gulp入門 - コーディングを10倍速くする
 

Similar a Node js 入門

Hokuriku.net 2013 01-26 node.js
Hokuriku.net 2013 01-26 node.jsHokuriku.net 2013 01-26 node.js
Hokuriku.net 2013 01-26 node.js
Tadahiro Ishisaka
 

Similar a Node js 入門 (20)

Node.js Hands-On
Node.js Hands-OnNode.js Hands-On
Node.js Hands-On
 
Hokuriku.net 2013 01-26 node.js
Hokuriku.net 2013 01-26 node.jsHokuriku.net 2013 01-26 node.js
Hokuriku.net 2013 01-26 node.js
 
Hello, Node.js
Hello, Node.jsHello, Node.js
Hello, Node.js
 
大阪Node学園 七時限目 「ゼロからはじめるnode.js」
大阪Node学園 七時限目 「ゼロからはじめるnode.js」大阪Node学園 七時限目 「ゼロからはじめるnode.js」
大阪Node学園 七時限目 「ゼロからはじめるnode.js」
 
Node.js で Web アプリ開発
Node.js で Web アプリ開発Node.js で Web アプリ開発
Node.js で Web アプリ開発
 
Beginners scala 20121113
Beginners scala 20121113Beginners scala 20121113
Beginners scala 20121113
 
worker_threadsを使った実装の勘所
worker_threadsを使った実装の勘所worker_threadsを使った実装の勘所
worker_threadsを使った実装の勘所
 
ビルド職人の朝は早い
ビルド職人の朝は早いビルド職人の朝は早い
ビルド職人の朝は早い
 
Nodejs
NodejsNodejs
Nodejs
 
Bp study39 nodejs
Bp study39 nodejsBp study39 nodejs
Bp study39 nodejs
 
サーバサイドNodeの使い道
サーバサイドNodeの使い道サーバサイドNodeの使い道
サーバサイドNodeの使い道
 
Nodeにしましょう
NodeにしましょうNodeにしましょう
Nodeにしましょう
 
第2回勉強会
第2回勉強会第2回勉強会
第2回勉強会
 
Node.jsで始める Modern JavaScript Framework
Node.jsで始める Modern JavaScript FrameworkNode.jsで始める Modern JavaScript Framework
Node.jsで始める Modern JavaScript Framework
 
後期講座01
後期講座01後期講座01
後期講座01
 
Node.js×mongo dbで3年間サービス運用してみた話
Node.js×mongo dbで3年間サービス運用してみた話Node.js×mongo dbで3年間サービス運用してみた話
Node.js×mongo dbで3年間サービス運用してみた話
 
Node.jsでサーバプログラマ デビューしよう
Node.jsでサーバプログラマ デビューしようNode.jsでサーバプログラマ デビューしよう
Node.jsでサーバプログラマ デビューしよう
 
Azureで作るnodeアプリケーション①
Azureで作るnodeアプリケーション①Azureで作るnodeアプリケーション①
Azureで作るnodeアプリケーション①
 
A 2-1 gitwebmatrix 2 から使う node.js on windows azure
A 2-1 gitwebmatrix 2 から使う node.js on windows azureA 2-1 gitwebmatrix 2 から使う node.js on windows azure
A 2-1 gitwebmatrix 2 から使う node.js on windows azure
 
Babelで先取り次世代javascript
Babelで先取り次世代javascriptBabelで先取り次世代javascript
Babelで先取り次世代javascript
 

Node js 入門