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
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
180
Node.js, Deno, Bun 最新動向とその所感について
yosuke_furukawa
PRO
10
4.8k
Welcome JSConf.jp 2024
yosuke_furukawa
PRO
1
4.5k
tc39 x jsconf.jp Panel Discussion 2024
yosuke_furukawa
PRO
0
290
Removing Corepack
yosuke_furukawa
PRO
9
1.8k
JavaScript Runtime とはなにか
yosuke_furukawa
PRO
15
3k
Strip Types と Storage
yosuke_furukawa
PRO
4
460
Module Harmony について
yosuke_furukawa
PRO
4
1.8k
LTのやり方
yosuke_furukawa
PRO
16
2.8k
Other Decks in Programming
See All in Programming
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
190
PostgreSQLで手軽にDuckDBを使う!DuckDB&pg_duckdb入門/osc25hi-duckdb
takahashiikki
0
250
從冷知識到漏洞,你不懂的 Web,駭客懂 - Huli @ WebConf Taiwan 2025
aszx87410
2
3.4k
TestingOsaka6_Ozono
o3
0
280
なぜSQLはAIぽく見えるのか/why does SQL look AI like
florets1
0
260
AI 駆動開発ライフサイクル(AI-DLC):ソフトウェアエンジニアリングの再構築 / AI-DLC Introduction
kanamasa
11
5.5k
CSC307 Lecture 02
javiergs
PRO
1
760
コマンドとリード間の連携に対する脅威分析フレームワーク
pandayumi
1
360
TerraformとStrands AgentsでAmazon Bedrock AgentCoreのSSO認証付きエージェントを量産しよう!
neruneruo
4
2.5k
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
1
220
ThorVG Viewer In VS Code
nors
0
690
AIエージェントの設計で注意するべきポイント6選
har1101
6
3.1k
Featured
See All Featured
End of SEO as We Know It (SMX Advanced Version)
ipullrank
2
3.9k
Tell your own story through comics
letsgokoyo
1
790
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.9k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
1.1k
WCS-LA-2024
lcolladotor
0
420
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
290
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
100
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
43
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
410
Embracing the Ebb and Flow
colly
88
4.9k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Git: the NoSQL Database
bkeepers
PRO
432
66k
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