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 in java OB
Search
Yosuke Furukawa
PRO
July 22, 2017
Programming
4
600
node.js in java OB
Java/Go OB会で話したNode.jsの話です。
Yosuke Furukawa
PRO
July 22, 2017
Tweet
Share
More Decks by Yosuke Furukawa
See All by Yosuke Furukawa
デザインシステムが必須の時代に
yosuke_furukawa
PRO
2
150
Node.js, Deno, Bun 最新動向とその所感について
yosuke_furukawa
PRO
10
4.4k
Welcome JSConf.jp 2024
yosuke_furukawa
PRO
1
4.3k
tc39 x jsconf.jp Panel Discussion 2024
yosuke_furukawa
PRO
0
270
Removing Corepack
yosuke_furukawa
PRO
9
1.7k
JavaScript Runtime とはなにか
yosuke_furukawa
PRO
15
2.9k
Strip Types と Storage
yosuke_furukawa
PRO
4
430
Module Harmony について
yosuke_furukawa
PRO
3
1.8k
LTのやり方
yosuke_furukawa
PRO
16
2.7k
Other Decks in Programming
See All in Programming
Domain-centric? Why Hexagonal, Onion, and Clean Architecture Are Answers to the Wrong Question
olivergierke
2
840
CSC509 Lecture 04
javiergs
PRO
0
300
Writing Better Go: Lessons from 10 Code Reviews
konradreiche
0
1.2k
CSC305 Lecture 03
javiergs
PRO
0
240
uniqueパッケージの内部実装を支えるweak pointerの話
magavel
0
1k
詳しくない分野でのVibe Codingで困ったことと学び/vibe-coding-in-unfamiliar-area
shibayu36
3
4.9k
あなたとKaigi on Rails / Kaigi on Rails + You
shimoju
0
130
[Kaigi on Rais 2025] 全問正解率3%: RubyKaigiで出題したやりがちな危険コード5選
power3812
0
130
Go言語の特性を活かした公式MCP SDKの設計
hond0413
1
230
Flutterで分数(Fraction)を表示する方法
koukimiura
0
130
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
300
AI Coding Meetup #3 - 導入セッション / ai-coding-meetup-3
izumin5210
0
3.3k
Featured
See All Featured
Unsuck your backbone
ammeep
671
58k
Testing 201, or: Great Expectations
jmmastey
45
7.7k
Producing Creativity
orderedlist
PRO
347
40k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Reflections from 52 weeks, 52 projects
jeffersonlam
352
21k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
How to Think Like a Performance Engineer
csswizardry
27
2k
Documentation Writing (for coders)
carmenintech
75
5.1k
Rebuilding a faster, lazier Slack
samanthasiow
84
9.2k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
620
Building Flexible Design Systems
yeseniaperezcruz
329
39k
KATA
mclloyd
32
15k
Transcript
Node.js ୈ࢛ճ Java ݚम OB/OG ձ
Twitter: @yosuke_furukawa Github: yosuke-furukawa
Node.jsຊϢʔβʔάϧʔϓද Node.js Evangelist / Node.js Collaborator
+BWBݚमͷ࣌ͷ՝༻ͷ ΩϟϥΫλʔͰͨ͠
Why I use Node.js
ͱͱαʔόαΠυͷΤϯδχΞ 0SBDMF +BWB 40"1 MVDFOFFUD
#SPXTFS 4USVUT "1*4FSWFS 0SBDMF -VDFOF 'JMF 4ZTUFN ͱͱ͜ͷล୲
͖ͪΌͬͨ
#SPXTFS 4USVUT "1*4FSWFS 0SBDMF -VDFOF /'4 ͬͪ͜ͷํΛΓͨ͘ͳͬͨ
ཁ6*دΓͷॴΛͬͯ Έͨ͘ͳͬͨ ࣌ ࠒ ͔Β+BWB4DSJQUͷٕज़͕8FC ΞϓϦ࡞ʹඞਢʹͳ͍ͬͯͨɻ Ͱ͍͖ͳΓ+BWB4DSJQUͰ6*ͷͱ͜Ζͬͯ Α͔͘Βͳͦ͞͏ͩͱࢥͬͨɻ ͳͷͰͻͱ·ͣΑͬͯ͘ΔαʔόαΠυͰ +BWB4DSJQUֶΜͰΈΑ͏ͱɻ
None
໘നͦ͏Μ͚
HTTP Server
HTTP Server const http = require('http'); const hostname = '127.0.0.1';
const port = 3000; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World\n'); }); server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); }); ͜Ε͚ͩͰಈ͘खܰ͞
ָ͍͠ʂʂʂ
Realtime Server
socket.io-video
IoT
None
Desktop Application (Electron)
None
Node.js
13ษڧձͳͲͷߩݙ͕ೝΊΒΕͯ /PEFKT$PMMBCPSBUPS/PEFKT&WBOHFMJTU ʹͳΔɻ
Node.js ͱԿ͔
2001 2008 2009 2010 2011 2012 2015ʙ /PEFKTJTCPSO
3ZBO%BIM 5IF'BUIFSPG/PEF
Ryan Dahl talks about Node.js in JSConf.eu 2009
None
Node.js in brief • Server-Side JavaScript • Evented, Non-Blocking I/O
Similar to EventMachine • Built on Google’s V8
Node.js in brief • Server-Side JavaScript • Evented, Non-Blocking I/O
Similar to EventMachine • Built on Google’s V8 8IZ/PEFDIPPTFUIFTF BSDIJUFDUVSF
2001 2008 2009 2010 2011 2012 2015ʙ $,1SPCMFN
ຊͰ ʮ8FCͷઌʹ͋Δ$,ʯ ͱ͔هࣄ͕͔͔ΕΔ
$,1SPCMFNJT w ͪΐʔͨ͘͞ΜͷΫϥΠΞϯτ , ͕Ұʹଓ ͨ͠Βαʔόʔࢮ͵ΑͶ͍ͬͯ͏ w ࣌ͷϑϩϯτ"QBDIF͕ओྲྀ w "QBDIFϓϩηεεϨουϞσϧ
w ΫϥΠΞϯτ͕ଓ͢ΔʹϓϩηεPSεϨου͕ ্͕ΔͱϝϞϦ͍·͘ΒΕͯɺɺɺ ޙ͔Δͳɻ
͜ͷ࣌ͷΈΜͳͷԠ ʮͰ,͔͞Ͷʔ͠XXXXʯ
γϯϓϧͳIUUQϦΫΤετͳΒ ͦ͏ͩͱࢥ͏ɻ
8FC࣌4/4࣌
Ϣʔβʔ͕αΠτʹࡏ͢Δ ͕࣌ؒ૿͑Δ࣌ ϝοηʔδ͕དྷ·ͨ͠ ͍͍Ͷ͞Ε·ͨ͠
"KBYͱ͔9)3-POH1PMMJOH ͕ྲྀߦΓ͡Ίͨ࣌
$POOFDUJPO͕ଟ͘ͳͬͯैདྷͷΞʔΩς ΫνϟͰ·͔ͳ͖͑Εͳ͘ͳ͖ͬͯͨ
None
"QBDIFWT/HJOY "QBDIF /HJOY XPSLFS XPSLFS XPSLFS XPSLFS XPSLFS XPSLFS XPSLFS
XPSLFS XPSLFS
"QBDIFWT/HJOY "QBDIF /HJOY XPSLFS XPSLFS XPSLFS XPSLFS XPSLFS XPSLFS XPSLFS
XPSLFS XPSLFS ϦΫΤετͷʹXPSLFSεϨου͕ىಈ ͠ɺϝϞϦ͕ඡഭ͞ΕΔڪΕɺ·ͨεϨου ͕ଟ͍ͱεϨουΓସ͑ίετߴ͍
"QBDIFWT/HJOY "QBDIF /HJOY XPSLFS XPSLFS XPSLFS XPSLFS XPSLFS XPSLFS XPSLFS
XPSLFS XPSLFS γϯάϧεϨουͳͷͰίωΫγϣϯ͕ ͨ͘͞Μ͋ͬͯXPSLFSىಈ͠ͳ͍ Ϧιʔε͕ޮత
͜Μͳײ͡Ͱ$,͕૽͕Ε͔ͯΒ Πϕϯτϧʔ ϓϞσϧ͕ྲྀߦΓͩ͢ɻ
"OZ&WFOU 1FSM &WFOU.BDIJOF 3VCZ 5XJTUFE 1ZUIPO ͜Μͳײ͡Ͱ$,͕૽͕Ε͔ͯΒ Πϕϯτϧʔ ϓϞσϧ͕ྲྀߦΓͩ͢ɻ
ͨͩ͠ɺ͜ΕΒͷݴޠ 3VCZ 1ZUIPO ʹ طʹ'JMF/FUXPSL*0ͷಉظॲཧ͕ଘࡏ͢ Δ
'JMF/FUXPSL*0ॲཧ͍
'JMF/FUXPSL*0ॲཧ͍
&WFOU-PPQ ͕͔͔࣌ؒΔϑΝΠ ϧ*0ωοτϫʔΫ ܥͷॲཧग़དྷΔݶ Γඇಉظʹ͢Δ͖ɻ
ΠϕϯτϧʔϓϞσϧྑ͍͕ɺط ଘͷ*0ಉظܥͷॲཧແ͍ͨ͘͠ɻ ඇಉظ*0ॲཧΛڧ੍͍ͤͨ͞ɻ
ඇಉظϥΠϒϥϦͱͯ͠MJCFW͕࠾༻͞Εɺ ޙʹMJCVWͱͳΓɺϚϧνϓϥοτϑΥʔ ϜͰߴͳඇಉظ*0͕࣮ݱ͞ΕΔ
2001 2008 2009 7JTCPSO 2010 2011 2012 2013 2014
function hoge() { console.log(“Hello Hello”); } function fuga() { //
fugafufa console.log(“World World”); } +BWB4DSJQU ͜Ε·Ͱ ߏจղੳ > Hello Hello > World World ࣮ߦ
function hoge() { console.log(“Hello Hello”); } function fuga() { //
fugafufa console.log(“World World”); } +BWB4DSJQU ͜Ε·Ͱ ߏจղੳ > Hello Hello > World World ࣮ߦ ͍
function hoge() { console.log(“Hello Hello”); } function fuga() { //
fugafufa console.log(“World World”); } +BWB4DSJQU 7 > Hello Hello > World World ಈతʹϚγϯޠʹม 0100101 0010010 1010101 0101010 1010100 ࣮ߦ ΊͬͪΌ͍
$,Λղܾ͢ΔΠϕϯτϧʔϓϞσϧ ߴͳඇಉظ*0ͱͦΕΛڧ੍Մೳͳݴޠ ઈ͍ॲཧܥ
$,Λղܾ͢ΔΠϕϯτϧʔϓϞσϧ ߴͳඇಉظ*0ͱͦΕΛڧ੍Մೳͳݴޠ ઈ͍ॲཧܥ 3ZBO%BIM͕ඞཁͱͯ͠ ͍ͨͷɻ
͔ͯ͘͠/PEFKTੜ
/PEFKTͱԿͳͷ͔ ඇಉظϥΠϒϥϦͱΠϕϯτϧʔϓϞσϧͰಈ͘ߴ ͔ͭলϦιʔεͳ+BWB4DSJQU࣮ߦڥ 8FC4PDLFUɺ44&ͷΑ͏ʹίωΫγϣϯΛுΓͬͺ ͳ͠ʹ͢ΔϞϊɺϦΫΤετ͕ଟ͍ΞϓϦέʔγϣ ϯͱੑ͕ߴ͍ɻ ԿʹͰ͘ϫέ͡Όͳ͍ɻવ͔ͳ͍͋Δɻ /PEFKT͚ͩͰແཧΛ͠ͳ͍ࣄॏཁɻదࡐదॴͰ ͍͚ͨํ͕ྑ͍ͱ͍͏ɻ
·ͱΊ
/PEFKTͱࢲ /PEFKTΛ৮Γ࢝Ίͯ6*ଆόοΫΤϯυଆΘ͔ΔΤ ϯδχΞʹɻ ΔͳΒͱ͜ͱΜɺͱ͍͏͜ͱͰ৽͍ٕ͠ज़͕ग़ͯ͘Δ ͨͼʹ৮͍ͬͯͨ݁Ռɺ&WBOHFMJTU$PMMBCPSBUPSʹ /PEFKTͱԿ͔ ඇಉظϥΠϒϥϦͱΠϕϯτϧʔϓϞσϧͰಈ͘ߴ͔ ͭলϦιʔεͳ+BWB4DSJQU࣮ߦڥ ·ͱΊ
JavaษڧձOBͱͯ͠
ඇৗʹษڧʹͳͬͨ ಛʹԿ͔࡞ͬͯݟͤΔ෦͘͢͝ྑ͔ͬͨ ͋ͱɺ&⒎FDUJWF+BWBͷ༰ࠓͰΑ͘ ͍·͢ +BWB4DSJQUͰֶΔॴଟ͍ ɻ ࣲా͞Μ͕+BWBͷߨࢣͱͯ͠ϦΫϧʔτςΫ ϊϩδʔζͰ৽ਓͷ໘Λݟͯ͘Εͳ͍͔ͱࢥͬ ͯͨΓɻ JavaษڧձOB