SlideShare a Scribd company logo
入門
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

PDF
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
PPTX
掲載されやすいプレスリリースの作り方
PDF
Tackling Complexity
PDF
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
PDF
心理的安全性を 0から80ぐらいに上げた話
PDF
シリコンバレーの「何が」凄いのか
PDF
Redmine にいろいろ埋め込んでみた
PDF
「顧客の声を聞かない」とはどういうことか
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
掲載されやすいプレスリリースの作り方
Tackling Complexity
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
心理的安全性を 0から80ぐらいに上げた話
シリコンバレーの「何が」凄いのか
Redmine にいろいろ埋め込んでみた
「顧客の声を聞かない」とはどういうことか

What's hot (20)

PDF
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
PPTX
テストコードの DRY と DAMP
PPTX
コンピュテーション式ハンズオン
PDF
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
PDF
Test Yourself - テストを書くと何がどう変わるか
PDF
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
PDF
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
PDF
組み込み関数(intrinsic)によるSIMD入門
PDF
経営のアジリティを支えるDevOpsと組織
PDF
Railsで作るBFFの功罪
PDF
de:code 2019 Azure IoT Hub クラウド側の最新機能:デモも交えてご紹介
PDF
MagicOnion入門
PDF
【de:code 2020】 カスタムコネクタ入門 : Power Platform と既存システムをつなげるカスタムコネクタ
PPTX
20160526 依存関係逆転の原則
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
PDF
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
PDF
Redmineの開発状況のこれまでと現在
PDF
「仮想マシンからの移⾏先としてPaaSとKaaS、どちらを選ぶか? #ヤフー名古屋」
PDF
挫折しないRedmine
PDF
Spring Day 2016 - Web API アクセス制御の最適解
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
テストコードの DRY と DAMP
コンピュテーション式ハンズオン
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
Test Yourself - テストを書くと何がどう変わるか
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
組み込み関数(intrinsic)によるSIMD入門
経営のアジリティを支えるDevOpsと組織
Railsで作るBFFの功罪
de:code 2019 Azure IoT Hub クラウド側の最新機能:デモも交えてご紹介
MagicOnion入門
【de:code 2020】 カスタムコネクタ入門 : Power Platform と既存システムをつなげるカスタムコネクタ
20160526 依存関係逆転の原則
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
.NET 6 と Blazor で作るクロスプラットフォームアプリ概要
Redmineの開発状況のこれまでと現在
「仮想マシンからの移⾏先としてPaaSとKaaS、どちらを選ぶか? #ヤフー名古屋」
挫折しないRedmine
Spring Day 2016 - Web API アクセス制御の最適解
Ad

Viewers also liked (11)

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

Similar to Node js 入門 (20)

PPTX
Node.js Hands-On
PPTX
Hokuriku.net 2013 01-26 node.js
PDF
Hello, Node.js
PDF
大阪Node学園 七時限目 「ゼロからはじめるnode.js」
PPT
Node.js で Web アプリ開発
KEY
Beginners scala 20121113
PPTX
worker_threadsを使った実装の勘所
PPTX
ビルド職人の朝は早い
PDF
PDF
Bp study39 nodejs
PDF
サーバサイドNodeの使い道
PDF
Nodeにしましょう
PPTX
how to create a web server with a raspberry pi
PPT
第2回勉強会
PDF
Node.jsで始める Modern JavaScript Framework
PPTX
後期講座01
PPTX
Node.js×mongo dbで3年間サービス運用してみた話
PDF
Node.jsでサーバプログラマ デビューしよう
PPTX
Azureで作るnodeアプリケーション①
PPTX
A 2-1 gitwebmatrix 2 から使う node.js on windows azure
Node.js Hands-On
Hokuriku.net 2013 01-26 node.js
Hello, Node.js
大阪Node学園 七時限目 「ゼロからはじめるnode.js」
Node.js で Web アプリ開発
Beginners scala 20121113
worker_threadsを使った実装の勘所
ビルド職人の朝は早い
Bp study39 nodejs
サーバサイドNodeの使い道
Nodeにしましょう
how to create a web server with a raspberry pi
第2回勉強会
Node.jsで始める Modern JavaScript Framework
後期講座01
Node.js×mongo dbで3年間サービス運用してみた話
Node.jsでサーバプログラマ デビューしよう
Azureで作るnodeアプリケーション①
A 2-1 gitwebmatrix 2 から使う node.js on windows azure

Node js 入門