Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
これからのNode.jsの話をしよう
Search
Yosuke Furukawa
PRO
February 26, 2014
Programming
8.4k
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
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
320
デザインシステムが必須の時代に
yosuke_furukawa
PRO
2
250
Node.js, Deno, Bun 最新動向とその所感について
yosuke_furukawa
PRO
10
5.3k
Welcome JSConf.jp 2024
yosuke_furukawa
PRO
1
4.8k
tc39 x jsconf.jp Panel Discussion 2024
yosuke_furukawa
PRO
0
360
Removing Corepack
yosuke_furukawa
PRO
9
2k
JavaScript Runtime とはなにか
yosuke_furukawa
PRO
15
3.2k
Strip Types と Storage
yosuke_furukawa
PRO
4
520
Module Harmony について
yosuke_furukawa
PRO
4
1.9k
Other Decks in Programming
See All in Programming
夏だ!祭りだ!祭りとはドメインモデリングでは?
ryugen04
0
240
Detecting Compromised CI with eBPF and Cilium Tetragon
lizrice
0
170
PHP Application における Kubernetes 内 gRPC 通信
ganchiku
0
590
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
630
yield再入門 #phpcon
o0h
PRO
0
1k
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
2.8k
FDEが実現するAI駆動経営の現在地
gonta
2
280
Claude Code全社展開のためにやったことn選~プラグイン302個・コミッター271人を支えるために~
kenchan
5
1.5k
関東Kaggler会_NVIDIA_Nemotron_コンペ_振り返り
rick_ds
0
540
全PRの83%がAIレビューだけでマージできるようになった開発組織はその後どうなったか
athug
1
1.6k
TSX の <Hoge<Fuga>> という構文に驚いた話 / tsx-type-argument-syntax
kanaru0928
0
220
使いながら育てる Claude Code — 開発フローの1コマンド化 × 繰り返し指摘の自動仕組み化
shiki_kakaku
0
1.7k
Featured
See All Featured
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
330
Ethics towards AI in product and experience design
skipperchong
2
340
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
640
The agentic SEO stack - context over prompts
schlessera
0
860
Fireside Chat
paigeccino
42
4k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
380
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
210
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
64
56k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.5k
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ֶԂͷޚްɺ͝ርΛ ۱͔Β۱·Ͱ ͣͣͣʔ͍ͱ ޤ͍ئ͍ ͋͛ͨͯ·ͭΓ·͢Δʂʂʂ ΑΖ͓͘͠ئ͍͠·͢