SlideShare a Scribd company logo
1 of 27
Download to read offline
入門
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

More Related Content

What's hot

日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについて
kumake
 

What's hot (20)

Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについて
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
やってはいけない空振りDelete
やってはいけない空振りDeleteやってはいけない空振りDelete
やってはいけない空振りDelete
 
GoogleのSHA-1のはなし
GoogleのSHA-1のはなしGoogleのSHA-1のはなし
GoogleのSHA-1のはなし
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること
 
テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMP
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
 
実践 NestJS
実践 NestJS実践 NestJS
実践 NestJS
 
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
 
ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発
 
最速C# 7.x
最速C# 7.x最速C# 7.x
最速C# 7.x
 
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーWhere狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
 
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはがんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
 

Viewers also liked

Viewers also liked (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 to 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 to 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
 

Recently uploaded

Recently uploaded (11)

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 

Node js 入門