Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
これからのNode.jsの話をしよう
Search
Yosuke Furukawa
PRO
February 26, 2014
Programming
8.5k
16
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
これからのNode.jsの話をしよう
Yosuke Furukawa
PRO
February 26, 2014
More Decks by Yosuke Furukawa
See All by Yosuke Furukawa
AIがコードを書いてくれる時代、我々は何を確かめるのか
yosuke_furukawa
PRO
13
5.4k
AI時代のシニアエンジニアとは
yosuke_furukawa
PRO
14
11k
Webの地図
yosuke_furukawa
PRO
6
5.3k
XHTMLが残したもの
yosuke_furukawa
PRO
2
990
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
460
デザインシステムが必須の時代に
yosuke_furukawa
PRO
2
350
Node.js, Deno, Bun 最新動向とその所感について
yosuke_furukawa
PRO
10
5.4k
Welcome JSConf.jp 2024
yosuke_furukawa
PRO
1
4.9k
tc39 x jsconf.jp Panel Discussion 2024
yosuke_furukawa
PRO
0
390
Other Decks in Programming
See All in Programming
Lambda durable functionsでHuman in the Loopを楽に…楽に……
har1101
2
240
最近”作らせてる” ローカルAIアプリの話
akit37
0
530
クラウドエージェントは、 何がそんなに便利なのか / what makes cloud agents so useful
rkaga
5
670
Coding with AI: How to trust the storyteller (AWS Community Day Adria, Ljubljana 2026)
slobodan
0
130
Engineering Biometric UX Across Android Versions | DroidKnights 2026
ryunen344
0
120
AI時代のIaC入門 〜なぜインフラをコードで管理したいのか?〜 / Introduction to IaC in the AI Era
akihisaikeda
6
1.3k
HTML-in-Canvasで作る未来のWeb UI表現
clockmaker
5
6.1k
Modernizing iOS Apps
seyfoyun
0
140
Performance Optimization With LLMs
xleitix
0
230
선언형 햅틱 라이브러리 진동을 소개합니다
l2hyunwoo
1
250
Optunaを作ったときにやりたかったこと、その後 (2026/10/16, Optuna Meetup #3)
iwiwi
4
1.4k
Spec-driven Development with AI
simas
PRO
0
2.2k
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
273
28k
Producing Creativity
orderedlist
PRO
348
41k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
440
Deep Space Network (abreviated)
tonyrice
0
400
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
390
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.3k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Testing 201, or: Great Expectations
jmmastey
46
8.4k
Why Our Code Smells
bkeepers
PRO
340
58k
A Modern Web Designer's Workflow
chriscoyier
699
190k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
350
RailsConf 2023
tenderlove
30
1.6k
Transcript
͜Ε͔Βͷ/PEFKTͷ Λ͠Α͏ !ZPTVLF@GVSVLBXB
!ZPTVLF@GVSVLBXB ຊ/PEFKTϢʔβʔάϧʔϓ৽ද
!ZPTVLF@GVSVLBXB $VSSFOU.Z803,4 4VQQPSU%FWFMPQFST $SFBUJOH(BNFT $SFBUJOH'SBNFXPSLT
!ZPTVLF@GVSVLBXB $VSSFOUNZJOUFSFTUT 1FSGPSNBODF*NQSPWFNFOU 3FBMUJNF "OZPUIFSOFXUFDIT MJLF(P %PDLFS $MJFOUTJEF.7$ FUD
!ZPTVLF@GVSVLBXB $VSSFOU.ZGBWT 1FSGPSNBODF*NQSPWFNFOU 3FBMUJNF "OZPUIFSOFXUFDIT MJLF(P %PDLFS $MJFOUTJEF.7$ FUD 'PMMPXNF
ຊ
ຊ /PEFKTOFXT ؾʹͳΔ/PEFKTϥΠϒϥϦ ౦ژ/PEFֶԂͷࠓޙ
/PEFKTOFXT
/PEFKTOFXT
/PEFKTOFXT Ϧʔμʔ͕*[BBDT͔Β 5+'POUBJOFʹ
5+'POUBJOF͜Μͳਓɹ ʹDPSFUFBNʹKPJO $*UFTUϝΠϯʹ୲ 8BMNBSUͷϝϞϦϦʔΫΛൃݟ ͨ͠ΓͱϨΠϠʔʹڧ͍
5+'POUBJOF͜Μͳਓɹ ʹDPSFUFBNʹKPJO $*UFTUϝΠϯʹ୲ 8BMNBSUͷϝϞϦϦʔΫΛൃݟ ͨ͠ΓͱϨΠϠʔʹڧ͍ ౦ژ/PEFֶԂࡇ ʹݺͼ͍ͨ
/PEFKTOFXT
/PEFKTOFXT W͏͙͢Ͱ͢Ͷ
WͰ৽͘͠ͳΔ͜ͱ 4USFBN DMVTUFSSPVOESPCJO NVMUJQMFDPOUFYUJOWN TZODDIJME@QSPDFTT USBDJOHBQJ QFSGPSNBODFJNQSPWFNFOU FUD
WͰ৽͘͠ͳΔ͜ͱ 4USFBN DMVTUFSSPVOESPCJO NVMUJQMFDPOUFYUJOWN TZODDIJME@QSPDFTT USBDJOHBQJ QFSGPSNBODFJNQSPWFNFOU FUD ೦ͳ͕ΒWͰ&4σϑΥϧτʹͳΒͳ͍
WͰ৽͘͠ͳΔ͜ͱ ٞͷྲྀΕΛϒϩάʹհͯ͠ΔͷͰ͕࣌ؒ͋Εݟ ͍ͯͩ͘͞ɻ
WͰ৽͘͠ͳΔ͜ͱ 4USFBN DMVTUFSSPVOESPCJO NVMUJQMFDPOUFYUJOWN TZODDIJME@QSPDFTT USBDJOHBQJ QFSGPSNBODFJNQSPWFNFOU FUD
TZODDIJME@QSPDFTT DIJME@QSPDFTTʹҎԼͷ"1*͕Ճ͞ΕΔɻ FYFD4ZOD FYFD'JMF4ZOD TQBXO4ZOD
TZODDIJME@QSPDFTT DIJME@QSPDFTTʹҎԼͷ"1*͕Ճ͞ΕΔɻ FYFD4ZOD FYFD'JMF4ZOD TQBXO4ZOD HSVOUͱ͔ͷλεΫϥϯφʔͰ خ͍͠ػೳ
TZODDIJME@QSPDFTT %&.0
USBDJOH"1* QSPpMJOH༻ͷ"1* IFBQNFNPSZͷঢ়گΛϞχλͨ͠Γ UJDLຖʹVTFSͷҙͷΦϒδΣΫτΛUSBDFͰ͖ Δ
USBDJOH"1* %&.0
Wͷશػೳհ͠ ͖Εͳ͍
Wͷશػೳհ͠ ͖Εͳ͍ 4USPOH-PPQ͕͔ͳΓ հͯ͠ΔͷͰݟΑ͏ /PEFֶԂࡇʹ4USPOH-PPQͷਓ ݺΜͰ͍͍͔
ؾʹͳΔϥΠϒϥϦ
ؾʹͳΔϥΠϒϥϦ
ؾʹͳΔϥΠϒϥϦ 8"'ฤ
ؾʹͳΔϥΠϒϥϦ 8"'ฤ // Express! ! // response time! ! app.use(function(req,
res, next){! var start = new Date;! res.on('header', function(){! var ms = new Date - start;! res.setHeader('X-Response-Time', ms + 'ms');! });! next();! }); ! ! // response! ! app.use(function(req, res, next){! res.send(200, "Hello World");! }); // koa! ! // response time! ! app.use(function *(next){! var start = new Date;! yield next;! var ms = new Date - start;! this.set('X-Response-Time', ms + 'ms');! });! ! // response! ! app.use(function *(){! this.body = 'Hello World';! });
ؾʹͳΔϥΠϒϥϦ 8"'ฤ // Express! ! // response time! ! app.use(function(req,
res, next){! var start = new Date;! res.on('header', function(){! var ms = new Date - start;! res.setHeader('X-Response-Time', ms + 'ms');! });! next();! }); ! ! // response! ! app.use(function(req, res, next){! res.send(200, "Hello World");! }); // koa! ! // response time! ! app.use(function *(next){! var start = new Date;! yield next;! var ms = new Date - start;! this.set('X-Response-Time', ms + 'ms');! });! ! // response! ! app.use(function *(){! this.body = 'Hello World';! }); HFOFSBUPSZJFME Ͱͷະདྷ
ؾʹͳΔϥΠϒϥϦ 8"'ฤ // handle error! app.use(function *(next) {! // try-catchͰΤϥʔϋϯυϦϯάͰ͖Δ!
try {! yield next;! } catch (err) {! this.status = 500;! this.body = err.message;! }! });! ! // error thrower! app.use(function *(next) {! if (this.url === "/_err") {! throw new Error("Send Error");! }! yield next;! });!
ؾʹͳΔϥΠϒϥϦ 8"'ฤ // handle error! app.use(function *(next) {! // try-catchͰΤϥʔϋϯυϦϯάͰ͖Δ!
try {! yield next;! } catch (err) {! this.status = 500;! this.body = err.message;! // errorΠϕϯτΛൃߦ! this.app.emit("error", err, this);! }! });! ! // error thrower! app.use(function *(next) {! if (this.url === "/_err") {! throw new Error("Send Error");! }! yield next;! });! ΤϥʔϋϯυϦϯάײత
ৄ͘͠
ৄ͘͠ ͷॻ͍ͨLPBೖهࣄΛ͝ҰಡԼ͍͞ɻ
ؾʹͳΔϥΠϒϥϦ SFBMUJNFฤ
ؾʹͳΔϥΠϒϥϦ SFBMUJNFฤ 4PDLFU*0 ৽͍͠1FSMͰ͋Δɻ
SFBMUJNFϥΠϒϥϦ ࣮ͨ͘͞Μ͋Δ
SFBMUJNFϥΠϒϥϦ ࣮ͨ͘͞Μ͋Δ TPDLFUJPʹ͚ͩ नΘΕΔඞཁͳ͍ɻ
ͰͲΕ͏ͷ
1SJNVT
1SJNVT ͦ͜Ͱɺ1SJNVTɻ USBOTGFSͰFOHJOFJP GBZF TPDLKT CSPXTFSDIBOOFM XT͕ ͑Δɺͦͷ্ͰTPDLFUJPͰαϙʔτ͍ͯ͠ΔΑ͏ͳ SPPNͱ͔ͷΞϓϦέʔγϣϯΛߏங͢Δ
1SJNVT ͦ͜Ͱɺ1SJNVTɻ USBOTGFSͰFOHJOFJP GBZF TPDLKT CSPXTFSDIBOOFM͕ ͑Δɺͦͷ্ͰTPDLFUJPͰαϙʔτ͍ͯ͠ΔΑ͏ͳ SPPNͱ͔ͷΞϓϦέʔγϣϯΛߏங͢Δ ΜͰͳ͍Ͱ1SJNVT͓͏ɺ ޙͰUSBOTGFSม͑ΒΕΔɻ
ؾʹͳΔϥΠϒϥϦ ϑϩϯτΤϯυπʔϧฤ
ؾʹͳΔϥΠϒϥϦ ϑϩϯτΤϯυฤ ඦՖ៶ཚ͗ͯ͢ɺઆ໌ׂѪɻ
ؾʹͳΔϥΠϒϥϦ ϑϩϯτΤϯυπʔϧฤ ݸਓతʹHVMQ CSPXTFSJGZ DPNQPOFOUJP
͜ͷޙCSPXTFSJGZͷ ͋Γ·͢ʂʂɹ
౦ژ/PEFֶԂͷࠓޙ
جຊํ ೋ݄ʹҰ/PEFֶԂΛ։࠵ͯ͠ɺΈΜͳͷ ݟΛूΊ͍ͨ ʹҰɺ౦ژ/PEFֶԂࡇ։࠵͍ͨ͠ /PEFKTͷ͔Γ͡Όͳͯ͘ผͳݴޠ͔Βֶ ΜͩΓɺ৽͍͠ࣄͲΜͲΜٵऩ͍ͨ͠
جຊํ ೋ݄ʹҰ/PEFֶԂΛ։࠵ͯ͠ɺΈΜͳͷ ݟΛूΊ͍ͨ ʹҰɺ౦ژ/PEFֶԂࡇ։࠵͍ͨ͠ /PEFKTͷ͔Γ͡Όͳͯ͘ผͳݴޠ͔Βֶ ΜͩΓɺ৽͍͠ࣄͲΜͲΜٵऩ͍ͨ͠ ͭ·Γ͜Ε·Ͱ௨Γ /PEFֶԂΛΓ͍ͨ
ม͍͑ͨ͜ͱ ͬͱελοϑҎ֎͔Βͷਓͷҙݟฉ͖͍ͨɻ ΈΜͳ͕ͲΜͳͷʹڵຯ͕༗Δͷ͔ืू͍ͨ͠ɻ HJUUFSͱHJUIVCϦϙδτϦ࡞Γ·ͨ͠ɻ IUUQTHJUUFSJNZPTVLFGVSVLBXB5PLZP/PEF'FTUJWBM IUUQTHJUIVCDPNZPTVLFGVSVLBXB5PLZP/PEF'FTUJWBM
ม͍͑ͨ͜ͱ ͬͱελοϑҎ֎͔Βͷਓͷҙݟฉ͖͍ͨɻ ΈΜͳ͕ͲΜͳͷʹڵຯ͕༗Δͷ͔ืू͍ͨ͠ɻ HJUUFSͱHJUIVCϦϙδτϦ࡞Γ·ͨ͠ɻ IUUQTHJUUFSJNZPTVLFGVSVLBXB5PLZP/PEF'FTUJWBM IUUQTHJUIVCDPNZPTVLFGVSVLBXB5PLZP/PEF'FTUJWBM Θ͍Θ͍Γ͍ͨ
·ͱΊ
·ͱΊ /PEFKTOFXT Ϧʔμʔมߋ J[T5+'POUBJOF /PEFKTWͰมΘΔ͜ͱ ؾʹͳΔ/PEFKTϥΠϒϥϦ ,PB 1SJNVT ϑϩϯτΤϯυπʔϧ͋Γա͗
౦ژ/PEFֶԂͷࠓޙ جຊม͑ͳ͍ ҙݟΛऩू͘͢͠ɺө͘͢͢͠Δ Θ͍Θ͍Θʔ͍
ೋऻ໊൸࿐ޱ্
͍ͭ·ͰมΘΒ͵NodeֶԂͷޚްɺ͝ርΛ ۱͔Β۱·Ͱ ͣͣͣʔ͍ͱ ޤ͍ئ͍ ͋͛ͨͯ·ͭΓ·͢Δʂʂʂ
͍ͭ·ͰมΘΒ͵NodeֶԂͷޚްɺ͝ርΛ ۱͔Β۱·Ͱ ͣͣͣʔ͍ͱ ޤ͍ئ͍ ͋͛ͨͯ·ͭΓ·͢Δʂʂʂ ΑΖ͓͘͠ئ͍͠·͢