Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
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
180
Node.js, Deno, Bun 最新動向とその所感について
yosuke_furukawa
PRO
10
4.7k
Welcome JSConf.jp 2024
yosuke_furukawa
PRO
1
4.4k
tc39 x jsconf.jp Panel Discussion 2024
yosuke_furukawa
PRO
0
280
Removing Corepack
yosuke_furukawa
PRO
9
1.8k
JavaScript Runtime とはなにか
yosuke_furukawa
PRO
15
2.9k
Strip Types と Storage
yosuke_furukawa
PRO
4
450
Module Harmony について
yosuke_furukawa
PRO
3
1.8k
LTのやり方
yosuke_furukawa
PRO
16
2.8k
Other Decks in Programming
See All in Programming
手軽に積ん読を増やすには?/読みたい本と付き合うには?
o0h
PRO
1
170
Flutter On-device AI로 완성하는 오프라인 앱, 박제창 @DevFest INCHEON 2025
itsmedreamwalker
1
100
Context is King? 〜Verifiability時代とコンテキスト設計 / Beyond "Context is King"
rkaga
9
1.1k
テストやOSS開発に役立つSetup PHP Action
matsuo_atsushi
0
150
dotfiles 式年遷宮 令和最新版
masawada
1
760
LLM Çağında Backend Olmak: 10 Milyon Prompt'u Milisaniyede Sorgulamak
selcukusta
0
120
大体よく分かるscala.collection.immutable.HashMap ~ Compressed Hash-Array Mapped Prefix-tree (CHAMP) ~
matsu_chara
1
220
複数人でのCLI/Infrastructure as Codeの暮らしを良くする
shmokmt
5
2.3k
Building AI Agents with TypeScript #TSKaigiHokuriku
izumin5210
6
1.3k
著者と進める!『AIと個人開発したくなったらまずCursorで要件定義だ!』
yasunacoffee
0
130
C-Shared Buildで突破するAI Agent バックテストの壁
po3rin
0
380
なあ兄弟、 余白の意味を考えてから UI実装してくれ!
ktcryomm
11
11k
Featured
See All Featured
Raft: Consensus for Rubyists
vanstee
141
7.2k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
RailsConf 2023
tenderlove
30
1.3k
Balancing Empowerment & Direction
lara
5
790
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
KATA
mclloyd
PRO
32
15k
Embracing the Ebb and Flow
colly
88
4.9k
Automating Front-end Workflow
addyosmani
1371
200k
Rebuilding a faster, lazier Slack
samanthasiow
84
9.3k
A Tale of Four Properties
chriscoyier
162
23k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
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