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とio.jsの分裂と統合の行方。これからどう進化していくのか?
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Yosuke Furukawa
PRO
August 22, 2015
Programming
47
35k
どうしてこうなった? Node.jsとio.jsの分裂と統合の行方。これからどう進化していくのか?
Yosuke Furukawa
PRO
August 22, 2015
Tweet
Share
More Decks by Yosuke Furukawa
See All by Yosuke Furukawa
デザインシステムが必須の時代に
yosuke_furukawa
PRO
2
190
Node.js, Deno, Bun 最新動向とその所感について
yosuke_furukawa
PRO
10
4.9k
Welcome JSConf.jp 2024
yosuke_furukawa
PRO
1
4.5k
tc39 x jsconf.jp Panel Discussion 2024
yosuke_furukawa
PRO
0
300
Removing Corepack
yosuke_furukawa
PRO
9
1.8k
JavaScript Runtime とはなにか
yosuke_furukawa
PRO
15
3k
Strip Types と Storage
yosuke_furukawa
PRO
4
470
Module Harmony について
yosuke_furukawa
PRO
4
1.8k
LTのやり方
yosuke_furukawa
PRO
16
2.9k
Other Decks in Programming
See All in Programming
Smart Handoff/Pickup ガイド - Claude Code セッション管理
yukiigarashi
0
130
20260127_試行錯誤の結晶を1冊に。著者が解説 先輩データサイエンティストからの指南書 / author's_commentary_ds_instructions_guide
nash_efp
1
940
Automatic Grammar Agreementと Markdown Extended Attributes について
kishikawakatsumi
0
180
そのAIレビュー、レビューしてますか? / Are you reviewing those AI reviews?
rkaga
6
4.5k
AI時代の認知負荷との向き合い方
optfit
0
150
dchart: charts from deck markup
ajstarks
3
990
Apache Iceberg V3 and migration to V3
tomtanaka
0
160
なぜSQLはAIぽく見えるのか/why does SQL look AI like
florets1
0
450
CSC307 Lecture 06
javiergs
PRO
0
680
15年続くIoTサービスのSREエンジニアが挑む分散トレーシング導入
melonps
2
190
CSC307 Lecture 05
javiergs
PRO
0
500
OCaml 5でモダンな並列プログラミングを Enjoyしよう!
haochenx
0
140
Featured
See All Featured
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
410
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Unsuck your backbone
ammeep
671
58k
Technical Leadership for Architectural Decision Making
baasie
1
240
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
110
Rebuilding a faster, lazier Slack
samanthasiow
85
9.4k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
51
The agentic SEO stack - context over prompts
schlessera
0
630
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
170
Transcript
Node.js Past, Present, Future YAPC::ASIA 2015
@yosuke_furukawa Node.jsϢʔβʔάϧʔϓද
@jovi0608 Node/io.js ٕज़ҕһձ
index • Past • Node.js Γཱͪ • Joyent ͱ Node.js
• BDFL Ϟσϧ • Present • Node.js։ൃఀ • io.jsͷ಄ • TCϞσϧ • Future • The Future of Node • LTS • Nodeͷࠓޙ
The History of Node
2001 2008 2009 2010 2011 2012 2015ʙ
Past Node.js
Node.jsΓཱͪ
2001 2008 2009 2010 2011 2012 2015ʙ /PEFKTJTCPSO
2009 ʙ 2012 Node.jsͷഁյͱͷ࣌
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 ͳΜͰ/PEFKT͜͏͍͏ߏ ΛબΜͩͷ͔
2001 2008 2009 2010 2011 2012 2015ʙ $,1SPCMFN
$,1SPCMFNJT w ͪΐʔͨ͘͞ΜͷΫϥΠΞϯτ , ͕Ұʹଓ ͨ͠Βαʔόʔࢮ͵ΑͶ͍ͬͯ͏ w ࣌ͷϑϩϯτ"QBDIF͕ओྲྀ w "QBDIFϓϩηεεϨουϞσϧ
w ΫϥΠΞϯτ͕ଓ͢ΔʹϓϩηεPSεϨου͕ ্͕ΔͱϝϞϦ͍·͘ΒΕͯɺɺɺ ޙ͔Δͳɻɻɻ
2001 2008 2009 2010 2011 2012 2015ʙ 8FC d
ຊͰ ʮ8FCͷઌʹ͋Δ$,ʯ ͱ͔هࣄ͕͔͔ΕΔ
8FC࣌4/4࣌
Ϣʔβʔ͕αΠτʹࡏ͢Δ ͕࣌ؒ૿͑Δ࣌ ϝοηʔδ͕དྷ·ͨ͠ ͍͍Ͷ͞Ε·ͨ͠
࣌ͷ3ZBO%BIM
ϓϩάϨεόʔ
None
$POOFDUJPO͕ଟ͘ͳͬͯैདྷͷΞʔΩς ΫνϟͰ·͔ͳ͖͑Εͳ͘ͳ͖ͬͯͨ
&WFOU-PPQ ࣌ؒͷ͔͔Δ'JMF/FUXPSL*0ॲཧ Λඇಉظʹͯ͠ɺෳͷଓΛҰͭ ͷεϨουͰ͏Ϟσϧ
3ZBO%BIM͕࠷ॳʹ࡞ͬͨ &WFOU-PPQϞσϧͷͻͳܗ $ݴޠͰ6OJYPOMZTVQQPSU
MJCFCCΛ࡞ͬͨܦݧΛݩʹ3ZBO%BIMޙʹ/PEFKT ͰɺMJCFWMJCFJPΛ࠾༻ɺޙʹ8JOEPXTରԠΛ ࢦͯ͠ɺMJCVWΛ։ൃɺϚϧνϓϥοτϑΥʔϜͰ ߴͳඇಉظ*0͕࣮ݱ͞ΕΔ
/PEFQSPKFDU ࢝ಈ 3ZBOͱ5JN
͜͏͍͏ײ͡Ͱಈ͔͍ͨ͠ͱ͢Δ ͷϝʔϧͷΓऔΓ͕͍ͬͯΔɻ
࠷ॳOFUW͍ͬͯ͏໊લͩͬͨ Β͍͠
OFUW͔ΒOPEF͍ͬͯ͏໊લʹ มΘΔɻ
͔ͯ͘͠/PEFKTੜ
Joyent ͱ Node
2001 2008 2009 2010 2011 2012 2015ʙ /PEFVOEFSUIF +PZFOU`TSPPG
/PEFKTͷ1BB4ίϯ αϧମ੍Λ࡞Δ 'VMMUJNFDPNNJUͷମ ੍͕ඞཁɻ
+PZFOUͷैۀһͱͯ͠ϑϧλΠϜίϛοτମ੍͕Ͱ͖Δɻ
BDFL ༏͍͠ऴͷಠࡋऀϞσϧ
#%'- جຊతʹҰਓͷϦʔμʔ͕ݖརΛ࣋ͬͯ ػೳࡦఆJTTVFཧΛ͢ΔϞσϧ 1FSMͷ-BSSZ8BMMɺ3VCZͷ.BU[
ഁյͱ • API͕͔ͳΓਂࠁʹมΘΔ • ύονϨϕϧͷόʔδϣϯΞοϓͰಈ͔ͳ͘ͳΔ • Ϟδϡʔϧ໊҆ఆ͠ͳ͍(‘sys’ Ϟδϡʔϧ ‘util’ ϞδϡʔϧͳͲ)
• ৽ػೳՃ༧ࠂ isolates • v0.7ͰεϨου͑ΔΑ͏ʹ͢ΔΑʔ • ͬͺΓΊʔʂ
_:(´ཀ`ʯ ∠):_ ৼΓճ͞ΕΔ/PEFKT %FWFMPQFST
2001 2008 2009 2010 2011 2012 2015ʙ 3ZBOTUFQTBXBZ GSPN#%'-
3ZBO%BIM*TBBDT4DIMVFUFS ʹϦʔμʔ͕มߋ
3ZBO%BIM*TBBDT4DIMVFUFS ʹϦʔμʔ͕มߋ ͏ݚڀϑΣʔζ ഁյͱϑΣʔ ε ऴ͑ͨ͠ɺ͜Ε͔Β҆ఆͱ ৴པΛٻΊͯϦʔμʔΛม͑Δ 4USFBNपΓͱ͔ΤϥʔϋϯυϦϯάपΓͰ Γ͍ͨࣄ͕·ͩ·ͩ͋ΔΜͰϦʔμʔΓ·͢ɻ
2001 2008 2009 2010 2011 2012 2014 *TBBDTTUFQTBXBZ GSPN#%'-
*TBBDT4DIMVFUFS5+'POUBJOF ʹϦʔμʔ͕มߋ ࡾ
OQNձࣾʹ͢Δ͠ɺ/PEFͷ ϦʔμʔͰ͖ͳ͍Θɺɺɺ *TBBDT4DIMVFUFS5+'POUBJOF ʹϦʔμʔ͕มߋ ࡾ WΛग़͢ʂʂ
None
ઌൃ தܧ͗ ͑
Present Node.js
2001 2008 2009 2010 2011 2012 2015ʙ /PEFKTීٴظ
2012 ʙ 2014 Node.js ීٴظ
socket.io ͷීٴʹΑΔ ϦΞϧλΠϜΞϓϦͷ૿Ճ
FrontEnd tools (Grunt Gulp Yeoman)
Desktop Application
AWS Lambda
Tessel(IoT)
ຊʹ৭ʑΘΕΔΑ ͏ʹͳͬͨ ʢओʹΠϕϯτۦಈͰಈ࡞͢Δͷʣ
ͨͩ͠ɺ͜ͷลΓ͔Β ։ൃऀؒͷߔ͕ੜ·Ε ࢝ΊΔɻ
҆ఆΛٻΊΔ։ൃऀ vs cutting edge ΛٻΊ Δ։ൃऀ
EnterpriseͰͷ׆༻
Node.js ίΞʹٻΊΔ ͷ͕૿͖͑ͯͨɻ 4UBCJMJUZ &4 &BTZ&SSPS)BOEMF 4QFFE JTPNPSQIJD
2014͔ΒίΞͷ ։ൃ͕ఀ͢Δɻ
ϦϦʔεεέδϡʔϧͷෆಁ໌ issue/featureཧ͕Ͱ͖ͯͳ͍
͜ͷ··ͰͩΊͩ…
3Q 2014 /PEF'PSXBSE 1SPKFDU͕ൃ 4Q 2014 1Q 2015 2Q 2015
3Q 2015 2012
/PEFKTΛਪ͠ਐΊΔ͘ɺ /PEF'PSXBSEͱ͍͏ஂମ͕Ͱ͖Δɻ #%'- Node.js Node Forward
తఀ͔Βͷ٫
None
3Q 2014 /PEFKTͷGPSLͰ͋Δ JPKT͕ϦϦʔε͞ΕΔ 4Q 2014 1Q 2015 2Q 2015
3Q 2015 2012
/PEF'PSXBSE͕/PEFKTΛGPSLͯ͠JPKTΛϦϦʔε #%'- Node.js io.js
io.js v1.0 release 2015 1݄13 ※ݸਓతʹio.jsͷཚͱ໊͚͍ͮͨ
Node.jsͱͷҧ͍Կ͔
BDFLϞσϧ͔Βͷ٫
JPKTʹϦʔμʔډͳ͍ɻ #%'- Node.js io.js
ϦʔμʔෆࡏͰͲ͏ͬͯػ ೳissueΛཧ͢Δͷ͔
io.js rules 5FDIOJDBM $PNNJUUFF 8PSLJOH (SPVQ 4FNBOUJD 7FSTJPOJOH
Technical Committee
Technical Committee Ϧʔμʔډͳ͍͕ɺίΞϝϯόʔͰ ߏ͞Εٕͨज़ҕһձ͋Δɻ(16໊)
Technical Committee ͜ͷҕһձͷதͰػೳissueΛϋϯυϦϯά ͍ͯ͘͠ɻݴͬͯΈΕࠃձΈ͍ͨͳͷɻ
Collaborator TSCͷϝϯόʔͱҰॹʹ࣮ࡍʹίʔυΛฤू मਖ਼ɺػೳ֦ு͍ͯ͘͠ਓୡ(40໊΄Ͳ)
Working Group
Working Group io.jsʹ20ݸۙ͘Working Group͕͋Δɻ Evangelism, Website, benchmark, build, etc. website
build Evangelism
Working Group ͜ͷWorking Group͕֤ʑͷతʹ߹Θͤͯ ࣮ࡍͷ࡞ۀΛ׆ಈ͍ͯ͘͠ɻݴΘֳɻ website build Evangelism NF
Semantic Versioning
Semantic Versioning major.minor.patch
Semantic Versioning major.minor.patch NBKPSόʔδϣϯ͕มΘΔ "1*ͷޓ่͕ΕΔɻ NJOPSόʔδϣϯ͕มΘΔ ػೳ͕Ճ͞ΕΔɻ QBUDIόʔδϣϯ͕มΘΔ
όά͕मਖ਼͞ΕΔɻ
Semantic Versioning major.minor.patch NBKPSόʔδϣϯ͕มΘΔ "1*ͷޓ่͕ΕΔɻ NJOPSόʔδϣϯ͕มΘΔ ػೳ͕Ճ͞ΕΔɻ QBUDIόʔδϣϯ͕มΘΔ
όά͕मਖ਼͞ΕΔɻ ͜ͷSemantic Versioning ʹԊͬͯόʔδϣϯ ཧ͞ΕΔɻ
Semantic Versioning major.minor.patch NBKPSόʔδϣϯ͕มΘΔ "1*ͷޓ่͕ΕΔɻ APIޓ͕յΕΔͱmajor όʔδϣϯ͕ มΘΔͨΊɺޓΛյ͍ͯ͠ͳ͍͔࠷৽ͷҙΛ ͬͯνΣοΫ͞ΕΔɻݴΘݑ๏ͷΑ͏ͳͷɻ
io.js rules 5FDIOJDBM $PNNJUUFF 8PSLJOH (SPVQ 4FNBOUJD 7FSTJPOJOH ࠃձ ๏JTTVFGFBUVSF
ΛϋϯυϦϯά͢Δ ֳɺ࣮ࡍͷ࡞ۀΛ࣮ࢪ ࠃձʹ๏ҊΛఏग़͢Δ ݑ๏ ˞ͨ·ʹ֦େղऍ͋Δॴ ࣅͯΔɻ
io.js rules 5FDIOJDBM $PNNJUUFF 8PSLJOH (SPVQ 4FNBOUJD 7FSTJPOJOH ࠃձ ๏JTTVFGFBUVSF
ΛϋϯυϦϯά͢Δ ֳɺ࣮ࡍͷ࡞ۀΛ࣮ࢪ ࠃձʹ๏ҊΛఏग़͢Δ ݑ๏ ˞ͨ·ʹ֦େղऍ͋Δॴ ࣅͯΔɻ ʊਓਓਓਓਓਓਓਓਓਓʊ ʼɹ·͞ʹΨόϝϯτɹʻ ʉY^Y^Y^Y^Y^Y^Y^Y^Yʉ
ΦʔϓϯΨόφϯεϞσϧ
None
ຖिϛʔςΟϯά͕։࠵͞Εɺݱࡏio.jsͰԿ ͕ٞ͞ΕͯΔͷ͔ΦʔϓϯʹͳΔΈɻ
ٞࣄΛgithubͰཧͯ͠ެ։͢ Δ͜ͱͰnon-nativeʹ͍͞͠
io.jsnode.jsͷforkɺͦͯ͠ΦʔϓϯΨόφϯεϞ σϧΛ࠾༻͢Δ͜ͱͰಁ໌ੑͷ֬อͱίϯτϦ ϏϡʔτͷෑډΛԼ͛ΔޮՌɺBDFLͷΘΓΛૂͬ ͍ͯΔɻ
1/13ʹv1.0ϦϦʔε͞Ε͔ͯΒطʹ7ϲ݄Ͱ ࠓv3.1.0͕ϦϦʔε͞ΕͯΔɻ ϦϦʔεස্͕͕Γྑ͍ʹɻ Node.js io.js
৽͍͠ίϛολʔੜ·Ε͓ͯΓɺ ྑ͍ࡉ๔॥͕Ͱ͖͖͍ͯͯΔɻ
Future Node.js
The Future of Node = io.js
Node Foundation 5FDIOJDBM $PNNJUUFF 8PSLJOH (SPVQ 4FNBOUJD 7FSTJPOJOH /PEF 'PVOEBUJPO
֤छ8(5$ͷࡒݯΛ ֬อ͢Δॴ $*ͷϗεςΟϯάͩͬͨΓɺ$PMMBCPSBUPSͷ ߤඅͩͬͨΓͱ͍͏ίϛολʔࢧԉɻ
Node Foundation 5FDIOJDBM $PNNJUUFF 8PSLJOH (SPVQ 4FNBOUJD 7FSTJPOJOH /PEF 'PVOEBUJPO
'VMMUJNFDPNNJUUFSͷඞཁ͕͋Ε͔͜͜Β څྉ͕ग़ΔܗʹͳΔɻ
Long Term Support
Long Term Support )BDLFS͚ Ұൠ͚
Long Term Support &OUFSQSJTF͚ &OUFSQSJTF͚
Node.js v4.0 features &4DPNQBUVQ 4JNQMF4USFBN 4USPOH4DSJQU JNQSPWFQFSG JNQSPWFEFCVHHBCJMJUZ
Node.js v4.0 will be released in September (or October)
·ͱΊ
·ͱΊ • Ͳ͏ͯ͜͠͏ͳͬͨʁ • NodeίΞͷཁٻͷଟ͞ • BDFLϞσϧͷมԽ • ࠓޙͲ͏ͳΔʁ •
Technical CommitteeʹΑΔཧ • Working GroupͰͷؔΘΓ • LTSͱnext/master ʹΑΔ҆ఆੑ
Free Talk
None
time master brunch v0.10 v0.12 v4.x next brunch io.js v1.x
io.js v3.x